diff --git a/reactos/dll/cpl/desk/desk.rc b/reactos/dll/cpl/desk/desk.rc index ec1feeed849..a0766e78637 100644 --- a/reactos/dll/cpl/desk/desk.rc +++ b/reactos/dll/cpl/desk/desk.rc @@ -1,4 +1,5 @@ #include +#include #include "resource.h" LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL @@ -7,8 +8,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #define REACTOS_STR_FILE_DESCRIPTION "ReactOS Display Panel\0" #define REACTOS_STR_INTERNAL_NAME "desk\0" #define REACTOS_STR_ORIGINAL_FILENAME "desk.cpl\0" - -//#include +#include IDC_DESK_ICON ICON "resources/applet.ico" IDC_DESK_ICON2 ICON "resources/applet.ico" @@ -29,3 +29,4 @@ IDC_MONITOR BITMAP "resources/monitor.bmp" #include "lang/ru-RU.rc" #include "lang/sv-SE.rc" #include "lang/uk-UA.rc" + diff --git a/reactos/dll/cpl/desk/resource.h b/reactos/dll/cpl/desk/resource.h index 96d0b6b900a..34bac9fff6f 100644 --- a/reactos/dll/cpl/desk/resource.h +++ b/reactos/dll/cpl/desk/resource.h @@ -1,8 +1,6 @@ #ifndef __CPL_DESK_RESOURCE_H__ #define __CPL_DESK_RESOURCE_H__ -#include - /* metrics */ #define PROPSHEETWIDTH 246 #define PROPSHEETHEIGHT 228 diff --git a/reactos/dll/win32/comdlg32/precomp.h b/reactos/dll/win32/comdlg32/precomp.h index f56f4f56d09..4416df16e2a 100644 --- a/reactos/dll/win32/comdlg32/precomp.h +++ b/reactos/dll/win32/comdlg32/precomp.h @@ -14,7 +14,7 @@ #define COM_NO_WINDOWS_H #define _COMDLG32_ -#if defined (_MSC_VER) +//#if defined (_MSC_VER) #include #include #include @@ -27,32 +27,23 @@ #include #include #include -#endif - -#include "wine/windef.h" -#include "winbase.h" -#include "wine/wingdi.h" -#include "wine/winuser.h" -#include "wine/commdlg.h" -#include "wine/shellapi.h" +//#endif #if !defined (_MSC_VER) #include "psdk/shlguid.h" #include "psdk/shlobj.h" #endif -#include "wine/shlguid.h" -#include "wine/shlobj.h" +#include "shlguid.h" +#include "shlobj.h" #if !defined (_MSC_VER) #include "psdk/shlguid.h" #include "psdk/shlwapi.h" -#include "wine/shlwapi.h" #endif #include "wine/winbase16.h" #include "wine/winuser16.h" -#include "wine/guiddef.h" #include "wine/dlgs.h" #include "wine/debug.h" #include "wine/unicode.h" diff --git a/reactos/dll/win32/ole32/antimoniker.c b/reactos/dll/win32/ole32/antimoniker.c index bcd59e12684..829fc4f0080 100644 --- a/reactos/dll/win32/ole32/antimoniker.c +++ b/reactos/dll/win32/ole32/antimoniker.c @@ -1,4 +1,4 @@ -/*************************************************************************************** +/* * AntiMonikers implementation * * Copyright 1999 Noomen Hamza @@ -15,8 +15,8 @@ * * 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 - ***************************************************************************************/ + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ #include #include @@ -35,10 +35,6 @@ 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{ @@ -51,6 +47,7 @@ typedef struct AntiMonikerImpl{ LONG ref; /* reference counter for this object */ + IUnknown *pMarshal; /* custom marshaler */ } AntiMonikerImpl; static inline IMoniker *impl_from_IROTData( IROTData *iface ) @@ -84,6 +81,15 @@ AntiMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject) *ppvObject = iface; else if (IsEqualIID(&IID_IROTData, riid)) *ppvObject = (IROTData*)&(This->lpvtbl2); + else if (IsEqualIID(&IID_IMarshal, riid)) + { + HRESULT hr = S_OK; + if (!This->pMarshal) + hr = MonikerMarshal_Create(iface, &This->pMarshal); + if (hr != S_OK) + return hr; + return IUnknown_QueryInterface(This->pMarshal, riid, ppvObject); + } /* Check that we obtained an interface.*/ if ((*ppvObject)==0) @@ -122,7 +128,11 @@ AntiMonikerImpl_Release(IMoniker* iface) ref = InterlockedDecrement(&This->ref); /* destroy the object if there's no more reference on it */ - if (ref == 0) HeapFree(GetProcessHeap(),0,This); + if (ref == 0) + { + if (This->pMarshal) IUnknown_Release(This->pMarshal); + HeapFree(GetProcessHeap(),0,This); + } return ref; } @@ -133,7 +143,7 @@ AntiMonikerImpl_Release(IMoniker* iface) static HRESULT WINAPI AntiMonikerImpl_GetClassID(IMoniker* iface,CLSID *pClassID) { - TRACE("(%p,%p),stub!\n",iface,pClassID); + TRACE("(%p,%p)\n",iface,pClassID); if (pClassID==NULL) return E_POINTER; @@ -202,7 +212,7 @@ AntiMonikerImpl_GetSizeMax(IMoniker* iface, ULARGE_INTEGER* pcbSize) { TRACE("(%p,%p)\n",iface,pcbSize); - if (pcbSize!=NULL) + if (!pcbSize) return E_POINTER; /* for more details see AntiMonikerImpl_Save coments */ @@ -248,7 +258,7 @@ static 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,ppmkReduced); + TRACE("(%p,%p,%d,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced); if (ppmkReduced==NULL) return E_POINTER; @@ -325,7 +335,7 @@ static HRESULT WINAPI AntiMonikerImpl_Hash(IMoniker* iface,DWORD* pdwHash) if (pdwHash==NULL) return E_POINTER; - *pdwHash=0; + *pdwHash = 0x80000001; return S_OK; } @@ -395,7 +405,7 @@ AntiMonikerImpl_CommonPrefixWith(IMoniker* iface,IMoniker* pmkOther,IMoniker** p IMoniker_IsSystemMoniker(pmkOther,&mkSys); - if(mkSys==MKSYS_ITEMMONIKER){ + if(mkSys==MKSYS_ANTIMONIKER){ IMoniker_AddRef(iface); @@ -525,11 +535,21 @@ static ULONG WINAPI AntiMonikerROTDataImpl_Release(IROTData* iface) * AntiMonikerIROTData_GetComparaisonData ******************************************************************************/ static HRESULT WINAPI -AntiMonikerROTDataImpl_GetComparaisonData(IROTData* iface, BYTE* pbData, +AntiMonikerROTDataImpl_GetComparisonData(IROTData* iface, BYTE* pbData, ULONG cbMax, ULONG* pcbData) { - FIXME("(),stub!\n"); - return E_NOTIMPL; + DWORD constant = 1; + + TRACE("(%p, %u, %p)\n", pbData, cbMax, pcbData); + + *pcbData = sizeof(CLSID) + sizeof(DWORD); + if (cbMax < *pcbData) + return E_OUTOFMEMORY; + + memcpy(pbData, &CLSID_AntiMoniker, sizeof(CLSID)); + memcpy(pbData+sizeof(CLSID), &constant, sizeof(DWORD)); + + return S_OK; } /********************************************************************************/ @@ -569,7 +589,7 @@ static const IROTDataVtbl VT_ROTDataImpl = AntiMonikerROTDataImpl_QueryInterface, AntiMonikerROTDataImpl_AddRef, AntiMonikerROTDataImpl_Release, - AntiMonikerROTDataImpl_GetComparaisonData + AntiMonikerROTDataImpl_GetComparisonData }; /****************************************************************************** @@ -584,6 +604,7 @@ static HRESULT AntiMonikerImpl_Construct(AntiMonikerImpl* This) This->lpvtbl1 = &VT_AntiMonikerImpl; This->lpvtbl2 = &VT_ROTDataImpl; This->ref = 0; + This->pMarshal = NULL; return S_OK; } @@ -615,3 +636,72 @@ HRESULT WINAPI CreateAntiMoniker(LPMONIKER * ppmk) return hr; } + +static HRESULT WINAPI AntiMonikerCF_QueryInterface(LPCLASSFACTORY iface, + REFIID riid, LPVOID *ppv) +{ + *ppv = NULL; + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) + { + *ppv = iface; + IUnknown_AddRef(iface); + return S_OK; + } + return E_NOINTERFACE; +} + +static ULONG WINAPI AntiMonikerCF_AddRef(LPCLASSFACTORY iface) +{ + return 2; /* non-heap based object */ +} + +static ULONG WINAPI AntiMonikerCF_Release(LPCLASSFACTORY iface) +{ + return 1; /* non-heap based object */ +} + +static HRESULT WINAPI AntiMonikerCF_CreateInstance(LPCLASSFACTORY iface, + LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv) +{ + IMoniker *pMoniker; + HRESULT hr; + + TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv); + + *ppv = NULL; + + if (pUnk) + return CLASS_E_NOAGGREGATION; + + hr = CreateAntiMoniker(&pMoniker); + if (FAILED(hr)) + return hr; + + hr = IMoniker_QueryInterface(pMoniker, riid, ppv); + + if (FAILED(hr)) + IMoniker_Release(pMoniker); + + return hr; +} + +static HRESULT WINAPI AntiMonikerCF_LockServer(LPCLASSFACTORY iface, BOOL fLock) +{ + FIXME("(%d), stub!\n",fLock); + return S_OK; +} + +static const IClassFactoryVtbl AntiMonikerCFVtbl = +{ + AntiMonikerCF_QueryInterface, + AntiMonikerCF_AddRef, + AntiMonikerCF_Release, + AntiMonikerCF_CreateInstance, + AntiMonikerCF_LockServer +}; +static const IClassFactoryVtbl *AntiMonikerCF = &AntiMonikerCFVtbl; + +HRESULT AntiMonikerCF_Create(REFIID riid, LPVOID *ppv) +{ + return IClassFactory_QueryInterface((IClassFactory *)&AntiMonikerCF, riid, ppv); +} diff --git a/reactos/dll/win32/ole32/classmoniker.c b/reactos/dll/win32/ole32/classmoniker.c new file mode 100644 index 00000000000..07db6225b54 --- /dev/null +++ b/reactos/dll/win32/ole32/classmoniker.c @@ -0,0 +1,882 @@ +/* + * Class Monikers + * + * Copyright 1999 Noomen Hamza + * Copyright 2005-2007 Robert Shearman + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include +#include +#include + +#define COBJMACROS +#define NONAMELESSUNION +#define NONAMELESSSTRUCT + +#include "winerror.h" +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "winnls.h" +#include "wine/debug.h" +#include "ole2.h" +#include "wine/unicode.h" +#include "moniker.h" + +WINE_DEFAULT_DEBUG_CHANNEL(ole); + +#define CHARS_IN_GUID 39 + +/* ClassMoniker data structure */ +typedef struct ClassMoniker +{ + const IMonikerVtbl* lpVtbl; /* VTable relative to the IMoniker interface.*/ + const IROTDataVtbl* lpVtblRotData; /* VTable relative to the IROTData interface.*/ + LONG ref; /* reference counter for this object */ + CLSID clsid; /* clsid identified by this moniker */ + IUnknown *pMarshal; /* custom marshaler */ +} ClassMoniker; + +static inline IMoniker *impl_from_IROTData( IROTData *iface ) +{ + return (IMoniker *)((char*)iface - FIELD_OFFSET(ClassMoniker, lpVtblRotData)); +} + +/******************************************************************************* + * ClassMoniker_QueryInterface + *******************************************************************************/ +static HRESULT WINAPI ClassMoniker_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject) +{ + ClassMoniker *This = (ClassMoniker *)iface; + + TRACE("(%p,%p,%p)\n",This,riid,ppvObject); + + /* Perform a sanity check on the parameters.*/ + if (!ppvObject) + return E_POINTER; + + /* 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->lpVtblRotData); + else if (IsEqualIID(&IID_IMarshal, riid)) + { + HRESULT hr = S_OK; + if (!This->pMarshal) + hr = MonikerMarshal_Create(iface, &This->pMarshal); + if (hr != S_OK) + return hr; + return IUnknown_QueryInterface(This->pMarshal, riid, ppvObject); + } + + /* Check that we obtained an interface.*/ + if (!*ppvObject) + return E_NOINTERFACE; + + /* Query Interface always increases the reference count by one when it is successful */ + IMoniker_AddRef(iface); + + return S_OK; +} + +/****************************************************************************** + * ClassMoniker_AddRef + ******************************************************************************/ +static ULONG WINAPI ClassMoniker_AddRef(IMoniker* iface) +{ + ClassMoniker *This = (ClassMoniker *)iface; + + TRACE("(%p)\n",This); + + return InterlockedIncrement(&This->ref); +} + +/****************************************************************************** + * ClassMoniker_Destroy (local function) + *******************************************************************************/ +static HRESULT WINAPI ClassMoniker_Destroy(ClassMoniker* This) +{ + TRACE("(%p)\n",This); + + if (This->pMarshal) IUnknown_Release(This->pMarshal); + + HeapFree(GetProcessHeap(),0,This); + + return S_OK; +} + +/****************************************************************************** + * ClassMoniker_Release + ******************************************************************************/ +static ULONG WINAPI ClassMoniker_Release(IMoniker* iface) +{ + ClassMoniker *This = (ClassMoniker *)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) ClassMoniker_Destroy(This); + + return ref; +} + +/****************************************************************************** + * ClassMoniker_GetClassID + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_GetClassID(IMoniker* iface,CLSID *pClassID) +{ + TRACE("(%p,%p),stub!\n",iface,pClassID); + + if (pClassID==NULL) + return E_POINTER; + + *pClassID = CLSID_ClassMoniker; + + return S_OK; +} + +/****************************************************************************** + * ClassMoniker_IsDirty + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_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; +} + +/****************************************************************************** + * ClassMoniker_Load + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_Load(IMoniker* iface,IStream* pStm) +{ + ClassMoniker *This = (ClassMoniker *)iface; + HRESULT hr; + DWORD zero; + + TRACE("(%p)\n", pStm); + + hr = IStream_Read(pStm, &This->clsid, sizeof(This->clsid), NULL); + if (hr != S_OK) return STG_E_READFAULT; + + hr = IStream_Read(pStm, &zero, sizeof(zero), NULL); + if ((hr != S_OK) || (zero != 0)) return STG_E_READFAULT; + + return S_OK; +} + +/****************************************************************************** + * ClassMoniker_Save + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_Save(IMoniker* iface, + IStream* pStm,/* pointer to the stream where the object is to be saved */ + BOOL fClearDirty)/* Specifies whether to clear the dirty flag */ +{ + ClassMoniker *This = (ClassMoniker *)iface; + HRESULT hr; + DWORD zero = 0; + + TRACE("(%p, %s)\n", pStm, fClearDirty ? "TRUE" : "FALSE"); + + hr = IStream_Write(pStm, &This->clsid, sizeof(This->clsid), NULL); + if (FAILED(hr)) return hr; + + hr = IStream_Write(pStm, &zero, sizeof(zero), NULL); + + return hr; +} + +/****************************************************************************** + * ClassMoniker_GetSizeMax + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_GetSizeMax(IMoniker* iface, + ULARGE_INTEGER* pcbSize)/* Pointer to size of stream needed to save object */ +{ + TRACE("(%p)\n", pcbSize); + + pcbSize->QuadPart = sizeof(CLSID) + sizeof(DWORD); + + return S_OK; +} + +/****************************************************************************** + * ClassMoniker_BindToObject + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_BindToObject(IMoniker* iface, + IBindCtx* pbc, + IMoniker* pmkToLeft, + REFIID riid, + VOID** ppvResult) +{ + ClassMoniker *This = (ClassMoniker *)iface; + BIND_OPTS2 bindopts; + IClassActivator *pActivator; + HRESULT hr; + + TRACE("(%p,%p,%p,%p)\n", pbc, pmkToLeft, riid, ppvResult); + + bindopts.cbStruct = sizeof(bindopts); + IBindCtx_GetBindOptions(pbc, (BIND_OPTS *)&bindopts); + + if (!pmkToLeft) + return CoGetClassObject(&This->clsid, bindopts.dwClassContext, NULL, + riid, ppvResult); + else + { + hr = IMoniker_BindToObject(pmkToLeft, pbc, NULL, &IID_IClassActivator, + (void **)&pActivator); + if (FAILED(hr)) return hr; + + hr = IClassActivator_GetClassObject(pActivator, &This->clsid, + bindopts.dwClassContext, + bindopts.locale, riid, ppvResult); + + IClassActivator_Release(pActivator); + + return hr; + } +} + +/****************************************************************************** + * ClassMoniker_BindToStorage + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_BindToStorage(IMoniker* iface, + IBindCtx* pbc, + IMoniker* pmkToLeft, + REFIID riid, + VOID** ppvResult) +{ + TRACE("(%p,%p,%p,%p)\n",pbc, pmkToLeft, riid, ppvResult); + return ClassMoniker_BindToObject(iface, pbc, pmkToLeft, riid, ppvResult); +} + +/****************************************************************************** + * ClassMoniker_Reduce + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_Reduce(IMoniker* iface, + IBindCtx* pbc, + DWORD dwReduceHowFar, + IMoniker** ppmkToLeft, + IMoniker** ppmkReduced) +{ + TRACE("(%p,%p,%d,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced); + + if (!ppmkReduced) + return E_POINTER; + + ClassMoniker_AddRef(iface); + + *ppmkReduced = iface; + + return MK_S_REDUCED_TO_SELF; +} +/****************************************************************************** + * ClassMoniker_ComposeWith + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_ComposeWith(IMoniker* iface, + IMoniker* pmkRight, + BOOL fOnlyIfNotGeneric, + IMoniker** ppmkComposite) +{ + HRESULT res=S_OK; + DWORD mkSys,mkSys2; + IEnumMoniker* penumMk=0; + IMoniker *pmostLeftMk=0; + IMoniker* tempMkComposite=0; + + TRACE("(%p,%d,%p)\n", pmkRight, fOnlyIfNotGeneric, ppmkComposite); + + if ((ppmkComposite==NULL)||(pmkRight==NULL)) + return E_POINTER; + + *ppmkComposite=0; + + IMoniker_IsSystemMoniker(pmkRight,&mkSys); + + /* If pmkRight is an anti-moniker, the returned moniker is NULL */ + if(mkSys==MKSYS_ANTIMONIKER) + return res; + + else + /* if pmkRight is a composite whose leftmost component is an anti-moniker, */ + /* the returned moniker is the composite after the leftmost anti-moniker is removed. */ + + if(mkSys==MKSYS_GENERICCOMPOSITE){ + + res=IMoniker_Enum(pmkRight,TRUE,&penumMk); + + if (FAILED(res)) + return res; + + res=IEnumMoniker_Next(penumMk,1,&pmostLeftMk,NULL); + + IMoniker_IsSystemMoniker(pmostLeftMk,&mkSys2); + + if(mkSys2==MKSYS_ANTIMONIKER){ + + IMoniker_Release(pmostLeftMk); + + tempMkComposite=iface; + IMoniker_AddRef(iface); + + while(IEnumMoniker_Next(penumMk,1,&pmostLeftMk,NULL)==S_OK){ + + res=CreateGenericComposite(tempMkComposite,pmostLeftMk,ppmkComposite); + + IMoniker_Release(tempMkComposite); + IMoniker_Release(pmostLeftMk); + + tempMkComposite=*ppmkComposite; + IMoniker_AddRef(tempMkComposite); + } + return res; + } + else + return CreateGenericComposite(iface,pmkRight,ppmkComposite); + } + /* If pmkRight is not an anti-moniker, the method combines the two monikers into a generic + composite if fOnlyIfNotGeneric is FALSE; if fOnlyIfNotGeneric is TRUE, the method returns + a NULL moniker and a return value of MK_E_NEEDGENERIC */ + else + if (!fOnlyIfNotGeneric) + return CreateGenericComposite(iface,pmkRight,ppmkComposite); + + else + return MK_E_NEEDGENERIC; +} + +/****************************************************************************** + * ClassMoniker_Enum + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_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; +} + +/****************************************************************************** + * ClassMoniker_IsEqual + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_IsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker) +{ + + CLSID clsid; + LPOLESTR dispName1,dispName2; + IBindCtx* bind; + HRESULT res = S_FALSE; + + TRACE("(%p,%p)\n",iface,pmkOtherMoniker); + + if (!pmkOtherMoniker) return S_FALSE; + + + /* check if both are ClassMoniker */ + if(FAILED (IMoniker_GetClassID(pmkOtherMoniker,&clsid))) return S_FALSE; + if(!IsEqualCLSID(&clsid,&CLSID_ClassMoniker)) return S_FALSE; + + /* check if both displaynames are the same */ + if(SUCCEEDED ((res = CreateBindCtx(0,&bind)))) { + if(SUCCEEDED (IMoniker_GetDisplayName(iface,bind,NULL,&dispName1))) { + if(SUCCEEDED (IMoniker_GetDisplayName(pmkOtherMoniker,bind,NULL,&dispName2))) { + if(lstrcmpW(dispName1,dispName2)==0) res = S_OK; + CoTaskMemFree(dispName2); + } + CoTaskMemFree(dispName1); + } + } + return res; +} + +/****************************************************************************** + * ClassMoniker_Hash + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_Hash(IMoniker* iface,DWORD* pdwHash) +{ + ClassMoniker *This = (ClassMoniker *)iface; + + TRACE("(%p)\n", pdwHash); + + *pdwHash = This->clsid.Data1; + + return S_OK; +} + +/****************************************************************************** + * ClassMoniker_IsRunning + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_IsRunning(IMoniker* iface, + IBindCtx* pbc, + IMoniker* pmkToLeft, + IMoniker* pmkNewlyRunning) +{ + TRACE("(%p, %p, %p)\n", pbc, pmkToLeft, pmkNewlyRunning); + + /* as in native */ + return E_NOTIMPL; +} + +/****************************************************************************** + * ClassMoniker_GetTimeOfLastChange + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_GetTimeOfLastChange(IMoniker* iface, + IBindCtx* pbc, + IMoniker* pmkToLeft, + FILETIME* pItemTime) +{ + TRACE("(%p, %p, %p)\n", pbc, pmkToLeft, pItemTime); + + return MK_E_UNAVAILABLE; +} + +/****************************************************************************** + * ClassMoniker_Inverse + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_Inverse(IMoniker* iface,IMoniker** ppmk) +{ + TRACE("(%p)\n",ppmk); + + if (!ppmk) + return E_POINTER; + + return CreateAntiMoniker(ppmk); +} + +/****************************************************************************** + * ClassMoniker_CommonPrefixWith + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_CommonPrefixWith(IMoniker* iface,IMoniker* pmkOther,IMoniker** ppmkPrefix) +{ + DWORD mkSys; + + TRACE("(%p, %p)\n", pmkOther, ppmkPrefix); + + *ppmkPrefix = NULL; + + IMoniker_IsSystemMoniker(pmkOther, &mkSys); + + /* If the other moniker is an class moniker that is equal to this moniker, this method sets *ppmkPrefix */ + /* to this moniker and returns MK_S_US */ + + if (mkSys == MKSYS_CLASSMONIKER) + { + if (IMoniker_IsEqual(iface, pmkOther) == S_OK) + { + *ppmkPrefix = iface; + + IMoniker_AddRef(iface); + + return MK_S_US; + } + else + return MK_E_NOPREFIX; + } + else + /* otherwise, the method calls the MonikerCommonPrefixWith function. This function correctly handles */ + /* the case where the other moniker is a generic composite. */ + return MonikerCommonPrefixWith(iface, pmkOther, ppmkPrefix); +} + +/****************************************************************************** + * ClassMoniker_RelativePathTo + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_RelativePathTo(IMoniker* iface,IMoniker* pmOther, IMoniker** ppmkRelPath) +{ + TRACE("(%p, %p)\n",pmOther,ppmkRelPath); + + if (!ppmkRelPath) + return E_POINTER; + + *ppmkRelPath = NULL; + + return MK_E_NOTBINDABLE; +} + +/****************************************************************************** + * ClassMoniker_GetDisplayName + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_GetDisplayName(IMoniker* iface, + IBindCtx* pbc, + IMoniker* pmkToLeft, + LPOLESTR *ppszDisplayName) +{ + ClassMoniker *This = (ClassMoniker *)iface; + static const WCHAR wszClsidPrefix[] = {'c','l','s','i','d',':',0}; + + TRACE("(%p, %p, %p)\n", pbc, pmkToLeft, ppszDisplayName); + + if (!ppszDisplayName) + return E_POINTER; + + if (pmkToLeft) + return E_INVALIDARG; + + *ppszDisplayName = CoTaskMemAlloc(sizeof(wszClsidPrefix) + (CHARS_IN_GUID-2) * sizeof(WCHAR)); + + StringFromGUID2(&This->clsid, *ppszDisplayName+sizeof(wszClsidPrefix)/sizeof(WCHAR)-2, CHARS_IN_GUID); + + /* note: this overwrites the opening curly bracket of the CLSID string generated above */ + memcpy(*ppszDisplayName, wszClsidPrefix, sizeof(wszClsidPrefix)-sizeof(WCHAR)); + + /* note: this overwrites the closing curly bracket of the CLSID string generated above */ + (*ppszDisplayName)[sizeof(wszClsidPrefix)/sizeof(WCHAR)-2+CHARS_IN_GUID-2] = ':'; + (*ppszDisplayName)[sizeof(wszClsidPrefix)/sizeof(WCHAR)-2+CHARS_IN_GUID-1] = '\0'; + + TRACE("string is %s\n", debugstr_w(*ppszDisplayName)); + return S_OK; +} + +/****************************************************************************** + * ClassMoniker_ParseDisplayName + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_ParseDisplayName(IMoniker* iface, + IBindCtx* pbc, + IMoniker* pmkToLeft, + LPOLESTR pszDisplayName, + ULONG* pchEaten, + IMoniker** ppmkOut) +{ + FIXME("(%p, %p, %s, %p, %p)\n", pbc, pmkToLeft, debugstr_w(pszDisplayName), pchEaten, ppmkOut); + return E_NOTIMPL; +} + +/****************************************************************************** + * ClassMoniker_IsSystemMoniker + ******************************************************************************/ +static HRESULT WINAPI ClassMoniker_IsSystemMoniker(IMoniker* iface,DWORD* pwdMksys) +{ + TRACE("(%p,%p)\n",iface,pwdMksys); + + if (!pwdMksys) + return E_POINTER; + + *pwdMksys = MKSYS_CLASSMONIKER; + + return S_OK; +} + +/******************************************************************************* + * ClassMonikerIROTData_QueryInterface + *******************************************************************************/ +static HRESULT WINAPI ClassMonikerROTData_QueryInterface(IROTData *iface,REFIID riid,VOID** ppvObject) +{ + + IMoniker *This = impl_from_IROTData(iface); + + TRACE("(%p,%p,%p)\n",iface,riid,ppvObject); + + return ClassMoniker_QueryInterface(This, riid, ppvObject); +} + +/*********************************************************************** + * ClassMonikerIROTData_AddRef + */ +static ULONG WINAPI ClassMonikerROTData_AddRef(IROTData *iface) +{ + IMoniker *This = impl_from_IROTData(iface); + + TRACE("(%p)\n",iface); + + return ClassMoniker_AddRef(This); +} + +/*********************************************************************** + * ClassMonikerIROTData_Release + */ +static ULONG WINAPI ClassMonikerROTData_Release(IROTData* iface) +{ + IMoniker *This = impl_from_IROTData(iface); + + TRACE("(%p)\n",iface); + + return ClassMoniker_Release(This); +} + +/****************************************************************************** + * ClassMonikerIROTData_GetComparaisonData + ******************************************************************************/ +static HRESULT WINAPI ClassMonikerROTData_GetComparaisonData(IROTData* iface, + BYTE* pbData, + ULONG cbMax, + ULONG* pcbData) +{ + ClassMoniker *This = (ClassMoniker *)impl_from_IROTData(iface); + + TRACE("(%p, %u, %p)\n", pbData, cbMax, pcbData); + + *pcbData = 2*sizeof(CLSID); + if (cbMax < *pcbData) + return E_OUTOFMEMORY; + + /* write CLSID of the moniker */ + memcpy(pbData, &CLSID_ClassMoniker, sizeof(CLSID)); + /* write CLSID the moniker represents */ + memcpy(pbData+sizeof(CLSID), &This->clsid, sizeof(CLSID)); + + return S_OK; +} + +/********************************************************************************/ +/* Virtual function table for the ClassMoniker class which include IPersist,*/ +/* IPersistStream and IMoniker functions. */ +static const IMonikerVtbl ClassMonikerVtbl = +{ + ClassMoniker_QueryInterface, + ClassMoniker_AddRef, + ClassMoniker_Release, + ClassMoniker_GetClassID, + ClassMoniker_IsDirty, + ClassMoniker_Load, + ClassMoniker_Save, + ClassMoniker_GetSizeMax, + ClassMoniker_BindToObject, + ClassMoniker_BindToStorage, + ClassMoniker_Reduce, + ClassMoniker_ComposeWith, + ClassMoniker_Enum, + ClassMoniker_IsEqual, + ClassMoniker_Hash, + ClassMoniker_IsRunning, + ClassMoniker_GetTimeOfLastChange, + ClassMoniker_Inverse, + ClassMoniker_CommonPrefixWith, + ClassMoniker_RelativePathTo, + ClassMoniker_GetDisplayName, + ClassMoniker_ParseDisplayName, + ClassMoniker_IsSystemMoniker +}; + +/********************************************************************************/ +/* Virtual function table for the IROTData class. */ +static const IROTDataVtbl ROTDataVtbl = +{ + ClassMonikerROTData_QueryInterface, + ClassMonikerROTData_AddRef, + ClassMonikerROTData_Release, + ClassMonikerROTData_GetComparaisonData +}; + +/****************************************************************************** + * ClassMoniker_Construct (local function) + *******************************************************************************/ +static HRESULT WINAPI ClassMoniker_Construct(ClassMoniker* This, REFCLSID rclsid) +{ + TRACE("(%p,%s)\n",This,debugstr_guid(rclsid)); + + /* Initialize the virtual function table. */ + This->lpVtbl = &ClassMonikerVtbl; + This->lpVtblRotData = &ROTDataVtbl; + This->ref = 0; + This->clsid = *rclsid; + This->pMarshal = NULL; + + return S_OK; +} + +/****************************************************************************** + * CreateClassMoniker [OLE32.@] + ******************************************************************************/ +HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, IMoniker **ppmk) +{ + ClassMoniker* newClassMoniker; + HRESULT hr; + + TRACE("(%s,%p)\n", debugstr_guid(rclsid), ppmk); + + newClassMoniker = HeapAlloc(GetProcessHeap(), 0, sizeof(ClassMoniker)); + + if (!newClassMoniker) + return STG_E_INSUFFICIENTMEMORY; + + hr = ClassMoniker_Construct(newClassMoniker, rclsid); + + if (FAILED(hr)) + { + HeapFree(GetProcessHeap(), 0, newClassMoniker); + return hr; + } + + return ClassMoniker_QueryInterface((IMoniker *)newClassMoniker, &IID_IMoniker, (void**)ppmk); +} + +HRESULT ClassMoniker_CreateFromDisplayName(LPBC pbc, LPCOLESTR szDisplayName, + LPDWORD pchEaten, LPMONIKER *ppmk) +{ + HRESULT hr; + LPCWSTR s = strchrW(szDisplayName, ':'); + LPCWSTR end; + CLSID clsid; + BYTE table[256]; + int i; + + if (!s) + return MK_E_SYNTAX; + + s++; + + for (end = s; *end && (*end != ':'); end++) + ; + + TRACE("parsing %s\n", debugstr_wn(s, end - s)); + + /* validate the CLSID string */ + if (s[0] == '{') + { + if ((end - s != 38) || (s[37] != '}')) + return MK_E_SYNTAX; + s++; + } + else + { + if (end - s != 36) + return MK_E_SYNTAX; + } + + for (i=0; i<36; i++) + { + if ((i == 8)||(i == 13)||(i == 18)||(i == 23)) + { + if (s[i] != '-') + return MK_E_SYNTAX; + continue; + } + if (!(((s[i] >= '0') && (s[i] <= '9')) || + ((s[i] >= 'a') && (s[i] <= 'f')) || + ((s[i] >= 'A') && (s[i] <= 'F')))) + return MK_E_SYNTAX; + } + + /* quick lookup table */ + memset(table, 0, 256); + + for (i = 0; i < 10; i++) + table['0' + i] = i; + for (i = 0; i < 6; i++) + { + table['A' + i] = i+10; + table['a' + i] = i+10; + } + + /* in form XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX */ + + clsid.Data1 = (table[s[0]] << 28 | table[s[1]] << 24 | table[s[2]] << 20 | table[s[3]] << 16 | + table[s[4]] << 12 | table[s[5]] << 8 | table[s[6]] << 4 | table[s[7]]); + clsid.Data2 = table[s[9]] << 12 | table[s[10]] << 8 | table[s[11]] << 4 | table[s[12]]; + clsid.Data3 = table[s[14]] << 12 | table[s[15]] << 8 | table[s[16]] << 4 | table[s[17]]; + + /* these are just sequential bytes */ + clsid.Data4[0] = table[s[19]] << 4 | table[s[20]]; + clsid.Data4[1] = table[s[21]] << 4 | table[s[22]]; + clsid.Data4[2] = table[s[24]] << 4 | table[s[25]]; + clsid.Data4[3] = table[s[26]] << 4 | table[s[27]]; + clsid.Data4[4] = table[s[28]] << 4 | table[s[29]]; + clsid.Data4[5] = table[s[30]] << 4 | table[s[31]]; + clsid.Data4[6] = table[s[32]] << 4 | table[s[33]]; + clsid.Data4[7] = table[s[34]] << 4 | table[s[35]]; + + hr = CreateClassMoniker(&clsid, ppmk); + if (SUCCEEDED(hr)) + *pchEaten = (*end == ':' ? end + 1 : end) - szDisplayName; + return hr; +} + +static HRESULT WINAPI ClassMonikerCF_QueryInterface(LPCLASSFACTORY iface, + REFIID riid, LPVOID *ppv) +{ + *ppv = NULL; + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) + { + *ppv = iface; + IUnknown_AddRef(iface); + return S_OK; + } + return E_NOINTERFACE; +} + +static ULONG WINAPI ClassMonikerCF_AddRef(LPCLASSFACTORY iface) +{ + return 2; /* non-heap based object */ +} + +static ULONG WINAPI ClassMonikerCF_Release(LPCLASSFACTORY iface) +{ + return 1; /* non-heap based object */ +} + +static HRESULT WINAPI ClassMonikerCF_CreateInstance(LPCLASSFACTORY iface, + LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv) +{ + HRESULT hr; + IMoniker *pmk; + + TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv); + + *ppv = NULL; + + if (pUnk) + return CLASS_E_NOAGGREGATION; + + hr = CreateClassMoniker(&CLSID_NULL, &pmk); + if (FAILED(hr)) return hr; + + hr = IMoniker_QueryInterface(pmk, riid, ppv); + IMoniker_Release(pmk); + + return hr; +} + +static HRESULT WINAPI ClassMonikerCF_LockServer(LPCLASSFACTORY iface, BOOL fLock) +{ + FIXME("(%d), stub!\n",fLock); + return S_OK; +} + +static const IClassFactoryVtbl ClassMonikerCFVtbl = +{ + ClassMonikerCF_QueryInterface, + ClassMonikerCF_AddRef, + ClassMonikerCF_Release, + ClassMonikerCF_CreateInstance, + ClassMonikerCF_LockServer +}; +static const IClassFactoryVtbl *ClassMonikerCF = &ClassMonikerCFVtbl; + +HRESULT ClassMonikerCF_Create(REFIID riid, LPVOID *ppv) +{ + return IClassFactory_QueryInterface((IClassFactory *)&ClassMonikerCF, riid, ppv); +} diff --git a/reactos/dll/win32/ole32/compobj.c b/reactos/dll/win32/ole32/compobj.c index b2cf72b07cb..af43074aa26 100644 --- a/reactos/dll/win32/ole32/compobj.c +++ b/reactos/dll/win32/ole32/compobj.c @@ -7,6 +7,7 @@ * Copyright 1999 Sylvain St-Germain * Copyright 2002 Marcus Meissner * Copyright 2004 Mike Hearn + * Copyright 2005-2006 Robert Shearman (for CodeWeavers) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -20,7 +21,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * Note * 1. COINIT_MULTITHREADED is 0; it is the lack of COINIT_APARTMENTTHREADED @@ -33,18 +34,13 @@ * - Implement the OXID resolver so we don't need magic endpoint names for * clients and servers to meet up * - * - Pump the message loop during RPC calls. - * - Call IMessageFilter functions. - * * - Make all ole interface marshaling use NDR to be wire compatible with * native DCOM - * - Use & interpret ORPCTHIS & ORPCTHAT. * */ #include "config.h" -#include #include #include #include @@ -82,10 +78,10 @@ HINSTANCE OLE32_hInstance = 0; /* FIXME: make static ... */ static HRESULT COM_GetRegisteredClassObject(REFCLSID rclsid, DWORD dwClsContext, LPUNKNOWN* ppUnk); static void COM_RevokeAllClasses(void); +static HRESULT get_inproc_class_object(HKEY hkeydll, REFCLSID rclsid, REFIID riid, void **ppv); -const CLSID CLSID_StdGlobalInterfaceTable = { 0x00000323, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} }; - -APARTMENT *MTA; /* protected by csApartment */ +static APARTMENT *MTA; /* protected by csApartment */ +static APARTMENT *MainApartment; /* the first STA apartment */ static struct list apts = LIST_INIT( apts ); /* protected by csApartment */ static CRITICAL_SECTION csApartment; @@ -97,12 +93,21 @@ static CRITICAL_SECTION_DEBUG critsect_debug = }; static CRITICAL_SECTION csApartment = { &critsect_debug, -1, 0, 0, 0, 0 }; +struct registered_psclsid +{ + struct list entry; + IID iid; + CLSID clsid; +}; + /* * This lock count counts the number of times CoInitialize is called. It is * decreased every time CoUninitialize is called. When it hits 0, the COM * libraries are freed */ static LONG s_COMLockCount = 0; +/* Reference count used by CoAddRefServerProcess/CoReleaseServerProcess */ +static LONG s_COMServerProcessReferences = 0; /* * This linked list contains the list of registered class objects. These @@ -114,16 +119,17 @@ static LONG s_COMLockCount = 0; */ typedef struct tagRegisteredClass { + struct list entry; CLSID classIdentifier; LPUNKNOWN classObject; DWORD runContext; DWORD connectFlags; DWORD dwCookie; LPSTREAM pMarshaledData; /* FIXME: only really need to store OXID and IPID */ - struct tagRegisteredClass* nextClass; + void *RpcRegistration; } RegisteredClass; -static RegisteredClass* firstRegisteredClass = NULL; +static struct list RegisteredClassList = LIST_INIT(RegisteredClassList); static CRITICAL_SECTION csRegisteredClassList; static CRITICAL_SECTION_DEBUG class_cs_debug = @@ -145,12 +151,20 @@ static CRITICAL_SECTION csRegisteredClassList = { &class_cs_debug, -1, 0, 0, 0, * next unload-call but not before 600 sec. */ -typedef struct tagOpenDll { - HINSTANCE hLibrary; - struct tagOpenDll *next; +typedef HRESULT (CALLBACK *DllGetClassObjectFunc)(REFCLSID clsid, REFIID iid, LPVOID *ppv); +typedef HRESULT (WINAPI *DllCanUnloadNowFunc)(void); + +typedef struct tagOpenDll +{ + LONG refs; + LPWSTR library_name; + HANDLE library; + DllGetClassObjectFunc DllGetClassObject; + DllCanUnloadNowFunc DllCanUnloadNow; + struct list entry; } OpenDll; -static OpenDll *openDllList = NULL; /* linked list of open dlls */ +static struct list openDllList = LIST_INIT(openDllList); static CRITICAL_SECTION csOpenDllList; static CRITICAL_SECTION_DEBUG dll_cs_debug = @@ -161,12 +175,23 @@ static CRITICAL_SECTION_DEBUG dll_cs_debug = }; static CRITICAL_SECTION csOpenDllList = { &dll_cs_debug, -1, 0, 0, 0, 0 }; +struct apartment_loaded_dll +{ + struct list entry; + OpenDll *dll; +}; + static const WCHAR wszAptWinClass[] = {'O','l','e','M','a','i','n','T','h','r','e','a','d','W','n','d','C','l','a','s','s',' ', '0','x','#','#','#','#','#','#','#','#',' ',0}; static LRESULT CALLBACK apartment_wndproc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); +static HRESULT apartment_getclassobject(struct apartment *apt, LPCWSTR dllpath, + REFCLSID rclsid, REFIID riid, void **ppv); -static void COMPOBJ_DLLList_Add(HANDLE hLibrary); -static void COMPOBJ_DllList_FreeUnused(int Timeout); +static HRESULT COMPOBJ_DllList_Add(LPCWSTR library_name, OpenDll **ret); +static OpenDll *COMPOBJ_DllList_Get(LPCWSTR library_name); +static void COMPOBJ_DllList_ReleaseRef(OpenDll *entry); + +static DWORD COM_RegReadPath(HKEY hkeyroot, const WCHAR *keyname, const WCHAR *valuename, WCHAR * dst, DWORD dstlen); static void COMPOBJ_InitProcess( void ) { @@ -211,18 +236,20 @@ static void COM_TlsDestroy(void) */ /* allocates memory and fills in the necessary fields for a new apartment - * object */ + * object. must be called inside apartment cs */ static APARTMENT *apartment_construct(DWORD model) { APARTMENT *apt; - TRACE("creating new apartment, model=%ld\n", model); + TRACE("creating new apartment, model=%d\n", model); apt = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*apt)); apt->tid = GetCurrentThreadId(); list_init(&apt->proxies); list_init(&apt->stubmgrs); + list_init(&apt->psclsids); + list_init(&apt->loaded_dlls); apt->ipidc = 0; apt->refs = 1; apt->remunk_exported = FALSE; @@ -230,29 +257,22 @@ static APARTMENT *apartment_construct(DWORD model) InitializeCriticalSection(&apt->cs); DEBUG_SET_CRITSEC_NAME(&apt->cs, "apartment"); - apt->model = model; + apt->multi_threaded = !(model & COINIT_APARTMENTTHREADED); - if (model & COINIT_APARTMENTTHREADED) - { - /* FIXME: should be randomly generated by in an RPC call to rpcss */ - apt->oxid = ((OXID)GetCurrentProcessId() << 32) | GetCurrentThreadId(); - apt->win = CreateWindowW(wszAptWinClass, NULL, 0, - 0, 0, 0, 0, - 0, 0, OLE32_hInstance, NULL); - } - else + if (apt->multi_threaded) { /* FIXME: should be randomly generated by in an RPC call to rpcss */ apt->oxid = ((OXID)GetCurrentProcessId() << 32) | 0xcafe; } + else + { + /* FIXME: should be randomly generated by in an RPC call to rpcss */ + apt->oxid = ((OXID)GetCurrentProcessId() << 32) | GetCurrentThreadId(); + } TRACE("Created apartment on OXID %s\n", wine_dbgstr_longlong(apt->oxid)); - /* the locking here is not currently needed for the MTA case, but it - * doesn't hurt and makes the code simpler */ - EnterCriticalSection(&csApartment); list_add_head(&apts, &apt->entry); - LeaveCriticalSection(&csApartment); return apt; } @@ -268,8 +288,17 @@ static APARTMENT *apartment_get_or_create(DWORD model) { if (model & COINIT_APARTMENTTHREADED) { + EnterCriticalSection(&csApartment); + apt = apartment_construct(model); - COM_CurrentInfo()->apt = apt; + if (!MainApartment) + { + MainApartment = apt; + apt->main = TRUE; + TRACE("Created main-threaded apartment with OXID %s\n", wine_dbgstr_longlong(apt->oxid)); + } + + LeaveCriticalSection(&csApartment); } else { @@ -287,19 +316,24 @@ static APARTMENT *apartment_get_or_create(DWORD model) MTA = apartment_construct(model); apt = MTA; - COM_CurrentInfo()->apt = apt; LeaveCriticalSection(&csApartment); } + COM_CurrentInfo()->apt = apt; } return apt; } +static inline BOOL apartment_is_model(APARTMENT *apt, DWORD model) +{ + return (apt->multi_threaded == !(model & COINIT_APARTMENTTHREADED)); +} + DWORD apartment_addref(struct apartment *apt) { DWORD refs = InterlockedIncrement(&apt->refs); - TRACE("%s: before = %ld\n", wine_dbgstr_longlong(apt->oxid), refs - 1); + TRACE("%s: before = %d\n", wine_dbgstr_longlong(apt->oxid), refs - 1); return refs; } @@ -310,11 +344,12 @@ DWORD apartment_release(struct apartment *apt) EnterCriticalSection(&csApartment); ret = InterlockedDecrement(&apt->refs); - TRACE("%s: after = %ld\n", wine_dbgstr_longlong(apt->oxid), ret); + TRACE("%s: after = %d\n", wine_dbgstr_longlong(apt->oxid), ret); /* destruction stuff that needs to happen under csApartment CS */ if (ret == 0) { if (apt == MTA) MTA = NULL; + else if (apt == MainApartment) MainApartment = NULL; list_remove(&apt->entry); } @@ -344,6 +379,15 @@ DWORD apartment_release(struct apartment *apt) stub_manager_int_release(stubmgr); } + LIST_FOR_EACH_SAFE(cursor, cursor2, &apt->psclsids) + { + struct registered_psclsid *registered_psclsid = + LIST_ENTRY(cursor, struct registered_psclsid, entry); + + list_remove(®istered_psclsid->entry); + HeapFree(GetProcessHeap(), 0, registered_psclsid); + } + /* if this assert fires, then another thread took a reference to a * stub manager without taking a reference to the containing * apartment, which it must do. */ @@ -351,6 +395,14 @@ DWORD apartment_release(struct apartment *apt) if (apt->filter) IUnknown_Release(apt->filter); + while ((cursor = list_head(&apt->loaded_dlls))) + { + struct apartment_loaded_dll *apartment_loaded_dll = LIST_ENTRY(cursor, struct apartment_loaded_dll, entry); + COMPOBJ_DllList_ReleaseRef(apartment_loaded_dll->dll); + list_remove(cursor); + HeapFree(GetProcessHeap(), 0, apartment_loaded_dll); + } + DEBUG_CLEAR_CRITSEC_NAME(&apt->cs); DeleteCriticalSection(&apt->cs); @@ -410,6 +462,75 @@ APARTMENT *apartment_findfromtid(DWORD tid) return result; } +/* gets an apartment which has a given type. The caller must + * release the reference from the apartment as soon as the apartment pointer + * is no longer required. */ +static APARTMENT *apartment_findfromtype(BOOL multi_threaded, BOOL main_apartment) +{ + APARTMENT *result = NULL; + struct apartment *apt; + + EnterCriticalSection(&csApartment); + + if (!multi_threaded && main_apartment) + { + result = MainApartment; + if (result) apartment_addref(result); + LeaveCriticalSection(&csApartment); + return result; + } + + LIST_FOR_EACH_ENTRY( apt, &apts, struct apartment, entry ) + { + if (apt->multi_threaded == multi_threaded) + { + result = apt; + apartment_addref(result); + break; + } + } + LeaveCriticalSection(&csApartment); + + return result; +} + +struct host_object_params +{ + HKEY hkeydll; + CLSID clsid; /* clsid of object to marshal */ + IID iid; /* interface to marshal */ + IStream *stream; /* stream that the object will be marshaled into */ +}; + +static HRESULT apartment_hostobject(struct apartment *apt, + const struct host_object_params *params) +{ + IUnknown *object; + HRESULT hr; + static const LARGE_INTEGER llZero; + WCHAR dllpath[MAX_PATH+1]; + + TRACE("\n"); + + if (COM_RegReadPath(params->hkeydll, NULL, NULL, dllpath, ARRAYSIZE(dllpath)) != ERROR_SUCCESS) + { + /* failure: CLSID is not found in registry */ + WARN("class %s not registered inproc\n", debugstr_guid(¶ms->clsid)); + return REGDB_E_CLASSNOTREG; + } + + hr = apartment_getclassobject(apt, dllpath, ¶ms->clsid, ¶ms->iid, (void **)&object); + if (FAILED(hr)) + return hr; + + hr = CoMarshalInterface(params->stream, ¶ms->iid, object, MSHCTX_INPROC, NULL, MSHLFLAGS_NORMAL); + if (FAILED(hr)) + IUnknown_Release(object); + IStream_Seek(params->stream, llZero, STREAM_SEEK_SET, NULL); + + return hr; +} + static LRESULT CALLBACK apartment_wndproc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) @@ -417,84 +538,223 @@ static LRESULT CALLBACK apartment_wndproc(HWND hWnd, UINT msg, WPARAM wParam, LP case DM_EXECUTERPC: RPC_ExecuteCall((struct dispatch_params *)lParam); return 0; + case DM_HOSTOBJECT: + return apartment_hostobject(COM_CurrentApt(), (const struct host_object_params *)lParam); default: return DefWindowProcW(hWnd, msg, wParam, lParam); } } -/***************************************************************************** - * This section contains OpenDllList implemantation - */ - -static void COMPOBJ_DLLList_Add(HANDLE hLibrary) +HRESULT apartment_createwindowifneeded(struct apartment *apt) { - OpenDll *ptr; - OpenDll *tmp; + if (apt->multi_threaded) + return S_OK; - TRACE("\n"); - - EnterCriticalSection( &csOpenDllList ); - - if (openDllList == NULL) { - /* empty list -- add first node */ - openDllList = HeapAlloc(GetProcessHeap(),0, sizeof(OpenDll)); - openDllList->hLibrary=hLibrary; - openDllList->next = NULL; - } else { - /* search for this dll */ - int found = FALSE; - for (ptr = openDllList; ptr->next != NULL; ptr=ptr->next) { - if (ptr->hLibrary == hLibrary) { - found = TRUE; - break; - } + if (!apt->win) + { + HWND hwnd = CreateWindowW(wszAptWinClass, NULL, 0, + 0, 0, 0, 0, + 0, 0, OLE32_hInstance, NULL); + if (!hwnd) + { + ERR("CreateWindow failed with error %d\n", GetLastError()); + return HRESULT_FROM_WIN32(GetLastError()); } - if (!found) { - /* dll not found, add it */ - tmp = openDllList; - openDllList = HeapAlloc(GetProcessHeap(),0, sizeof(OpenDll)); - openDllList->hLibrary = hLibrary; - openDllList->next = tmp; - } + if (InterlockedCompareExchangePointer((PVOID *)&apt->win, hwnd, NULL)) + /* someone beat us to it */ + DestroyWindow(hwnd); } - LeaveCriticalSection( &csOpenDllList ); + return S_OK; } -static void COMPOBJ_DllList_FreeUnused(int Timeout) +HWND apartment_getwindow(struct apartment *apt) { - OpenDll *curr, *next, *prev = NULL; - typedef HRESULT (WINAPI *DllCanUnloadNowFunc)(void); + assert(!apt->multi_threaded); + return apt->win; +} + +void apartment_joinmta(void) +{ + apartment_addref(MTA); + COM_CurrentInfo()->apt = MTA; +} + +static HRESULT apartment_getclassobject(struct apartment *apt, LPCWSTR dllpath, + REFCLSID rclsid, REFIID riid, void **ppv) +{ + HRESULT hr = S_OK; + BOOL found = FALSE; + struct apartment_loaded_dll *apartment_loaded_dll; + + EnterCriticalSection(&apt->cs); + + LIST_FOR_EACH_ENTRY(apartment_loaded_dll, &apt->loaded_dlls, struct apartment_loaded_dll, entry) + if (!strcmpiW(dllpath, apartment_loaded_dll->dll->library_name)) + { + TRACE("found %s already loaded\n", debugstr_w(dllpath)); + found = TRUE; + break; + } + + if (!found) + { + apartment_loaded_dll = HeapAlloc(GetProcessHeap(), 0, sizeof(*apartment_loaded_dll)); + if (!apartment_loaded_dll) + hr = E_OUTOFMEMORY; + if (SUCCEEDED(hr)) + { + hr = COMPOBJ_DllList_Add( dllpath, &apartment_loaded_dll->dll ); + if (FAILED(hr)) + HeapFree(GetProcessHeap(), 0, apartment_loaded_dll); + } + if (SUCCEEDED(hr)) + { + TRACE("added new loaded dll %s\n", debugstr_w(dllpath)); + list_add_tail(&apt->loaded_dlls, &apartment_loaded_dll->entry); + } + } + + LeaveCriticalSection(&apt->cs); + + if (SUCCEEDED(hr)) + { + TRACE("calling DllGetClassObject %p\n", apartment_loaded_dll->dll->DllGetClassObject); + /* OK: get the ClassObject */ + hr = apartment_loaded_dll->dll->DllGetClassObject(rclsid, riid, ppv); + + if (hr != S_OK) + ERR("DllGetClassObject returned error 0x%08x\n", hr); + } + + return hr; +} + +static void apartment_freeunusedlibraries(struct apartment *apt) +{ + struct apartment_loaded_dll *entry, *next; + EnterCriticalSection(&apt->cs); + LIST_FOR_EACH_ENTRY_SAFE(entry, next, &apt->loaded_dlls, struct apartment_loaded_dll, entry) + { + if (entry->dll->DllCanUnloadNow && (entry->dll->DllCanUnloadNow() == S_OK)) + { + list_remove(&entry->entry); + COMPOBJ_DllList_ReleaseRef(entry->dll); + HeapFree(GetProcessHeap(), 0, entry); + } + } + LeaveCriticalSection(&apt->cs); +} + +/***************************************************************************** + * This section contains OpenDllList implementation + */ + +/* caller must ensure that library_name is not already in the open dll list */ +static HRESULT COMPOBJ_DllList_Add(LPCWSTR library_name, OpenDll **ret) +{ + OpenDll *entry; + int len; + HRESULT hr = S_OK; + HANDLE hLibrary; DllCanUnloadNowFunc DllCanUnloadNow; + DllGetClassObjectFunc DllGetClassObject; TRACE("\n"); + *ret = COMPOBJ_DllList_Get(library_name); + if (*ret) return S_OK; + + /* do this outside the csOpenDllList to avoid creating a lock dependency on + * the loader lock */ + hLibrary = LoadLibraryExW(library_name, 0, LOAD_WITH_ALTERED_SEARCH_PATH); + if (!hLibrary) + { + ERR("couldn't load in-process dll %s\n", debugstr_w(library_name)); + /* failure: DLL could not be loaded */ + return E_ACCESSDENIED; /* FIXME: or should this be CO_E_DLLNOTFOUND? */ + } + + DllCanUnloadNow = GetProcAddress(hLibrary, "DllCanUnloadNow"); + /* Note: failing to find DllCanUnloadNow is not a failure */ + DllGetClassObject = GetProcAddress(hLibrary, "DllGetClassObject"); + if (!DllGetClassObject) + { + /* failure: the dll did not export DllGetClassObject */ + ERR("couldn't find function DllGetClassObject in %s\n", debugstr_w(library_name)); + FreeLibrary(hLibrary); + return CO_E_DLLNOTFOUND; + } + EnterCriticalSection( &csOpenDllList ); - for (curr = openDllList; curr != NULL; ) { - DllCanUnloadNow = (DllCanUnloadNowFunc) GetProcAddress(curr->hLibrary, "DllCanUnloadNow"); - - if ( (DllCanUnloadNow != NULL) && (DllCanUnloadNow() == S_OK) ) { - next = curr->next; - - TRACE("freeing %p\n", curr->hLibrary); - FreeLibrary(curr->hLibrary); - - HeapFree(GetProcessHeap(), 0, curr); - if (curr == openDllList) { - openDllList = next; - } else { - prev->next = next; - } - - curr = next; - } else { - prev = curr; - curr = curr->next; - } + *ret = COMPOBJ_DllList_Get(library_name); + if (*ret) + { + /* another caller to this function already added the dll while we + * weren't in the critical section */ + FreeLibrary(hLibrary); + } + else + { + len = strlenW(library_name); + entry = HeapAlloc(GetProcessHeap(),0, sizeof(OpenDll)); + if (entry) + entry->library_name = HeapAlloc(GetProcessHeap(), 0, (len + 1)*sizeof(WCHAR)); + if (entry && entry->library_name) + { + memcpy(entry->library_name, library_name, (len + 1)*sizeof(WCHAR)); + entry->library = hLibrary; + entry->refs = 1; + entry->DllCanUnloadNow = DllCanUnloadNow; + entry->DllGetClassObject = DllGetClassObject; + list_add_tail(&openDllList, &entry->entry); + } + else + { + hr = E_OUTOFMEMORY; + FreeLibrary(hLibrary); + } + *ret = entry; } LeaveCriticalSection( &csOpenDllList ); + + return hr; +} + +static OpenDll *COMPOBJ_DllList_Get(LPCWSTR library_name) +{ + OpenDll *ptr; + OpenDll *ret = NULL; + EnterCriticalSection(&csOpenDllList); + LIST_FOR_EACH_ENTRY(ptr, &openDllList, OpenDll, entry) + { + if (!strcmpiW(library_name, ptr->library_name) && + (InterlockedIncrement(&ptr->refs) != 1) /* entry is being destroy if == 1 */) + { + ret = ptr; + break; + } + } + LeaveCriticalSection(&csOpenDllList); + return ret; +} + +static void COMPOBJ_DllList_ReleaseRef(OpenDll *entry) +{ + if (!InterlockedDecrement(&entry->refs)) + { + EnterCriticalSection(&csOpenDllList); + list_remove(&entry->entry); + LeaveCriticalSection(&csOpenDllList); + + TRACE("freeing %p\n", entry->library); + FreeLibrary(entry->library); + + HeapFree(GetProcessHeap(), 0, entry->library_name); + HeapFree(GetProcessHeap(), 0, entry); + } } /****************************************************************************** @@ -557,7 +817,7 @@ HRESULT WINAPI CoInitialize(LPVOID lpReserved) * * The behavior used to set the IMalloc used for memory management is * obsolete. - * The dwCoInit parameter must specify of of the following apartment + * The dwCoInit parameter must specify one of the following apartment * threading models: *| COINIT_APARTMENTTHREADED - A single-threaded apartment (STA). *| COINIT_MULTITHREADED - A multi-threaded apartment (MTA). @@ -602,11 +862,13 @@ HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit) apt = apartment_get_or_create(dwCoInit); if (!apt) return E_OUTOFMEMORY; } - else if (dwCoInit != apt->model) + else if (!apartment_is_model(apt, dwCoInit)) { /* Changing the threading model after it's been set is illegal. If this warning is triggered by Wine code then we are probably using the wrong threading model to implement that API. */ - ERR("Attempt to change threading model of this apartment from 0x%lx to 0x%lx\n", apt->model, dwCoInit); + ERR("Attempt to change threading model of this apartment from %s to %s\n", + apt->multi_threaded ? "multi-threaded" : "apartment threaded", + dwCoInit & COINIT_APARTMENTTHREADED ? "apartment threaded" : "multi-threaded"); return RPC_E_CHANGED_MODE; } else @@ -710,7 +972,6 @@ void WINAPI CoUninitialize(void) /****************************************************************************** * CoDisconnectObject [OLE32.@] - * CoDisconnectObject [COMPOBJ.15] * * Disconnects all connections to this object from remote processes. Dispatches * pending RPCs while blocking new RPCs from occurring, and then calls @@ -736,7 +997,7 @@ HRESULT WINAPI CoDisconnectObject( LPUNKNOWN lpUnk, DWORD reserved ) IMarshal *marshal; APARTMENT *apt; - TRACE("(%p, 0x%08lx)\n", lpUnk, reserved); + TRACE("(%p, 0x%08x)\n", lpUnk, reserved); hr = IUnknown_QueryInterface(lpUnk, &IID_IMarshal, (void **)&marshal); if (hr == S_OK) @@ -795,31 +1056,23 @@ HRESULT WINAPI CoCreateGuid(GUID *pguid) * S_OK on success * CO_E_CLASSSTRING if idstr is not a valid CLSID * - * BUGS - * - * In Windows, if idstr is not a valid CLSID string then it gets - * treated as a ProgID. Wine currently doesn't do this. If idstr is - * NULL it's treated as an all-zero GUID. - * * SEE ALSO * StringFromCLSID */ -HRESULT WINAPI __CLSIDFromStringA(LPCSTR idstr, CLSID *id) +static HRESULT WINAPI __CLSIDFromString(LPCWSTR s, CLSID *id) { - const BYTE *s; int i; BYTE table[256]; - if (!idstr) { + if (!s) { memset( id, 0, sizeof (CLSID) ); return S_OK; } /* validate the CLSID string */ - if (strlen(idstr) != 38) + if (strlenW(s) != 38) return CO_E_CLASSSTRING; - s = (const BYTE *) idstr; if ((s[0]!='{') || (s[9]!='-') || (s[14]!='-') || (s[19]!='-') || (s[24]!='-') || (s[37]!='}')) return CO_E_CLASSSTRING; @@ -831,7 +1084,7 @@ HRESULT WINAPI __CLSIDFromStringA(LPCSTR idstr, CLSID *id) return CO_E_CLASSSTRING; } - TRACE("%s -> %p\n", s, id); + TRACE("%s -> %p\n", debugstr_w(s), id); /* quick lookup table */ memset(table, 0, 256); @@ -868,14 +1121,12 @@ HRESULT WINAPI __CLSIDFromStringA(LPCSTR idstr, CLSID *id) HRESULT WINAPI CLSIDFromString(LPOLESTR idstr, CLSID *id ) { - char xid[40]; HRESULT ret; - if (!WideCharToMultiByte( CP_ACP, 0, idstr, -1, xid, sizeof(xid), NULL, NULL )) - return CO_E_CLASSSTRING; + if (!id) + return E_INVALIDARG; - - ret = __CLSIDFromStringA(xid,id); + ret = __CLSIDFromString(idstr, id); if(ret != S_OK) { /* It appears a ProgID is also valid */ ret = CLSIDFromProgID(idstr, id); } @@ -887,7 +1138,7 @@ HRESULT WINE_StringFromCLSID( const CLSID *id, /* [in] GUID to be converted */ LPSTR idstr /* [out] pointer to buffer to contain converted guid */ ) { - static const char *hex = "0123456789ABCDEF"; + static const char hex[] = "0123456789ABCDEF"; char *s; int i; @@ -897,7 +1148,7 @@ HRESULT WINE_StringFromCLSID( return E_FAIL; } - sprintf(idstr, "{%08lX-%04X-%04X-%02X%02X-", + sprintf(idstr, "{%08X-%04X-%04X-%02X%02X-", id->Data1, id->Data2, id->Data3, id->Data4[0], id->Data4[1]); s = &idstr[25]; @@ -1010,6 +1261,43 @@ HRESULT COM_OpenKeyForCLSID(REFCLSID clsid, LPCWSTR keyname, REGSAM access, HKEY return S_OK; } +/* open HKCR\\AppId\\{string form of appid clsid} key */ +HRESULT COM_OpenKeyForAppIdFromCLSID(REFCLSID clsid, REGSAM access, HKEY *subkey) +{ + static const WCHAR szAppId[] = { 'A','p','p','I','d',0 }; + static const WCHAR szAppIdKey[] = { 'A','p','p','I','d','\\',0 }; + DWORD res; + WCHAR buf[CHARS_IN_GUID]; + WCHAR keyname[ARRAYSIZE(szAppIdKey) + CHARS_IN_GUID]; + DWORD size; + HKEY hkey; + DWORD type; + HRESULT hr; + + /* read the AppID value under the class's key */ + hr = COM_OpenKeyForCLSID(clsid, NULL, KEY_READ, &hkey); + if (FAILED(hr)) + return hr; + + size = sizeof(buf); + res = RegQueryValueExW(hkey, szAppId, NULL, &type, (LPBYTE)buf, &size); + RegCloseKey(hkey); + if (res == ERROR_FILE_NOT_FOUND) + return REGDB_E_KEYMISSING; + else if (res != ERROR_SUCCESS || type!=REG_SZ) + return REGDB_E_READREGDB; + + strcpyW(keyname, szAppIdKey); + strcatW(keyname, buf); + res = RegOpenKeyExW(HKEY_CLASSES_ROOT, keyname, 0, access, subkey); + if (res == ERROR_FILE_NOT_FOUND) + return REGDB_E_KEYMISSING; + else if (res != ERROR_SUCCESS) + return REGDB_E_READREGDB; + + return S_OK; +} + /****************************************************************************** * ProgIDFromCLSID [OLE32.@] * @@ -1017,20 +1305,27 @@ HRESULT COM_OpenKeyForCLSID(REFCLSID clsid, LPCWSTR keyname, REGSAM access, HKEY * * PARAMS * clsid [I] Class ID, as found in registry. - * lplpszProgID [O] Associated ProgID. + * ppszProgID [O] Associated ProgID. * * RETURNS * S_OK * E_OUTOFMEMORY * REGDB_E_CLASSNOTREG if the given clsid has no associated ProgID */ -HRESULT WINAPI ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *lplpszProgID) +HRESULT WINAPI ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *ppszProgID) { static const WCHAR wszProgID[] = {'P','r','o','g','I','D',0}; HKEY hkey; HRESULT ret; LONG progidlen = 0; + if (!ppszProgID) + { + ERR("ppszProgId isn't optional\n"); + return E_INVALIDARG; + } + + *ppszProgID = NULL; ret = COM_OpenKeyForCLSID(clsid, wszProgID, KEY_READ, &hkey); if (FAILED(ret)) return ret; @@ -1040,10 +1335,10 @@ HRESULT WINAPI ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *lplpszProgID) if (ret == S_OK) { - *lplpszProgID = CoTaskMemAlloc(progidlen * sizeof(WCHAR)); - if (*lplpszProgID) + *ppszProgID = CoTaskMemAlloc(progidlen * sizeof(WCHAR)); + if (*ppszProgID) { - if (RegQueryValueW(hkey, NULL, *lplpszProgID, &progidlen)) + if (RegQueryValueW(hkey, NULL, *ppszProgID, &progidlen)) ret = REGDB_E_CLASSNOTREG; } else @@ -1061,25 +1356,36 @@ HRESULT WINAPI ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *lplpszProgID) * * PARAMS * progid [I] Unicode program ID, as found in registry. - * riid [O] Associated CLSID. + * clsid [O] Associated CLSID. * * RETURNS * Success: S_OK * Failure: CO_E_CLASSSTRING - the given ProgID cannot be found. */ -HRESULT WINAPI CLSIDFromProgID(LPCOLESTR progid, LPCLSID riid) +HRESULT WINAPI CLSIDFromProgID(LPCOLESTR progid, LPCLSID clsid) { static const WCHAR clsidW[] = { '\\','C','L','S','I','D',0 }; WCHAR buf2[CHARS_IN_GUID]; LONG buf2len = sizeof(buf2); HKEY xhkey; + WCHAR *buf; - WCHAR *buf = HeapAlloc( GetProcessHeap(),0,(strlenW(progid)+8) * sizeof(WCHAR) ); + if (!progid || !clsid) + { + ERR("neither progid (%p) nor clsid (%p) are optional\n", progid, clsid); + return E_INVALIDARG; + } + + /* initialise clsid in case of failure */ + memset(clsid, 0, sizeof(*clsid)); + + buf = HeapAlloc( GetProcessHeap(),0,(strlenW(progid)+8) * sizeof(WCHAR) ); strcpyW( buf, progid ); strcatW( buf, clsidW ); if (RegOpenKeyW(HKEY_CLASSES_ROOT,buf,&xhkey)) { HeapFree(GetProcessHeap(),0,buf); + WARN("couldn't open key for ProgID %s\n", debugstr_w(progid)); return CO_E_CLASSSTRING; } HeapFree(GetProcessHeap(),0,buf); @@ -1087,10 +1393,11 @@ HRESULT WINAPI CLSIDFromProgID(LPCOLESTR progid, LPCLSID riid) if (RegQueryValueW(xhkey,NULL,buf2,&buf2len)) { RegCloseKey(xhkey); + WARN("couldn't query clsid value for ProgID %s\n", debugstr_w(progid)); return CO_E_CLASSSTRING; } RegCloseKey(xhkey); - return CLSIDFromString(buf2,riid); + return CLSIDFromString(buf2,clsid); } @@ -1123,11 +1430,12 @@ HRESULT WINAPI CLSIDFromProgID(LPCOLESTR progid, LPCLSID riid) * * BUGS * - * We only search the registry, not ids registered with - * CoRegisterPSClsid. - * Also, native returns S_OK for interfaces with a key in HKCR\Interface, but + * Native returns S_OK for interfaces with a key in HKCR\Interface, but * without a ProxyStubClsid32 key and leaves garbage in pclsid. This should be * considered a bug in native unless an application depends on this (unlikely). + * + * SEE ALSO + * CoRegisterPSClsid. */ HRESULT WINAPI CoGetPSClsid(REFIID riid, CLSID *pclsid) { @@ -1137,9 +1445,35 @@ HRESULT WINAPI CoGetPSClsid(REFIID riid, CLSID *pclsid) WCHAR value[CHARS_IN_GUID]; LONG len; HKEY hkey; + APARTMENT *apt = COM_CurrentApt(); + struct registered_psclsid *registered_psclsid; TRACE("() riid=%s, pclsid=%p\n", debugstr_guid(riid), pclsid); + if (!apt) + { + ERR("apartment not initialised\n"); + return CO_E_NOTINITIALIZED; + } + + if (!pclsid) + { + ERR("pclsid isn't optional\n"); + return E_INVALIDARG; + } + + EnterCriticalSection(&apt->cs); + + LIST_FOR_EACH_ENTRY(registered_psclsid, &apt->psclsids, struct registered_psclsid, entry) + if (IsEqualIID(®istered_psclsid->iid, riid)) + { + *pclsid = registered_psclsid->clsid; + LeaveCriticalSection(&apt->cs); + return S_OK; + } + + LeaveCriticalSection(&apt->cs); + /* Interface\\{string form of riid}\\ProxyStubClsid32 */ strcpyW(path, wszInterface); StringFromGUID2(riid, path + ARRAYSIZE(wszInterface) - 1, CHARS_IN_GUID); @@ -1172,63 +1506,65 @@ HRESULT WINAPI CoGetPSClsid(REFIID riid, CLSID *pclsid) return S_OK; } - - -/*********************************************************************** - * WriteClassStm (OLE32.@) +/***************************************************************************** + * CoRegisterPSClsid [OLE32.@] * - * Writes a CLSID to a stream. + * Register a proxy/stub CLSID for the given interface in the current process + * only. * * PARAMS - * pStm [I] Stream to write to. - * rclsid [I] CLSID to write. - * + * riid [I] Interface whose proxy/stub CLSID is to be registered. + * rclsid [I] CLSID of the proxy/stub. + * * RETURNS - * Success: S_OK. - * Failure: HRESULT code. + * Success: S_OK + * Failure: E_OUTOFMEMORY + * + * NOTES + * + * This function does not add anything to the registry and the effects are + * limited to the lifetime of the current process. + * + * SEE ALSO + * CoGetPSClsid. */ -HRESULT WINAPI WriteClassStm(IStream *pStm,REFCLSID rclsid) +HRESULT WINAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid) { - TRACE("(%p,%p)\n",pStm,rclsid); + APARTMENT *apt = COM_CurrentApt(); + struct registered_psclsid *registered_psclsid; - if (rclsid==NULL) - return E_INVALIDARG; + TRACE("(%s, %s)\n", debugstr_guid(riid), debugstr_guid(rclsid)); - return IStream_Write(pStm,rclsid,sizeof(CLSID),NULL); -} + if (!apt) + { + ERR("apartment not initialised\n"); + return CO_E_NOTINITIALIZED; + } -/*********************************************************************** - * ReadClassStm (OLE32.@) - * - * Reads a CLSID from a stream. - * - * PARAMS - * pStm [I] Stream to read from. - * rclsid [O] CLSID to read. - * - * RETURNS - * Success: S_OK. - * Failure: HRESULT code. - */ -HRESULT WINAPI ReadClassStm(IStream *pStm,CLSID *pclsid) -{ - ULONG nbByte; - HRESULT res; + EnterCriticalSection(&apt->cs); - TRACE("(%p,%p)\n",pStm,pclsid); + LIST_FOR_EACH_ENTRY(registered_psclsid, &apt->psclsids, struct registered_psclsid, entry) + if (IsEqualIID(®istered_psclsid->iid, riid)) + { + registered_psclsid->clsid = *rclsid; + LeaveCriticalSection(&apt->cs); + return S_OK; + } - if (pclsid==NULL) - return E_INVALIDARG; + registered_psclsid = HeapAlloc(GetProcessHeap(), 0, sizeof(struct registered_psclsid)); + if (!registered_psclsid) + { + LeaveCriticalSection(&apt->cs); + return E_OUTOFMEMORY; + } - res = IStream_Read(pStm,(void*)pclsid,sizeof(CLSID),&nbByte); + registered_psclsid->iid = *riid; + registered_psclsid->clsid = *rclsid; + list_add_head(&apt->psclsids, ®istered_psclsid->entry); - if (FAILED(res)) - return res; + LeaveCriticalSection(&apt->cs); - if (nbByte != sizeof(CLSID)) - return S_FALSE; - else - return S_OK; + return S_OK; } @@ -1251,32 +1587,23 @@ static HRESULT COM_GetRegisteredClassObject( LPUNKNOWN* ppUnk) { HRESULT hr = S_FALSE; - RegisteredClass* curClass; - - EnterCriticalSection( &csRegisteredClassList ); + RegisteredClass *curClass; /* * Sanity check */ assert(ppUnk!=0); - /* - * Iterate through the whole list and try to match the class ID. - */ - curClass = firstRegisteredClass; + EnterCriticalSection( &csRegisteredClassList ); - while (curClass != 0) + LIST_FOR_EACH_ENTRY(curClass, &RegisteredClassList, RegisteredClass, entry) { /* - * Check if we have a match on the class ID. + * Check if we have a match on the class ID and context. */ - if (IsEqualGUID(&(curClass->classIdentifier), rclsid)) + if ((dwClsContext & curClass->runContext) && + IsEqualGUID(&(curClass->classIdentifier), rclsid)) { - /* - * Since we don't do out-of process or DCOM just right away, let's ignore the - * class context. - */ - /* * We have a match, return the pointer to the class object. */ @@ -1285,20 +1612,12 @@ static HRESULT COM_GetRegisteredClassObject( IUnknown_AddRef(curClass->classObject); hr = S_OK; - goto end; + break; } - - /* - * Step to the next class in the list. - */ - curClass = curClass->nextClass; } -end: LeaveCriticalSection( &csRegisteredClassList ); - /* - * If we get to here, we haven't found our class. - */ + return hr; } @@ -1339,7 +1658,7 @@ HRESULT WINAPI CoRegisterClassObject( LPUNKNOWN foundObject; HRESULT hr; - TRACE("(%s,%p,0x%08lx,0x%08lx,%p)\n", + TRACE("(%s,%p,0x%08x,0x%08x,%p)\n", debugstr_guid(rclsid),pUnk,dwClsContext,flags,lpdwRegister); if ( (lpdwRegister==0) || (pUnk==0) ) @@ -1353,6 +1672,11 @@ HRESULT WINAPI CoRegisterClassObject( *lpdwRegister = 0; + /* REGCLS_MULTIPLEUSE implies registering as inproc server. This is what + * differentiates the flag from REGCLS_MULTI_SEPARATE. */ + if (flags & REGCLS_MULTIPLEUSE) + dwClsContext |= CLSCTX_INPROC_SERVER; + /* * First, check if the class is already registered. * If it is, this should cause an error. @@ -1374,19 +1698,17 @@ HRESULT WINAPI CoRegisterClassObject( if ( newClass == NULL ) return E_OUTOFMEMORY; - EnterCriticalSection( &csRegisteredClassList ); - newClass->classIdentifier = *rclsid; newClass->runContext = dwClsContext; newClass->connectFlags = flags; newClass->pMarshaledData = NULL; + newClass->RpcRegistration = NULL; /* * Use the address of the chain node as the cookie since we are sure it's * unique. FIXME: not on 64-bit platforms. */ newClass->dwCookie = (DWORD)newClass; - newClass->nextClass = firstRegisteredClass; /* * Since we're making a copy of the object pointer, we have to increase its @@ -1395,7 +1717,8 @@ HRESULT WINAPI CoRegisterClassObject( newClass->classObject = pUnk; IUnknown_AddRef(newClass->classObject); - firstRegisteredClass = newClass; + EnterCriticalSection( &csRegisteredClassList ); + list_add_tail(&RegisteredClassList, &newClass->entry); LeaveCriticalSection( &csRegisteredClassList ); *lpdwRegister = newClass->dwCookie; @@ -1409,7 +1732,7 @@ HRESULT WINAPI CoRegisterClassObject( hr = CreateStreamOnHGlobal(0, TRUE, &newClass->pMarshaledData); if (hr) { - FIXME("Failed to create stream on hglobal, %lx\n", hr); + FIXME("Failed to create stream on hglobal, %x\n", hr); IUnknown_Release(classfac); return hr; } @@ -1417,14 +1740,17 @@ HRESULT WINAPI CoRegisterClassObject( (LPVOID)classfac, MSHCTX_LOCAL, NULL, MSHLFLAGS_TABLESTRONG); if (hr) { - FIXME("CoMarshalInterface failed, %lx!\n",hr); + FIXME("CoMarshalInterface failed, %x!\n",hr); IUnknown_Release(classfac); return hr; } IUnknown_Release(classfac); - RPC_StartLocalServer(&newClass->classIdentifier, newClass->pMarshaledData); + hr = RPC_StartLocalServer(&newClass->classIdentifier, + newClass->pMarshaledData, + flags & (REGCLS_MULTIPLEUSE|REGCLS_MULTI_SEPARATE), + &newClass->RpcRegistration); } return S_OK; } @@ -1448,30 +1774,23 @@ HRESULT WINAPI CoRevokeClassObject( DWORD dwRegister) { HRESULT hr = E_INVALIDARG; - RegisteredClass** prevClassLink; - RegisteredClass* curClass; + RegisteredClass *curClass; - TRACE("(%08lx)\n",dwRegister); + TRACE("(%08x)\n",dwRegister); EnterCriticalSection( &csRegisteredClassList ); - /* - * Iterate through the whole list and try to match the cookie. - */ - curClass = firstRegisteredClass; - prevClassLink = &firstRegisteredClass; - - while (curClass != 0) + LIST_FOR_EACH_ENTRY(curClass, &RegisteredClassList, RegisteredClass, entry) { /* * Check if we have a match on the cookie. */ if (curClass->dwCookie == dwRegister) { - /* - * Remove the class from the chain. - */ - *prevClassLink = curClass->nextClass; + list_remove(&curClass->entry); + + if (curClass->runContext & CLSCTX_LOCAL_SERVER) + RPC_StopLocalServer(curClass->RpcRegistration); /* * Release the reference to the class object. @@ -1482,8 +1801,7 @@ HRESULT WINAPI CoRevokeClassObject( { LARGE_INTEGER zero; memset(&zero, 0, sizeof(zero)); - /* FIXME: stop local server thread */ - IStream_Seek(curClass->pMarshaledData, zero, SEEK_SET, NULL); + IStream_Seek(curClass->pMarshaledData, zero, STREAM_SEEK_SET, NULL); CoReleaseMarshalData(curClass->pMarshaledData); } @@ -1493,21 +1811,12 @@ HRESULT WINAPI CoRevokeClassObject( HeapFree(GetProcessHeap(), 0, curClass); hr = S_OK; - goto end; + break; } - - /* - * Step to the next class in the list. - */ - prevClassLink = &(curClass->nextClass); - curClass = curClass->nextClass; } -end: LeaveCriticalSection( &csRegisteredClassList ); - /* - * If we get to here, we haven't found our class. - */ + return hr; } @@ -1516,33 +1825,120 @@ end: * * Reads a registry value and expands it when necessary */ -HRESULT COM_RegReadPath(HKEY hkeyroot, const WCHAR *keyname, const WCHAR *valuename, WCHAR * dst, DWORD dstlen) +static DWORD COM_RegReadPath(HKEY hkeyroot, const WCHAR *keyname, const WCHAR *valuename, WCHAR * dst, DWORD dstlen) { - HRESULT hres; + DWORD ret; HKEY key; DWORD keytype; WCHAR src[MAX_PATH]; DWORD dwLength = dstlen * sizeof(WCHAR); - if((hres = RegOpenKeyExW(hkeyroot, keyname, 0, KEY_READ, &key)) == ERROR_SUCCESS) { - if( (hres = RegQueryValueExW(key, NULL, NULL, &keytype, (LPBYTE)src, &dwLength)) == ERROR_SUCCESS ) { + if((ret = RegOpenKeyExW(hkeyroot, keyname, 0, KEY_READ, &key)) == ERROR_SUCCESS) { + if( (ret = RegQueryValueExW(key, NULL, NULL, &keytype, (LPBYTE)src, &dwLength)) == ERROR_SUCCESS ) { if (keytype == REG_EXPAND_SZ) { - if (dstlen <= ExpandEnvironmentStringsW(src, dst, dstlen)) hres = ERROR_MORE_DATA; + if (dstlen <= ExpandEnvironmentStringsW(src, dst, dstlen)) ret = ERROR_MORE_DATA; } else { lstrcpynW(dst, src, dstlen); } } RegCloseKey (key); } - return hres; + return ret; +} + +static void get_threading_model(HKEY key, LPWSTR value, DWORD len) +{ + static const WCHAR wszThreadingModel[] = {'T','h','r','e','a','d','i','n','g','M','o','d','e','l',0}; + DWORD keytype; + DWORD ret; + DWORD dwLength = len * sizeof(WCHAR); + + ret = RegQueryValueExW(key, wszThreadingModel, NULL, &keytype, (LPBYTE)value, &dwLength); + if ((ret != ERROR_SUCCESS) || (keytype != REG_SZ)) + value[0] = '\0'; } static HRESULT get_inproc_class_object(HKEY hkeydll, REFCLSID rclsid, REFIID riid, void **ppv) { - HINSTANCE hLibrary; - typedef HRESULT (CALLBACK *DllGetClassObjectFunc)(REFCLSID clsid, REFIID iid, LPVOID *ppv); - DllGetClassObjectFunc DllGetClassObject; + static const WCHAR wszApartment[] = {'A','p','a','r','t','m','e','n','t',0}; + static const WCHAR wszFree[] = {'F','r','e','e',0}; + static const WCHAR wszBoth[] = {'B','o','t','h',0}; WCHAR dllpath[MAX_PATH+1]; + WCHAR threading_model[10 /* strlenW(L"apartment")+1 */]; + HRESULT hr; + APARTMENT *apt = COM_CurrentApt(); + + get_threading_model(hkeydll, threading_model, ARRAYSIZE(threading_model)); + /* "Apartment" */ + if (!strcmpiW(threading_model, wszApartment)) + { + if (apt->multi_threaded) + { + /* try to find an STA */ + APARTMENT *host_apt = apartment_findfromtype(FALSE, FALSE); + if (!host_apt) + FIXME("create a host apartment for apartment-threaded object %s\n", debugstr_guid(rclsid)); + if (host_apt) + { + struct host_object_params params; + HWND hwnd = apartment_getwindow(host_apt); + + params.hkeydll = hkeydll; + params.clsid = *rclsid; + params.iid = *riid; + hr = CreateStreamOnHGlobal(NULL, TRUE, ¶ms.stream); + if (FAILED(hr)) + return hr; + hr = SendMessageW(hwnd, DM_HOSTOBJECT, 0, (LPARAM)¶ms); + if (SUCCEEDED(hr)) + hr = CoUnmarshalInterface(params.stream, riid, ppv); + IStream_Release(params.stream); + return hr; + } + } + } + /* "Free" */ + else if (!strcmpiW(threading_model, wszFree)) + { + if (!apt->multi_threaded) + { + FIXME("should create object %s in multi-threaded apartment\n", + debugstr_guid(rclsid)); + } + } + /* everything except "Apartment", "Free" and "Both" */ + else if (strcmpiW(threading_model, wszBoth)) + { + /* everything else is main-threaded */ + if (threading_model[0]) + FIXME("unrecognised threading model %s for object %s, should be main-threaded?\n", + debugstr_w(threading_model), debugstr_guid(rclsid)); + + if (apt->multi_threaded || !apt->main) + { + /* try to find an STA */ + APARTMENT *host_apt = apartment_findfromtype(FALSE, TRUE); + if (!host_apt) + FIXME("create a host apartment for main-threaded object %s\n", debugstr_guid(rclsid)); + if (host_apt) + { + struct host_object_params params; + HWND hwnd = apartment_getwindow(host_apt); + + params.hkeydll = hkeydll; + params.clsid = *rclsid; + params.iid = *riid; + hr = CreateStreamOnHGlobal(NULL, TRUE, ¶ms.stream); + if (FAILED(hr)) + return hr; + hr = SendMessageW(hwnd, DM_HOSTOBJECT, 0, (LPARAM)¶ms); + if (SUCCEEDED(hr)) + hr = CoUnmarshalInterface(params.stream, riid, ppv); + IStream_Release(params.stream); + return hr; + } + } + } if (COM_RegReadPath(hkeydll, NULL, NULL, dllpath, ARRAYSIZE(dllpath)) != ERROR_SUCCESS) { @@ -1551,33 +1947,34 @@ static HRESULT get_inproc_class_object(HKEY hkeydll, REFCLSID rclsid, REFIID rii return REGDB_E_CLASSNOTREG; } - if ((hLibrary = LoadLibraryExW(dllpath, 0, LOAD_WITH_ALTERED_SEARCH_PATH)) == 0) - { - /* failure: DLL could not be loaded */ - ERR("couldn't load in-process dll %s\n", debugstr_w(dllpath)); - return E_ACCESSDENIED; /* FIXME: or should this be CO_E_DLLNOTFOUND? */ - } - - if (!(DllGetClassObject = (DllGetClassObjectFunc)GetProcAddress(hLibrary, "DllGetClassObject"))) - { - /* failure: the dll did not export DllGetClassObject */ - ERR("couldn't find function DllGetClassObject in %s\n", debugstr_w(dllpath)); - FreeLibrary( hLibrary ); - return CO_E_DLLNOTFOUND; - } - - /* OK: get the ClassObject */ - COMPOBJ_DLLList_Add( hLibrary ); - return DllGetClassObject(rclsid, riid, ppv); + return apartment_getclassobject(apt, dllpath, rclsid, riid, ppv); } /*********************************************************************** * CoGetClassObject [OLE32.@] * - * FIXME. If request allows of several options and there is a failure - * with one (other than not being registered) do we try the - * others or return failure? (E.g. inprocess is registered but - * the DLL is not found but the server version works) + * Creates an object of the specified class. + * + * PARAMS + * rclsid [I] Class ID to create an instance of. + * dwClsContext [I] Flags to restrict the location of the created instance. + * pServerInfo [I] Optional. Details for connecting to a remote server. + * iid [I] The ID of the interface of the instance to return. + * ppv [O] On returns, contains a pointer to the specified interface of the object. + * + * RETURNS + * Success: S_OK + * Failure: HRESULT code. + * + * NOTES + * The dwClsContext parameter can be one or more of the following: + *| CLSCTX_INPROC_SERVER - Use an in-process server, such as from a DLL. + *| CLSCTX_INPROC_HANDLER - Use an in-process object which handles certain functions for an object running in another process. + *| CLSCTX_LOCAL_SERVER - Connect to an object running in another process. + *| CLSCTX_REMOTE_SERVER - Connect to an object running on another machine. + * + * SEE ALSO + * CoCreateInstance() */ HRESULT WINAPI CoGetClassObject( REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, @@ -1588,6 +1985,17 @@ HRESULT WINAPI CoGetClassObject( TRACE("\n\tCLSID:\t%s,\n\tIID:\t%s\n", debugstr_guid(rclsid), debugstr_guid(iid)); + if (!ppv) + return E_INVALIDARG; + + *ppv = NULL; + + if (!COM_CurrentApt()) + { + ERR("apartment not initialised\n"); + return CO_E_NOTINITIALIZED; + } + if (pServerInfo) { FIXME("\tpServerInfo: name=%s\n",debugstr_w(pServerInfo->pwszName)); FIXME("\t\tpAuthInfo=%p\n",pServerInfo->pAuthInfo); @@ -1618,6 +2026,9 @@ HRESULT WINAPI CoGetClassObject( static const WCHAR wszInprocServer32[] = {'I','n','p','r','o','c','S','e','r','v','e','r','3','2',0}; HKEY hkey; + if (IsEqualCLSID(rclsid, &CLSID_InProcFreeMarshaler)) + return FTMarshalCF_Create(iid, ppv); + hres = COM_OpenKeyForCLSID(rclsid, wszInprocServer32, KEY_READ, &hkey); if (FAILED(hres)) { @@ -1669,7 +2080,9 @@ HRESULT WINAPI CoGetClassObject( /* Next try out of process */ if (CLSCTX_LOCAL_SERVER & dwClsContext) { - return RPC_GetLocalClassObject(rclsid,iid,ppv); + hres = RPC_GetLocalClassObject(rclsid,iid,ppv); + if (SUCCEEDED(hres)) + return hres; } /* Finally try remote: this requires networked DCOM (a lot of work) */ @@ -1680,7 +2093,7 @@ HRESULT WINAPI CoGetClassObject( } if (FAILED(hres)) - ERR("no class object %s could be created for for context 0x%lx\n", + ERR("no class object %s could be created for context 0x%x\n", debugstr_guid(rclsid), dwClsContext); return hres; } @@ -1700,102 +2113,36 @@ HRESULT WINAPI CoResumeClassObjects(void) return S_OK; } -/*********************************************************************** - * GetClassFile (OLE32.@) - * - * This function supplies the CLSID associated with the given filename. - */ -HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid) -{ - IStorage *pstg=0; - HRESULT res; - int nbElm, length, i; - LONG sizeProgId; - LPOLESTR *pathDec=0,absFile=0,progId=0; - LPWSTR extension; - static const WCHAR bkslashW[] = {'\\',0}; - static const WCHAR dotW[] = {'.',0}; - - TRACE("%s, %p\n", debugstr_w(filePathName), pclsid); - - /* if the file contain a storage object the return the CLSID written by IStorage_SetClass method*/ - if((StgIsStorageFile(filePathName))==S_OK){ - - res=StgOpenStorage(filePathName,NULL,STGM_READ | STGM_SHARE_DENY_WRITE,NULL,0,&pstg); - - if (SUCCEEDED(res)) - res=ReadClassStg(pstg,pclsid); - - IStorage_Release(pstg); - - return res; - } - /* if the file is not a storage object then attemps to match various bits in the file against a - pattern in the registry. this case is not frequently used ! so I present only the psodocode for - this case - - for(i=0;i= 0) && *(extension = &absFile[i]) != '.'; i--) - /* nothing */; - - if (!extension || !lstrcmpW(extension, dotW)) - return MK_E_INVALIDEXTENSION; - - res=RegQueryValueW(HKEY_CLASSES_ROOT, extension, NULL, &sizeProgId); - - /* get the progId associated to the extension */ - progId = CoTaskMemAlloc(sizeProgId); - res = RegQueryValueW(HKEY_CLASSES_ROOT, extension, progId, &sizeProgId); - - if (res==ERROR_SUCCESS) - /* return the clsid associated to the progId */ - res= CLSIDFromProgID(progId,pclsid); - - for(i=0; pathDec[i]!=NULL;i++) - CoTaskMemFree(pathDec[i]); - CoTaskMemFree(pathDec); - - CoTaskMemFree(progId); - - if (res==ERROR_SUCCESS) - return res; - - return MK_E_INVALIDEXTENSION; -} - /*********************************************************************** * CoCreateInstance [OLE32.@] + * + * Creates an instance of the specified class. + * + * PARAMS + * rclsid [I] Class ID to create an instance of. + * pUnkOuter [I] Optional outer unknown to allow aggregation with another object. + * dwClsContext [I] Flags to restrict the location of the created instance. + * iid [I] The ID of the interface of the instance to return. + * ppv [O] On returns, contains a pointer to the specified interface of the instance. + * + * RETURNS + * Success: S_OK + * Failure: HRESULT code. + * + * NOTES + * The dwClsContext parameter can be one or more of the following: + *| CLSCTX_INPROC_SERVER - Use an in-process server, such as from a DLL. + *| CLSCTX_INPROC_HANDLER - Use an in-process object which handles certain functions for an object running in another process. + *| CLSCTX_LOCAL_SERVER - Connect to an object running in another process. + *| CLSCTX_REMOTE_SERVER - Connect to an object running on another machine. + * + * Aggregation is the concept of deferring the IUnknown of an object to another + * object. This allows a separate object to behave as though it was part of + * the object and to allow this the pUnkOuter parameter can be set. Note that + * not all objects support having an outer of unknown. + * + * SEE ALSO + * CoGetClassObject() */ HRESULT WINAPI CoCreateInstance( REFCLSID rclsid, @@ -1807,11 +2154,9 @@ HRESULT WINAPI CoCreateInstance( HRESULT hres; LPCLASSFACTORY lpclf = 0; - TRACE("(rclsid=%s, pUnkOuter=%p, dwClsContext=%08lx, riid=%s, ppv=%p)\n", debugstr_guid(rclsid), + TRACE("(rclsid=%s, pUnkOuter=%p, dwClsContext=%08x, riid=%s, ppv=%p)\n", debugstr_guid(rclsid), pUnkOuter, dwClsContext, debugstr_guid(iid), ppv); - if (!COM_CurrentApt()) return CO_E_NOTINITIALIZED; - /* * Sanity check */ @@ -1823,6 +2168,12 @@ HRESULT WINAPI CoCreateInstance( */ *ppv = 0; + if (!COM_CurrentApt()) + { + ERR("apartment not initialised\n"); + return CO_E_NOTINITIALIZED; + } + /* * The Standard Global Interface Table (GIT) object is a process-wide singleton. * Rather than create a class factory, we can just check for it here @@ -1846,11 +2197,8 @@ HRESULT WINAPI CoCreateInstance( &IID_IClassFactory, (LPVOID)&lpclf); - if (FAILED(hres)) { - FIXME("no classfactory created for CLSID %s, hres is 0x%08lx\n", - debugstr_guid(rclsid),hres); + if (FAILED(hres)) return hres; - } /* * Create the object and don't forget to release the factory @@ -1858,7 +2206,7 @@ HRESULT WINAPI CoCreateInstance( hres = IClassFactory_CreateInstance(lpclf, pUnkOuter, iid, ppv); IClassFactory_Release(lpclf); if(FAILED(hres)) - FIXME("no instance created for interface %s of class %s, hres is 0x%08lx\n", + FIXME("no instance created for interface %s of class %s, hres is 0x%08x\n", debugstr_guid(iid), debugstr_guid(rclsid),hres); return hres; @@ -2012,9 +2360,14 @@ void WINAPI CoFreeAllLibraries(void) */ void WINAPI CoFreeUnusedLibraries(void) { - /* FIXME: Calls to CoFreeUnusedLibraries from any thread always route - * through the main apartment's thread to call DllCanUnloadNow */ - COMPOBJ_DllList_FreeUnused(0); + struct apartment *apt = COM_CurrentApt(); + if (!apt) + { + ERR("apartment not initialised\n"); + return; + } + + apartment_freeunusedlibraries(apt); } /*********************************************************************** @@ -2035,13 +2388,15 @@ HRESULT WINAPI CoFileTimeNow( FILETIME *lpFileTime ) return S_OK; } -static void COM_RevokeAllClasses() +static void COM_RevokeAllClasses(void) { EnterCriticalSection( &csRegisteredClassList ); - while (firstRegisteredClass!=0) + while (list_head(&RegisteredClassList)) { - CoRevokeClassObject(firstRegisteredClass->dwCookie); + RegisteredClass *curClass = LIST_ENTRY(list_head(&RegisteredClassList), + RegisteredClass, entry); + CoRevokeClassObject(curClass->dwCookie); } LeaveCriticalSection( &csRegisteredClassList ); @@ -2062,6 +2417,10 @@ static void COM_RevokeAllClasses() * RETURNS * Success: S_OK. * Failure: HRESULT code. + * + * NOTES + * If fLock is TRUE and an object is passed in that doesn't have a stub + * manager then a new stub manager is created for the object. */ HRESULT WINAPI CoLockObjectExternal( LPUNKNOWN pUnk, @@ -2084,12 +2443,24 @@ HRESULT WINAPI CoLockObjectExternal( if (fLock) stub_manager_ext_addref(stubmgr, 1); else - stub_manager_ext_release(stubmgr, 1); + stub_manager_ext_release(stubmgr, 1, fLastUnlockReleases); stub_manager_int_release(stubmgr); return S_OK; } + else if (fLock) + { + stubmgr = new_stub_manager(apt, pUnk); + + if (stubmgr) + { + stub_manager_ext_addref(stubmgr, 1); + stub_manager_int_release(stubmgr); + } + + return S_OK; + } else { WARN("stub object not found %p\n", pUnk); @@ -2114,7 +2485,7 @@ HRESULT WINAPI CoLockObjectExternal( */ HRESULT WINAPI CoInitializeWOW(DWORD x,DWORD y) { - FIXME("(0x%08lx,0x%08lx),stub!\n",x,y); + FIXME("(0x%08x,0x%08x),stub!\n",x,y); return 0; } @@ -2189,33 +2560,6 @@ HRESULT WINAPI CoSetState(IUnknown * pv) } -/****************************************************************************** - * OleGetAutoConvert [OLE32.@] - */ -HRESULT WINAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew) -{ - static const WCHAR wszAutoConvertTo[] = {'A','u','t','o','C','o','n','v','e','r','t','T','o',0}; - HKEY hkey = NULL; - WCHAR buf[CHARS_IN_GUID]; - LONG len; - HRESULT res = S_OK; - - res = COM_OpenKeyForCLSID(clsidOld, wszAutoConvertTo, KEY_READ, &hkey); - if (FAILED(res)) - goto done; - - len = sizeof(buf); - if (RegQueryValueW(hkey, NULL, buf, &len)) - { - res = REGDB_E_KEYMISSING; - goto done; - } - res = CLSIDFromString(buf, pClsidNew); -done: - if (hkey) RegCloseKey(hkey); - return res; -} - /****************************************************************************** * CoTreatAsClass [OLE32.@] * @@ -2312,7 +2656,7 @@ HRESULT WINAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID clsidNew) } res = CLSIDFromString(szClsidNew,clsidNew); if (FAILED(res)) - ERR("Failed CLSIDFromStringA(%s), hres 0x%08lx\n", debugstr_w(szClsidNew), res); + ERR("Failed CLSIDFromStringA(%s), hres 0x%08x\n", debugstr_w(szClsidNew), res); done: if (hkey) RegCloseKey(hkey); return res; @@ -2347,15 +2691,50 @@ DWORD WINAPI CoGetCurrentProcess(void) * RETURNS * Success: S_OK. * Failure: HRESULT code. + * + * NOTES + * Both lpMessageFilter and lplpMessageFilter are optional. Passing in a NULL + * lpMessageFilter removes the message filter. + * + * If lplpMessageFilter is not NULL the previous message filter will be + * returned in the memory pointer to this parameter and the caller is + * responsible for releasing the object. + * + * The current thread be in an apartment otherwise the function will crash. */ HRESULT WINAPI CoRegisterMessageFilter( LPMESSAGEFILTER lpMessageFilter, LPMESSAGEFILTER *lplpMessageFilter) { - FIXME("stub\n"); - if (lplpMessageFilter) { - *lplpMessageFilter = NULL; + struct apartment *apt; + IMessageFilter *lpOldMessageFilter; + + TRACE("(%p, %p)\n", lpMessageFilter, lplpMessageFilter); + + apt = COM_CurrentApt(); + + /* can't set a message filter in a multi-threaded apartment */ + if (!apt || apt->multi_threaded) + { + WARN("can't set message filter in MTA or uninitialized apt\n"); + return CO_E_NOT_SUPPORTED; } + + if (lpMessageFilter) + IMessageFilter_AddRef(lpMessageFilter); + + EnterCriticalSection(&apt->cs); + + lpOldMessageFilter = apt->filter; + apt->filter = lpMessageFilter; + + LeaveCriticalSection(&apt->cs); + + if (lplpMessageFilter) + *lplpMessageFilter = lpOldMessageFilter; + else if (lpOldMessageFilter) + IMessageFilter_Release(lpOldMessageFilter); + return S_OK; } @@ -2405,7 +2784,7 @@ HRESULT WINAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc DWORD dwImpLevel, void* pReserved2, DWORD dwCapabilities, void* pReserved3) { - FIXME("(%p,%ld,%p,%p,%ld,%ld,%p,%ld,%p) - stub!\n", pSecDesc, cAuthSvc, + FIXME("(%p,%d,%p,%p,%d,%d,%p,%d,%p) - stub!\n", pSecDesc, cAuthSvc, asAuthSvc, pReserved1, dwAuthnLevel, dwImpLevel, pReserved2, dwCapabilities, pReserved3); return S_OK; @@ -2435,11 +2814,23 @@ HRESULT WINAPI CoSuspendClassObjects(void) * * RETURNS * New reference count. + * + * SEE ALSO + * CoReleaseServerProcess(). */ ULONG WINAPI CoAddRefServerProcess(void) { - FIXME("\n"); - return 2; + ULONG refs; + + TRACE("\n"); + + EnterCriticalSection(&csRegisteredClassList); + refs = ++s_COMServerProcessReferences; + LeaveCriticalSection(&csRegisteredClassList); + + TRACE("refs before: %d\n", refs - 1); + + return refs; } /*********************************************************************** @@ -2450,11 +2841,30 @@ ULONG WINAPI CoAddRefServerProcess(void) * * RETURNS * New reference count. + * + * NOTES + * When reference count reaches 0, this function suspends all registered + * classes so no new connections are accepted. + * + * SEE ALSO + * CoAddRefServerProcess(), CoSuspendClassObjects(). */ ULONG WINAPI CoReleaseServerProcess(void) { - FIXME("\n"); - return 1; + ULONG refs; + + TRACE("\n"); + + EnterCriticalSection(&csRegisteredClassList); + + refs = --s_COMServerProcessReferences; + /* FIXME: if (!refs) COM_SuspendClassObjects(); */ + + LeaveCriticalSection(&csRegisteredClassList); + + TRACE("refs after: %d\n", refs); + + return refs; } /*********************************************************************** @@ -2527,7 +2937,7 @@ HRESULT WINAPI CoQueryProxyBlanket(IUnknown *pProxy, DWORD *pAuthnSvc, IClientSecurity_Release(pCliSec); } - if (FAILED(hr)) ERR("-- failed with 0x%08lx\n", hr); + if (FAILED(hr)) ERR("-- failed with 0x%08x\n", hr); return hr; } @@ -2572,7 +2982,7 @@ HRESULT WINAPI CoSetProxyBlanket(IUnknown *pProxy, DWORD AuthnSvc, IClientSecurity_Release(pCliSec); } - if (FAILED(hr)) ERR("-- failed with 0x%08lx\n", hr); + if (FAILED(hr)) ERR("-- failed with 0x%08x\n", hr); return hr; } @@ -2606,11 +3016,162 @@ HRESULT WINAPI CoCopyProxy(IUnknown *pProxy, IUnknown **ppCopy) IClientSecurity_Release(pCliSec); } - if (FAILED(hr)) ERR("-- failed with 0x%08lx\n", hr); + if (FAILED(hr)) ERR("-- failed with 0x%08x\n", hr); return hr; } +/*********************************************************************** + * CoGetCallContext [OLE32.@] + * + * Gets the context of the currently executing server call in the current + * thread. + * + * PARAMS + * riid [I] Context interface to return. + * ppv [O] Pointer to memory that will receive the context on return. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + */ +HRESULT WINAPI CoGetCallContext(REFIID riid, void **ppv) +{ + FIXME("(%s, %p): stub\n", debugstr_guid(riid), ppv); + + *ppv = NULL; + return E_NOINTERFACE; +} + +/*********************************************************************** + * CoQueryClientBlanket [OLE32.@] + * + * Retrieves the authentication information about the client of the currently + * executing server call in the current thread. + * + * PARAMS + * pAuthnSvc [O] Optional. The type of authentication service. + * pAuthzSvc [O] Optional. The type of authorization service. + * pServerPrincName [O] Optional. The server prinicple name. + * pAuthnLevel [O] Optional. The authentication level. + * pImpLevel [O] Optional. The impersonation level. + * pPrivs [O] Optional. Information about the privileges of the client. + * pCapabilities [IO] Optional. Flags affecting the security behaviour. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * CoImpersonateClient, CoRevertToSelf, CoGetCallContext. + */ +HRESULT WINAPI CoQueryClientBlanket( + DWORD *pAuthnSvc, + DWORD *pAuthzSvc, + OLECHAR **pServerPrincName, + DWORD *pAuthnLevel, + DWORD *pImpLevel, + RPC_AUTHZ_HANDLE *pPrivs, + DWORD *pCapabilities) +{ + IServerSecurity *pSrvSec; + HRESULT hr; + + TRACE("(%p, %p, %p, %p, %p, %p, %p)\n", + pAuthnSvc, pAuthzSvc, pServerPrincName, pAuthnLevel, pImpLevel, + pPrivs, pCapabilities); + + hr = CoGetCallContext(&IID_IServerSecurity, (void **)&pSrvSec); + if (SUCCEEDED(hr)) + { + hr = IServerSecurity_QueryBlanket( + pSrvSec, pAuthnSvc, pAuthzSvc, pServerPrincName, pAuthnLevel, + pImpLevel, pPrivs, pCapabilities); + IServerSecurity_Release(pSrvSec); + } + + return hr; +} + +/*********************************************************************** + * CoImpersonateClient [OLE32.@] + * + * Impersonates the client of the currently executing server call in the + * current thread. + * + * PARAMS + * None. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * NOTES + * If this function fails then the current thread will not be impersonating + * the client and all actions will take place on behalf of the server. + * Therefore, it is important to check the return value from this function. + * + * SEE ALSO + * CoRevertToSelf, CoQueryClientBlanket, CoGetCallContext. + */ +HRESULT WINAPI CoImpersonateClient(void) +{ + IServerSecurity *pSrvSec; + HRESULT hr; + + TRACE("\n"); + + hr = CoGetCallContext(&IID_IServerSecurity, (void **)&pSrvSec); + if (SUCCEEDED(hr)) + { + hr = IServerSecurity_ImpersonateClient(pSrvSec); + IServerSecurity_Release(pSrvSec); + } + + return hr; +} + +/*********************************************************************** + * CoRevertToSelf [OLE32.@] + * + * Ends the impersonation of the client of the currently executing server + * call in the current thread. + * + * PARAMS + * None. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * CoImpersonateClient, CoQueryClientBlanket, CoGetCallContext. + */ +HRESULT WINAPI CoRevertToSelf(void) +{ + IServerSecurity *pSrvSec; + HRESULT hr; + + TRACE("\n"); + + hr = CoGetCallContext(&IID_IServerSecurity, (void **)&pSrvSec); + if (SUCCEEDED(hr)) + { + hr = IServerSecurity_RevertToSelf(pSrvSec); + IServerSecurity_Release(pSrvSec); + } + + return hr; +} + +static BOOL COM_PeekMessage(struct apartment *apt, MSG *msg) +{ + /* first try to retrieve messages for incoming COM calls to the apartment window */ + return PeekMessageW(msg, apt->win, WM_USER, WM_APP - 1, PM_REMOVE|PM_NOYIELD) || + /* next retrieve other messages necessary for the app to remain responsive */ + PeekMessageW(msg, NULL, 0, 0, PM_QS_PAINT|PM_QS_POSTMESSAGE|PM_REMOVE|PM_NOYIELD); +} + /*********************************************************************** * CoWaitForMultipleHandles [OLE32.@] * @@ -2637,51 +3198,101 @@ HRESULT WINAPI CoCopyProxy(IUnknown *pProxy, IUnknown **ppCopy) * MsgWaitForMultipleObjects, WaitForMultipleObjects. */ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout, - ULONG cHandles, const HANDLE* pHandles, LPDWORD lpdwindex) + ULONG cHandles, LPHANDLE pHandles, LPDWORD lpdwindex) { HRESULT hr = S_OK; - DWORD wait_flags = (dwFlags & COWAIT_WAITALL) ? MWMO_WAITALL : 0 | - (dwFlags & COWAIT_ALERTABLE ) ? MWMO_ALERTABLE : 0; DWORD start_time = GetTickCount(); + APARTMENT *apt = COM_CurrentApt(); + BOOL message_loop = apt && !apt->multi_threaded; - TRACE("(0x%08lx, 0x%08lx, %ld, %p, %p)\n", dwFlags, dwTimeout, cHandles, + TRACE("(0x%08x, 0x%08x, %d, %p, %p)\n", dwFlags, dwTimeout, cHandles, pHandles, lpdwindex); while (TRUE) { DWORD now = GetTickCount(); DWORD res; - + if ((dwTimeout != INFINITE) && (start_time + dwTimeout >= now)) { hr = RPC_S_CALLPENDING; break; } - TRACE("waiting for rpc completion or window message\n"); - - res = MsgWaitForMultipleObjectsEx(cHandles, pHandles, - (dwTimeout == INFINITE) ? INFINITE : start_time + dwTimeout - now, - QS_ALLINPUT, wait_flags); - - if (res == WAIT_OBJECT_0 + cHandles) /* messages available */ + if (message_loop) { - MSG msg; - while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE)) + DWORD wait_flags = (dwFlags & COWAIT_WAITALL) ? MWMO_WAITALL : 0 | + (dwFlags & COWAIT_ALERTABLE ) ? MWMO_ALERTABLE : 0; + + TRACE("waiting for rpc completion or window message\n"); + + res = MsgWaitForMultipleObjectsEx(cHandles, pHandles, + (dwTimeout == INFINITE) ? INFINITE : start_time + dwTimeout - now, + QS_ALLINPUT, wait_flags); + + if (res == WAIT_OBJECT_0 + cHandles) /* messages available */ { - /* FIXME: filter the messages here */ - TRACE("received message whilst waiting for RPC: 0x%04x\n", msg.message); - TranslateMessage(&msg); - DispatchMessageW(&msg); - if (msg.message == WM_QUIT) + MSG msg; + + /* call message filter */ + + if (COM_CurrentApt()->filter) { - TRACE("resending WM_QUIT to outer message loop\n"); - PostQuitMessage(msg.wParam); - goto done; + PENDINGTYPE pendingtype = + COM_CurrentInfo()->pending_call_count_server ? + PENDINGTYPE_NESTED : PENDINGTYPE_TOPLEVEL; + DWORD be_handled = IMessageFilter_MessagePending( + COM_CurrentApt()->filter, 0 /* FIXME */, + now - start_time, pendingtype); + TRACE("IMessageFilter_MessagePending returned %d\n", be_handled); + switch (be_handled) + { + case PENDINGMSG_CANCELCALL: + WARN("call canceled\n"); + hr = RPC_E_CALL_CANCELED; + break; + case PENDINGMSG_WAITNOPROCESS: + case PENDINGMSG_WAITDEFPROCESS: + default: + /* FIXME: MSDN is very vague about the difference + * between WAITNOPROCESS and WAITDEFPROCESS - there + * appears to be none, so it is possibly a left-over + * from the 16-bit world. */ + break; + } } + + /* note: using "if" here instead of "while" might seem less + * efficient, but only if we are optimising for quick delivery + * of pending messages, rather than quick completion of the + * COM call */ + if (COM_PeekMessage(apt, &msg)) + { + TRACE("received message whilst waiting for RPC: 0x%04x\n", msg.message); + TranslateMessage(&msg); + DispatchMessageW(&msg); + if (msg.message == WM_QUIT) + { + TRACE("resending WM_QUIT to outer message loop\n"); + PostQuitMessage(msg.wParam); + /* no longer need to process messages */ + message_loop = FALSE; + } + } + continue; } } - else if ((res >= WAIT_OBJECT_0) && (res < WAIT_OBJECT_0 + cHandles)) + else + { + TRACE("waiting for rpc completion\n"); + + res = WaitForMultipleObjectsEx(cHandles, pHandles, + (dwFlags & COWAIT_WAITALL) ? TRUE : FALSE, + (dwTimeout == INFINITE) ? INFINITE : start_time + dwTimeout - now, + (dwFlags & COWAIT_ALERTABLE) ? TRUE : FALSE); + } + + if ((res >= WAIT_OBJECT_0) && (res < WAIT_OBJECT_0 + cHandles)) { /* handle signaled, store index */ *lpdwindex = (res - WAIT_OBJECT_0); @@ -2694,22 +3305,93 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout, } else { - ERR("Unexpected wait termination: %ld, %ld\n", res, GetLastError()); + ERR("Unexpected wait termination: %d, %d\n", res, GetLastError()); hr = E_UNEXPECTED; break; } } -done: - TRACE("-- 0x%08lx\n", hr); + TRACE("-- 0x%08x\n", hr); return hr; } + +/*********************************************************************** + * CoGetObject [OLE32.@] + * + * Gets the object named by coverting the name to a moniker and binding to it. + * + * PARAMS + * pszName [I] String representing the object. + * pBindOptions [I] Parameters affecting the binding to the named object. + * riid [I] Interface to bind to on the objecct. + * ppv [O] On output, the interface riid of the object represented + * by pszName. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * MkParseDisplayName. + */ +HRESULT WINAPI CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, + REFIID riid, void **ppv) +{ + IBindCtx *pbc; + HRESULT hr; + + *ppv = NULL; + + hr = CreateBindCtx(0, &pbc); + if (SUCCEEDED(hr)) + { + if (pBindOptions) + hr = IBindCtx_SetBindOptions(pbc, pBindOptions); + + if (SUCCEEDED(hr)) + { + ULONG chEaten; + IMoniker *pmk; + + hr = MkParseDisplayName(pbc, pszName, &chEaten, &pmk); + if (SUCCEEDED(hr)) + { + hr = IMoniker_BindToObject(pmk, pbc, NULL, riid, ppv); + IMoniker_Release(pmk); + } + } + + IBindCtx_Release(pbc); + } + return hr; +} + +/*********************************************************************** + * CoRegisterChannelHook [OLE32.@] + * + * Registers a process-wide hook that is called during ORPC calls. + * + * PARAMS + * guidExtension [I] GUID of the channel hook to register. + * pChannelHook [I] Channel hook object to register. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + */ +HRESULT WINAPI CoRegisterChannelHook(REFGUID guidExtension, IChannelHook *pChannelHook) +{ + TRACE("(%s, %p)\n", debugstr_guid(guidExtension), pChannelHook); + + return RPC_RegisterChannelHook(guidExtension, pChannelHook); +} + /*********************************************************************** * DllMain (OLE32.@) */ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) { - TRACE("%p 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad); + TRACE("%p 0x%x %p\n", hinstDLL, fdwReason, fImpLoad); switch(fdwReason) { case DLL_PROCESS_ATTACH: @@ -2720,7 +3402,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) case DLL_PROCESS_DETACH: if (TRACE_ON(ole)) CoRevokeMallocSpy(); + OLEDD_UnInitialize(); COMPOBJ_UninitProcess(); + RPC_UnregisterAllChannelHooks(); OLE32_hInstance = 0; break; diff --git a/reactos/dll/win32/ole32/compobj.spec b/reactos/dll/win32/ole32/compobj.spec index af946920192..078dfc26ed3 100644 --- a/reactos/dll/win32/ole32/compobj.spec +++ b/reactos/dll/win32/ole32/compobj.spec @@ -12,7 +12,7 @@ 12 stub COFREEALLLIBRARIES 13 pascal CoCreateInstance(ptr ptr long ptr ptr) CoCreateInstance16 14 stub STRINGFROMIID -15 pascal CoDisconnectObject(ptr long) CoDisconnectObject +15 pascal CoDisconnectObject(ptr long) CoDisconnectObject16 16 stub CORELEASEMARSHALDATA 17 pascal -ret16 CoFreeUnusedLibraries() CoFreeUnusedLibraries 18 pascal -ret16 IsEqualGUID(ptr ptr) IsEqualGUID16 diff --git a/reactos/dll/win32/ole32/compobj_private.h b/reactos/dll/win32/ole32/compobj_private.h index 790042ed463..e877cce0269 100644 --- a/reactos/dll/win32/ole32/compobj_private.h +++ b/reactos/dll/win32/ole32/compobj_private.h @@ -19,7 +19,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __WINE_OLE_COMPOBJ_H @@ -41,6 +41,13 @@ struct apartment; typedef struct apartment APARTMENT; +DEFINE_OLEGUID( CLSID_DfMarshal, 0x0000030b, 0, 0 ); +DEFINE_OLEGUID( CLSID_PSFactoryBuffer, 0x00000320, 0, 0 ); +DEFINE_OLEGUID( CLSID_InProcFreeMarshaler, 0x0000033a, 0, 0 ); + +/* signal to stub manager that this is a rem unknown object */ +#define MSHLFLAGSP_REMUNKNOWN 0x80000000 + /* Thread-safety Annotation Legend: * * RO - The value is read only. It never changes after creation, so no @@ -72,6 +79,7 @@ struct ifstub IPID ipid; /* RO */ IUnknown *iface; /* RO */ MSHLFLAGS flags; /* so we can enforce process-local marshalling rules (RO) */ + IRpcChannelBuffer*chan; /* channel passed to IRpcStubBuffer::Invoke (RO) */ }; @@ -88,6 +96,7 @@ struct stub_manager OID oid; /* apartment-scoped unique identifier (RO) */ IUnknown *object; /* the object we are managing the stub for (RO) */ ULONG next_ipid; /* currently unused (LOCK) */ + OXID_INFO oxid_info; /* string binding, ipid of rem unknown and other information (RO) */ /* We need to keep a count of the outstanding marshals, so we can enforce the * marshalling rules (ie, you can only unmarshal normal marshals once). Note @@ -107,7 +116,7 @@ struct ifproxy STDOBJREF stdobjref; /* marshal data that represents this object (RO) */ IID iid; /* interface ID (RO) */ LPRPCPROXYBUFFER proxy; /* interface proxy (RO) */ - DWORD refs; /* imported (public) references (MUTEX parent->remoting_mutex) */ + ULONG refs; /* imported (public) references (LOCK) */ IRpcChannelBuffer *chan; /* channel to object (CS parent->cs) */ }; @@ -116,9 +125,11 @@ struct proxy_manager { const IMultiQIVtbl *lpVtbl; const IMarshalVtbl *lpVtblMarshal; + const IClientSecurityVtbl *lpVtblCliSec; struct apartment *parent; /* owning apartment (RO) */ struct list entry; /* entry in apartment (CS parent->cs) */ OXID oxid; /* object exported ID (RO) */ + OXID_INFO oxid_info; /* string binding, ipid of rem unknown and other information (RO) */ OID oid; /* object ID (RO) */ struct list interfaces; /* imported interfaces (CS cs) */ LONG refs; /* proxy reference count (LOCK) */ @@ -126,28 +137,35 @@ struct proxy_manager ULONG sorflags; /* STDOBJREF flags (RO) */ IRemUnknown *remunk; /* proxy to IRemUnknown used for lifecycle management (CS cs) */ HANDLE remoting_mutex; /* mutex used for synchronizing access to IRemUnknown */ + MSHCTX dest_context; /* context used for activating optimisations (LOCK) */ + void *dest_context_data; /* reserved context value (LOCK) */ }; /* this needs to become a COM object that implements IRemUnknown */ struct apartment { - struct list entry; + struct list entry; LONG refs; /* refcount of the apartment (LOCK) */ - DWORD model; /* threading model (RO) */ + BOOL multi_threaded; /* multi-threaded or single-threaded apartment? (RO) */ DWORD tid; /* thread id (RO) */ OXID oxid; /* object exporter ID (RO) */ LONG ipidc; /* interface pointer ID counter, starts at 1 (LOCK) */ - HWND win; /* message window (RO) */ CRITICAL_SECTION cs; /* thread safety */ - LPMESSAGEFILTER filter; /* message filter (CS cs) */ struct list proxies; /* imported objects (CS cs) */ struct list stubmgrs; /* stub managers for exported objects (CS cs) */ BOOL remunk_exported; /* has the IRemUnknown interface for this apartment been created yet? (CS cs) */ LONG remoting_started; /* has the RPC system been started for this apartment? (LOCK) */ + struct list psclsids; /* list of registered PS CLSIDs (CS cs) */ + struct list loaded_dlls; /* list of dlls loaded by this apartment (CS cs) */ /* FIXME: OID's should be given out by RPCSS */ OID oidc; /* object ID counter, starts at 1, zero is invalid OID (CS cs) */ + + /* STA-only fields */ + HWND win; /* message window (LOCK) */ + LPMESSAGEFILTER filter; /* message filter (CS cs) */ + BOOL main; /* is this a main-threaded-apartment? (RO) */ }; /* this is what is stored in TEB->ReservedForOle */ @@ -157,22 +175,26 @@ struct oletls IErrorInfo *errorinfo; /* see errorinfo.c */ IUnknown *state; /* see CoSetState */ DWORD inits; /* number of times CoInitializeEx called */ + DWORD ole_inits; /* number of times OleInitialize called */ + GUID causality_id; /* unique identifier for each COM call */ + LONG pending_call_count_client; /* number of client calls pending */ + LONG pending_call_count_server; /* number of server calls pending */ }; /* Global Interface Table Functions */ extern void* StdGlobalInterfaceTable_Construct(void); -extern void StdGlobalInterfaceTable_Destroy(void* self); extern HRESULT StdGlobalInterfaceTable_GetFactory(LPVOID *ppv); extern void* StdGlobalInterfaceTableInstance; /* FIXME: these shouldn't be needed, except for 16-bit functions */ extern HRESULT WINE_StringFromCLSID(const CLSID *id,LPSTR idstr); -HRESULT WINAPI __CLSIDFromStringA(LPCSTR idstr, CLSID *id); HRESULT COM_OpenKeyForCLSID(REFCLSID clsid, LPCWSTR keyname, REGSAM access, HKEY *key); +HRESULT COM_OpenKeyForAppIdFromCLSID(REFCLSID clsid, REGSAM access, HKEY *subkey); HRESULT MARSHAL_GetStandardMarshalCF(LPVOID *ppv); +HRESULT FTMarshalCF_Create(REFIID riid, LPVOID *ppv); /* Stub Manager */ @@ -180,7 +202,7 @@ ULONG stub_manager_int_addref(struct stub_manager *This); ULONG stub_manager_int_release(struct stub_manager *This); struct stub_manager *new_stub_manager(APARTMENT *apt, IUnknown *object); ULONG stub_manager_ext_addref(struct stub_manager *m, ULONG refs); -ULONG stub_manager_ext_release(struct stub_manager *m, ULONG refs); +ULONG stub_manager_ext_release(struct stub_manager *m, ULONG refs, BOOL last_unlock_releases); struct ifstub *stub_manager_new_ifstub(struct stub_manager *m, IRpcStubBuffer *sb, IUnknown *iptr, REFIID iid, MSHLFLAGS flags); struct ifstub *stub_manager_find_ifstub(struct stub_manager *m, REFIID iid, MSHLFLAGS flags); struct stub_manager *get_stub_manager(APARTMENT *apt, OID oid); @@ -189,7 +211,7 @@ BOOL stub_manager_notify_unmarshal(struct stub_manager *m, const IPID *ipid); BOOL stub_manager_is_table_marshaled(struct stub_manager *m, const IPID *ipid); void stub_manager_release_marshal_data(struct stub_manager *m, ULONG refs, const IPID *ipid); HRESULT ipid_to_stub_manager(const IPID *ipid, APARTMENT **stub_apt, struct stub_manager **stubmgr_ret); -IRpcStubBuffer *ipid_to_apt_and_stubbuffer(const IPID *ipid, APARTMENT **stub_apt); +HRESULT ipid_get_dispatch_params(const IPID *ipid, APARTMENT **stub_apt, IRpcStubBuffer **stub, IRpcChannelBuffer **chan, IID *iid, IUnknown **iface); HRESULT start_apartment_remote_unknown(void); HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnknown *obj, MSHLFLAGS mshlflags); @@ -199,12 +221,20 @@ HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnkno struct dispatch_params; void RPC_StartRemoting(struct apartment *apt); -HRESULT RPC_CreateClientChannel(const OXID *oxid, const IPID *ipid, IRpcChannelBuffer **pipebuf); +HRESULT RPC_CreateClientChannel(const OXID *oxid, const IPID *ipid, + const OXID_INFO *oxid_info, + DWORD dest_context, void *dest_context_data, + IRpcChannelBuffer **chan); +HRESULT RPC_CreateServerChannel(IRpcChannelBuffer **chan); void RPC_ExecuteCall(struct dispatch_params *params); HRESULT RPC_RegisterInterface(REFIID riid); void RPC_UnregisterInterface(REFIID riid); -void RPC_StartLocalServer(REFCLSID clsid, IStream *stream); +HRESULT RPC_StartLocalServer(REFCLSID clsid, IStream *stream, BOOL multi_use, void **registration); +void RPC_StopLocalServer(void *registration); HRESULT RPC_GetLocalClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv); +HRESULT RPC_RegisterChannelHook(REFGUID rguid, IChannelHook *hook); +void RPC_UnregisterAllChannelHooks(void); +HRESULT RPC_ResolveOxid(OXID oxid, OXID_INFO *oxid_info); /* This function initialize the Running Object Table */ HRESULT WINAPI RunningObjectTableImpl_Initialize(void); @@ -212,9 +242,8 @@ HRESULT WINAPI RunningObjectTableImpl_Initialize(void); /* This function uninitialize the Running Object Table */ HRESULT WINAPI RunningObjectTableImpl_UnInitialize(void); -/* This function decomposes a String path to a String Table containing all the elements ("\" or "subDirectory" or "Directory" or "FileName") of the path */ -int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR** stringTable); - +/* Drag and drop */ +void OLEDD_UnInitialize(void); /* Apartment Functions */ @@ -229,10 +258,14 @@ static inline HRESULT apartment_getoxid(struct apartment *apt, OXID *oxid) *oxid = apt->oxid; return S_OK; } +HRESULT apartment_createwindowifneeded(struct apartment *apt); +HWND apartment_getwindow(struct apartment *apt); +void apartment_joinmta(void); /* DCOM messages used by the apartment window (not compatible with native) */ #define DM_EXECUTERPC (WM_USER + 0) /* WPARAM = 0, LPARAM = (struct dispatch_params *) */ +#define DM_HOSTOBJECT (WM_USER + 1) /* WPARAM = 0, LPARAM = (struct host_object_params *) */ /* * Per-thread values are stored in the TEB on offset 0xF80, @@ -253,6 +286,16 @@ static inline APARTMENT* COM_CurrentApt(void) return COM_CurrentInfo()->apt; } +static inline GUID COM_CurrentCausalityId(void) +{ + struct oletls *info = COM_CurrentInfo(); + if (!info) + return GUID_NULL; + if (IsEqualGUID(&info->causality_id, &GUID_NULL)) + CoCreateGuid(&info->causality_id); + return info->causality_id; +} + #define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field)) /* helpers for debugging */ diff --git a/reactos/dll/win32/ole32/compositemoniker.c b/reactos/dll/win32/ole32/compositemoniker.c index c6510abefc5..4a0af25a8cd 100644 --- a/reactos/dll/win32/ole32/compositemoniker.c +++ b/reactos/dll/win32/ole32/compositemoniker.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -37,10 +37,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); -static const CLSID CLSID_CompositeMoniker = { - 0x309, 0, 0, {0xC0, 0, 0, 0, 0, 0, 0, 0x46} -}; - #define BLOCK_TAB_SIZE 5 /* represent the first size table and it's increment block size */ /* CompositeMoniker data structure */ @@ -54,6 +50,8 @@ typedef struct CompositeMonikerImpl{ */ const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData interface.*/ + const IMarshalVtbl* lpvtblMarshal; /* VTable relative to the IMarshal interface.*/ + LONG ref; /* reference counter for this object */ IMoniker** tabMoniker; /* dynamaic table containing all components (monikers) of this composite moniker */ @@ -85,6 +83,11 @@ static inline IMoniker *impl_from_IROTData( IROTData *iface ) return (IMoniker *)((char*)iface - FIELD_OFFSET(CompositeMonikerImpl, lpvtbl2)); } +static inline IMoniker *impl_from_IMarshal( IMarshal *iface ) +{ + return (IMoniker *)((char*)iface - FIELD_OFFSET(CompositeMonikerImpl, lpvtblMarshal)); +} + static HRESULT EnumMonikerImpl_CreateEnumMoniker(IMoniker** tabMoniker,ULONG tabSize,ULONG currentPos,BOOL leftToRigth,IEnumMoniker ** ppmk); /******************************************************************************* @@ -113,6 +116,8 @@ CompositeMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject *ppvObject = iface; else if (IsEqualIID(&IID_IROTData, riid)) *ppvObject = (IROTData*)&(This->lpvtbl2); + else if (IsEqualIID(&IID_IMarshal, riid)) + *ppvObject = (IROTData*)&(This->lpvtblMarshal); /* Check that we obtained an interface.*/ if ((*ppvObject)==0) @@ -137,6 +142,16 @@ CompositeMonikerImpl_AddRef(IMoniker* iface) return InterlockedIncrement(&This->ref); } +static void CompositeMonikerImpl_ReleaseMonikersInTable(CompositeMonikerImpl *This) +{ + ULONG i; + + for (i = 0; i < This->tabLastIndex; i++) + IMoniker_Release(This->tabMoniker[i]); + + This->tabLastIndex = 0; +} + /****************************************************************************** * CompositeMoniker_Release ******************************************************************************/ @@ -144,7 +159,6 @@ static ULONG WINAPI CompositeMonikerImpl_Release(IMoniker* iface) { CompositeMonikerImpl *This = (CompositeMonikerImpl *)iface; - ULONG i; ULONG ref; TRACE("(%p)\n",This); @@ -155,8 +169,7 @@ CompositeMonikerImpl_Release(IMoniker* iface) if (ref == 0){ /* release all the components before destroying this object */ - for (i=0;itabLastIndex;i++) - IMoniker_Release(This->tabMoniker[i]); + CompositeMonikerImpl_ReleaseMonikersInTable(This); HeapFree(GetProcessHeap(),0,This->tabMoniker); HeapFree(GetProcessHeap(),0,This); @@ -170,7 +183,7 @@ CompositeMonikerImpl_Release(IMoniker* iface) static HRESULT WINAPI CompositeMonikerImpl_GetClassID(IMoniker* iface,CLSID *pClassID) { - TRACE("(%p,%p),stub!\n",iface,pClassID); + TRACE("(%p,%p)\n",iface,pClassID); if (pClassID==NULL) return E_POINTER; @@ -202,9 +215,8 @@ static HRESULT WINAPI CompositeMonikerImpl_Load(IMoniker* iface,IStream* pStm) { HRESULT res; - DWORD constant; - CLSID clsid; - WCHAR string[1]={0}; + DWORD moniker_count; + DWORD i; CompositeMonikerImpl *This = (CompositeMonikerImpl *)iface; @@ -212,54 +224,22 @@ CompositeMonikerImpl_Load(IMoniker* iface,IStream* pStm) /* this function call OleLoadFromStream function for each moniker within this object */ - /* read the a constant written by CompositeMonikerImpl_Save (see CompositeMonikerImpl_Save for more details)*/ - res=IStream_Read(pStm,&constant,sizeof(DWORD),NULL); - - if (SUCCEEDED(res)&& constant!=3) + res=IStream_Read(pStm,&moniker_count,sizeof(DWORD),NULL); + if (res != S_OK) + { + ERR("couldn't reading moniker count from stream\n"); return E_FAIL; + } - while(1){ -#if 0 + CompositeMonikerImpl_ReleaseMonikersInTable(This); + + for (i = 0; i < moniker_count; i++) + { res=OleLoadFromStream(pStm,&IID_IMoniker,(void**)&This->tabMoniker[This->tabLastIndex]); -#endif - res=ReadClassStm(pStm,&clsid); - DPRINTF("res=%ld",res); if (FAILED(res)) - break; - - if (IsEqualIID(&clsid,&CLSID_FileMoniker)){ - res=CreateFileMoniker(string,&This->tabMoniker[This->tabLastIndex]); - if (FAILED(res)) - break; - res=IMoniker_Load(This->tabMoniker[This->tabLastIndex],pStm); - if (FAILED(res)) - break; - } - else if (IsEqualIID(&clsid,&CLSID_ItemMoniker)){ - CreateItemMoniker(string,string,&This->tabMoniker[This->tabLastIndex]); - if (res!=S_OK) - break; - IMoniker_Load(This->tabMoniker[This->tabLastIndex],pStm); - if (FAILED(res)) - break; - } - else if (IsEqualIID(&clsid,&CLSID_AntiMoniker)){ - CreateAntiMoniker(&This->tabMoniker[This->tabLastIndex]); - if (FAILED(res)) - break; - IMoniker_Load(This->tabMoniker[This->tabLastIndex],pStm); - if (FAILED(res)) - break; - } - else if (IsEqualIID(&clsid,&CLSID_CompositeMoniker)) - return E_FAIL; - - else { - FIXME("()\n"); - /* FIXME: To whoever wrote this code: It's either return or break. it cannot be both! */ + ERR("couldn't load moniker from stream, res = 0x%08x\n", res); break; - return E_NOTIMPL; } /* resize the table if needed */ @@ -282,10 +262,11 @@ CompositeMonikerImpl_Load(IMoniker* iface,IStream* pStm) static HRESULT WINAPI CompositeMonikerImpl_Save(IMoniker* iface,IStream* pStm,BOOL fClearDirty) { + CompositeMonikerImpl *This = (CompositeMonikerImpl *)iface; HRESULT res; IEnumMoniker *enumMk; IMoniker *pmk; - DWORD constant=3; + DWORD moniker_count = This->tabLastIndex; TRACE("(%p,%p,%d)\n",iface,pStm,fClearDirty); @@ -295,7 +276,8 @@ CompositeMonikerImpl_Save(IMoniker* iface,IStream* pStm,BOOL fClearDirty) * at the beginning of the stream. I don't known why (there's no * indication in the specification) ! */ - res=IStream_Write(pStm,&constant,sizeof(constant),NULL); + res=IStream_Write(pStm,&moniker_count,sizeof(moniker_count),NULL); + if (FAILED(res)) return res; IMoniker_Enum(iface,TRUE,&enumMk); @@ -307,7 +289,7 @@ CompositeMonikerImpl_Save(IMoniker* iface,IStream* pStm,BOOL fClearDirty) if (FAILED(res)){ - IEnumMoniker_Release(pmk); + IEnumMoniker_Release(enumMk); return res; } } @@ -333,22 +315,20 @@ CompositeMonikerImpl_GetSizeMax(IMoniker* iface,ULARGE_INTEGER* pcbSize) TRACE("(%p,%p)\n",iface,pcbSize); - if (pcbSize!=NULL) + if (!pcbSize) return E_POINTER; - pcbSize->u.LowPart =0; - pcbSize->u.HighPart=0; + pcbSize->QuadPart = sizeof(DWORD); IMoniker_Enum(iface,TRUE,&enumMk); - while(IEnumMoniker_Next(enumMk,1,&pmk,NULL)){ + while(IEnumMoniker_Next(enumMk,1,&pmk,NULL)==S_OK){ IMoniker_GetSizeMax(pmk,&ptmpSize); IMoniker_Release(pmk); - pcbSize->u.LowPart +=ptmpSize.u.LowPart; - pcbSize->u.HighPart+=ptmpSize.u.HighPart; + pcbSize->QuadPart = ptmpSize.QuadPart + sizeof(CLSID); } IEnumMoniker_Release(enumMk); @@ -401,7 +381,7 @@ CompositeMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc, res=IMoniker_ComposeWith(iface,antiMk,0,&tempMk); IMoniker_Release(antiMk); - res=CompositeMonikerImpl_BindToObject(mostRigthMk,pbc,tempMk,riid,ppvResult); + res=IMoniker_BindToObject(mostRigthMk,pbc,tempMk,riid,ppvResult); IMoniker_Release(tempMk); IMoniker_Release(mostRigthMk); @@ -418,7 +398,7 @@ CompositeMonikerImpl_BindToStorage(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, VOID** ppvResult) { HRESULT res; - IMoniker *tempMk,*antiMk,*mostRigthMk; + IMoniker *tempMk,*antiMk,*mostRigthMk,*leftMk; IEnumMoniker *enumMoniker; TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult); @@ -428,26 +408,34 @@ CompositeMonikerImpl_BindToStorage(IMoniker* iface, IBindCtx* pbc, /* This method recursively calls BindToStorage on the rightmost component of the composite, */ /* passing the rest of the composite as the pmkToLeft parameter for that call. */ - if (pmkToLeft!=NULL){ - - IMoniker_Enum(iface,FALSE,&enumMoniker); - IEnumMoniker_Next(enumMoniker,1,&mostRigthMk,NULL); - IEnumMoniker_Release(enumMoniker); - - res=CreateAntiMoniker(&antiMk); - res=IMoniker_ComposeWith(iface,antiMk,0,&tempMk); - IMoniker_Release(antiMk); - - res=CompositeMonikerImpl_BindToStorage(mostRigthMk,pbc,tempMk,riid,ppvResult); - - IMoniker_Release(tempMk); - - IMoniker_Release(mostRigthMk); - - return res; + if (pmkToLeft) + { + res = IMoniker_ComposeWith(pmkToLeft, iface, FALSE, &leftMk); + if (FAILED(res)) return res; } else - return IMoniker_BindToStorage(iface,pbc,NULL,riid,ppvResult); + leftMk = iface; + + IMoniker_Enum(iface, FALSE, &enumMoniker); + IEnumMoniker_Next(enumMoniker, 1, &mostRigthMk, NULL); + IEnumMoniker_Release(enumMoniker); + + res = CreateAntiMoniker(&antiMk); + if (FAILED(res)) return res; + res = IMoniker_ComposeWith(leftMk, antiMk, 0, &tempMk); + if (FAILED(res)) return res; + IMoniker_Release(antiMk); + + res = IMoniker_BindToStorage(mostRigthMk, pbc, tempMk, riid, ppvResult); + + IMoniker_Release(tempMk); + + IMoniker_Release(mostRigthMk); + + if (pmkToLeft) + IMoniker_Release(leftMk); + + return res; } /****************************************************************************** @@ -461,7 +449,7 @@ CompositeMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar IMoniker *tempMk,*antiMk,*mostRigthMk,*leftReducedComposedMk,*mostRigthReducedMk; IEnumMoniker *enumMoniker; - TRACE("(%p,%p,%ld,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced); + TRACE("(%p,%p,%d,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced); if (ppmkReduced==NULL) return E_POINTER; @@ -478,7 +466,7 @@ CompositeMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar res=IMoniker_ComposeWith(iface,antiMk,0,&tempMk); IMoniker_Release(antiMk); - return CompositeMonikerImpl_Reduce(mostRigthMk,pbc,dwReduceHowFar,&tempMk, ppmkReduced); + return IMoniker_Reduce(mostRigthMk,pbc,dwReduceHowFar,&tempMk, ppmkReduced); } else if (*ppmkToLeft==NULL) @@ -498,7 +486,7 @@ CompositeMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar /* If any of the components reduces itself, the method returns S_OK and passes back a composite */ /* of the reduced components */ if (IMoniker_Reduce(mostRigthMk,pbc,dwReduceHowFar,NULL,&mostRigthReducedMk) && - CompositeMonikerImpl_Reduce(mostRigthMk,pbc,dwReduceHowFar,&tempMk,&leftReducedComposedMk) + IMoniker_Reduce(mostRigthMk,pbc,dwReduceHowFar,&tempMk,&leftReducedComposedMk) ) return CreateGenericComposite(leftReducedComposedMk,mostRigthReducedMk,ppmkReduced); @@ -634,15 +622,13 @@ CompositeMonikerImpl_Hash(IMoniker* iface,DWORD* pdwHash) if(FAILED(res)) return res; - while(1){ - res=IEnumMoniker_Next(enumMoniker,1,&tempMk,NULL); - if(FAILED(res)) - break; - + *pdwHash = 0; + + while(IEnumMoniker_Next(enumMoniker,1,&tempMk,NULL)==S_OK){ res = IMoniker_Hash(tempMk, &tempHash); if(FAILED(res)) break; - *pdwHash = (*pdwHash * 37) + tempHash; + *pdwHash = *pdwHash ^ tempHash; IMoniker_Release(tempMk); } @@ -737,9 +723,8 @@ static HRESULT WINAPI CompositeMonikerImpl_GetTimeOfLastChange(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft, FILETIME* pCompositeTime) { - IRunningObjectTable* rot; HRESULT res; - IMoniker *tempMk,*antiMk,*mostRigthMk; + IMoniker *tempMk,*antiMk,*mostRigthMk,*leftMk; IEnumMoniker *enumMoniker; TRACE("(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pCompositeTime); @@ -751,36 +736,45 @@ CompositeMonikerImpl_GetTimeOfLastChange(IMoniker* iface, IBindCtx* pbc, /* retrieve the time of last change. If the object is not in the ROT, the method recursively calls */ /* IMoniker::GetTimeOfLastChange on the rightmost component of the composite, passing the remainder */ /* of the composite as the pmkToLeft parameter for that call. */ - if (pmkToLeft!=NULL){ + if (pmkToLeft) + { + IRunningObjectTable* rot; - res=CreateGenericComposite(pmkToLeft,iface,&tempMk); - - res=IBindCtx_GetRunningObjectTable(pbc,&rot); + res = IMoniker_ComposeWith(pmkToLeft, iface, FALSE, &leftMk); + res = IBindCtx_GetRunningObjectTable(pbc,&rot); if (FAILED(res)) + { + IMoniker_Release(leftMk); return res; + } - if (IRunningObjectTable_GetTimeOfLastChange(rot,tempMk,pCompositeTime)==S_OK) - return res; - else - - IMoniker_Enum(iface,FALSE,&enumMoniker); - IEnumMoniker_Next(enumMoniker,1,&mostRigthMk,NULL); - IEnumMoniker_Release(enumMoniker); - - res=CreateAntiMoniker(&antiMk); - res=IMoniker_ComposeWith(iface,antiMk,0,&tempMk); - IMoniker_Release(antiMk); - - res=CompositeMonikerImpl_GetTimeOfLastChange(mostRigthMk,pbc,tempMk,pCompositeTime); - - IMoniker_Release(tempMk); - IMoniker_Release(mostRigthMk); - + if (IRunningObjectTable_GetTimeOfLastChange(rot,leftMk,pCompositeTime)==S_OK) + { + IMoniker_Release(leftMk); return res; + } } else - return IMoniker_GetTimeOfLastChange(iface,pbc,NULL,pCompositeTime); + leftMk = iface; + + IMoniker_Enum(iface, FALSE, &enumMoniker); + IEnumMoniker_Next(enumMoniker, 1, &mostRigthMk, NULL); + IEnumMoniker_Release(enumMoniker); + + res = CreateAntiMoniker(&antiMk); + res = IMoniker_ComposeWith(leftMk, antiMk, 0, &tempMk); + IMoniker_Release(antiMk); + + res = IMoniker_GetTimeOfLastChange(mostRigthMk, pbc, tempMk, pCompositeTime); + + IMoniker_Release(tempMk); + IMoniker_Release(mostRigthMk); + + if (pmkToLeft) + IMoniker_Release(leftMk); + + return res; } /****************************************************************************** @@ -1245,14 +1239,267 @@ static ULONG WINAPI CompositeMonikerROTDataImpl_Release(IROTData* iface) } /****************************************************************************** - * CompositeMonikerIROTData_GetComparaisonData + * CompositeMonikerIROTData_GetComparisonData ******************************************************************************/ static HRESULT WINAPI -CompositeMonikerROTDataImpl_GetComparaisonData(IROTData* iface, +CompositeMonikerROTDataImpl_GetComparisonData(IROTData* iface, BYTE* pbData, ULONG cbMax, ULONG* pcbData) { - FIXME("(),stub!\n"); - return E_NOTIMPL; + IMoniker *This = impl_from_IROTData(iface); + IEnumMoniker *pEnumMk; + IMoniker *pmk; + HRESULT hr; + + TRACE("(%p, %u, %p)\n", pbData, cbMax, pcbData); + + *pcbData = sizeof(CLSID); + + hr = IMoniker_Enum(This, TRUE, &pEnumMk); + if (FAILED(hr)) return hr; + + while(IEnumMoniker_Next(pEnumMk, 1, &pmk, NULL) == S_OK) + { + IROTData *pROTData; + hr = IMoniker_QueryInterface(pmk, &IID_IROTData, (void **)&pROTData); + if (FAILED(hr)) + ERR("moniker doesn't support IROTData interface\n"); + + if (SUCCEEDED(hr)) + { + ULONG cbData; + hr = IROTData_GetComparisonData(pROTData, NULL, 0, &cbData); + IROTData_Release(pROTData); + if (SUCCEEDED(hr) || (hr == E_OUTOFMEMORY)) + { + *pcbData += cbData; + hr = S_OK; + } + else + ERR("IROTData_GetComparisonData failed with error 0x%08x\n", hr); + } + + IMoniker_Release(pmk); + + if (FAILED(hr)) + { + IEnumMoniker_Release(pEnumMk); + return hr; + } + } + if (cbMax < *pcbData) + return E_OUTOFMEMORY; + + IEnumMoniker_Reset(pEnumMk); + + memcpy(pbData, &CLSID_CompositeMoniker, sizeof(CLSID)); + pbData += sizeof(CLSID); + cbMax -= sizeof(CLSID); + + while (IEnumMoniker_Next(pEnumMk, 1, &pmk, NULL) == S_OK) + { + IROTData *pROTData; + hr = IMoniker_QueryInterface(pmk, &IID_IROTData, (void **)&pROTData); + if (FAILED(hr)) + ERR("moniker doesn't support IROTData interface\n"); + + if (SUCCEEDED(hr)) + { + ULONG cbData; + hr = IROTData_GetComparisonData(pROTData, pbData, cbMax, &cbData); + IROTData_Release(pROTData); + if (SUCCEEDED(hr)) + { + pbData += cbData; + cbMax -= cbData; + } + else + ERR("IROTData_GetComparisonData failed with error 0x%08x\n", hr); + } + + IMoniker_Release(pmk); + + if (FAILED(hr)) + { + IEnumMoniker_Release(pEnumMk); + return hr; + } + } + + IEnumMoniker_Release(pEnumMk); + + return S_OK; +} + +static HRESULT WINAPI CompositeMonikerMarshalImpl_QueryInterface(IMarshal *iface, REFIID riid, LPVOID *ppv) +{ + IMoniker *This = impl_from_IMarshal(iface); + + TRACE("(%p,%s,%p)\n",iface,debugstr_guid(riid),ppv); + + return CompositeMonikerImpl_QueryInterface(This, riid, ppv); +} + +static ULONG WINAPI CompositeMonikerMarshalImpl_AddRef(IMarshal *iface) +{ + IMoniker *This = impl_from_IMarshal(iface); + + TRACE("(%p)\n",iface); + + return CompositeMonikerImpl_AddRef(This); +} + +static ULONG WINAPI CompositeMonikerMarshalImpl_Release(IMarshal *iface) +{ + IMoniker *This = impl_from_IMarshal(iface); + + TRACE("(%p)\n",iface); + + return CompositeMonikerImpl_Release(This); +} + +static HRESULT WINAPI CompositeMonikerMarshalImpl_GetUnmarshalClass( + LPMARSHAL iface, REFIID riid, void* pv, DWORD dwDestContext, + void* pvDestContext, DWORD mshlflags, CLSID* pCid) +{ + IMoniker *This = impl_from_IMarshal(iface); + + TRACE("(%s, %p, %x, %p, %x, %p)\n", debugstr_guid(riid), pv, + dwDestContext, pvDestContext, mshlflags, pCid); + + return IMoniker_GetClassID(This, pCid); +} + +static HRESULT WINAPI CompositeMonikerMarshalImpl_GetMarshalSizeMax( + LPMARSHAL iface, REFIID riid, void* pv, DWORD dwDestContext, + void* pvDestContext, DWORD mshlflags, DWORD* pSize) +{ + IMoniker *This = impl_from_IMarshal(iface); + IEnumMoniker *pEnumMk; + IMoniker *pmk; + HRESULT hr; + ULARGE_INTEGER size; + + TRACE("(%s, %p, %x, %p, %x, %p)\n", debugstr_guid(riid), pv, + dwDestContext, pvDestContext, mshlflags, pSize); + + *pSize = 0x10; /* to match native */ + + hr = IMoniker_Enum(This, TRUE, &pEnumMk); + if (FAILED(hr)) return hr; + + hr = IMoniker_GetSizeMax(This, &size); + + while (IEnumMoniker_Next(pEnumMk, 1, &pmk, NULL) == S_OK) + { + ULONG size; + + hr = CoGetMarshalSizeMax(&size, &IID_IMoniker, (IUnknown *)pmk, dwDestContext, pvDestContext, mshlflags); + if (SUCCEEDED(hr)) + *pSize += size; + + IMoniker_Release(pmk); + + if (FAILED(hr)) + { + IEnumMoniker_Release(pEnumMk); + return hr; + } + } + + IEnumMoniker_Release(pEnumMk); + + return S_OK; +} + +static HRESULT WINAPI CompositeMonikerMarshalImpl_MarshalInterface(LPMARSHAL iface, IStream *pStm, + REFIID riid, void* pv, DWORD dwDestContext, + void* pvDestContext, DWORD mshlflags) +{ + IMoniker *This = impl_from_IMarshal(iface); + IEnumMoniker *pEnumMk; + IMoniker *pmk; + HRESULT hr; + ULONG i = 0; + + TRACE("(%p, %s, %p, %x, %p, %x)\n", pStm, debugstr_guid(riid), pv, + dwDestContext, pvDestContext, mshlflags); + + hr = IMoniker_Enum(This, TRUE, &pEnumMk); + if (FAILED(hr)) return hr; + + while (IEnumMoniker_Next(pEnumMk, 1, &pmk, NULL) == S_OK) + { + hr = CoMarshalInterface(pStm, &IID_IMoniker, (IUnknown *)pmk, dwDestContext, pvDestContext, mshlflags); + + IMoniker_Release(pmk); + + if (FAILED(hr)) + { + IEnumMoniker_Release(pEnumMk); + return hr; + } + i++; + } + + if (i != 2) + FIXME("moniker count of %d not supported\n", i); + + IEnumMoniker_Release(pEnumMk); + + return S_OK; +} + +static HRESULT WINAPI CompositeMonikerMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void **ppv) +{ + CompositeMonikerImpl *This = (CompositeMonikerImpl *)impl_from_IMarshal(iface); + HRESULT hr; + + TRACE("(%p, %s, %p)\n", pStm, debugstr_guid(riid), ppv); + + CompositeMonikerImpl_ReleaseMonikersInTable(This); + + /* resize the table if needed */ + if (This->tabLastIndex + 2 > This->tabSize) + { + This->tabSize += max(BLOCK_TAB_SIZE, 2); + This->tabMoniker=HeapReAlloc(GetProcessHeap(),0,This->tabMoniker,This->tabSize*sizeof(IMoniker)); + + if (This->tabMoniker==NULL) + return E_OUTOFMEMORY; + } + + hr = CoUnmarshalInterface(pStm, &IID_IMoniker, (void**)&This->tabMoniker[This->tabLastIndex]); + if (FAILED(hr)) + { + ERR("couldn't unmarshal moniker, hr = 0x%08x\n", hr); + return hr; + } + This->tabLastIndex++; + hr = CoUnmarshalInterface(pStm, &IID_IMoniker, (void**)&This->tabMoniker[This->tabLastIndex]); + if (FAILED(hr)) + { + ERR("couldn't unmarshal moniker, hr = 0x%08x\n", hr); + return hr; + } + This->tabLastIndex++; + + return IMoniker_QueryInterface((IMoniker *)&This->lpvtbl1, riid, ppv); +} + +static HRESULT WINAPI CompositeMonikerMarshalImpl_ReleaseMarshalData(LPMARSHAL iface, IStream *pStm) +{ + TRACE("(%p)\n", pStm); + /* can't release a state-based marshal as nothing on server side to + * release */ + return S_OK; +} + +static HRESULT WINAPI CompositeMonikerMarshalImpl_DisconnectObject(LPMARSHAL iface, DWORD dwReserved) +{ + TRACE("(0x%x)\n", dwReserved); + /* can't disconnect a state-based marshal as nothing on server side to + * disconnect from */ + return S_OK; } /****************************************************************************** @@ -1337,8 +1584,10 @@ EnumMonikerImpl_Next(IEnumMoniker* iface,ULONG celt, IMoniker** rgelt, /* retrieve the requested number of moniker from the current position */ for(i=0;((This->currentPos < This->tabSize) && (i < celt));i++) - + { rgelt[i]=This->tabMoniker[This->currentPos++]; + IMoniker_AddRef(rgelt[i]); + } if (pceltFethed!=NULL) *pceltFethed= i; @@ -1423,7 +1672,7 @@ EnumMonikerImpl_CreateEnumMoniker(IMoniker** tabMoniker, ULONG tabSize, /* Initialize the virtual function table. */ newEnumMoniker->lpVtbl = &VT_EnumMonikerImpl; - newEnumMoniker->ref = 0; + newEnumMoniker->ref = 1; newEnumMoniker->tabSize=tabSize; newEnumMoniker->currentPos=currentPos; @@ -1491,27 +1740,47 @@ static const IROTDataVtbl VT_ROTDataImpl = CompositeMonikerROTDataImpl_QueryInterface, CompositeMonikerROTDataImpl_AddRef, CompositeMonikerROTDataImpl_Release, - CompositeMonikerROTDataImpl_GetComparaisonData + CompositeMonikerROTDataImpl_GetComparisonData +}; + +static const IMarshalVtbl VT_MarshalImpl = +{ + CompositeMonikerMarshalImpl_QueryInterface, + CompositeMonikerMarshalImpl_AddRef, + CompositeMonikerMarshalImpl_Release, + CompositeMonikerMarshalImpl_GetUnmarshalClass, + CompositeMonikerMarshalImpl_GetMarshalSizeMax, + CompositeMonikerMarshalImpl_MarshalInterface, + CompositeMonikerMarshalImpl_UnmarshalInterface, + CompositeMonikerMarshalImpl_ReleaseMarshalData, + CompositeMonikerMarshalImpl_DisconnectObject }; /****************************************************************************** * Composite-Moniker_Construct (local function) *******************************************************************************/ static HRESULT -CompositeMonikerImpl_Construct(CompositeMonikerImpl* This, +CompositeMonikerImpl_Construct(IMoniker** ppMoniker, LPMONIKER pmkFirst, LPMONIKER pmkRest) { DWORD mkSys; IEnumMoniker *enumMoniker; IMoniker *tempMk; HRESULT res; + CompositeMonikerImpl *This; + + This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); + + if (!This) + return E_OUTOFMEMORY; TRACE("(%p,%p,%p)\n",This,pmkFirst,pmkRest); /* Initialize the virtual function table. */ This->lpvtbl1 = &VT_CompositeMonikerImpl; This->lpvtbl2 = &VT_ROTDataImpl; - This->ref = 0; + This->lpvtblMarshal= &VT_MarshalImpl; + This->ref = 1; This->tabSize=BLOCK_TAB_SIZE; This->tabLastIndex=0; @@ -1520,6 +1789,12 @@ CompositeMonikerImpl_Construct(CompositeMonikerImpl* This, if (This->tabMoniker==NULL) return E_OUTOFMEMORY; + if (!pmkFirst && !pmkRest) + { + *ppMoniker = (IMoniker *)This; + return S_OK; + } + IMoniker_IsSystemMoniker(pmkFirst,&mkSys); /* put the first moniker contents in the beginning of the table */ @@ -1637,6 +1912,16 @@ CompositeMonikerImpl_Construct(CompositeMonikerImpl* This, IEnumMoniker_Release(enumMoniker); } + /* only one moniker, then just return it */ + if (This->tabLastIndex == 1) + { + *ppMoniker = This->tabMoniker[0]; + IMoniker_AddRef(*ppMoniker); + IMoniker_Release((IMoniker *)This); + } + else + *ppMoniker = (IMoniker *)This; + return S_OK; } @@ -1647,7 +1932,7 @@ HRESULT WINAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER* ppmkComposite) { - CompositeMonikerImpl* newCompositeMoniker = 0; + IMoniker* moniker = 0; HRESULT hr = S_OK; TRACE("(%p,%p,%p)\n",pmkFirst,pmkRest,ppmkComposite); @@ -1669,24 +1954,13 @@ CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, else if (pmkFirst==NULL && pmkRest==NULL) return S_OK; - newCompositeMoniker = HeapAlloc(GetProcessHeap(), 0,sizeof(CompositeMonikerImpl)); + hr = CompositeMonikerImpl_Construct(&moniker,pmkFirst,pmkRest); - if (newCompositeMoniker == 0) - return STG_E_INSUFFICIENTMEMORY; - - hr = CompositeMonikerImpl_Construct(newCompositeMoniker,pmkFirst,pmkRest); - - if (FAILED(hr)){ - - HeapFree(GetProcessHeap(),0,newCompositeMoniker); + if (FAILED(hr)) return hr; - } - if (newCompositeMoniker->tabLastIndex==1) - hr = IMoniker_QueryInterface(newCompositeMoniker->tabMoniker[0],&IID_IMoniker,(void**)ppmkComposite); - else - - hr = IMoniker_QueryInterface((IMoniker*)newCompositeMoniker,&IID_IMoniker,(void**)ppmkComposite); + hr = IMoniker_QueryInterface(moniker,&IID_IMoniker,(void**)ppmkComposite); + IMoniker_Release(moniker); return hr; } @@ -1700,3 +1974,71 @@ MonikerCommonPrefixWith(IMoniker* pmkThis,IMoniker* pmkOther,IMoniker** ppmkComm FIXME("(),stub!\n"); return E_NOTIMPL; } + +static HRESULT WINAPI CompositeMonikerCF_QueryInterface(LPCLASSFACTORY iface, + REFIID riid, LPVOID *ppv) +{ + *ppv = NULL; + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) + { + *ppv = iface; + IUnknown_AddRef(iface); + return S_OK; + } + return E_NOINTERFACE; +} + +static ULONG WINAPI CompositeMonikerCF_AddRef(LPCLASSFACTORY iface) +{ + return 2; /* non-heap based object */ +} + +static ULONG WINAPI CompositeMonikerCF_Release(LPCLASSFACTORY iface) +{ + return 1; /* non-heap based object */ +} + +static HRESULT WINAPI CompositeMonikerCF_CreateInstance(LPCLASSFACTORY iface, + LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv) +{ + IMoniker* pMoniker; + HRESULT hr; + + TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv); + + *ppv = NULL; + + if (pUnk) + return CLASS_E_NOAGGREGATION; + + hr = CompositeMonikerImpl_Construct(&pMoniker, NULL, NULL); + + if (SUCCEEDED(hr)) + { + hr = IMoniker_QueryInterface(pMoniker, riid, ppv); + IMoniker_Release(pMoniker); + } + + return hr; +} + +static HRESULT WINAPI CompositeMonikerCF_LockServer(LPCLASSFACTORY iface, BOOL fLock) +{ + FIXME("(%d), stub!\n",fLock); + return S_OK; +} + +static const IClassFactoryVtbl CompositeMonikerCFVtbl = +{ + CompositeMonikerCF_QueryInterface, + CompositeMonikerCF_AddRef, + CompositeMonikerCF_Release, + CompositeMonikerCF_CreateInstance, + CompositeMonikerCF_LockServer +}; +static const IClassFactoryVtbl *CompositeMonikerCF = &CompositeMonikerCFVtbl; + +HRESULT CompositeMonikerCF_Create(REFIID riid, LPVOID *ppv) +{ + return IClassFactory_QueryInterface((IClassFactory *)&CompositeMonikerCF, riid, ppv); +} diff --git a/reactos/dll/win32/ole32/datacache.c b/reactos/dll/win32/ole32/datacache.c index a3beacab4ee..249882e8597 100644 --- a/reactos/dll/win32/ole32/datacache.c +++ b/reactos/dll/win32/ole32/datacache.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES: * The OLE2 data cache supports a whole whack of @@ -43,7 +43,6 @@ * header. I was able to figure-out where the extent of the object * was stored and the aspect, but that's about it. */ -#include #include #include @@ -58,6 +57,7 @@ #include "winerror.h" #include "wine/unicode.h" #include "ole2.h" +#include "wine/list.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(ole); @@ -67,24 +67,50 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); * * This structure represents the header of the \002OlePresXXX stream in * the OLE object strorage. - * - * Most fields are still unknown. */ typedef struct PresentationDataHeader { - DWORD unknown1; /* -1 */ - DWORD unknown2; /* 3, possibly CF_METAFILEPICT */ + /* clipformat: + * - standard clipformat: + * DWORD length = 0xffffffff; + * DWORD cfFormat; + * - or custom clipformat: + * DWORD length; + * CHAR format_name[length]; (null-terminated) + */ DWORD unknown3; /* 4, possibly TYMED_ISTREAM */ DVASPECT dvAspect; - DWORD unknown5; /* -1 */ - - DWORD unknown6; + DWORD lindex; + DWORD tymed; DWORD unknown7; /* 0 */ DWORD dwObjectExtentX; DWORD dwObjectExtentY; DWORD dwSize; } PresentationDataHeader; +typedef struct DataCacheEntry +{ + struct list entry; + /* format of this entry */ + FORMATETC fmtetc; + /* the clipboard format of the data */ + CLIPFORMAT data_cf; + /* cached data */ + STGMEDIUM stgmedium; + /* + * This storage pointer is set through a call to + * IPersistStorage_Load. This is where the visual + * representation of the object is stored. + */ + IStorage *storage; + /* connection ID */ + DWORD id; + /* dirty flag */ + BOOL dirty; + /* stream number (-1 if not set ) */ + unsigned short stream_number; +} DataCacheEntry; + /**************************************************************************** * DataCache */ @@ -110,13 +136,6 @@ struct DataCache */ IUnknown* outerUnknown; - /* - * This storage pointer is set through a call to - * IPersistStorage_Load. This is where the visual - * representation of the object is stored. - */ - IStorage* presentationStorage; - /* * The user of this object can setup ONE advise sink * connection with the object. These parameters describe @@ -125,7 +144,14 @@ struct DataCache DWORD sinkAspects; DWORD sinkAdviseFlag; IAdviseSink* sinkInterface; + IStorage *presentationStorage; + /* list of cache entries */ + struct list cache_list; + /* last id assigned to an entry */ + DWORD last_cache_id; + /* dirty flag */ + BOOL dirty; }; typedef struct DataCache DataCache; @@ -167,19 +193,36 @@ static inline DataCache *impl_from_IOleCacheControl( IOleCacheControl *iface ) return (DataCache *)((char*)iface - FIELD_OFFSET(DataCache, lpvtblIOleCacheControl)); } +static const char * debugstr_formatetc(const FORMATETC *formatetc) +{ + return wine_dbg_sprintf("{ cfFormat = 0x%x, ptd = %p, dwAspect = %d, lindex = %d, tymed = %d }", + formatetc->cfFormat, formatetc->ptd, formatetc->dwAspect, + formatetc->lindex, formatetc->tymed); +} /* * Prototypes for the methods of the DataCache class. */ static DataCache* DataCache_Construct(REFCLSID clsid, LPUNKNOWN pUnkOuter); -static HRESULT DataCache_OpenPresStream(DataCache *this, - DWORD drawAspect, +static HRESULT DataCacheEntry_OpenPresStream(DataCacheEntry *This, IStream **pStm); +static void DataCacheEntry_Destroy(DataCacheEntry *This) +{ + list_remove(&This->entry); + if (This->storage) + IStorage_Release(This->storage); + HeapFree(GetProcessHeap(), 0, This->fmtetc.ptd); + ReleaseStgMedium(&This->stgmedium); + HeapFree(GetProcessHeap(), 0, This); +} + static void DataCache_Destroy( DataCache* ptrToDestroy) { + DataCacheEntry *cache_entry, *next_cache_entry; + TRACE("()\n"); if (ptrToDestroy->sinkInterface != NULL) @@ -188,11 +231,8 @@ static void DataCache_Destroy( ptrToDestroy->sinkInterface = NULL; } - if (ptrToDestroy->presentationStorage != NULL) - { - IStorage_Release(ptrToDestroy->presentationStorage); - ptrToDestroy->presentationStorage = NULL; - } + LIST_FOR_EACH_ENTRY_SAFE(cache_entry, next_cache_entry, &ptrToDestroy->cache_list, DataCacheEntry, entry) + DataCacheEntry_Destroy(cache_entry); /* * Free the datacache pointer. @@ -200,60 +240,69 @@ static void DataCache_Destroy( HeapFree(GetProcessHeap(), 0, ptrToDestroy); } -/************************************************************************ - * DataCache_ReadPresentationData - * - * This method will read information for the requested presentation - * into the given structure. - * - * Param: - * this - Pointer to the DataCache object - * drawAspect - The aspect of the object that we wish to draw. - * header - The structure containing information about this - * aspect of the object. - */ -static HRESULT DataCache_ReadPresentationData( - DataCache* this, - DWORD drawAspect, - PresentationDataHeader* header) +static DataCacheEntry *DataCache_GetEntryForFormatEtc(DataCache *This, const FORMATETC *formatetc) { - IStream* presStream = NULL; - HRESULT hres; + DataCacheEntry *cache_entry; + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + { + /* FIXME: also compare DVTARGETDEVICEs */ + if ((!cache_entry->fmtetc.cfFormat || !formatetc->cfFormat || (formatetc->cfFormat == cache_entry->fmtetc.cfFormat)) && + (formatetc->dwAspect == cache_entry->fmtetc.dwAspect) && + (formatetc->lindex == cache_entry->fmtetc.lindex) && + (!cache_entry->fmtetc.tymed || !formatetc->tymed || (formatetc->tymed == cache_entry->fmtetc.tymed))) + return cache_entry; + } + return NULL; +} - /* - * Open the presentation stream. - */ - hres = DataCache_OpenPresStream( - this, - drawAspect, - &presStream); +/* checks that the clipformat and tymed are valid and returns an error if they +* aren't and CACHE_S_NOTSUPPORTED if they are valid, but can't be rendered by +* DataCache_Draw */ +static HRESULT check_valid_clipformat_and_tymed(CLIPFORMAT cfFormat, DWORD tymed) +{ + if (!cfFormat || !tymed || + (cfFormat == CF_METAFILEPICT && tymed == TYMED_MFPICT) || + (cfFormat == CF_BITMAP && tymed == TYMED_GDI) || + (cfFormat == CF_DIB && tymed == TYMED_HGLOBAL) || + (cfFormat == CF_ENHMETAFILE && tymed == TYMED_ENHMF)) + return S_OK; + else if (tymed == TYMED_HGLOBAL) + return CACHE_S_FORMATETC_NOTSUPPORTED; + else + { + WARN("invalid clipformat/tymed combination: %d/%d\n", cfFormat, tymed); + return DV_E_TYMED; + } +} - if (FAILED(hres)) - return hres; +static HRESULT DataCache_CreateEntry(DataCache *This, const FORMATETC *formatetc, DataCacheEntry **cache_entry) +{ + HRESULT hr; - /* - * Read the header. - */ + hr = check_valid_clipformat_and_tymed(formatetc->cfFormat, formatetc->tymed); + if (FAILED(hr)) + return hr; + if (hr == CACHE_S_FORMATETC_NOTSUPPORTED) + TRACE("creating unsupported format %d\n", formatetc->cfFormat); - hres = IStream_Read( - presStream, - header, - sizeof(PresentationDataHeader), - NULL); + *cache_entry = HeapAlloc(GetProcessHeap(), 0, sizeof(**cache_entry)); + if (!*cache_entry) + return E_OUTOFMEMORY; - /* - * Cleanup. - */ - IStream_Release(presStream); - - /* - * We don't want to propagate any other error - * code than a failure. - */ - if (hres!=S_OK) - hres = E_FAIL; - - return hres; + (*cache_entry)->fmtetc = *formatetc; + if (formatetc->ptd) + { + (*cache_entry)->fmtetc.ptd = HeapAlloc(GetProcessHeap(), 0, formatetc->ptd->tdSize); + memcpy((*cache_entry)->fmtetc.ptd, formatetc->ptd, formatetc->ptd->tdSize); + } + (*cache_entry)->stgmedium.tymed = TYMED_NULL; + (*cache_entry)->stgmedium.pUnkForRelease = NULL; + (*cache_entry)->storage = NULL; + (*cache_entry)->id = This->last_cache_id++; + (*cache_entry)->dirty = TRUE; + (*cache_entry)->stream_number = -1; + list_add_tail(&This->cache_list, &(*cache_entry)->entry); + return hr; } /************************************************************************ @@ -269,7 +318,7 @@ static void DataCache_FireOnViewChange( DWORD aspect, LONG lindex) { - TRACE("(%p, %lx, %ld)\n", this, aspect, lindex); + TRACE("(%p, %x, %d)\n", this, aspect, lindex); /* * The sink supplies a filter when it registers @@ -300,7 +349,7 @@ static void DataCache_FireOnViewChange( } } -/* Helper for DataCache_OpenPresStream */ +/* Helper for DataCacheEntry_OpenPresStream */ static BOOL DataCache_IsPresentationStream(const STATSTG *elem) { /* The presentation streams have names of the form "\002OlePresXXX", @@ -310,7 +359,6 @@ static BOOL DataCache_IsPresentationStream(const STATSTG *elem) LPCWSTR name = elem->pwcsName; return (elem->type == STGTY_STREAM) - && (elem->cbSize.u.LowPart >= sizeof(PresentationDataHeader)) && (strlenW(name) == 11) && (strncmpW(name, OlePres, 8) == 0) && (name[8] >= '0') && (name[8] <= '9') @@ -318,8 +366,73 @@ static BOOL DataCache_IsPresentationStream(const STATSTG *elem) && (name[10] >= '0') && (name[10] <= '9'); } +static HRESULT read_clipformat(IStream *stream, CLIPFORMAT *clipformat) +{ + DWORD length; + HRESULT hr; + ULONG read; + + *clipformat = 0; + + hr = IStream_Read(stream, &length, sizeof(length), &read); + if (hr != S_OK || read != sizeof(length)) + return DV_E_CLIPFORMAT; + if (length == -1) + { + DWORD cf; + hr = IStream_Read(stream, &cf, sizeof(cf), 0); + if (hr != S_OK || read != sizeof(cf)) + return DV_E_CLIPFORMAT; + *clipformat = cf; + } + else + { + char *format_name = HeapAlloc(GetProcessHeap(), 0, length); + if (!format_name) + return E_OUTOFMEMORY; + hr = IStream_Read(stream, format_name, length, &read); + if (hr != S_OK || read != length || format_name[length - 1] != '\0') + { + HeapFree(GetProcessHeap(), 0, format_name); + return DV_E_CLIPFORMAT; + } + *clipformat = RegisterClipboardFormatA(format_name); + HeapFree(GetProcessHeap(), 0, format_name); + } + return S_OK; +} + +static HRESULT write_clipformat(IStream *stream, CLIPFORMAT clipformat) +{ + DWORD length; + HRESULT hr; + + if (clipformat < 0xc000) + length = -1; + else + length = GetClipboardFormatNameA(clipformat, NULL, 0); + hr = IStream_Write(stream, &length, sizeof(length), NULL); + if (FAILED(hr)) + return hr; + if (clipformat < 0xc000) + { + DWORD cf = clipformat; + hr = IStream_Write(stream, &cf, sizeof(cf), NULL); + } + else + { + char *format_name = HeapAlloc(GetProcessHeap(), 0, length); + if (!format_name) + return E_OUTOFMEMORY; + GetClipboardFormatNameA(clipformat, format_name, length); + hr = IStream_Write(stream, format_name, length, NULL); + HeapFree(GetProcessHeap(), 0, format_name); + } + return hr; +} + /************************************************************************ - * DataCache_OpenPresStream + * DataCacheEntry_OpenPresStream * * This method will find the stream for the given presentation. It makes * no attempt at fallback. @@ -338,14 +451,13 @@ static BOOL DataCache_IsPresentationStream(const STATSTG *elem) * Notes: * Algorithm: Scan the elements of the presentation storage, looking * for presentation streams. For each presentation stream, - * load the header and check to see if the aspect maches. + * load the header and check to see if the aspect matches. * * If a fallback is desired, just opening the first presentation stream * is a possibility. */ -static HRESULT DataCache_OpenPresStream( - DataCache *this, - DWORD drawAspect, +static HRESULT DataCacheEntry_OpenPresStream( + DataCacheEntry *This, IStream **ppStm) { STATSTG elem; @@ -354,7 +466,7 @@ static HRESULT DataCache_OpenPresStream( if (!ppStm) return E_POINTER; - hr = IStorage_EnumElements(this->presentationStorage, 0, NULL, 0, &pEnum); + hr = IStorage_EnumElements(This->storage, 0, NULL, 0, &pEnum); if (FAILED(hr)) return hr; while ((hr = IEnumSTATSTG_Next(pEnum, 1, &elem, NULL)) == S_OK) @@ -363,19 +475,23 @@ static HRESULT DataCache_OpenPresStream( { IStream *pStm; - hr = IStorage_OpenStream(this->presentationStorage, elem.pwcsName, + hr = IStorage_OpenStream(This->storage, elem.pwcsName, NULL, STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &pStm); if (SUCCEEDED(hr)) { PresentationDataHeader header; ULONG actual_read; + CLIPFORMAT clipformat; - hr = IStream_Read(pStm, &header, sizeof(header), &actual_read); + hr = read_clipformat(pStm, &clipformat); + + if (hr == S_OK) + hr = IStream_Read(pStm, &header, sizeof(header), &actual_read); /* can't use SUCCEEDED(hr): S_FALSE counts as an error */ if (hr == S_OK && actual_read == sizeof(header) - && header.dvAspect == drawAspect) + && header.dvAspect == This->fmtetc.dwAspect) { /* Rewind the stream before returning it. */ LARGE_INTEGER offset; @@ -404,40 +520,40 @@ static HRESULT DataCache_OpenPresStream( } /************************************************************************ - * DataCache_ReadPresentationData + * DataCacheEntry_LoadData * * This method will read information for the requested presentation * into the given structure. * * Param: - * this - Pointer to the DataCache object - * drawAspect - The aspect of the object that we wish to draw. + * This - The entry to load the data from. * * Returns: * This method returns a metafile handle if it is successful. * it will return 0 if not. */ -static HMETAFILE DataCache_ReadPresMetafile( - DataCache* this, - DWORD drawAspect) +static HRESULT DataCacheEntry_LoadData(DataCacheEntry *This) { - LARGE_INTEGER offset; IStream* presStream = NULL; HRESULT hres; - void* metafileBits; + ULARGE_INTEGER current_pos; STATSTG streamInfo; - HMETAFILE newMetafile = 0; + void* metafileBits; + METAFILEPICT *mfpict; + HGLOBAL hmfpict; + PresentationDataHeader header; + CLIPFORMAT clipformat; + static const LARGE_INTEGER offset_zero; /* * Open the presentation stream. */ - hres = DataCache_OpenPresStream( - this, - drawAspect, + hres = DataCacheEntry_OpenPresStream( + This, &presStream); if (FAILED(hres)) - return (HMETAFILE)hres; + return hres; /* * Get the size of the stream. @@ -447,18 +563,38 @@ static HMETAFILE DataCache_ReadPresMetafile( STATFLAG_NONAME); /* - * Skip the header + * Read the header. */ - offset.u.HighPart = 0; - offset.u.LowPart = sizeof(PresentationDataHeader); - hres = IStream_Seek( - presStream, - offset, - STREAM_SEEK_SET, - NULL); + hres = read_clipformat(presStream, &clipformat); + if (FAILED(hres)) + { + IStream_Release(presStream); + return hres; + } - streamInfo.cbSize.u.LowPart -= offset.u.LowPart; + hres = IStream_Read( + presStream, + &header, + sizeof(PresentationDataHeader), + NULL); + if (hres != S_OK) + { + IStream_Release(presStream); + return E_FAIL; + } + + hres = IStream_Seek(presStream, offset_zero, STREAM_SEEK_CUR, ¤t_pos); + + streamInfo.cbSize.QuadPart -= current_pos.QuadPart; + + hmfpict = GlobalAlloc(GMEM_MOVEABLE, sizeof(METAFILEPICT)); + if (!hmfpict) + { + IStream_Release(presStream); + return E_OUTOFMEMORY; + } + mfpict = GlobalLock(hmfpict); /* * Allocate a buffer for the metafile bits. @@ -481,19 +617,237 @@ static HMETAFILE DataCache_ReadPresMetafile( */ if (SUCCEEDED(hres)) { - newMetafile = SetMetaFileBitsEx(streamInfo.cbSize.u.LowPart, metafileBits); + /* FIXME: get this from the stream */ + mfpict->mm = MM_ANISOTROPIC; + mfpict->xExt = header.dwObjectExtentX; + mfpict->yExt = header.dwObjectExtentY; + mfpict->hMF = SetMetaFileBitsEx(streamInfo.cbSize.u.LowPart, metafileBits); + if (!mfpict->hMF) + hres = E_FAIL; } + GlobalUnlock(hmfpict); + if (SUCCEEDED(hres)) + { + This->data_cf = This->fmtetc.cfFormat; + This->stgmedium.tymed = TYMED_MFPICT; + This->stgmedium.u.hMetaFilePict = hmfpict; + } + else + GlobalFree(hmfpict); + /* * Cleanup. */ HeapFree(GetProcessHeap(), 0, metafileBits); IStream_Release(presStream); - if (newMetafile==0) - hres = E_FAIL; + return hres; +} - return newMetafile; +static HRESULT DataCacheEntry_CreateStream(DataCacheEntry *This, + IStorage *storage, IStream **stream) +{ + HRESULT hr; + WCHAR wszName[] = {2,'O','l','e','P','r','e','s', + '0' + (This->stream_number / 100) % 10, + '0' + (This->stream_number / 10) % 10, + '0' + This->stream_number % 10, 0}; + + /* FIXME: cache the created stream in This? */ + hr = IStorage_CreateStream(storage, wszName, + STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE, + 0, 0, stream); + return hr; +} + +static HRESULT DataCacheEntry_Save(DataCacheEntry *This, IStorage *storage, + BOOL same_as_load) +{ + PresentationDataHeader header; + HRESULT hr; + IStream *pres_stream; + void *data = NULL; + + TRACE("stream_number = %d, fmtetc = %s\n", This->stream_number, debugstr_formatetc(&This->fmtetc)); + + hr = DataCacheEntry_CreateStream(This, storage, &pres_stream); + if (FAILED(hr)) + return hr; + + hr = write_clipformat(pres_stream, This->data_cf); + if (FAILED(hr)) + return hr; + + if (This->fmtetc.ptd) + FIXME("ptd not serialized\n"); + header.unknown3 = 4; + header.dvAspect = This->fmtetc.dwAspect; + header.lindex = This->fmtetc.lindex; + header.tymed = This->stgmedium.tymed; + header.unknown7 = 0; + header.dwObjectExtentX = 0; + header.dwObjectExtentY = 0; + header.dwSize = 0; + + /* size the data */ + switch (This->data_cf) + { + case CF_METAFILEPICT: + { + if (This->stgmedium.tymed != TYMED_NULL) + { + const METAFILEPICT *mfpict = GlobalLock(This->stgmedium.u.hMetaFilePict); + if (!mfpict) + { + IStream_Release(pres_stream); + return DV_E_STGMEDIUM; + } + header.dwObjectExtentX = mfpict->xExt; + header.dwObjectExtentY = mfpict->yExt; + header.dwSize = GetMetaFileBitsEx(mfpict->hMF, 0, NULL); + GlobalUnlock(This->stgmedium.u.hMetaFilePict); + } + break; + } + default: + break; + } + + /* + * Write the header. + */ + hr = IStream_Write(pres_stream, &header, sizeof(PresentationDataHeader), + NULL); + if (FAILED(hr)) + { + IStream_Release(pres_stream); + return hr; + } + + /* get the data */ + switch (This->data_cf) + { + case CF_METAFILEPICT: + { + if (This->stgmedium.tymed != TYMED_NULL) + { + const METAFILEPICT *mfpict = GlobalLock(This->stgmedium.u.hMetaFilePict); + if (!mfpict) + { + IStream_Release(pres_stream); + return DV_E_STGMEDIUM; + } + data = HeapAlloc(GetProcessHeap(), 0, header.dwSize); + GetMetaFileBitsEx(mfpict->hMF, header.dwSize, data); + GlobalUnlock(This->stgmedium.u.hMetaFilePict); + } + break; + } + default: + break; + } + + if (data) + hr = IStream_Write(pres_stream, data, header.dwSize, NULL); + + IStream_Release(pres_stream); + return hr; +} + +/* helper for copying STGMEDIUM of type bitmap, MF, EMF or HGLOBAL. +* does no checking of whether src_stgm has a supported tymed, so this should be +* done in the caller */ +static HRESULT copy_stg_medium(CLIPFORMAT cf, STGMEDIUM *dest_stgm, + const STGMEDIUM *src_stgm) +{ + if (src_stgm->tymed == TYMED_MFPICT) + { + const METAFILEPICT *src_mfpict = GlobalLock(src_stgm->u.hMetaFilePict); + METAFILEPICT *dest_mfpict; + + if (!src_mfpict) + return DV_E_STGMEDIUM; + dest_stgm->u.hMetaFilePict = GlobalAlloc(GMEM_MOVEABLE, sizeof(METAFILEPICT)); + dest_mfpict = GlobalLock(dest_stgm->u.hMetaFilePict); + if (!dest_mfpict) + { + GlobalUnlock(src_stgm->u.hMetaFilePict); + return E_OUTOFMEMORY; + } + *dest_mfpict = *src_mfpict; + dest_mfpict->hMF = CopyMetaFileW(src_mfpict->hMF, NULL); + GlobalUnlock(src_stgm->u.hMetaFilePict); + GlobalUnlock(dest_stgm->u.hMetaFilePict); + } + else if (src_stgm->tymed != TYMED_NULL) + { + dest_stgm->u.hGlobal = OleDuplicateData(src_stgm->u.hGlobal, cf, + GMEM_MOVEABLE); + if (!dest_stgm->u.hGlobal) + return E_OUTOFMEMORY; + } + dest_stgm->tymed = src_stgm->tymed; + dest_stgm->pUnkForRelease = src_stgm->pUnkForRelease; + if (dest_stgm->pUnkForRelease) + IUnknown_AddRef(dest_stgm->pUnkForRelease); + return S_OK; +} + +static HRESULT DataCacheEntry_SetData(DataCacheEntry *This, + const FORMATETC *formatetc, + const STGMEDIUM *stgmedium, + BOOL fRelease) +{ + if ((!This->fmtetc.cfFormat && !formatetc->cfFormat) || + (This->fmtetc.tymed == TYMED_NULL && formatetc->tymed == TYMED_NULL) || + stgmedium->tymed == TYMED_NULL) + { + WARN("invalid formatetc\n"); + return DV_E_FORMATETC; + } + + This->dirty = TRUE; + ReleaseStgMedium(&This->stgmedium); + This->data_cf = This->fmtetc.cfFormat ? This->fmtetc.cfFormat : formatetc->cfFormat; + if (fRelease) + { + This->stgmedium = *stgmedium; + return S_OK; + } + else + return copy_stg_medium(This->data_cf, + &This->stgmedium, stgmedium); +} + +static HRESULT DataCacheEntry_GetData(DataCacheEntry *This, + STGMEDIUM *stgmedium) +{ + if (stgmedium->tymed == TYMED_NULL && This->storage) + { + HRESULT hr = DataCacheEntry_LoadData(This); + if (FAILED(hr)) + return hr; + } + if (stgmedium->tymed == TYMED_NULL) + return OLE_E_BLANK; + return copy_stg_medium(This->data_cf, stgmedium, &This->stgmedium); +} + +static inline HRESULT DataCacheEntry_DiscardData(DataCacheEntry *This) +{ + ReleaseStgMedium(&This->stgmedium); + This->data_cf = This->fmtetc.cfFormat; + return S_OK; +} + +static inline void DataCacheEntry_HandsOffStorage(DataCacheEntry *This) +{ + if (This->storage) + { + IStorage_Release(This->storage); + This->storage = NULL; + } } /********************************************************* @@ -669,104 +1023,22 @@ static ULONG WINAPI DataCache_IDataObject_Release( * * Get Data from a source dataobject using format pformatetcIn->cfFormat * See Windows documentation for more details on GetData. - * TODO: Currently only CF_METAFILEPICT is implemented */ static HRESULT WINAPI DataCache_GetData( IDataObject* iface, LPFORMATETC pformatetcIn, STGMEDIUM* pmedium) { - HRESULT hr = 0; - HRESULT hrRet = E_UNEXPECTED; - IPersistStorage *pPersistStorage = 0; - IStorage *pStorage = 0; - IStream *pStream = 0; - OLECHAR name[]={ 2, 'O', 'l', 'e', 'P', 'r', 'e', 's', '0', '0', '0', 0}; - HGLOBAL hGlobalMF = 0; - void *mfBits = 0; - PresentationDataHeader pdh; - METAFILEPICT *mfPict; - HMETAFILE hMetaFile = 0; + DataCache *This = impl_from_IDataObject(iface); + DataCacheEntry *cache_entry; - if (pformatetcIn->cfFormat == CF_METAFILEPICT) - { - /* Get the Persist Storage */ + memset(pmedium, 0, sizeof(*pmedium)); - hr = IDataObject_QueryInterface(iface, &IID_IPersistStorage, (void**)&pPersistStorage); + cache_entry = DataCache_GetEntryForFormatEtc(This, pformatetcIn); + if (!cache_entry) + return OLE_E_BLANK; - if (hr != S_OK) - goto cleanup; - - /* Create a doc file to copy the doc to a storage */ - - hr = StgCreateDocfile(NULL, STGM_CREATE | STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, &pStorage); - - if (hr != S_OK) - goto cleanup; - - /* Save it to storage */ - - hr = OleSave(pPersistStorage, pStorage, FALSE); - - if (hr != S_OK) - goto cleanup; - - /* Open the Presentation data srteam */ - - hr = IStorage_OpenStream(pStorage, name, 0, STGM_CREATE|STGM_SHARE_EXCLUSIVE|STGM_READWRITE, 0, &pStream); - - if (hr != S_OK) - goto cleanup; - - /* Read the presentation header */ - - hr = IStream_Read(pStream, &pdh, sizeof(PresentationDataHeader), NULL); - - if (hr != S_OK) - goto cleanup; - - mfBits = HeapAlloc(GetProcessHeap(), 0, pdh.dwSize); - - /* Read the Metafile bits */ - - hr = IStream_Read(pStream, mfBits, pdh.dwSize, NULL); - - if (hr != S_OK) - goto cleanup; - - /* Create the metafile and place it in the STGMEDIUM structure */ - - hMetaFile = SetMetaFileBitsEx(pdh.dwSize, mfBits); - - hGlobalMF = GlobalAlloc(GMEM_SHARE|GMEM_MOVEABLE, sizeof(METAFILEPICT)); - mfPict = (METAFILEPICT *)GlobalLock(hGlobalMF); - mfPict->hMF = hMetaFile; - - GlobalUnlock(hGlobalMF); - - pmedium->u.hGlobal = hGlobalMF; - pmedium->tymed = TYMED_MFPICT; - hrRet = S_OK; - -cleanup: - - HeapFree(GetProcessHeap(), 0, mfBits); - - if (pStream) - IStream_Release(pStream); - - if (pStorage) - IStorage_Release(pStorage); - - if (pPersistStorage) - IPersistStorage_Release(pPersistStorage); - - return hrRet; - } - - /* TODO: Other formats are not implemented */ - - return E_NOTIMPL; + return DataCacheEntry_GetData(cache_entry, pmedium); } static HRESULT WINAPI DataCache_GetDataHere( @@ -953,24 +1225,51 @@ static HRESULT WINAPI DataCache_GetClassID( IPersistStorage* iface, CLSID* pClassID) { + DataCache *This = impl_from_IPersistStorage(iface); + DataCacheEntry *cache_entry; + TRACE("(%p, %p)\n", iface, pClassID); - return E_NOTIMPL; + + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + { + if (cache_entry->storage != NULL) + { + STATSTG statstg; + HRESULT hr = IStorage_Stat(cache_entry->storage, &statstg, STATFLAG_NONAME); + if (SUCCEEDED(hr)) + { + memcpy(pClassID, &statstg.clsid, sizeof(*pClassID)); + return S_OK; + } + } + } + + memcpy(pClassID, &CLSID_NULL, sizeof(*pClassID)); + + return S_OK; } /************************************************************************ * DataCache_IsDirty (IPersistStorage) * - * Until we actully connect to a running object and retrieve new - * information to it, we never get dirty. - * * See Windows documentation for more details on IPersistStorage methods. */ static HRESULT WINAPI DataCache_IsDirty( IPersistStorage* iface) { - TRACE("(%p)\n", iface); + DataCache *This = impl_from_IPersistStorage(iface); + DataCacheEntry *cache_entry; - return S_FALSE; + TRACE("(%p)\n", iface); + + if (This->dirty) + return S_OK; + + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + if (cache_entry->dirty) + return S_OK; + + return S_FALSE; } /************************************************************************ @@ -985,9 +1284,19 @@ static HRESULT WINAPI DataCache_InitNew( IPersistStorage* iface, IStorage* pStg) { - TRACE("(%p, %p)\n", iface, pStg); + DataCache *This = impl_from_IPersistStorage(iface); - return IPersistStorage_Load(iface, pStg); + TRACE("(%p, %p)\n", iface, pStg); + + if (This->presentationStorage != NULL) + IStorage_Release(This->presentationStorage); + + This->presentationStorage = pStg; + + IStorage_AddRef(This->presentationStorage); + This->dirty = TRUE; + + return S_OK; } /************************************************************************ @@ -1004,30 +1313,90 @@ static HRESULT WINAPI DataCache_Load( IPersistStorage* iface, IStorage* pStg) { - DataCache *this = impl_from_IPersistStorage(iface); + DataCache *This = impl_from_IPersistStorage(iface); + STATSTG elem; + IEnumSTATSTG *pEnum; + HRESULT hr; - TRACE("(%p, %p)\n", iface, pStg); + TRACE("(%p, %p)\n", iface, pStg); - if (this->presentationStorage != NULL) - { - IStorage_Release(this->presentationStorage); - } + if (This->presentationStorage != NULL) + IStorage_Release(This->presentationStorage); - this->presentationStorage = pStg; + This->presentationStorage = pStg; - if (this->presentationStorage != NULL) - { - IStorage_AddRef(this->presentationStorage); - } - return S_OK; + hr = IStorage_EnumElements(pStg, 0, NULL, 0, &pEnum); + if (FAILED(hr)) return hr; + + while ((hr = IEnumSTATSTG_Next(pEnum, 1, &elem, NULL)) == S_OK) + { + if (DataCache_IsPresentationStream(&elem)) + { + IStream *pStm; + + hr = IStorage_OpenStream(This->presentationStorage, elem.pwcsName, + NULL, STGM_READ | STGM_SHARE_EXCLUSIVE, 0, + &pStm); + if (SUCCEEDED(hr)) + { + PresentationDataHeader header; + ULONG actual_read; + CLIPFORMAT clipformat; + + hr = read_clipformat(pStm, &clipformat); + + if (hr == S_OK) + hr = IStream_Read(pStm, &header, sizeof(header), + &actual_read); + + /* can't use SUCCEEDED(hr): S_FALSE counts as an error */ + if (hr == S_OK && actual_read == sizeof(header)) + { + DataCacheEntry *cache_entry; + FORMATETC fmtetc; + + fmtetc.cfFormat = clipformat; + fmtetc.ptd = NULL; /* FIXME */ + fmtetc.dwAspect = header.dvAspect; + fmtetc.lindex = header.lindex; + fmtetc.tymed = header.tymed; + + TRACE("loading entry with formatetc: %s\n", debugstr_formatetc(&fmtetc)); + + cache_entry = DataCache_GetEntryForFormatEtc(This, &fmtetc); + if (!cache_entry) + hr = DataCache_CreateEntry(This, &fmtetc, &cache_entry); + if (SUCCEEDED(hr)) + { + DataCacheEntry_DiscardData(cache_entry); + if (cache_entry->storage) IStorage_Release(cache_entry->storage); + cache_entry->storage = pStg; + IStorage_AddRef(pStg); + cache_entry->dirty = FALSE; + } + } + + IStream_Release(pStm); + } + } + + CoTaskMemFree(elem.pwcsName); + } + + This->dirty = FALSE; + + IEnumSTATSTG_Release(pEnum); + + IStorage_AddRef(This->presentationStorage); + return S_OK; } /************************************************************************ * DataCache_Save (IPersistStorage) * - * Until we actully connect to a running object and retrieve new + * Until we actually connect to a running object and retrieve new * information to it, we never have to save anything. However, it is - * our responsability to copy the information when saving to a new + * our responsibility to copy the information when saving to a new * storage. * * See Windows documentation for more details on IPersistStorage methods. @@ -1037,28 +1406,64 @@ static HRESULT WINAPI DataCache_Save( IStorage* pStg, BOOL fSameAsLoad) { - DataCache *this = impl_from_IPersistStorage(iface); + DataCache *This = impl_from_IPersistStorage(iface); + DataCacheEntry *cache_entry; + BOOL dirty = FALSE; + HRESULT hr = S_OK; + unsigned short stream_number = 0; - TRACE("(%p, %p, %d)\n", iface, pStg, fSameAsLoad); + TRACE("(%p, %p, %d)\n", iface, pStg, fSameAsLoad); - if ( (!fSameAsLoad) && - (this->presentationStorage!=NULL) ) - { - return IStorage_CopyTo(this->presentationStorage, - 0, - NULL, - NULL, - pStg); - } + dirty = This->dirty; + if (!dirty) + { + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + { + dirty = cache_entry->dirty; + if (dirty) + break; + } + } - return S_OK; + /* this is a shortcut if nothing changed */ + if (!dirty && !fSameAsLoad && This->presentationStorage) + { + return IStorage_CopyTo(This->presentationStorage, 0, NULL, NULL, pStg); + } + + /* assign stream numbers to the cache entries */ + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + { + if (cache_entry->stream_number != stream_number) + { + cache_entry->dirty = TRUE; /* needs to be written out again */ + cache_entry->stream_number = stream_number; + } + stream_number++; + } + + /* write out the cache entries */ + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + { + if (!fSameAsLoad || cache_entry->dirty) + { + hr = DataCacheEntry_Save(cache_entry, pStg, fSameAsLoad); + if (FAILED(hr)) + break; + + cache_entry->dirty = FALSE; + } + } + + This->dirty = FALSE; + return hr; } /************************************************************************ * DataCache_SaveCompleted (IPersistStorage) * * This method is called to tell the cache to release the storage - * pointer it's currentlu holding. + * pointer it's currently holding. * * See Windows documentation for more details on IPersistStorage methods. */ @@ -1090,7 +1495,7 @@ static HRESULT WINAPI DataCache_SaveCompleted( * DataCache_HandsOffStorage (IPersistStorage) * * This method is called to tell the cache to release the storage - * pointer it's currentlu holding. + * pointer it's currently holding. * * See Windows documentation for more details on IPersistStorage methods. */ @@ -1098,6 +1503,7 @@ static HRESULT WINAPI DataCache_HandsOffStorage( IPersistStorage* iface) { DataCache *this = impl_from_IPersistStorage(iface); + DataCacheEntry *cache_entry; TRACE("(%p)\n", iface); @@ -1107,6 +1513,9 @@ static HRESULT WINAPI DataCache_HandsOffStorage( this->presentationStorage = NULL; } + LIST_FOR_EACH_ENTRY(cache_entry, &this->cache_list, DataCacheEntry, entry) + DataCacheEntry_HandsOffStorage(cache_entry); + return S_OK; } @@ -1177,13 +1586,11 @@ static HRESULT WINAPI DataCache_Draw( BOOL (CALLBACK *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) { - PresentationDataHeader presData; - HMETAFILE presMetafile = 0; + DataCache *This = impl_from_IViewObject2(iface); HRESULT hres; + DataCacheEntry *cache_entry; - DataCache *this = impl_from_IViewObject2(iface); - - TRACE("(%p, %lx, %ld, %p, %p, %p, %p, %p, %p, %lx)\n", + TRACE("(%p, %x, %d, %p, %p, %p, %p, %p, %p, %lx)\n", iface, dwDrawAspect, lindex, @@ -1201,77 +1608,89 @@ static HRESULT WINAPI DataCache_Draw( if (lprcBounds==NULL) return E_INVALIDARG; - /* - * First, we need to retrieve the dimensions of the - * image in the metafile. - */ - hres = DataCache_ReadPresentationData(this, - dwDrawAspect, - &presData); - - if (FAILED(hres)) - return hres; - - /* - * Then, we can extract the metafile itself from the cached - * data. - * - * FIXME Unless it isn't a metafile. I think it could be any CF_XXX type, - * particularly CF_DIB. - */ - presMetafile = DataCache_ReadPresMetafile(this, - dwDrawAspect); - - /* - * If we have a metafile, just draw baby... - * We have to be careful not to modify the state of the - * DC. - */ - if (presMetafile!=0) + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) { - INT prevMapMode = SetMapMode(hdcDraw, MM_ANISOTROPIC); - SIZE oldWindowExt; - SIZE oldViewportExt; - POINT oldViewportOrg; + /* FIXME: compare ptd too */ + if ((cache_entry->fmtetc.dwAspect != dwDrawAspect) || + (cache_entry->fmtetc.lindex != lindex)) + continue; - SetWindowExtEx(hdcDraw, - presData.dwObjectExtentX, - presData.dwObjectExtentY, - &oldWindowExt); + /* if the data hasn't been loaded yet, do it now */ + if ((cache_entry->stgmedium.tymed == TYMED_NULL) && cache_entry->storage) + { + hres = DataCacheEntry_LoadData(cache_entry); + if (FAILED(hres)) + continue; + } - SetViewportExtEx(hdcDraw, - lprcBounds->right - lprcBounds->left, - lprcBounds->bottom - lprcBounds->top, - &oldViewportExt); + /* no data */ + if (cache_entry->stgmedium.tymed == TYMED_NULL) + continue; - SetViewportOrgEx(hdcDraw, - lprcBounds->left, - lprcBounds->top, - &oldViewportOrg); + switch (cache_entry->data_cf) + { + case CF_METAFILEPICT: + { + /* + * We have to be careful not to modify the state of the + * DC. + */ + INT prevMapMode; + SIZE oldWindowExt; + SIZE oldViewportExt; + POINT oldViewportOrg; + METAFILEPICT *mfpict; - PlayMetaFile(hdcDraw, presMetafile); + if ((cache_entry->stgmedium.tymed != TYMED_MFPICT) || + !((mfpict = GlobalLock(cache_entry->stgmedium.u.hMetaFilePict)))) + continue; - SetWindowExtEx(hdcDraw, - oldWindowExt.cx, - oldWindowExt.cy, - NULL); + prevMapMode = SetMapMode(hdcDraw, mfpict->mm); - SetViewportExtEx(hdcDraw, - oldViewportExt.cx, - oldViewportExt.cy, - NULL); + SetWindowExtEx(hdcDraw, + mfpict->xExt, + mfpict->yExt, + &oldWindowExt); - SetViewportOrgEx(hdcDraw, - oldViewportOrg.x, - oldViewportOrg.y, - NULL); + SetViewportExtEx(hdcDraw, + lprcBounds->right - lprcBounds->left, + lprcBounds->bottom - lprcBounds->top, + &oldViewportExt); - SetMapMode(hdcDraw, prevMapMode); + SetViewportOrgEx(hdcDraw, + lprcBounds->left, + lprcBounds->top, + &oldViewportOrg); - DeleteMetaFile(presMetafile); + PlayMetaFile(hdcDraw, mfpict->hMF); + + SetWindowExtEx(hdcDraw, + oldWindowExt.cx, + oldWindowExt.cy, + NULL); + + SetViewportExtEx(hdcDraw, + oldViewportExt.cx, + oldViewportExt.cy, + NULL); + + SetViewportOrgEx(hdcDraw, + oldViewportOrg.x, + oldViewportOrg.y, + NULL); + + SetMapMode(hdcDraw, prevMapMode); + + GlobalUnlock(cache_entry->stgmedium.u.hMetaFilePict); + + return S_OK; + } + } } - return S_OK; + WARN("no data could be found to be drawn\n"); + + return OLE_E_BLANK; } static HRESULT WINAPI DataCache_GetColorSet( @@ -1322,7 +1741,7 @@ static HRESULT WINAPI DataCache_SetAdvise( { DataCache *this = impl_from_IViewObject2(iface); - TRACE("(%p, %lx, %lx, %p)\n", iface, aspects, advf, pAdvSink); + TRACE("(%p, %x, %x, %p)\n", iface, aspects, advf, pAdvSink); /* * A call to this function removes the previous sink @@ -1353,9 +1772,7 @@ static HRESULT WINAPI DataCache_SetAdvise( */ if (advf & ADVF_PRIMEFIRST) { - DataCache_FireOnViewChange(this, - DVASPECT_CONTENT, - -1); + DataCache_FireOnViewChange(this, aspects, -1); } return S_OK; @@ -1414,12 +1831,11 @@ static HRESULT WINAPI DataCache_GetExtent( DVTARGETDEVICE* ptd, LPSIZEL lpsizel) { - PresentationDataHeader presData; + DataCache *This = impl_from_IViewObject2(iface); HRESULT hres = E_FAIL; + DataCacheEntry *cache_entry; - DataCache *this = impl_from_IViewObject2(iface); - - TRACE("(%p, %lx, %ld, %p, %p)\n", + TRACE("(%p, %x, %d, %p, %p)\n", iface, dwDrawAspect, lindex, ptd, lpsizel); /* @@ -1438,7 +1854,7 @@ static HRESULT WINAPI DataCache_GetExtent( * This flag should be set to -1. */ if (lindex!=-1) - FIXME("Unimplemented flag lindex = %ld\n", lindex); + FIXME("Unimplemented flag lindex = %d\n", lindex); /* * Right now, we support only the callback from @@ -1447,27 +1863,52 @@ static HRESULT WINAPI DataCache_GetExtent( if (ptd!=NULL) FIXME("Unimplemented ptd = %p\n", ptd); - /* - * Get the presentation information from the - * cache. - */ - hres = DataCache_ReadPresentationData(this, - dwDrawAspect, - &presData); - - if (SUCCEEDED(hres)) + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) { - lpsizel->cx = presData.dwObjectExtentX; - lpsizel->cy = presData.dwObjectExtentY; + /* FIXME: compare ptd too */ + if ((cache_entry->fmtetc.dwAspect != dwDrawAspect) || + (cache_entry->fmtetc.lindex != lindex)) + continue; + + /* if the data hasn't been loaded yet, do it now */ + if ((cache_entry->stgmedium.tymed == TYMED_NULL) && cache_entry->storage) + { + hres = DataCacheEntry_LoadData(cache_entry); + if (FAILED(hres)) + continue; + } + + /* no data */ + if (cache_entry->stgmedium.tymed == TYMED_NULL) + continue; + + + switch (cache_entry->data_cf) + { + case CF_METAFILEPICT: + { + METAFILEPICT *mfpict; + + if ((cache_entry->stgmedium.tymed != TYMED_MFPICT) || + !((mfpict = GlobalLock(cache_entry->stgmedium.u.hMetaFilePict)))) + continue; + + lpsizel->cx = mfpict->xExt; + lpsizel->cy = mfpict->yExt; + + GlobalUnlock(cache_entry->stgmedium.u.hMetaFilePict); + + return S_OK; + } + } } + WARN("no data could be found to get the extents from\n"); + /* * This method returns OLE_E_BLANK when it fails. */ - if (FAILED(hres)) - hres = OLE_E_BLANK; - - return hres; + return OLE_E_BLANK; } @@ -1523,16 +1964,50 @@ static HRESULT WINAPI DataCache_Cache( DWORD advf, DWORD* pdwConnection) { - FIXME("stub\n"); - return E_NOTIMPL; + DataCache *This = impl_from_IOleCache2(iface); + DataCacheEntry *cache_entry; + HRESULT hr; + + TRACE("(%p, 0x%x, %p)\n", pformatetc, advf, pdwConnection); + TRACE("pformatetc = %s\n", debugstr_formatetc(pformatetc)); + + *pdwConnection = 0; + + cache_entry = DataCache_GetEntryForFormatEtc(This, pformatetc); + if (cache_entry) + { + TRACE("found an existing cache entry\n"); + *pdwConnection = cache_entry->id; + return CACHE_S_SAMECACHE; + } + + hr = DataCache_CreateEntry(This, pformatetc, &cache_entry); + + if (SUCCEEDED(hr)) + *pdwConnection = cache_entry->id; + + return hr; } static HRESULT WINAPI DataCache_Uncache( IOleCache2* iface, DWORD dwConnection) { - FIXME("stub\n"); - return E_NOTIMPL; + DataCache *This = impl_from_IOleCache2(iface); + DataCacheEntry *cache_entry; + + TRACE("(%d)\n", dwConnection); + + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + if (cache_entry->id == dwConnection) + { + DataCacheEntry_Destroy(cache_entry); + return S_OK; + } + + WARN("no connection found for %d\n", dwConnection); + + return OLE_E_NOCONNECTION; } static HRESULT WINAPI DataCache_EnumCache( @@ -1557,8 +2032,27 @@ static HRESULT WINAPI DataCache_IOleCache2_SetData( STGMEDIUM* pmedium, BOOL fRelease) { - FIXME("stub\n"); - return E_NOTIMPL; + DataCache *This = impl_from_IOleCache2(iface); + DataCacheEntry *cache_entry; + HRESULT hr; + + TRACE("(%p, %p, %s)\n", pformatetc, pmedium, fRelease ? "TRUE" : "FALSE"); + TRACE("formatetc = %s\n", debugstr_formatetc(pformatetc)); + + cache_entry = DataCache_GetEntryForFormatEtc(This, pformatetc); + if (cache_entry) + { + hr = DataCacheEntry_SetData(cache_entry, pformatetc, pmedium, fRelease); + + if (SUCCEEDED(hr)) + DataCache_FireOnViewChange(This, cache_entry->fmtetc.dwAspect, + cache_entry->fmtetc.lindex); + + return hr; + } + WARN("cache entry not found\n"); + + return OLE_E_BLANK; } static HRESULT WINAPI DataCache_UpdateCache( @@ -1567,7 +2061,7 @@ static HRESULT WINAPI DataCache_UpdateCache( DWORD grfUpdf, LPVOID pReserved) { - FIXME("stub\n"); + FIXME("(%p, 0x%x, %p): stub\n", pDataObject, grfUpdf, pReserved); return E_NOTIMPL; } @@ -1575,8 +2069,24 @@ static HRESULT WINAPI DataCache_DiscardCache( IOleCache2* iface, DWORD dwDiscardOptions) { - FIXME("stub\n"); - return E_NOTIMPL; + DataCache *This = impl_from_IOleCache2(iface); + DataCacheEntry *cache_entry; + HRESULT hr = S_OK; + + TRACE("(%d)\n", dwDiscardOptions); + + if (dwDiscardOptions == DISCARDCACHE_SAVEIFDIRTY) + hr = DataCache_Save((IPersistStorage *)&This->lpvtblIPersistStorage, + This->presentationStorage, TRUE); + + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + { + hr = DataCacheEntry_DiscardData(cache_entry); + if (FAILED(hr)) + break; + } + + return hr; } @@ -1720,6 +2230,24 @@ static const IOleCacheControlVtbl DataCache_IOleCacheControl_VTable = /****************************************************************************** * CreateDataCache [OLE32.@] + * + * Creates a data cache to allow an object to render one or more of its views, + * whether running or not. + * + * PARAMS + * pUnkOuter [I] Outer unknown for the object. + * rclsid [I] + * riid [I] IID of interface to return. + * ppvObj [O] Address where the data cache object will be stored on return. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * NOTES + * The following interfaces are supported by the returned data cache object: + * IOleCache, IOleCache2, IOleCacheControl, IPersistStorae, IDataObject, + * IViewObject and IViewObject2. */ HRESULT WINAPI CreateDataCache( LPUNKNOWN pUnkOuter, @@ -1809,7 +2337,7 @@ static DataCache* DataCache_Construct( /* * Initialize the outer unknown * We don't keep a reference on the outer unknown since, the way - * aggregation works, our lifetime is at least as large as it's + * aggregation works, our lifetime is at least as large as its * lifetime. */ if (pUnkOuter==NULL) @@ -1820,10 +2348,13 @@ static DataCache* DataCache_Construct( /* * Initialize the other members of the structure. */ - newObject->presentationStorage = NULL; newObject->sinkAspects = 0; newObject->sinkAdviseFlag = 0; newObject->sinkInterface = 0; + newObject->presentationStorage = NULL; + list_init(&newObject->cache_list); + newObject->last_cache_id = 1; + newObject->dirty = FALSE; return newObject; } diff --git a/reactos/dll/win32/ole32/dcom.h b/reactos/dll/win32/ole32/dcom.h deleted file mode 100644 index 3ea35faaf13..00000000000 --- a/reactos/dll/win32/ole32/dcom.h +++ /dev/null @@ -1,515 +0,0 @@ -/*** Autogenerated by WIDL 0.1 from dcom.idl - Do not edit ***/ -#include -#include - -#ifndef __WIDL_DCOM_H -#define __WIDL_DCOM_H -#ifdef __cplusplus -extern "C" { -#endif -#include -typedef MIDL_uhyper ID; - -typedef ID MID; - -typedef ID OXID; - -typedef ID OID; - -typedef ID SETID; - -typedef GUID IPID; - -typedef GUID CID; - -typedef REFGUID REFIPID; - -#define COM_MINOR_VERSION_1 (1) - -#define COM_MINOR_VERSION_2 (2) - -#define COM_MAJOR_VERSION (5) - -#define COM_MINOR_VERSION (3) - -typedef struct tagCOMVERSION { - unsigned short MajorVersion; - unsigned short MinorVersion; -} COMVERSION; - -#define ORPCF_NULL (0) - -#define ORPCF_LOCAL (1) - -#define ORPCF_RESERVED1 (2) - -#define ORPCF_RESERVED2 (4) - -#define ORPCF_RESERVED3 (8) - -#define ORPCF_RESERVED4 (16) - -typedef struct tagORPC_EXTENT { - GUID id; - unsigned long size; - byte data[1]; -} ORPC_EXTENT; - -typedef struct tagORPC_EXTENT_ARRAY { - unsigned long size; - unsigned long reserved; - ORPC_EXTENT **extent; -} ORPC_EXTENT_ARRAY; - -typedef struct tagORPCTHIS { - COMVERSION version; - unsigned long flags; - unsigned long reserved1; - CID cid; - ORPC_EXTENT_ARRAY *extensions; -} ORPCTHIS; - -typedef struct tagORPCTHAT { - unsigned long flags; - ORPC_EXTENT_ARRAY *extensions; -} ORPCTHAT; - -#define NCADG_IP_UDP (0x8) - -#define NCACN_IP_TCP (0x7) - -#define NCADG_IPX (0xe) - -#define NCACN_SPX (0xc) - -#define NCACN_NB_NB (0x12) - -#define NCACN_NB_IPX (0xd) - -#define NCACN_DNET_NSP (0x4) - -#define NCACN_HTTP (0x1f) - -typedef struct tagSTRINGBINDING { - unsigned short wTowerId; - unsigned short aNetworkAddr[1]; -} STRINGBINDING; - -#define COM_C_AUTHZ_NONE (0xffff) - -typedef struct tagSECURITYBINDING { - unsigned short wAuthnSvc; - unsigned short wAuthzSvc; - unsigned short aPrincName[1]; -} SECURITYBINDING; - -typedef struct tagDUALSTRINGARRAY { - unsigned short wNumEntries; - unsigned short wSecurityOffset; - unsigned short aStringArray[1]; -} DUALSTRINGARRAY; - -#define OBJREF_SIGNATURE (0x574f454d) - -#define OBJREF_STANDARD (0x1) - -#define OBJREF_HANDLER (0x2) - -#define OBJREF_CUSTOM (0x4) - -#define SORF_OXRES1 (0x1) - -#define SORF_OXRES2 (0x20) - -#define SORF_OXRES3 (0x40) - -#define SORF_OXRES4 (0x80) - -#define SORF_OXRES5 (0x100) - -#define SORF_OXRES6 (0x200) - -#define SORF_OXRES7 (0x400) - -#define SORF_OXRES8 (0x800) - -#define SORF_NULL (0x0) - -#define SORF_NOPING (0x1000) - -typedef struct tagSTDOBJREF { - unsigned long flags; - unsigned long cPublicRefs; - OXID oxid; - OID oid; - IPID ipid; -} STDOBJREF; - -typedef struct tagOBJREF { - unsigned long signature; - unsigned long flags; - GUID iid; - union { - struct OR_STANDARD { - STDOBJREF std; - DUALSTRINGARRAY saResAddr; - } u_standard; - struct OR_HANDLER { - STDOBJREF std; - CLSID clsid; - DUALSTRINGARRAY saResAddr; - } u_handler; - struct OR_CUSTOM { - CLSID clsid; - unsigned long cbExtension; - unsigned long size; - byte *pData; - } u_custom; - } u_objref; -} OBJREF; - -typedef struct tagMInterfacePointer { - ULONG ulCntData; - BYTE abData[1]; -} MInterfacePointer; - -typedef MInterfacePointer *PMInterfacePointer; - -#ifndef __IRemUnknown_FWD_DEFINED__ -#define __IRemUnknown_FWD_DEFINED__ -typedef struct IRemUnknown IRemUnknown; -#endif - -typedef IRemUnknown *LPREMUNKNOWN; - -typedef struct tagREMQIRESULT { - HRESULT hResult; - STDOBJREF std; -} REMQIRESULT; - -typedef struct tagREMINTERFACEREF { - IPID ipid; - unsigned long cPublicRefs; - unsigned long cPrivateRefs; -} REMINTERFACEREF; - -/***************************************************************************** - * IRemUnknown interface - */ -#ifndef __IRemUnknown_INTERFACE_DEFINED__ -#define __IRemUnknown_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IRemUnknown, 0x00000131, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IRemUnknown : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE RemQueryInterface( - REFIPID ripid, - unsigned long cRefs, - unsigned short cIids, - IID* iids, - REMQIRESULT** ppQIResults) = 0; - - virtual HRESULT STDMETHODCALLTYPE RemAddRef( - unsigned short cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs, - HRESULT* pResults) = 0; - - virtual HRESULT STDMETHODCALLTYPE RemRelease( - unsigned short cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs) = 0; - -}; -#else -typedef struct IRemUnknownVtbl IRemUnknownVtbl; -struct IRemUnknown { - const IRemUnknownVtbl* lpVtbl; -}; -struct IRemUnknownVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IRemUnknown* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IRemUnknown* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IRemUnknown* This); - - /*** IRemUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *RemQueryInterface)( - IRemUnknown* This, - REFIPID ripid, - unsigned long cRefs, - unsigned short cIids, - IID* iids, - REMQIRESULT** ppQIResults); - - HRESULT (STDMETHODCALLTYPE *RemAddRef)( - IRemUnknown* This, - unsigned short cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs, - HRESULT* pResults); - - HRESULT (STDMETHODCALLTYPE *RemRelease)( - IRemUnknown* This, - unsigned short cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IRemUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IRemUnknown_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IRemUnknown_Release(p) (p)->lpVtbl->Release(p) -/*** IRemUnknown methods ***/ -#define IRemUnknown_RemQueryInterface(p,a,b,c,d,e) (p)->lpVtbl->RemQueryInterface(p,a,b,c,d,e) -#define IRemUnknown_RemAddRef(p,a,b,c) (p)->lpVtbl->RemAddRef(p,a,b,c) -#define IRemUnknown_RemRelease(p,a,b) (p)->lpVtbl->RemRelease(p,a,b) -#endif - -#endif - -#define IRemUnknown_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IRemUnknown methods ***/ \ - STDMETHOD_(HRESULT,RemQueryInterface)(THIS_ REFIPID ripid, unsigned long cRefs, unsigned short cIids, IID* iids, REMQIRESULT** ppQIResults) PURE; \ - STDMETHOD_(HRESULT,RemAddRef)(THIS_ unsigned short cInterfaceRefs, REMINTERFACEREF* InterfaceRefs, HRESULT* pResults) PURE; \ - STDMETHOD_(HRESULT,RemRelease)(THIS_ unsigned short cInterfaceRefs, REMINTERFACEREF* InterfaceRefs) PURE; - -HRESULT CALLBACK IRemUnknown_RemQueryInterface_Proxy( - IRemUnknown* This, - REFIPID ripid, - unsigned long cRefs, - unsigned short cIids, - IID* iids, - REMQIRESULT** ppQIResults); -void __RPC_STUB IRemUnknown_RemQueryInterface_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IRemUnknown_RemAddRef_Proxy( - IRemUnknown* This, - unsigned short cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs, - HRESULT* pResults); -void __RPC_STUB IRemUnknown_RemAddRef_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IRemUnknown_RemRelease_Proxy( - IRemUnknown* This, - unsigned short cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs); -void __RPC_STUB IRemUnknown_RemRelease_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IRemUnknown_INTERFACE_DEFINED__ */ - -#ifndef __IRemUnknown2_FWD_DEFINED__ -#define __IRemUnknown2_FWD_DEFINED__ -typedef struct IRemUnknown2 IRemUnknown2; -#endif - -typedef IRemUnknown2 *LPREMUNKNOWN2; - -/***************************************************************************** - * IRemUnknown2 interface - */ -#ifndef __IRemUnknown2_INTERFACE_DEFINED__ -#define __IRemUnknown2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IRemUnknown2, 0x00000142, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IRemUnknown2 : public IRemUnknown -{ - virtual HRESULT STDMETHODCALLTYPE RemQueryInterface2( - REFIPID ripid, - unsigned short cIids, - IID* iids, - HRESULT* phr, - MInterfacePointer** ppMIF) = 0; - -}; -#else -typedef struct IRemUnknown2Vtbl IRemUnknown2Vtbl; -struct IRemUnknown2 { - const IRemUnknown2Vtbl* lpVtbl; -}; -struct IRemUnknown2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IRemUnknown2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IRemUnknown2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IRemUnknown2* This); - - /*** IRemUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *RemQueryInterface)( - IRemUnknown2* This, - REFIPID ripid, - unsigned long cRefs, - unsigned short cIids, - IID* iids, - REMQIRESULT** ppQIResults); - - HRESULT (STDMETHODCALLTYPE *RemAddRef)( - IRemUnknown2* This, - unsigned short cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs, - HRESULT* pResults); - - HRESULT (STDMETHODCALLTYPE *RemRelease)( - IRemUnknown2* This, - unsigned short cInterfaceRefs, - REMINTERFACEREF* InterfaceRefs); - - /*** IRemUnknown2 methods ***/ - HRESULT (STDMETHODCALLTYPE *RemQueryInterface2)( - IRemUnknown2* This, - REFIPID ripid, - unsigned short cIids, - IID* iids, - HRESULT* phr, - MInterfacePointer** ppMIF); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IRemUnknown2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IRemUnknown2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IRemUnknown2_Release(p) (p)->lpVtbl->Release(p) -/*** IRemUnknown methods ***/ -#define IRemUnknown2_RemQueryInterface(p,a,b,c,d,e) (p)->lpVtbl->RemQueryInterface(p,a,b,c,d,e) -#define IRemUnknown2_RemAddRef(p,a,b,c) (p)->lpVtbl->RemAddRef(p,a,b,c) -#define IRemUnknown2_RemRelease(p,a,b) (p)->lpVtbl->RemRelease(p,a,b) -/*** IRemUnknown2 methods ***/ -#define IRemUnknown2_RemQueryInterface2(p,a,b,c,d,e) (p)->lpVtbl->RemQueryInterface2(p,a,b,c,d,e) -#endif - -#endif - -#define IRemUnknown2_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IRemUnknown methods ***/ \ - STDMETHOD_(HRESULT,RemQueryInterface)(THIS_ REFIPID ripid, unsigned long cRefs, unsigned short cIids, IID* iids, REMQIRESULT** ppQIResults) PURE; \ - STDMETHOD_(HRESULT,RemAddRef)(THIS_ unsigned short cInterfaceRefs, REMINTERFACEREF* InterfaceRefs, HRESULT* pResults) PURE; \ - STDMETHOD_(HRESULT,RemRelease)(THIS_ unsigned short cInterfaceRefs, REMINTERFACEREF* InterfaceRefs) PURE; \ - /*** IRemUnknown2 methods ***/ \ - STDMETHOD_(HRESULT,RemQueryInterface2)(THIS_ REFIPID ripid, unsigned short cIids, IID* iids, HRESULT* phr, MInterfacePointer** ppMIF) PURE; - -HRESULT CALLBACK IRemUnknown2_RemQueryInterface2_Proxy( - IRemUnknown2* This, - REFIPID ripid, - unsigned short cIids, - IID* iids, - HRESULT* phr, - MInterfacePointer** ppMIF); -void __RPC_STUB IRemUnknown2_RemQueryInterface2_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IRemUnknown2_INTERFACE_DEFINED__ */ - -#if 0 -/***************************************************************************** - * IOXIDResolver interface (v0.0) - */ -DEFINE_GUID(IID_IOXIDResolver, 0x99fcfec4, 0x5260, 0x101b, 0xbb,0xcb, 0x00,0xaa,0x00,0x21,0x34,0x7a); -extern RPC_IF_HANDLE IOXIDResolver_v0_0_c_ifspec; -extern RPC_IF_HANDLE IOXIDResolver_v0_0_s_ifspec; -error_status_t ResolveOxid( - handle_t hRpc, - OXID* pOxid, - unsigned short cRequestedProtseqs, - unsigned short arRequestedProtseqs[], - DUALSTRINGARRAY** ppdsaOxidBindings, - IPID* pipidRemUnknown, - DWORD* pAuthnHint); -error_status_t SimplePing( - handle_t hRpc, - SETID* pSetId); -error_status_t ComplexPing( - handle_t hRpc, - SETID* pSetId, - unsigned short SequenceNum, - unsigned short cAddToSet, - unsigned short cDelFromSet, - OID AddToSet[], - OID DelFromSet[], - unsigned short* pPingBackoffFactor); -error_status_t ServerAlive( - handle_t hRpc); -error_status_t ResolveOxid2( - handle_t hRpc, - OXID* pOxid, - unsigned short cRequestedProtseqs, - unsigned short arRequestedProtseqs[], - DUALSTRINGARRAY** ppdsaOxidBindings, - IPID* pipidRemUnknown, - DWORD* pAuthnHint, - COMVERSION* pComVersion); - -#define MODE_GET_CLASS_OBJECT (0xffffffff) - -/***************************************************************************** - * IRemoteActivation interface (v0.0) - */ -DEFINE_GUID(IID_IRemoteActivation, 0x4d9f4ab8, 0x7d1c, 0x11cf, 0x86,0x1e, 0x00,0x20,0xaf,0x6e,0x7c,0x57); -extern RPC_IF_HANDLE IRemoteActivation_v0_0_c_ifspec; -extern RPC_IF_HANDLE IRemoteActivation_v0_0_s_ifspec; -HRESULT RemoteActivation( - handle_t hRpc, - ORPCTHIS* ORPCthis, - ORPCTHAT* ORPCthat, - GUID* Clsid, - WCHAR* pwszObjectName, - MInterfacePointer* pObjectStorage, - DWORD ClientImpLevel, - DWORD Mode, - DWORD Interfaces, - IID* pIIDs, - unsigned short cRequestedProtseqs, - unsigned short RequestedProtseqs[], - OXID* pOxid, - DUALSTRINGARRAY** ppdsaOxidBindings, - IPID* pipidRemUnknown, - DWORD* pAuthnHint, - COMVERSION* pServerVersion, - HRESULT* phr, - MInterfacePointer** ppInterfaceData, - HRESULT* pResults); - -#endif -#ifdef __cplusplus -} -#endif -#endif /* __WIDL_DCOM_H */ diff --git a/reactos/dll/win32/ole32/dcom.idl b/reactos/dll/win32/ole32/dcom.idl index 7d95f3704c4..6e5a454dc77 100644 --- a/reactos/dll/win32/ole32/dcom.idl +++ b/reactos/dll/win32/ole32/dcom.idl @@ -13,7 +13,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ /* see http://www.microsoft.com/msj/0398/dcom.htm */ @@ -108,6 +108,14 @@ interface ObjectRpcBaseTypes [size_is(wNumEntries)] unsigned short aStringArray[]; } DUALSTRINGARRAY; + typedef struct tagOXID_INFO { + DWORD dwTid; + DWORD dwPid; + IPID ipidRemUnknown; + DWORD dwAuthnHint; + DUALSTRINGARRAY *psa; + } OXID_INFO; + const unsigned long OBJREF_SIGNATURE = 0x574f454d; /* "MEOW" */ const unsigned long OBJREF_STANDARD = 0x1; const unsigned long OBJREF_HANDLER = 0x2; @@ -148,7 +156,7 @@ interface ObjectRpcBaseTypes [case(OBJREF_CUSTOM)] struct OR_CUSTOM { CLSID clsid; unsigned long cbExtension; - unsigned long size; + ULONG size; [size_is(size), ref] byte *pData; } u_custom; } u_objref; @@ -184,7 +192,7 @@ interface IRemUnknown : IUnknown HRESULT RemQueryInterface( [in] REFIPID ripid, - [in] unsigned long cRefs, + [in] ULONG cRefs, [in] unsigned short cIids, [in, size_is(cIids)] IID *iids, [out, size_is(,cIids)] REMQIRESULT **ppQIResults); @@ -215,7 +223,6 @@ interface IRemUnknown2 : IRemUnknown [out, size_is(cIids)] MInterfacePointer **ppMIF); } -cpp_quote("#if 0") [ uuid(99fcfec4-5260-101b-bbcb-00aa0021347a), pointer_default(unique) @@ -289,4 +296,3 @@ interface IRemoteActivation [out,size_is(Interfaces)] MInterfacePointer **ppInterfaceData, [out,size_is(Interfaces)] HRESULT *pResults); } -cpp_quote("#endif") diff --git a/reactos/dll/win32/ole32/defaulthandler.c b/reactos/dll/win32/ole32/defaulthandler.c index 7f742bccbab..9486813f105 100644 --- a/reactos/dll/win32/ole32/defaulthandler.c +++ b/reactos/dll/win32/ole32/defaulthandler.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES: * The OLE2 default object handler supports a whole whack of @@ -416,7 +416,8 @@ static void WINAPI DefaultHandler_Stop(DefaultHandler *This) /* FIXME: call IOleCache_OnStop */ - DataAdviseHolder_OnDisconnect(This->dataAdviseHolder); + if (This->dataAdviseHolder) + DataAdviseHolder_OnDisconnect(This->dataAdviseHolder); if (This->pDataDelegate) { IDataObject_Release(This->pDataDelegate); @@ -446,7 +447,7 @@ static HRESULT WINAPI DefaultHandler_Close( DefaultHandler *This = impl_from_IOleObject(iface); HRESULT hr; - TRACE("(%ld)\n", dwSaveOption); + TRACE("(%d)\n", dwSaveOption); if (!This->pOleDelegate) return S_OK; @@ -472,7 +473,7 @@ static HRESULT WINAPI DefaultHandler_SetMoniker( { DefaultHandler *This = impl_from_IOleObject(iface); - TRACE("(%p, %ld, %p)\n", + TRACE("(%p, %d, %p)\n", iface, dwWhichMoniker, pmk); @@ -498,7 +499,7 @@ static HRESULT WINAPI DefaultHandler_GetMoniker( { DefaultHandler *This = impl_from_IOleObject(iface); - TRACE("(%p, %ld, %ld, %p)\n", + TRACE("(%p, %d, %d, %p)\n", iface, dwAssign, dwWhichMoniker, ppmk); if (This->pOleDelegate) @@ -533,7 +534,7 @@ static HRESULT WINAPI DefaultHandler_InitFromData( { DefaultHandler *This = impl_from_IOleObject(iface); - TRACE("(%p, %p, %d, %ld)\n", + TRACE("(%p, %p, %d, %d)\n", iface, pDataObject, fCreation, dwReserved); if (This->pOleDelegate) @@ -556,7 +557,7 @@ static HRESULT WINAPI DefaultHandler_GetClipboardData( { DefaultHandler *This = impl_from_IOleObject(iface); - TRACE("(%p, %ld, %p)\n", + TRACE("(%p, %d, %p)\n", iface, dwReserved, ppDataObject); if (This->pOleDelegate) @@ -579,7 +580,7 @@ static HRESULT WINAPI DefaultHandler_DoVerb( IRunnableObject *pRunnableObj = (IRunnableObject *)&This->lpvtblIRunnableObject; HRESULT hr; - TRACE("(%ld, %p, %p, %ld, %p, %s)\n", iVerb, lpmsg, pActiveSite, lindex, hwndParent, wine_dbgstr_rect(lprcPosRect)); + TRACE("(%d, %p, %p, %d, %p, %s)\n", iVerb, lpmsg, pActiveSite, lindex, hwndParent, wine_dbgstr_rect(lprcPosRect)); hr = IRunnableObject_Run(pRunnableObj, NULL); if (FAILED(hr)) return hr; @@ -651,9 +652,6 @@ static HRESULT WINAPI DefaultHandler_GetUserClassID( TRACE("(%p, %p)\n", iface, pClsid); - if (This->pOleDelegate) - return IOleObject_GetUserClassID(This->pOleDelegate, pClsid); - if (This->pOleDelegate) return IOleObject_GetUserClassID(This->pOleDelegate, pClsid); @@ -681,7 +679,7 @@ static HRESULT WINAPI DefaultHandler_GetUserType( { DefaultHandler *This = impl_from_IOleObject(iface); - TRACE("(%p, %ld, %p)\n", iface, dwFormOfType, pszUserType); + TRACE("(%p, %d, %p)\n", iface, dwFormOfType, pszUserType); return OleRegGetUserType(&This->clsid, dwFormOfType, pszUserType); } @@ -700,7 +698,7 @@ static HRESULT WINAPI DefaultHandler_SetExtent( { DefaultHandler *This = impl_from_IOleObject(iface); - TRACE("(%p, %lx, (%ld x %ld))\n", iface, + TRACE("(%p, %x, (%d x %d))\n", iface, dwDrawAspect, psizel->cx, psizel->cy); if (This->pOleDelegate) @@ -728,7 +726,7 @@ static HRESULT WINAPI DefaultHandler_GetExtent( DefaultHandler *This = impl_from_IOleObject(iface); - TRACE("(%p, %lx, %p)\n", iface, dwDrawAspect, psizel); + TRACE("(%p, %x, %p)\n", iface, dwDrawAspect, psizel); if (This->pOleDelegate) return IOleObject_GetExtent(This->pOleDelegate, dwDrawAspect, psizel); @@ -805,7 +803,7 @@ static HRESULT WINAPI DefaultHandler_Unadvise( { DefaultHandler *This = impl_from_IOleObject(iface); - TRACE("(%p, %ld)\n", iface, dwConnection); + TRACE("(%p, %d)\n", iface, dwConnection); /* * If we don't have an advise holder yet, it means we don't have @@ -841,10 +839,9 @@ static HRESULT WINAPI DefaultHandler_EnumAdvise( *ppenumAdvise = NULL; if (!This->oleAdviseHolder) - return IOleAdviseHolder_EnumAdvise(This->oleAdviseHolder, - ppenumAdvise); + return S_OK; - return S_OK; + return IOleAdviseHolder_EnumAdvise(This->oleAdviseHolder, ppenumAdvise); } /************************************************************************ @@ -863,10 +860,7 @@ static HRESULT WINAPI DefaultHandler_GetMiscStatus( HRESULT hres; DefaultHandler *This = impl_from_IOleObject(iface); - TRACE("(%p, %lx, %p)\n", iface, dwAspect, pdwStatus); - - if (This->pOleDelegate) - return IOleObject_GetMiscStatus(This->pOleDelegate, dwAspect, pdwStatus); + TRACE("(%p, %x, %p)\n", iface, dwAspect, pdwStatus); if (This->pOleDelegate) return IOleObject_GetMiscStatus(This->pOleDelegate, dwAspect, pdwStatus); @@ -978,6 +972,9 @@ static HRESULT WINAPI DefaultHandler_GetData( IDataObject_Release(cacheDataObject); + if (FAILED(hres) && This->pDataDelegate) + hres = IDataObject_GetData(This->pDataDelegate, pformatetcIn, pmedium); + return hres; } @@ -1021,6 +1018,9 @@ static HRESULT WINAPI DefaultHandler_QueryGetData( IDataObject_Release(cacheDataObject); + if (FAILED(hres) && This->pDataDelegate) + hres = IDataObject_QueryGetData(This->pDataDelegate, pformatetc); + return hres; } @@ -1037,16 +1037,13 @@ static HRESULT WINAPI DefaultHandler_GetCanonicalFormatEtc( LPFORMATETC pformatetcOut) { DefaultHandler *This = impl_from_IDataObject(iface); - IDataObject *pDataObject; - HRESULT hr; TRACE("(%p, %p, %p)\n", iface, pformatetcIn, pformatetcOut); - if (!This->pOleDelegate) + if (!This->pDataDelegate) return OLE_E_NOTRUNNING; - hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IDataObject, (void **)&pDataObject); - return IDataObject_GetCanonicalFormatEtc(pDataObject, pformatetcIn, pformatetcOut); + return IDataObject_GetCanonicalFormatEtc(This->pDataDelegate, pformatetcIn, pformatetcOut); } /************************************************************************ @@ -1102,7 +1099,7 @@ static HRESULT WINAPI DefaultHandler_EnumFormatEtc( HRESULT hres; DefaultHandler *This = impl_from_IDataObject(iface); - TRACE("(%p, %lx, %p)\n", iface, dwDirection, ppenumFormatEtc); + TRACE("(%p, %x, %p)\n", iface, dwDirection, ppenumFormatEtc); hres = OleRegEnumFormatEtc(&This->clsid, dwDirection, ppenumFormatEtc); @@ -1127,12 +1124,16 @@ static HRESULT WINAPI DefaultHandler_DAdvise( HRESULT hres = S_OK; DefaultHandler *This = impl_from_IDataObject(iface); - TRACE("(%p, %p, %ld, %p, %p)\n", + TRACE("(%p, %p, %d, %p, %p)\n", iface, pformatetc, advf, pAdvSink, pdwConnection); /* Make sure we have a data advise holder before we start. */ if (!This->dataAdviseHolder) + { hres = CreateDataAdviseHolder(&This->dataAdviseHolder); + if (SUCCEEDED(hres) && This->pDataDelegate) + DataAdviseHolder_OnConnect(This->dataAdviseHolder, This->pDataDelegate); + } if (SUCCEEDED(hres)) hres = IDataAdviseHolder_Advise(This->dataAdviseHolder, @@ -1159,7 +1160,7 @@ static HRESULT WINAPI DefaultHandler_DUnadvise( { DefaultHandler *This = impl_from_IDataObject(iface); - TRACE("(%p, %ld)\n", iface, dwConnection); + TRACE("(%p, %d)\n", iface, dwConnection); /* * If we don't have a data advise holder yet, it means that diff --git a/reactos/dll/win32/ole32/dictionary.c b/reactos/dll/win32/ole32/dictionary.c index b64f24f53ea..6e114786385 100644 --- a/reactos/dll/win32/ole32/dictionary.c +++ b/reactos/dll/win32/ole32/dictionary.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include #include diff --git a/reactos/dll/win32/ole32/dictionary.h b/reactos/dll/win32/ole32/dictionary.h index db648343b92..231a6474723 100644 --- a/reactos/dll/win32/ole32/dictionary.h +++ b/reactos/dll/win32/ole32/dictionary.h @@ -17,7 +17,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __DICTIONARY_H__ #define __DICTIONARY_H__ diff --git a/reactos/dll/win32/ole32/enumx.c b/reactos/dll/win32/ole32/enumx.c new file mode 100644 index 00000000000..232abec66c1 --- /dev/null +++ b/reactos/dll/win32/ole32/enumx.c @@ -0,0 +1,202 @@ +/* + * IEnum* implementation + * + * Copyright 2006 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define COBJMACROS + +#include + +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "wine/list.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(ole); + +typedef struct tagEnumSTATPROPSETSTG_impl +{ + const void *vtbl; + LONG ref; + struct list elements; + struct list *current; + ULONG elem_size; + GUID riid; +} enumx_impl; + +/************************************************************************ + * enumx_QueryInterface + */ +HRESULT WINAPI enumx_QueryInterface( + enumx_impl *This, + REFIID riid, + void** ppvObject) +{ + if ( (This==0) || (ppvObject==0) ) + return E_INVALIDARG; + + *ppvObject = 0; + + if (IsEqualGUID(&IID_IUnknown, riid) || + IsEqualGUID(&This->riid, riid)) + { + IUnknown_AddRef(((IUnknown*)This)); + *ppvObject = This; + return S_OK; + } + + return E_NOINTERFACE; +} + +/************************************************************************ + * enumx_AddRef + */ +ULONG WINAPI enumx_AddRef(enumx_impl *This) +{ + return InterlockedIncrement(&This->ref); +} + +/************************************************************************ + * enumx_Release + */ +ULONG WINAPI enumx_Release(enumx_impl *This) +{ + ULONG ref; + + ref = InterlockedDecrement(&This->ref); + if (ref == 0) + { + while (!list_empty(&This->elements)) + { + struct list *x = list_head(&This->elements); + list_remove(x); + HeapFree(GetProcessHeap(), 0, x); + } + HeapFree(GetProcessHeap(), 0, This); + } + return ref; +} + +/************************************************************************ + * enumx_Next + */ +HRESULT WINAPI enumx_Next(enumx_impl *This, ULONG celt, + void *rgelt, ULONG *pceltFetched) +{ + unsigned char *p; + ULONG count = 0; + + TRACE("%p %u %p\n", This, celt, pceltFetched); + + if (This->current == NULL) + This->current = list_head(&This->elements); + p = rgelt; + while (count < celt && This->current && This->current != &This->elements) + { + memcpy(p, &This->current[1], This->elem_size); + p += This->elem_size; + This->current = This->current->next; + count++; + } + if (pceltFetched) + *pceltFetched = count; + if (count < celt) + return S_FALSE; + return S_OK; +} + +/************************************************************************ + * enumx_Skip + */ +HRESULT WINAPI enumx_Skip(enumx_impl *This, ULONG celt) +{ + ULONG count = 0; + + TRACE("%p %u\n", This, celt); + + if (This->current == NULL) + This->current = list_head(&This->elements); + + while (count < celt && This->current && This->current != &This->elements) + count++; + + return S_OK; +} + +/************************************************************************ + * enumx_Reset + */ +HRESULT WINAPI enumx_Reset(enumx_impl *This) +{ + TRACE("\n"); + + This->current = NULL; + return S_OK; +} + +/************************************************************************ + * enumx_fnClone + */ +HRESULT WINAPI enumx_Clone( + enumx_impl *iface, + enumx_impl **ppenum) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +/************************************************************************ + * enumx_allocate + * + * Allocate a generic enumerator + */ +enumx_impl *enumx_allocate(REFIID riid, const void *vtbl, ULONG elem_size) +{ + enumx_impl *enumx; + + enumx = HeapAlloc(GetProcessHeap(), 0, sizeof *enumx); + if (enumx) + { + enumx->vtbl = vtbl; + enumx->ref = 1; + enumx->current = NULL; + enumx->elem_size = elem_size; + memcpy(&enumx->riid, riid, sizeof *riid); + list_init(&enumx->elements); + } + + return enumx; +} + +/************************************************************************ + * enumx_add_element + * + * Add an element to the enumeration. + */ +void *enumx_add_element(enumx_impl *enumx, void *data) +{ + struct list *element; + + element = HeapAlloc(GetProcessHeap(), 0, sizeof *element + enumx->elem_size); + if (!element) + return NULL; + memcpy(&element[1], data, enumx->elem_size); + list_add_tail(&enumx->elements, element); + return &element[1]; +} diff --git a/reactos/dll/win32/ole32/enumx.h b/reactos/dll/win32/ole32/enumx.h new file mode 100644 index 00000000000..2d36b732549 --- /dev/null +++ b/reactos/dll/win32/ole32/enumx.h @@ -0,0 +1,34 @@ +/* + * Copyright 2006 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __OLE_ENUM_H__ +#define __OLE_ENUM_H__ + +typedef struct tagEnumSTATPROPSETSTG_impl enumx_impl; + +extern HRESULT WINAPI enumx_QueryInterface(enumx_impl *, REFIID, void**); +extern ULONG WINAPI enumx_AddRef(enumx_impl *); +extern ULONG WINAPI enumx_Release(enumx_impl *); +extern HRESULT WINAPI enumx_Next(enumx_impl *, ULONG, void *, ULONG *); +extern HRESULT WINAPI enumx_Skip(enumx_impl *, ULONG); +extern HRESULT WINAPI enumx_Reset(enumx_impl *); +extern HRESULT WINAPI enumx_Clone(enumx_impl *, enumx_impl **); +extern enumx_impl *enumx_allocate(REFIID, const void *, ULONG); +extern void *enumx_add_element(enumx_impl *, void *); + +#endif diff --git a/reactos/dll/win32/ole32/errorinfo.c b/reactos/dll/win32/ole32/errorinfo.c index 7404c6cf1ac..01dc30531ff 100644 --- a/reactos/dll/win32/ole32/errorinfo.c +++ b/reactos/dll/win32/ole32/errorinfo.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES: * @@ -52,7 +52,7 @@ static BSTR WINAPI ERRORINFO_SysAllocString(const OLECHAR* in) if (in == NULL) return NULL; /* - * Find the lenth of the buffer passed-in in bytes. + * Find the length of the buffer passed-in, in bytes. */ len = strlenW(in); bufferSize = len * sizeof (WCHAR); @@ -83,14 +83,10 @@ static BSTR WINAPI ERRORINFO_SysAllocString(const OLECHAR* in) newBuffer++; /* - * Copy the information in the buffer. - * Since it is valid to pass a NULL pointer here, we'll initialize the - * buffer to nul if it is the case. + * Copy the information in the buffer. It is not possible to pass + * a NULL pointer here. */ - if (in != 0) - memcpy(newBuffer, in, bufferSize); - else - memset(newBuffer, 0, bufferSize); + memcpy(newBuffer, in, bufferSize); /* * Make sure that there is a nul character at the end of the @@ -171,7 +167,7 @@ static inline ErrorInfoImpl *impl_from_ISupportErrorInfo( ISupportErrorInfo *ifa #define _ICreateErrorInfo_(This) (ICreateErrorInfo*)&(This->lpvtcei) #define _ISupportErrorInfo_(This) (ISupportErrorInfo*)&(This->lpvtsei) -IErrorInfo * IErrorInfoImpl_Constructor(void) +static IErrorInfo * IErrorInfoImpl_Constructor(void) { ErrorInfoImpl * ei = HeapAlloc(GetProcessHeap(), 0, sizeof(ErrorInfoImpl)); if (ei) @@ -226,7 +222,7 @@ static ULONG WINAPI IErrorInfoImpl_AddRef( IErrorInfo* iface) { ErrorInfoImpl *This = impl_from_IErrorInfo(iface); - TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%u)\n",This,This->ref); return InterlockedIncrement(&This->ref); } @@ -236,7 +232,7 @@ static ULONG WINAPI IErrorInfoImpl_Release( ErrorInfoImpl *This = impl_from_IErrorInfo(iface); ULONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p)->(count=%lu)\n",This,ref+1); + TRACE("(%p)->(count=%u)\n",This,ref+1); if (!ref) { @@ -252,7 +248,7 @@ static HRESULT WINAPI IErrorInfoImpl_GetGUID( GUID * pGUID) { ErrorInfoImpl *This = impl_from_IErrorInfo(iface); - TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%u)\n",This,This->ref); if(!pGUID )return E_INVALIDARG; memcpy(pGUID, &This->m_Guid, sizeof(GUID)); return S_OK; @@ -405,7 +401,7 @@ static HRESULT WINAPI ICreateErrorInfoImpl_SetHelpContext( DWORD dwHelpContext) { ErrorInfoImpl *This = impl_from_ICreateErrorInfo(iface); - TRACE("(%p,%ld)\n",This,dwHelpContext); + TRACE("(%p,%d)\n",This,dwHelpContext); This->m_dwHelpContext = dwHelpContext; return S_OK; } @@ -490,10 +486,16 @@ HRESULT WINAPI CreateErrorInfo(ICreateErrorInfo **pperrinfo) */ HRESULT WINAPI GetErrorInfo(ULONG dwReserved, IErrorInfo **pperrinfo) { - TRACE("(%ld, %p, %p)\n", dwReserved, pperrinfo, COM_CurrentInfo()->errorinfo); + TRACE("(%d, %p, %p)\n", dwReserved, pperrinfo, COM_CurrentInfo()->errorinfo); + + if (dwReserved) + { + ERR("dwReserved (0x%x) != 0\n", dwReserved); + return E_INVALIDARG; + } if(!pperrinfo) return E_INVALIDARG; - + if (!COM_CurrentInfo()->errorinfo) { *pperrinfo = NULL; @@ -514,8 +516,14 @@ HRESULT WINAPI SetErrorInfo(ULONG dwReserved, IErrorInfo *perrinfo) { IErrorInfo * pei; - TRACE("(%ld, %p)\n", dwReserved, perrinfo); - + TRACE("(%d, %p)\n", dwReserved, perrinfo); + + if (dwReserved) + { + ERR("dwReserved (0x%x) != 0\n", dwReserved); + return E_INVALIDARG; + } + /* release old errorinfo */ pei = COM_CurrentInfo()->errorinfo; if (pei) IErrorInfo_Release(pei); diff --git a/reactos/dll/win32/ole32/filemoniker.c b/reactos/dll/win32/ole32/filemoniker.c index d4494361462..7578836dbcf 100644 --- a/reactos/dll/win32/ole32/filemoniker.c +++ b/reactos/dll/win32/ole32/filemoniker.c @@ -2,6 +2,7 @@ * FileMonikers implementation * * Copyright 1999 Noomen Hamza + * Copyright 2007 Robert Shearman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -39,10 +40,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); -const CLSID CLSID_FileMoniker = { - 0x303, 0, 0, {0xC0, 0, 0, 0, 0, 0, 0, 0x46} -}; - /* filemoniker data structure */ typedef struct FileMonikerImpl{ @@ -530,7 +527,7 @@ FileMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft } if (pcf!=NULL){ - IClassFactory_CreateInstance(pcf,NULL,&IID_IPersistFile,(void**)ppf); + IClassFactory_CreateInstance(pcf,NULL,&IID_IPersistFile,(void**)&ppf); res=IPersistFile_Load(ppf,This->filePathName,STGM_READ); @@ -643,7 +640,7 @@ static HRESULT WINAPI FileMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar, IMoniker** ppmkToLeft, IMoniker** ppmkReduced) { - TRACE("(%p,%p,%ld,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced); + TRACE("(%p,%p,%d,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced); if (ppmkReduced==NULL) return E_POINTER; @@ -1249,7 +1246,7 @@ FileMonikerROTDataImpl_GetComparisonData(IROTData* iface, BYTE* pbData, int i; LPWSTR pszFileName; - TRACE("(%p, %lu, %p)\n", pbData, cbMax, pcbData); + TRACE("(%p, %u, %p)\n", pbData, cbMax, pcbData); *pcbData = sizeof(CLSID) + len * sizeof(WCHAR); if (cbMax < *pcbData) @@ -1409,6 +1406,105 @@ HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER * ppmk) return hr; } +/* find a character from a set in reverse without the string having to be null-terminated */ +static inline WCHAR *memrpbrkW(const WCHAR *ptr, size_t n, const WCHAR *accept) +{ + const WCHAR *end, *ret = NULL; + for (end = ptr + n; ptr < end; ptr++) if (strchrW(accept, *ptr)) ret = ptr; + return (WCHAR *)ret; +} + +HRESULT FileMoniker_CreateFromDisplayName(LPBC pbc, LPCOLESTR szDisplayName, + LPDWORD pchEaten, LPMONIKER *ppmk) +{ + LPCWSTR end; + static const WCHAR wszSeparators[] = {':','\\','/','!',0}; + + for (end = szDisplayName + strlenW(szDisplayName); + end && (end != szDisplayName); + end = memrpbrkW(szDisplayName, end - szDisplayName, wszSeparators)) + { + HRESULT hr; + IRunningObjectTable *rot; + IMoniker *file_moniker; + LPWSTR file_display_name; + LPWSTR full_path_name; + DWORD full_path_name_len; + int len = end - szDisplayName; + + file_display_name = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); + if (!file_display_name) return E_OUTOFMEMORY; + memcpy(file_display_name, szDisplayName, len * sizeof(WCHAR)); + file_display_name[len] = '\0'; + + hr = CreateFileMoniker(file_display_name, &file_moniker); + if (FAILED(hr)) + { + HeapFree(GetProcessHeap(), 0, file_display_name); + return hr; + } + + hr = IBindCtx_GetRunningObjectTable(pbc, &rot); + if (FAILED(hr)) + { + HeapFree(GetProcessHeap(), 0, file_display_name); + IMoniker_Release(file_moniker); + return hr; + } + + hr = IRunningObjectTable_IsRunning(rot, file_moniker); + IRunningObjectTable_Release(rot); + if (FAILED(hr)) + { + HeapFree(GetProcessHeap(), 0, file_display_name); + IMoniker_Release(file_moniker); + return hr; + } + if (hr == S_OK) + { + TRACE("found running file moniker for %s\n", debugstr_w(file_display_name)); + *pchEaten = len; + *ppmk = file_moniker; + HeapFree(GetProcessHeap(), 0, file_display_name); + return S_OK; + } + + full_path_name_len = GetFullPathNameW(file_display_name, 0, NULL, NULL); + if (!full_path_name_len) + { + HeapFree(GetProcessHeap(), 0, file_display_name); + IMoniker_Release(file_moniker); + return MK_E_SYNTAX; + } + full_path_name = HeapAlloc(GetProcessHeap(), 0, full_path_name_len * sizeof(WCHAR)); + if (!full_path_name) + { + HeapFree(GetProcessHeap(), 0, file_display_name); + IMoniker_Release(file_moniker); + return E_OUTOFMEMORY; + } + GetFullPathNameW(file_display_name, full_path_name_len, full_path_name, NULL); + + if (GetFileAttributesW(full_path_name) == INVALID_FILE_ATTRIBUTES) + TRACE("couldn't open file %s\n", debugstr_w(full_path_name)); + else + { + TRACE("got file moniker for %s\n", debugstr_w(szDisplayName)); + *pchEaten = len; + *ppmk = file_moniker; + HeapFree(GetProcessHeap(), 0, file_display_name); + HeapFree(GetProcessHeap(), 0, full_path_name); + return S_OK; + } + HeapFree(GetProcessHeap(), 0, file_display_name); + HeapFree(GetProcessHeap(), 0, full_path_name); + IMoniker_Release(file_moniker); + } + + return MK_E_CANTOPENFILE; +} + + static HRESULT WINAPI FileMonikerCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv) { diff --git a/reactos/dll/win32/ole32/ftmarshal.c b/reactos/dll/win32/ole32/ftmarshal.c index 31e1262ce1f..9f6ad8ca647 100644 --- a/reactos/dll/win32/ole32/ftmarshal.c +++ b/reactos/dll/win32/ole32/ftmarshal.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -34,6 +34,8 @@ #include "wine/debug.h" +#include "compobj_private.h" + WINE_DEFAULT_DEBUG_CHANNEL(ole); typedef struct _FTMarshalImpl { @@ -136,7 +138,12 @@ static HRESULT WINAPI FTMarshalImpl_GetUnmarshalClass (LPMARSHAL iface, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID * pCid) { - FIXME ("(), stub!\n"); + TRACE("(%s, %p, 0x%x, %p, 0x%x, %p)\n", debugstr_guid(riid), pv, + dwDestContext, pvDestContext, mshlflags, pCid); + if (dwDestContext == MSHCTX_INPROC || dwDestContext == MSHCTX_CROSSCTX) + memcpy(pCid, &CLSID_InProcFreeMarshaler, sizeof(CLSID_InProcFreeMarshaler)); + else + memcpy(pCid, &CLSID_DfMarshal, sizeof(CLSID_InProcFreeMarshaler)); return S_OK; } @@ -148,15 +155,14 @@ FTMarshalImpl_GetMarshalSizeMax (LPMARSHAL iface, REFIID riid, void *pv, DWORD d IMarshal *pMarshal = NULL; HRESULT hres; - FTMarshalImpl *This = impl_from_IMarshal(iface); - - FIXME ("(), stub!\n"); + TRACE("(%s, %p, 0x%x, %p, 0x%x, %p)\n", debugstr_guid(riid), pv, + dwDestContext, pvDestContext, mshlflags, pSize); /* if the marshalling happens inside the same process the interface pointer is copied between the apartments */ if (dwDestContext == MSHCTX_INPROC || dwDestContext == MSHCTX_CROSSCTX) { - *pSize = sizeof (This); - return S_OK; + *pSize = sizeof (mshlflags) + sizeof (pv) + sizeof (DWORD) + sizeof (GUID); + return S_OK; } /* use the standard marshaller to handle all other cases */ @@ -174,14 +180,37 @@ FTMarshalImpl_MarshalInterface (LPMARSHAL iface, IStream * pStm, REFIID riid, vo IMarshal *pMarshal = NULL; HRESULT hres; - FTMarshalImpl *This = impl_from_IMarshal(iface); - - FIXME ("(), stub!\n"); + TRACE("(%p, %s, %p, 0x%x, %p, 0x%x)\n", pStm, debugstr_guid(riid), pv, + dwDestContext, pvDestContext, mshlflags); /* if the marshalling happens inside the same process the interface pointer is copied between the apartments */ if (dwDestContext == MSHCTX_INPROC || dwDestContext == MSHCTX_CROSSCTX) { - return IStream_Write (pStm, This, sizeof (This), 0); + void *object; + DWORD constant = 0; + GUID unknown_guid = { 0 }; + + hres = IUnknown_QueryInterface((IUnknown *)pv, riid, &object); + if (FAILED(hres)) + return hres; + + /* don't hold a reference to table-weak marshaled interfaces */ + if (mshlflags & MSHLFLAGS_TABLEWEAK) + IUnknown_Release((IUnknown *)object); + + hres = IStream_Write (pStm, &mshlflags, sizeof (mshlflags), NULL); + if (hres != S_OK) return STG_E_MEDIUMFULL; + + hres = IStream_Write (pStm, &object, sizeof (object), NULL); + if (hres != S_OK) return STG_E_MEDIUMFULL; + + hres = IStream_Write (pStm, &constant, sizeof (constant), NULL); + if (hres != S_OK) return STG_E_MEDIUMFULL; + + hres = IStream_Write (pStm, &unknown_guid, sizeof (unknown_guid), NULL); + if (hres != S_OK) return STG_E_MEDIUMFULL; + + return S_OK; } /* use the standard marshaler to handle all other cases */ @@ -194,19 +223,66 @@ FTMarshalImpl_MarshalInterface (LPMARSHAL iface, IStream * pStm, REFIID riid, vo static HRESULT WINAPI FTMarshalImpl_UnmarshalInterface (LPMARSHAL iface, IStream * pStm, REFIID riid, void **ppv) { - FIXME ("(), stub!\n"); - return S_OK; + DWORD mshlflags; + IUnknown *object; + DWORD constant; + GUID unknown_guid; + HRESULT hres; + + TRACE ("(%p, %s, %p)\n", pStm, debugstr_guid(riid), ppv); + + hres = IStream_Read (pStm, &mshlflags, sizeof (mshlflags), NULL); + if (hres != S_OK) return STG_E_READFAULT; + + hres = IStream_Read (pStm, &object, sizeof (object), NULL); + if (hres != S_OK) return STG_E_READFAULT; + + hres = IStream_Read (pStm, &constant, sizeof (constant), NULL); + if (hres != S_OK) return STG_E_READFAULT; + if (constant != 0) + FIXME("constant is 0x%x instead of 0\n", constant); + + hres = IStream_Read (pStm, &unknown_guid, sizeof (unknown_guid), NULL); + if (hres != S_OK) return STG_E_READFAULT; + + hres = IUnknown_QueryInterface(object, riid, ppv); + if (!(mshlflags & (MSHLFLAGS_TABLEWEAK|MSHLFLAGS_TABLESTRONG))) + IUnknown_Release(object); + return hres; } static HRESULT WINAPI FTMarshalImpl_ReleaseMarshalData (LPMARSHAL iface, IStream * pStm) { - FIXME ("(), stub!\n"); + DWORD mshlflags; + IUnknown *object; + DWORD constant; + GUID unknown_guid; + HRESULT hres; + + TRACE ("(%p)\n", pStm); + + hres = IStream_Read (pStm, &mshlflags, sizeof (mshlflags), NULL); + if (hres != S_OK) return STG_E_READFAULT; + + hres = IStream_Read (pStm, &object, sizeof (object), NULL); + if (hres != S_OK) return STG_E_READFAULT; + + hres = IStream_Read (pStm, &constant, sizeof (constant), NULL); + if (hres != S_OK) return STG_E_READFAULT; + if (constant != 0) + FIXME("constant is 0x%x instead of 0\n", constant); + + hres = IStream_Read (pStm, &unknown_guid, sizeof (unknown_guid), NULL); + if (hres != S_OK) return STG_E_READFAULT; + + IUnknown_Release(object); return S_OK; } static HRESULT WINAPI FTMarshalImpl_DisconnectObject (LPMARSHAL iface, DWORD dwReserved) { - FIXME ("(), stub!\n"); + TRACE ("()\n"); + /* nothing to do */ return S_OK; } @@ -226,6 +302,23 @@ static const IMarshalVtbl ftmvtbl = /*********************************************************************** * CoCreateFreeThreadedMarshaler [OLE32.@] * + * Creates a free-threaded marshaler. + * + * PARAMS + * punkOuter [I] Optional. Outer unknown. + * ppunkMarshal [O] On return, the inner unknown of the created free-threaded marshaler. + * + * RETURNS + * Success: S_OK + * Failure: E_OUTOFMEMORY if no memory available to create object. + * + * NOTES + * Objects that ensure their state is maintained consistent when used by + * multiple threads and reference no single-threaded objects are known as + * free-threaded. The free-threaded marshaler enables these objects to be + * efficiently marshaled within the same process, by not creating proxies + * (as they aren't needed for the object to be safely used), whilst still + * allowing the object to be used in inter-process and inter-machine contexts. */ HRESULT WINAPI CoCreateFreeThreadedMarshaler (LPUNKNOWN punkOuter, LPUNKNOWN * ppunkMarshal) { @@ -241,8 +334,73 @@ HRESULT WINAPI CoCreateFreeThreadedMarshaler (LPUNKNOWN punkOuter, LPUNKNOWN * p ftm->lpVtbl = &iunkvt; ftm->lpvtblFTM = &ftmvtbl; ftm->ref = 1; - ftm->pUnkOuter = punkOuter; + ftm->pUnkOuter = punkOuter ? punkOuter : _IFTMUnknown_(ftm); *ppunkMarshal = _IFTMUnknown_ (ftm); return S_OK; } + +static HRESULT WINAPI FTMarshalCF_QueryInterface(LPCLASSFACTORY iface, + REFIID riid, LPVOID *ppv) +{ + *ppv = NULL; + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) + { + *ppv = iface; + IUnknown_AddRef(iface); + return S_OK; + } + return E_NOINTERFACE; +} + +static ULONG WINAPI FTMarshalCF_AddRef(LPCLASSFACTORY iface) +{ + return 2; /* non-heap based object */ +} + +static ULONG WINAPI FTMarshalCF_Release(LPCLASSFACTORY iface) +{ + return 1; /* non-heap based object */ +} + +static HRESULT WINAPI FTMarshalCF_CreateInstance(LPCLASSFACTORY iface, + LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv) +{ + IUnknown *pUnknown; + HRESULT hr; + + TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv); + + *ppv = NULL; + + hr = CoCreateFreeThreadedMarshaler(pUnk, &pUnknown); + + if (SUCCEEDED(hr)) + { + hr = IUnknown_QueryInterface(pUnknown, riid, ppv); + IUnknown_Release(pUnknown); + } + + return hr; +} + +static HRESULT WINAPI FTMarshalCF_LockServer(LPCLASSFACTORY iface, BOOL fLock) +{ + FIXME("(%d), stub!\n",fLock); + return S_OK; +} + +static const IClassFactoryVtbl FTMarshalCFVtbl = +{ + FTMarshalCF_QueryInterface, + FTMarshalCF_AddRef, + FTMarshalCF_Release, + FTMarshalCF_CreateInstance, + FTMarshalCF_LockServer +}; +static const IClassFactoryVtbl *FTMarshalCF = &FTMarshalCFVtbl; + +HRESULT FTMarshalCF_Create(REFIID riid, LPVOID *ppv) +{ + return IClassFactory_QueryInterface((IClassFactory *)&FTMarshalCF, riid, ppv); +} diff --git a/reactos/dll/win32/ole32/git.c b/reactos/dll/win32/ole32/git.c index cdf763a2f5a..222eb6f375f 100644 --- a/reactos/dll/win32/ole32/git.c +++ b/reactos/dll/win32/ole32/git.c @@ -21,16 +21,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include "config.h" - -#include -#include #include -#include -#include #define COBJMACROS #define NONAMELESSUNION @@ -42,11 +36,10 @@ #include "objbase.h" #include "ole2.h" #include "winerror.h" -#include "winreg.h" -#include "winternl.h" #include "compobj_private.h" +#include "wine/list.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(ole); @@ -65,8 +58,7 @@ typedef struct StdGITEntry IID iid; /* IID of the interface */ IStream* stream; /* Holds the marshalled interface */ - struct StdGITEntry* next; - struct StdGITEntry* prev; + struct list entry; } StdGITEntry; /* Class data */ @@ -75,8 +67,7 @@ typedef struct StdGlobalInterfaceTableImpl const IGlobalInterfaceTableVtbl *lpVtbl; ULONG ref; - struct StdGITEntry* firstEntry; - struct StdGITEntry* lastEntry; + struct list list; ULONG nextCookie; } StdGlobalInterfaceTableImpl; @@ -94,7 +85,8 @@ static CRITICAL_SECTION git_section = { &critsect_debug, -1, 0, 0, 0, 0 }; /** This destroys it again. It should revoke all the held interfaces first **/ -void StdGlobalInterfaceTable_Destroy(void* self) { +static void StdGlobalInterfaceTable_Destroy(void* self) +{ TRACE("(%p)\n", self); FIXME("Revoke held interfaces here\n"); @@ -115,13 +107,11 @@ StdGlobalInterfaceTable_FindEntry(IGlobalInterfaceTable* iface, DWORD cookie) TRACE("iface=%p, cookie=0x%x\n", iface, (UINT)cookie); EnterCriticalSection(&git_section); - e = self->firstEntry; - while (e != NULL) { + LIST_FOR_EACH_ENTRY(e, &self->list, StdGITEntry, entry) { if (e->cookie == cookie) { LeaveCriticalSection(&git_section); return e; } - e = e->next; } LeaveCriticalSection(&git_section); @@ -210,7 +200,7 @@ StdGlobalInterfaceTable_RegisterInterfaceInGlobal( } zero.QuadPart = 0; - IStream_Seek(stream, zero, SEEK_SET, NULL); + IStream_Seek(stream, zero, STREAM_SEEK_SET, NULL); entry = HeapAlloc(GetProcessHeap(), 0, sizeof(StdGITEntry)); if (entry == NULL) return E_OUTOFMEMORY; @@ -223,18 +213,14 @@ StdGlobalInterfaceTable_RegisterInterfaceInGlobal( self->nextCookie++; /* inc the cookie count */ /* insert the new entry at the end of the list */ - entry->next = NULL; - entry->prev = self->lastEntry; - if (entry->prev) entry->prev->next = entry; - else self->firstEntry = entry; - self->lastEntry = entry; + list_add_tail(&self->list, &entry->entry); /* and return the cookie */ *pdwCookie = entry->cookie; LeaveCriticalSection(&git_section); - TRACE("Cookie is 0x%lx\n", entry->cookie); + TRACE("Cookie is 0x%x\n", entry->cookie); return S_OK; } @@ -242,7 +228,6 @@ static HRESULT WINAPI StdGlobalInterfaceTable_RevokeInterfaceFromGlobal( IGlobalInterfaceTable* iface, DWORD dwCookie) { - StdGlobalInterfaceTableImpl* const self = (StdGlobalInterfaceTableImpl*) iface; StdGITEntry* entry; HRESULT hr; @@ -258,17 +243,14 @@ StdGlobalInterfaceTable_RevokeInterfaceFromGlobal( hr = CoReleaseMarshalData(entry->stream); if (hr != S_OK) { - WARN("Failed to release marshal data, hr = 0x%08lx\n", hr); + WARN("Failed to release marshal data, hr = 0x%08x\n", hr); return hr; } IStream_Release(entry->stream); /* chop entry out of the list, and free the memory */ EnterCriticalSection(&git_section); - if (entry->prev) entry->prev->next = entry->next; - else self->firstEntry = entry->next; - if (entry->next) entry->next->prev = entry->prev; - else self->lastEntry = entry->prev; + list_remove(&entry->entry); LeaveCriticalSection(&git_section); HeapFree(GetProcessHeap(), 0, entry); @@ -285,7 +267,7 @@ StdGlobalInterfaceTable_GetInterfaceFromGlobal( LARGE_INTEGER move; LPUNKNOWN lpUnk; - TRACE("dwCookie=0x%lx, riid=%s, ppv=%p\n", dwCookie, debugstr_guid(riid), ppv); + TRACE("dwCookie=0x%x, riid=%s, ppv=%p\n", dwCookie, debugstr_guid(riid), ppv); entry = StdGlobalInterfaceTable_FindEntry(iface, dwCookie); if (entry == NULL) return E_INVALIDARG; @@ -298,16 +280,17 @@ StdGlobalInterfaceTable_GetInterfaceFromGlobal( /* unmarshal the interface */ hres = CoUnmarshalInterface(entry->stream, riid, ppv); - if (hres) { - WARN("Failed to unmarshal stream\n"); - return hres; - } /* rewind stream, in case it's used again */ move.u.LowPart = 0; move.u.HighPart = 0; IStream_Seek(entry->stream, move, STREAM_SEEK_SET, NULL); + if (hres) { + WARN("Failed to unmarshal stream\n"); + return hres; + } + /* addref it */ lpUnk = *ppv; IUnknown_AddRef(lpUnk); @@ -389,7 +372,7 @@ static const IGlobalInterfaceTableVtbl StdGlobalInterfaceTableImpl_Vtbl = }; /** This function constructs the GIT. It should only be called once **/ -void* StdGlobalInterfaceTable_Construct() +void* StdGlobalInterfaceTable_Construct(void) { StdGlobalInterfaceTableImpl* newGIT; @@ -398,8 +381,7 @@ void* StdGlobalInterfaceTable_Construct() newGIT->lpVtbl = &StdGlobalInterfaceTableImpl_Vtbl; newGIT->ref = 1; /* Initialise the reference count */ - newGIT->firstEntry = NULL; /* we start with an empty table */ - newGIT->lastEntry = NULL; + list_init(&newGIT->list); newGIT->nextCookie = 0xf100; /* that's where windows starts, so that's where we start */ TRACE("Created the GIT at %p\n", newGIT); diff --git a/reactos/dll/win32/ole32/hglobalstream.c b/reactos/dll/win32/ole32/hglobalstream.c index 4d1d4b5ebfb..d98c0c53402 100644 --- a/reactos/dll/win32/ole32/hglobalstream.c +++ b/reactos/dll/win32/ole32/hglobalstream.c @@ -18,7 +18,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -49,7 +49,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(storage); /**************************************************************************** * HGLOBALStreamImpl definition. * - * This class imlements the IStream inteface and represents a stream + * This class implements the IStream interface and represents a stream * supported by an HGLOBAL pointer. */ struct HGLOBALStreamImpl @@ -148,11 +148,9 @@ static HRESULT WINAPI HGLOBALStreamImpl_QueryInterface( /* * Compare the riid with the interface IDs implemented by this object. */ - if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0) - { - *ppvObject = (IStream*)This; - } - else if (memcmp(&IID_IStream, riid, sizeof(IID_IStream)) == 0) + if (IsEqualIID(&IID_IUnknown, riid) || + IsEqualIID(&IID_ISequentialStream, riid) || + IsEqualIID(&IID_IStream, riid)) { *ppvObject = (IStream*)This; } @@ -216,7 +214,7 @@ static HRESULT WINAPI HGLOBALStreamImpl_Read( ULONG bytesReadBuffer; ULONG bytesToReadFromBuffer; - TRACE("(%p, %p, %ld, %p)\n", iface, + TRACE("(%p, %p, %d, %p)\n", iface, pv, cb, pcbRead); /* @@ -255,14 +253,11 @@ static HRESULT WINAPI HGLOBALStreamImpl_Read( GlobalUnlock(This->supportHandle); /* - * The function returns S_OK if the buffer was filled completely - * it returns S_FALSE if the end of the stream is reached before the + * Always returns S_OK even if the end of the stream is reached before the * buffer is filled */ - if(*pcbRead == cb) - return S_OK; - return S_FALSE; + return S_OK; } /*** @@ -287,8 +282,7 @@ static HRESULT WINAPI HGLOBALStreamImpl_Write( ULARGE_INTEGER newSize; ULONG bytesWritten = 0; - TRACE("(%p, %p, %ld, %p)\n", iface, - pv, cb, pcbWritten); + TRACE("(%p, %p, %d, %p)\n", iface, pv, cb, pcbWritten); /* * If the caller is not interested in the number of bytes written, @@ -298,14 +292,10 @@ static HRESULT WINAPI HGLOBALStreamImpl_Write( pcbWritten = &bytesWritten; if (cb == 0) - { - return S_OK; - } - else - { - newSize.u.HighPart = 0; - newSize.u.LowPart = This->currentPosition.u.LowPart + cb; - } + goto out; + + newSize.u.HighPart = 0; + newSize.u.LowPart = This->currentPosition.u.LowPart + cb; /* * Verify if we need to grow the stream @@ -316,7 +306,7 @@ static HRESULT WINAPI HGLOBALStreamImpl_Write( HRESULT hr = IStream_SetSize(iface, newSize); if (FAILED(hr)) { - ERR("IStream_SetSize failed with error 0x%08lx\n", hr); + ERR("IStream_SetSize failed with error 0x%08x\n", hr); return hr; } } @@ -333,16 +323,17 @@ static HRESULT WINAPI HGLOBALStreamImpl_Write( */ This->currentPosition.u.LowPart+=cb; - /* - * Return the number of bytes read. - */ - *pcbWritten = cb; - /* * Cleanup */ GlobalUnlock(This->supportHandle); +out: + /* + * Return the number of bytes read. + */ + *pcbWritten = cb; + return S_OK; } @@ -364,7 +355,7 @@ static HRESULT WINAPI HGLOBALStreamImpl_Seek( ULARGE_INTEGER newPosition; - TRACE("(%p, %lx%08lx, %ld, %p)\n", iface, dlibMove.u.HighPart, + TRACE("(%p, %x%08x, %d, %p)\n", iface, dlibMove.u.HighPart, dlibMove.u.LowPart, dwOrigin, plibNewPosition); /* @@ -418,13 +409,11 @@ static HRESULT WINAPI HGLOBALStreamImpl_SetSize( HGLOBALStreamImpl* const This=(HGLOBALStreamImpl*)iface; HGLOBAL supportHandle; - TRACE("(%p, %ld)\n", iface, libNewSize.u.LowPart); + TRACE("(%p, %d)\n", iface, libNewSize.u.LowPart); /* - * As documented. + * HighPart is ignored as shown in tests */ - if (libNewSize.u.HighPart != 0) - return STG_E_INVALIDFUNCTION; if (This->streamSize.u.LowPart == libNewSize.u.LowPart) return S_OK; @@ -435,7 +424,7 @@ static HRESULT WINAPI HGLOBALStreamImpl_SetSize( supportHandle = GlobalReAlloc(This->supportHandle, libNewSize.u.LowPart, 0); if (supportHandle == 0) - return STG_E_MEDIUMFULL; + return E_OUTOFMEMORY; This->supportHandle = supportHandle; This->streamSize.u.LowPart = libNewSize.u.LowPart; @@ -463,7 +452,7 @@ static HRESULT WINAPI HGLOBALStreamImpl_CopyTo( ULARGE_INTEGER totalBytesRead; ULARGE_INTEGER totalBytesWritten; - TRACE("(%p, %p, %ld, %p, %p)\n", iface, pstm, + TRACE("(%p, %p, %d, %p, %p)\n", iface, pstm, cb.u.LowPart, pcbRead, pcbWritten); /* @@ -487,21 +476,19 @@ static HRESULT WINAPI HGLOBALStreamImpl_CopyTo( else copySize = cb.u.LowPart; - IStream_Read(iface, tmpBuffer, copySize, &bytesRead); + hr = IStream_Read(iface, tmpBuffer, copySize, &bytesRead); + if (FAILED(hr)) + break; totalBytesRead.u.LowPart += bytesRead; - IStream_Write(pstm, tmpBuffer, bytesRead, &bytesWritten); - - totalBytesWritten.u.LowPart += bytesWritten; - - /* - * Check that read & write operations were succesfull - */ - if (bytesRead != bytesWritten) + if (bytesRead) { - hr = STG_E_MEDIUMFULL; - break; + hr = IStream_Write(pstm, tmpBuffer, bytesRead, &bytesWritten); + if (FAILED(hr)) + break; + + totalBytesWritten.u.LowPart += bytesWritten; } if (bytesRead!=copySize) @@ -570,7 +557,7 @@ static HRESULT WINAPI HGLOBALStreamImpl_LockRegion( ULARGE_INTEGER cb, /* [in] */ DWORD dwLockType) /* [in] */ { - return S_OK; + return STG_E_INVALIDFUNCTION; } /* @@ -664,7 +651,7 @@ static const IStreamVtbl HGLOBALStreamImpl_Vtbl = * fDeleteOnRelease - Flag set to TRUE if the HGLOBAL will be released * when the IStream object is destroyed. */ -HGLOBALStreamImpl* HGLOBALStreamImpl_Construct( +static HGLOBALStreamImpl* HGLOBALStreamImpl_Construct( HGLOBAL hGlobal, BOOL fDeleteOnRelease) { diff --git a/reactos/dll/win32/ole32/ifs.c b/reactos/dll/win32/ole32/ifs.c index 0696139edf2..37ef44e2873 100644 --- a/reactos/dll/win32/ole32/ifs.c +++ b/reactos/dll/win32/ole32/ifs.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -166,7 +166,7 @@ static LPVOID WINAPI IMalloc_fnAlloc(LPMALLOC iface, DWORD cb) { LPVOID addr; - TRACE("(%ld)\n",cb); + TRACE("(%d)\n",cb); if(Malloc32.pSpy) { DWORD preAllocResult; @@ -200,7 +200,7 @@ static LPVOID WINAPI IMalloc_fnRealloc(LPMALLOC iface,LPVOID pv,DWORD cb) { LPVOID pNewMemory; - TRACE("(%p,%ld)\n",pv,cb); + TRACE("(%p,%d)\n",pv,cb); if(Malloc32.pSpy) { LPVOID pRealMemory; @@ -396,7 +396,7 @@ static ULONG WINAPI IMallocSpy_fnAddRef (LPMALLOCSPY iface) _MallocSpy *This = (_MallocSpy *)iface; ULONG ref = InterlockedIncrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, ref - 1); + TRACE ("(%p)->(count=%u)\n", This, ref - 1); return ref; } @@ -413,7 +413,7 @@ static ULONG WINAPI IMallocSpy_fnRelease (LPMALLOCSPY iface) _MallocSpy *This = (_MallocSpy *)iface; ULONG ref = InterlockedDecrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, ref + 1); + TRACE ("(%p)->(count=%u)\n", This, ref + 1); if (!ref) { /* our allocation list MUST be empty here */ @@ -424,7 +424,7 @@ static ULONG WINAPI IMallocSpy_fnRelease (LPMALLOCSPY iface) static ULONG WINAPI IMallocSpy_fnPreAlloc(LPMALLOCSPY iface, ULONG cbRequest) { _MallocSpy *This = (_MallocSpy *)iface; - TRACE ("(%p)->(%lu)\n", This, cbRequest); + TRACE ("(%p)->(%u)\n", This, cbRequest); return cbRequest; } static PVOID WINAPI IMallocSpy_fnPostAlloc(LPMALLOCSPY iface, void* pActual) @@ -449,7 +449,7 @@ static void WINAPI IMallocSpy_fnPostFree(LPMALLOCSPY iface, BOOL fSpyed) static ULONG WINAPI IMallocSpy_fnPreRealloc(LPMALLOCSPY iface, void* pRequest, ULONG cbRequest, void** ppNewRequest, BOOL fSpyed) { _MallocSpy *This = (_MallocSpy *)iface; - TRACE ("(%p)->(%p %lu %u)\n", This, pRequest, cbRequest, fSpyed); + TRACE ("(%p)->(%p %u %u)\n", This, pRequest, cbRequest, fSpyed); *ppNewRequest = pRequest; return cbRequest; } @@ -471,7 +471,7 @@ static PVOID WINAPI IMallocSpy_fnPreGetSize(LPMALLOCSPY iface, void* pRequest, B static ULONG WINAPI IMallocSpy_fnPostGetSize(LPMALLOCSPY iface, ULONG cbActual, BOOL fSpyed) { _MallocSpy *This = (_MallocSpy *)iface; - TRACE ("(%p)->(%lu %u)\n", This, cbActual, fSpyed); + TRACE ("(%p)->(%u %u)\n", This, cbActual, fSpyed); return cbActual; } @@ -502,7 +502,7 @@ static void WINAPI IMallocSpy_fnPostHeapMinimize(LPMALLOCSPY iface) } static void MallocSpyDumpLeaks(void) { - TRACE("leaks: %lu\n", Malloc32.SpyedAllocationsLeft); + TRACE("leaks: %u\n", Malloc32.SpyedAllocationsLeft); } static const IMallocSpyVtbl VT_IMallocSpy = @@ -665,7 +665,7 @@ HRESULT WINAPI CoRevokeMallocSpy(void) } if (Malloc32.SpyedAllocationsLeft) { - TRACE("SpyReleasePending with %lu allocations left\n", Malloc32.SpyedAllocationsLeft); + TRACE("SpyReleasePending with %u allocations left\n", Malloc32.SpyedAllocationsLeft); Malloc32.SpyReleasePending = TRUE; hres = E_ACCESSDENIED; } else { diff --git a/reactos/dll/win32/ole32/ifs.h b/reactos/dll/win32/ole32/ifs.h index c7d5ff445de..89ae1e20c56 100644 --- a/reactos/dll/win32/ole32/ifs.h +++ b/reactos/dll/win32/ole32/ifs.h @@ -13,7 +13,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __WINE_OLE_IFS_H @@ -38,7 +38,6 @@ typedef LPCSTR LPCOLESTR16; * IMalloc16 interface */ -#undef INTERFACE typedef struct IMalloc16 *LPMALLOC16; #define INTERFACE IMalloc16 @@ -58,8 +57,6 @@ DECLARE_INTERFACE_(IMalloc16,IUnknown) }; #undef INTERFACE -typedef struct IMalloc16 *LPMALLOC16; - /**********************************************************************/ extern LPMALLOC16 IMalloc16_Constructor(void); diff --git a/reactos/dll/win32/ole32/itemmoniker.c b/reactos/dll/win32/ole32/itemmoniker.c index d812df50416..2a8ed22a205 100644 --- a/reactos/dll/win32/ole32/itemmoniker.c +++ b/reactos/dll/win32/ole32/itemmoniker.c @@ -1,4 +1,4 @@ -/*************************************************************************************** +/* * ItemMonikers implementation * * Copyright 1999 Noomen Hamza @@ -15,8 +15,8 @@ * * 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 - ***************************************************************************************/ + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ #include #include @@ -38,10 +38,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); -const CLSID CLSID_ItemMoniker = { - 0x304, 0, 0, {0xC0, 0, 0, 0, 0, 0, 0, 0x46} -}; - /* ItemMoniker data structure */ typedef struct ItemMonikerImpl{ @@ -101,8 +97,8 @@ static HRESULT WINAPI ItemMonikerImpl_ParseDisplayName(IMoniker* iface,IBindCtx* static HRESULT WINAPI ItemMonikerImpl_IsSystemMoniker(IMoniker* iface,DWORD* pwdMksys); /* Local function used by ItemMoniker implementation */ -HRESULT WINAPI ItemMonikerImpl_Construct(ItemMonikerImpl* iface, LPCOLESTR lpszDelim,LPCOLESTR lpszPathName); -HRESULT WINAPI ItemMonikerImpl_Destroy(ItemMonikerImpl* iface); +static HRESULT WINAPI ItemMonikerImpl_Construct(ItemMonikerImpl* iface, LPCOLESTR lpszDelim,LPCOLESTR lpszPathName); +static HRESULT WINAPI ItemMonikerImpl_Destroy(ItemMonikerImpl* iface); /********************************************************************************/ /* IROTData prototype functions */ @@ -392,7 +388,7 @@ HRESULT WINAPI ItemMonikerImpl_GetSizeMax(IMoniker* iface, /****************************************************************************** * ItemMoniker_Construct (local function) *******************************************************************************/ -HRESULT WINAPI ItemMonikerImpl_Construct(ItemMonikerImpl* This, LPCOLESTR lpszDelim,LPCOLESTR lpszItem) +static HRESULT WINAPI ItemMonikerImpl_Construct(ItemMonikerImpl* This, LPCOLESTR lpszDelim,LPCOLESTR lpszItem) { int sizeStr1=lstrlenW(lpszItem), sizeStr2; @@ -430,7 +426,7 @@ HRESULT WINAPI ItemMonikerImpl_Construct(ItemMonikerImpl* This, LPCOLESTR lpszDe /****************************************************************************** * ItemMoniker_Destroy (local function) *******************************************************************************/ -HRESULT WINAPI ItemMonikerImpl_Destroy(ItemMonikerImpl* This) +static HRESULT WINAPI ItemMonikerImpl_Destroy(ItemMonikerImpl* This) { TRACE("(%p)\n",This); @@ -521,7 +517,7 @@ HRESULT WINAPI ItemMonikerImpl_Reduce(IMoniker* iface, IMoniker** ppmkToLeft, IMoniker** ppmkReduced) { - TRACE("(%p,%p,%ld,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced); + TRACE("(%p,%p,%d,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced); if (ppmkReduced==NULL) return E_POINTER; @@ -661,8 +657,8 @@ HRESULT WINAPI ItemMonikerImpl_IsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker HRESULT WINAPI ItemMonikerImpl_Hash(IMoniker* iface,DWORD* pdwHash) { ItemMonikerImpl *This = (ItemMonikerImpl *)iface; - - int h = 0,i,skip,len; + DWORD h = 0; + int i,len; int off = 0; LPOLESTR val; @@ -672,17 +668,8 @@ HRESULT WINAPI ItemMonikerImpl_Hash(IMoniker* iface,DWORD* pdwHash) val = This->itemName; len = lstrlenW(val); - if (len < 16) { - for (i = len ; i > 0; i--) { - h = (h * 37) + val[off++]; - } - } else { - /* only sample some characters */ - skip = len / 8; - for (i = len ; i > 0; i -= skip, off += skip) { - h = (h * 39) + val[off]; - } - } + for (i = len ; i > 0; i--) + h = (h * 3) ^ toupperW(val[off++]); *pdwHash=h; @@ -980,7 +967,7 @@ HRESULT WINAPI ItemMonikerROTDataImpl_GetComparisonData(IROTData* iface, LPWSTR pszItemName; LPWSTR pszItemDelimiter; - TRACE("(%p, %lu, %p)\n", pbData, cbMax, pcbData); + TRACE("(%p, %u, %p)\n", pbData, cbMax, pcbData); *pcbData = sizeof(CLSID) + sizeof(WCHAR) + len * sizeof(WCHAR); if (cbMax < *pcbData) diff --git a/reactos/dll/win32/ole32/marshal.c b/reactos/dll/win32/ole32/marshal.c index 6b4679d8b5a..120361aa48c 100644 --- a/reactos/dll/win32/ole32/marshal.c +++ b/reactos/dll/win32/ole32/marshal.c @@ -17,14 +17,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include "config.h" - -#include #include -#include #include #include @@ -35,10 +31,7 @@ #include "winuser.h" #include "objbase.h" #include "ole2.h" -#include "rpc.h" #include "winerror.h" -#include "winreg.h" -#include "wtypes.h" #include "wine/unicode.h" #include "compobj_private.h" @@ -50,13 +43,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); extern const CLSID CLSID_DfMarshal; /* number of refs given out for normal marshaling */ -#define NORMALEXTREFS 1 /* FIXME: this should be 5, but we have to wait for IRemUnknown support first */ +#define NORMALEXTREFS 5 /* private flag indicating that the caller does not want to notify the stub * when the proxy disconnects or is destroyed */ #define SORFP_NOLIFETIMEMGMT SORF_OXRES1 -static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, REFIID riid, void **object); +static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, + MSHCTX dest_context, void *dest_context_data, + REFIID riid, const OXID_INFO *oxid_info, + void **object); /* Marshalling just passes a unique identifier to the remote client, * that makes it possible to find the passed interface again. @@ -73,7 +69,7 @@ static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, REFI * IPIDs identify an interface stub and are apartment scoped */ -inline static HRESULT get_facbuf_for_iid(REFIID riid, IPSFactoryBuffer **facbuf) +static inline HRESULT get_facbuf_for_iid(REFIID riid, IPSFactoryBuffer **facbuf) { HRESULT hr; CLSID clsid; @@ -98,10 +94,14 @@ HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnkno if (hr != S_OK) return hr; + hr = apartment_createwindowifneeded(apt); + if (hr != S_OK) + return hr; + hr = IUnknown_QueryInterface(object, riid, (void **)&iobject); if (hr != S_OK) { - ERR("object doesn't expose interface %s, failing with error 0x%08lx\n", + ERR("object doesn't expose interface %s, failing with error 0x%08x\n", debugstr_guid(riid), hr); return E_NOINTERFACE; } @@ -124,7 +124,8 @@ HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnkno IPSFactoryBuffer_Release(psfb); if (hr != S_OK) { - ERR("Failed to create an IRpcStubBuffer from IPSFactory for %s\n", debugstr_guid(riid)); + ERR("Failed to create an IRpcStubBuffer from IPSFactory for %s with error 0x%08x\n", + debugstr_guid(riid), hr); IUnknown_Release(iobject); return hr; } @@ -156,17 +157,18 @@ HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnkno /* make sure ifstub that we are creating is unique */ ifstub = stub_manager_find_ifstub(manager, riid, mshlflags); if (!ifstub) - { ifstub = stub_manager_new_ifstub(manager, stub, iobject, riid, mshlflags); - IUnknown_Release(iobject); - if (stub) IRpcStubBuffer_Release(stub); - if (!ifstub) - { - stub_manager_int_release(manager); - /* FIXME: should we do another release to completely destroy the - * stub manager? */ - return E_OUTOFMEMORY; - } + + if (stub) IRpcStubBuffer_Release(stub); + IUnknown_Release(iobject); + + if (!ifstub) + { + stub_manager_int_release(manager); + /* destroy the stub manager if it has no ifstubs by releasing + * zero external references */ + stub_manager_ext_release(manager, 0, TRUE); + return E_OUTOFMEMORY; } if (!tablemarshal) @@ -216,7 +218,7 @@ static HRESULT WINAPI ClientIdentity_QueryInterface(IMultiQI * iface, REFIID rii static ULONG WINAPI ClientIdentity_AddRef(IMultiQI * iface) { struct proxy_manager * This = (struct proxy_manager *)iface; - TRACE("%p - before %ld\n", iface, This->refs); + TRACE("%p - before %d\n", iface, This->refs); return InterlockedIncrement(&This->refs); } @@ -224,7 +226,7 @@ static ULONG WINAPI ClientIdentity_Release(IMultiQI * iface) { struct proxy_manager * This = (struct proxy_manager *)iface; ULONG refs = InterlockedDecrement(&This->refs); - TRACE("%p - after %ld\n", iface, refs); + TRACE("%p - after %d\n", iface, refs); if (!refs) proxy_manager_destroy(This); return refs; @@ -241,13 +243,13 @@ static HRESULT WINAPI ClientIdentity_QueryMultipleInterfaces(IMultiQI *iface, UL /* mapping of RemQueryInterface index to QueryMultipleInterfaces index */ ULONG *mapping = HeapAlloc(GetProcessHeap(), 0, cMQIs * sizeof(*mapping)); - TRACE("cMQIs: %ld\n", cMQIs); + TRACE("cMQIs: %d\n", cMQIs); /* try to get a local interface - this includes already active proxy * interfaces and also interfaces exposed by the proxy manager */ for (i = 0; i < cMQIs; i++) { - TRACE("iid[%ld] = %s\n", i, debugstr_guid(pMQIs[i].pIID)); + TRACE("iid[%d] = %s\n", i, debugstr_guid(pMQIs[i].pIID)); pMQIs[i].hr = proxy_manager_query_local_interface(This, pMQIs[i].pIID, (void **)&pMQIs[i].pItf); if (pMQIs[i].hr == S_OK) successful_mqis++; @@ -259,7 +261,7 @@ static HRESULT WINAPI ClientIdentity_QueryMultipleInterfaces(IMultiQI *iface, UL } } - TRACE("%ld interfaces not found locally\n", nonlocal_mqis); + TRACE("%d interfaces not found locally\n", nonlocal_mqis); /* if we have more than one interface not found locally then we must try * to query the remote object for it */ @@ -282,7 +284,7 @@ static HRESULT WINAPI ClientIdentity_QueryMultipleInterfaces(IMultiQI *iface, UL hr = IRemUnknown_RemQueryInterface(remunk, ipid, NORMALEXTREFS, nonlocal_mqis, iids, &qiresults); if (FAILED(hr)) - ERR("IRemUnknown_RemQueryInterface failed with error 0x%08lx\n", hr); + ERR("IRemUnknown_RemQueryInterface failed with error 0x%08x\n", hr); } /* IRemUnknown_RemQueryInterface can return S_FALSE if only some of @@ -296,7 +298,9 @@ static HRESULT WINAPI ClientIdentity_QueryMultipleInterfaces(IMultiQI *iface, UL HRESULT hrobj = qiresults[i].hResult; if (hrobj == S_OK) hrobj = unmarshal_object(&qiresults[i].std, This->parent, - pMQIs[index].pIID, + This->dest_context, + This->dest_context_data, + pMQIs[index].pIID, &This->oxid_info, (void **)&pMQIs[index].pItf); if (hrobj == S_OK) @@ -311,7 +315,7 @@ static HRESULT WINAPI ClientIdentity_QueryMultipleInterfaces(IMultiQI *iface, UL CoTaskMemFree(qiresults); } - TRACE("%ld/%ld successfully queried\n", successful_mqis, cMQIs); + TRACE("%d/%d successfully queried\n", successful_mqis, cMQIs); HeapFree(GetProcessHeap(), 0, iids); HeapFree(GetProcessHeap(), 0, mapping); @@ -332,6 +336,13 @@ static const IMultiQIVtbl ClientIdentity_Vtbl = ClientIdentity_QueryMultipleInterfaces }; +/* FIXME: remove these */ +static HRESULT WINAPI StdMarshalImpl_GetUnmarshalClass(LPMARSHAL iface, REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags, CLSID* pCid); +static HRESULT WINAPI StdMarshalImpl_GetMarshalSizeMax(LPMARSHAL iface, REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags, DWORD* pSize); +static HRESULT WINAPI StdMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void **ppv); +static HRESULT WINAPI StdMarshalImpl_ReleaseMarshalData(LPMARSHAL iface, IStream *pStm); +static HRESULT WINAPI StdMarshalImpl_DisconnectObject(LPMARSHAL iface, DWORD dwReserved); + static HRESULT WINAPI Proxy_QueryInterface(IMarshal *iface, REFIID riid, void **ppvObject) { ICOM_THIS_MULTI(struct proxy_manager, lpVtblMarshal, iface); @@ -344,13 +355,6 @@ static ULONG WINAPI Proxy_AddRef(IMarshal *iface) return IMultiQI_AddRef((IMultiQI *)&This->lpVtbl); } -/* FIXME: remove these */ -static HRESULT WINAPI StdMarshalImpl_GetUnmarshalClass(LPMARSHAL iface, REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags, CLSID* pCid); -static HRESULT WINAPI StdMarshalImpl_GetMarshalSizeMax(LPMARSHAL iface, REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags, DWORD* pSize); -static HRESULT WINAPI StdMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void **ppv); -static HRESULT WINAPI StdMarshalImpl_ReleaseMarshalData(LPMARSHAL iface, IStream *pStm); -static HRESULT WINAPI StdMarshalImpl_DisconnectObject(LPMARSHAL iface, DWORD dwReserved); - static ULONG WINAPI Proxy_Release(IMarshal *iface) { ICOM_THIS_MULTI(struct proxy_manager, lpVtblMarshal, iface); @@ -362,25 +366,97 @@ static HRESULT WINAPI Proxy_MarshalInterface( void* pvDestContext, DWORD mshlflags) { ICOM_THIS_MULTI(struct proxy_manager, lpVtblMarshal, iface); - ULONG res; HRESULT hr; - STDOBJREF stdobjref; struct ifproxy *ifproxy; TRACE("(...,%s,...)\n", debugstr_guid(riid)); hr = proxy_manager_find_ifproxy(This, riid, &ifproxy); - if (FAILED(hr)) + if (SUCCEEDED(hr)) { - ERR("couldn't find proxy for interface %s, error 0x%08lx\n", debugstr_guid(riid), hr); - return hr; - } + STDOBJREF stdobjref = ifproxy->stdobjref; + ULONG cPublicRefs = ifproxy->refs; + ULONG cPublicRefsOld; - stdobjref = ifproxy->stdobjref; - /* FIXME: optimization - share out proxy's public references if possible - * instead of making new proxy do a roundtrip through the server */ - stdobjref.cPublicRefs = 0; /* InterlockedDecrement(&This->stdobjref.cPublicRefs) >= 0 ? 1 : 0 */ - hr = IStream_Write(pStm, &stdobjref, sizeof(stdobjref), &res); + /* optimization - share out proxy's public references if possible + * instead of making new proxy do a roundtrip through the server */ + do + { + ULONG cPublicRefsNew; + cPublicRefsOld = cPublicRefs; + stdobjref.cPublicRefs = cPublicRefs / 2; + cPublicRefsNew = cPublicRefs - stdobjref.cPublicRefs; + cPublicRefs = InterlockedCompareExchange( + (LONG *)&ifproxy->refs, cPublicRefsNew, cPublicRefsOld); + } while (cPublicRefs != cPublicRefsOld); + + if (!stdobjref.cPublicRefs) + { + IRemUnknown *remunk; + hr = proxy_manager_get_remunknown(This, &remunk); + if (hr == S_OK) + { + HRESULT hrref = S_OK; + REMINTERFACEREF rif; + rif.ipid = ifproxy->stdobjref.ipid; + rif.cPublicRefs = NORMALEXTREFS; + rif.cPrivateRefs = 0; + hr = IRemUnknown_RemAddRef(remunk, 1, &rif, &hrref); + if (hr == S_OK && hrref == S_OK) + stdobjref.cPublicRefs = rif.cPublicRefs; + else + ERR("IRemUnknown_RemAddRef returned with 0x%08x, hrref = 0x%08x\n", hr, hrref); + } + } + + if (SUCCEEDED(hr)) + { + TRACE("writing stdobjref:\n\tflags = %04lx\n\tcPublicRefs = %ld\n\toxid = %s\n\toid = %s\n\tipid = %s\n", + stdobjref.flags, stdobjref.cPublicRefs, + wine_dbgstr_longlong(stdobjref.oxid), + wine_dbgstr_longlong(stdobjref.oid), + debugstr_guid(&stdobjref.ipid)); + hr = IStream_Write(pStm, &stdobjref, sizeof(stdobjref), NULL); + } + } + else + { + /* we don't have the interface already unmarshaled so we have to + * request the object from the server */ + IRemUnknown *remunk; + IPID *ipid; + REMQIRESULT *qiresults = NULL; + IID iid = *riid; + + /* get the ipid of the first entry */ + /* FIXME: should we implement ClientIdentity on the ifproxies instead + * of the proxy_manager so we use the correct ipid here? */ + ipid = &LIST_ENTRY(list_head(&This->interfaces), struct ifproxy, entry)->stdobjref.ipid; + + /* get IRemUnknown proxy so we can communicate with the remote object */ + hr = proxy_manager_get_remunknown(This, &remunk); + + if (hr == S_OK) + { + hr = IRemUnknown_RemQueryInterface(remunk, ipid, NORMALEXTREFS, + 1, &iid, &qiresults); + if (SUCCEEDED(hr)) + { + hr = IStream_Write(pStm, &qiresults->std, sizeof(qiresults->std), NULL); + if (FAILED(hr)) + { + REMINTERFACEREF rif; + rif.ipid = qiresults->std.ipid; + rif.cPublicRefs = qiresults->std.cPublicRefs; + rif.cPrivateRefs = 0; + IRemUnknown_RemRelease(remunk, 1, &rif); + } + CoTaskMemFree(qiresults); + } + else + ERR("IRemUnknown_RemQueryInterface failed with error 0x%08x\n", hr); + } + } return hr; } @@ -398,6 +474,72 @@ static const IMarshalVtbl ProxyMarshal_Vtbl = StdMarshalImpl_DisconnectObject }; +static HRESULT WINAPI ProxyCliSec_QueryInterface(IClientSecurity *iface, REFIID riid, void **ppvObject) +{ + ICOM_THIS_MULTI(struct proxy_manager, lpVtblCliSec, iface); + return IMultiQI_QueryInterface((IMultiQI *)&This->lpVtbl, riid, ppvObject); +} + +static ULONG WINAPI ProxyCliSec_AddRef(IClientSecurity *iface) +{ + ICOM_THIS_MULTI(struct proxy_manager, lpVtblCliSec, iface); + return IMultiQI_AddRef((IMultiQI *)&This->lpVtbl); +} + +static ULONG WINAPI ProxyCliSec_Release(IClientSecurity *iface) +{ + ICOM_THIS_MULTI(struct proxy_manager, lpVtblCliSec, iface); + return IMultiQI_Release((IMultiQI *)&This->lpVtbl); +} + +static HRESULT WINAPI ProxyCliSec_QueryBlanket(IClientSecurity *iface, + IUnknown *pProxy, + DWORD *pAuthnSvc, + DWORD *pAuthzSvc, + OLECHAR **pServerPrincName, + DWORD *pAuthnLevel, + DWORD *pImpLevel, + void **pAuthInfo, + DWORD *pCapabilities) +{ + FIXME("(%p, %p, %p, %p, %p, %p, %p, %p): stub\n", pProxy, pAuthnSvc, + pAuthzSvc, pServerPrincName, pAuthnLevel, pImpLevel, pAuthInfo, + pCapabilities); + return E_NOTIMPL; +} + +static HRESULT WINAPI ProxyCliSec_SetBlanket(IClientSecurity *iface, + IUnknown *pProxy, DWORD AuthnSvc, + DWORD AuthzSvc, + OLECHAR *pServerPrincName, + DWORD AuthnLevel, DWORD ImpLevel, + void *pAuthInfo, + DWORD Capabilities) +{ + FIXME("(%p, %d, %d, %s, %d, %d, %p, 0x%x): stub\n", pProxy, AuthnSvc, + AuthzSvc, debugstr_w(pServerPrincName), AuthnLevel, ImpLevel, + pAuthInfo, Capabilities); + return E_NOTIMPL; +} + +static HRESULT WINAPI ProxyCliSec_CopyProxy(IClientSecurity *iface, + IUnknown *pProxy, IUnknown **ppCopy) +{ + FIXME("(%p, %p): stub\n", pProxy, ppCopy); + *ppCopy = NULL; + return E_NOTIMPL; +} + +static const IClientSecurityVtbl ProxyCliSec_Vtbl = +{ + ProxyCliSec_QueryInterface, + ProxyCliSec_AddRef, + ProxyCliSec_Release, + ProxyCliSec_QueryBlanket, + ProxyCliSec_SetBlanket, + ProxyCliSec_CopyProxy +}; + static HRESULT ifproxy_get_public_ref(struct ifproxy * This) { HRESULT hr = S_OK; @@ -417,16 +559,16 @@ static HRESULT ifproxy_get_public_ref(struct ifproxy * This) hr = proxy_manager_get_remunknown(This->parent, &remunk); if (hr == S_OK) { - HRESULT hrref; + HRESULT hrref = S_OK; REMINTERFACEREF rif; rif.ipid = This->stdobjref.ipid; rif.cPublicRefs = NORMALEXTREFS; rif.cPrivateRefs = 0; hr = IRemUnknown_RemAddRef(remunk, 1, &rif, &hrref); if (hr == S_OK && hrref == S_OK) - This->refs += NORMALEXTREFS; + InterlockedExchangeAdd((LONG *)&This->refs, NORMALEXTREFS); else - ERR("IRemUnknown_RemAddRef returned with 0x%08lx, hrref = 0x%08lx\n", hr, hrref); + ERR("IRemUnknown_RemAddRef returned with 0x%08x, hrref = 0x%08x\n", hr, hrref); } } ReleaseMutex(This->parent->remoting_mutex); @@ -437,6 +579,7 @@ static HRESULT ifproxy_get_public_ref(struct ifproxy * This) static HRESULT ifproxy_release_public_refs(struct ifproxy * This) { HRESULT hr = S_OK; + LONG public_refs; if (WAIT_OBJECT_0 != WaitForSingleObject(This->parent->remoting_mutex, INFINITE)) { @@ -444,29 +587,30 @@ static HRESULT ifproxy_release_public_refs(struct ifproxy * This) return E_UNEXPECTED; } - if (This->refs > 0) + public_refs = This->refs; + if (public_refs > 0) { IRemUnknown *remunk = NULL; - TRACE("releasing %ld refs\n", This->refs); + TRACE("releasing %d refs\n", public_refs); hr = proxy_manager_get_remunknown(This->parent, &remunk); if (hr == S_OK) { REMINTERFACEREF rif; rif.ipid = This->stdobjref.ipid; - rif.cPublicRefs = This->refs; + rif.cPublicRefs = public_refs; rif.cPrivateRefs = 0; hr = IRemUnknown_RemRelease(remunk, 1, &rif); if (hr == S_OK) - This->refs = 0; + InterlockedExchangeAdd((LONG *)&This->refs, -public_refs); else if (hr == RPC_E_DISCONNECTED) WARN("couldn't release references because object was " "disconnected: oxid = %s, oid = %s\n", wine_dbgstr_longlong(This->parent->oxid), wine_dbgstr_longlong(This->parent->oid)); else - ERR("IRemUnknown_RemRelease failed with error 0x%08lx\n", hr); + ERR("IRemUnknown_RemRelease failed with error 0x%08x\n", hr); } } ReleaseMutex(This->parent->remoting_mutex); @@ -501,16 +645,14 @@ static void ifproxy_destroy(struct ifproxy * This) This->chan = NULL; } - /* note: we don't call Release for This->proxy because its lifetime is - * controlled by the return value from ClientIdentity_Release, which this - * function is always called from */ + if (This->proxy) IRpcProxyBuffer_Release(This->proxy); HeapFree(GetProcessHeap(), 0, This); } static HRESULT proxy_manager_construct( APARTMENT * apt, ULONG sorflags, OXID oxid, OID oid, - struct proxy_manager ** proxy_manager) + const OXID_INFO *oxid_info, struct proxy_manager ** proxy_manager) { struct proxy_manager * This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); if (!This) return E_OUTOFMEMORY; @@ -522,8 +664,28 @@ static HRESULT proxy_manager_construct( return HRESULT_FROM_WIN32(GetLastError()); } + if (oxid_info) + { + This->oxid_info.dwPid = oxid_info->dwPid; + This->oxid_info.dwTid = oxid_info->dwTid; + This->oxid_info.ipidRemUnknown = oxid_info->ipidRemUnknown; + This->oxid_info.dwAuthnHint = oxid_info->dwAuthnHint; + This->oxid_info.psa = NULL /* FIXME: copy from oxid_info */; + } + else + { + HRESULT hr = RPC_ResolveOxid(oxid, &This->oxid_info); + if (FAILED(hr)) + { + CloseHandle(This->remoting_mutex); + HeapFree(GetProcessHeap(), 0, This); + return hr; + } + } + This->lpVtbl = &ClientIdentity_Vtbl; This->lpVtblMarshal = &ProxyMarshal_Vtbl; + This->lpVtblCliSec = &ProxyCliSec_Vtbl; list_init(&This->entry); list_init(&This->interfaces); @@ -548,6 +710,11 @@ static HRESULT proxy_manager_construct( /* we create the IRemUnknown proxy on demand */ This->remunk = NULL; + /* initialise these values to the weakest values and they will be + * overwritten in proxy_manager_set_context */ + This->dest_context = MSHCTX_INPROC; + This->dest_context_data = NULL; + EnterCriticalSection(&apt->cs); /* FIXME: we are dependent on the ordering in here to make sure a proxy's * IRemUnknown proxy doesn't get destroyed before the regual proxy does @@ -564,6 +731,63 @@ static HRESULT proxy_manager_construct( return S_OK; } +static inline void proxy_manager_set_context(struct proxy_manager *This, MSHCTX dest_context, void *dest_context_data) +{ + MSHCTX old_dest_context = This->dest_context; + MSHCTX new_dest_context; + + do + { + new_dest_context = old_dest_context; + /* "stronger" values overwrite "weaker" values. stronger values are + * ones that disable more optimisations */ + switch (old_dest_context) + { + case MSHCTX_INPROC: + new_dest_context = dest_context; + break; + case MSHCTX_CROSSCTX: + switch (dest_context) + { + case MSHCTX_INPROC: + break; + default: + new_dest_context = dest_context; + } + break; + case MSHCTX_LOCAL: + switch (dest_context) + { + case MSHCTX_INPROC: + case MSHCTX_CROSSCTX: + break; + default: + new_dest_context = dest_context; + } + break; + case MSHCTX_NOSHAREDMEM: + switch (dest_context) + { + case MSHCTX_DIFFERENTMACHINE: + new_dest_context = dest_context; + break; + default: + break; + } + break; + default: + break; + } + + if (old_dest_context == new_dest_context) break; + + old_dest_context = InterlockedCompareExchange((PLONG)&This->dest_context, new_dest_context, old_dest_context); + } while (new_dest_context != old_dest_context); + + if (dest_context_data) + InterlockedExchangePointer(&This->dest_context_data, dest_context_data); +} + static HRESULT proxy_manager_query_local_interface(struct proxy_manager * This, REFIID riid, void ** ppv) { HRESULT hr; @@ -586,9 +810,9 @@ static HRESULT proxy_manager_query_local_interface(struct proxy_manager * This, } if (IsEqualIID(riid, &IID_IClientSecurity)) { - FIXME("requesting IClientSecurity, but it is unimplemented\n"); - *ppv = NULL; - return E_NOINTERFACE; + *ppv = (void *)&This->lpVtblCliSec; + IUnknown_AddRef((IUnknown *)*ppv); + return S_OK; } hr = proxy_manager_find_ifproxy(This, riid, &ifproxy); @@ -617,7 +841,7 @@ static HRESULT proxy_manager_create_ifproxy( ifproxy->parent = This; ifproxy->stdobjref = *stdobjref; ifproxy->iid = *riid; - ifproxy->refs = stdobjref->cPublicRefs; + ifproxy->refs = 0; ifproxy->proxy = NULL; assert(channel); @@ -644,21 +868,17 @@ static HRESULT proxy_manager_create_ifproxy( &ifproxy->proxy, &ifproxy->iface); IPSFactoryBuffer_Release(psfb); if (hr != S_OK) - ERR("Could not create proxy for interface %s, error 0x%08lx\n", + ERR("Could not create proxy for interface %s, error 0x%08x\n", debugstr_guid(riid), hr); } else - ERR("Could not get IPSFactoryBuffer for interface %s, error 0x%08lx\n", + ERR("Could not get IPSFactoryBuffer for interface %s, error 0x%08x\n", debugstr_guid(riid), hr); if (hr == S_OK) hr = IRpcProxyBuffer_Connect(ifproxy->proxy, ifproxy->chan); } - /* get at least one external reference to the object to keep it alive */ - if (hr == S_OK) - hr = ifproxy_get_public_ref(ifproxy); - if (hr == S_OK) { EnterCriticalSection(&This->cs); @@ -751,23 +971,18 @@ static HRESULT proxy_manager_get_remunknown(struct proxy_manager * This, IRemUnk stdobjref.oxid = This->oxid; /* FIXME: what should be used for the oid? The DCOM draft doesn't say */ stdobjref.oid = (OID)-1; - /* FIXME: this is a hack around not having an OXID resolver yet - - * the OXID resolver should give us the IPID of the IRemUnknown - * interface */ - stdobjref.ipid.Data1 = 0xffffffff; - stdobjref.ipid.Data2 = 0xffff; - stdobjref.ipid.Data3 = 0xffff; - assert(sizeof(stdobjref.ipid.Data4) == sizeof(stdobjref.oxid)); - memcpy(&stdobjref.ipid.Data4, &stdobjref.oxid, sizeof(OXID)); - + stdobjref.ipid = This->oxid_info.ipidRemUnknown; + /* do the unmarshal */ - hr = unmarshal_object(&stdobjref, This->parent, &IID_IRemUnknown, (void**)&This->remunk); + hr = unmarshal_object(&stdobjref, This->parent, This->dest_context, + This->dest_context_data, &IID_IRemUnknown, + &This->oxid_info, (void**)&This->remunk); if (hr == S_OK) *remunk = This->remunk; } LeaveCriticalSection(&This->cs); - TRACE("got IRemUnknown* pointer %p, hr = 0x%08lx\n", *remunk, hr); + TRACE("got IRemUnknown* pointer %p, hr = 0x%08x\n", *remunk, hr); return hr; } @@ -808,6 +1023,7 @@ static void proxy_manager_destroy(struct proxy_manager * This) } if (This->remunk) IRemUnknown_Release(This->remunk); + CoTaskMemFree(This->oxid_info.psa); DEBUG_CLEAR_CRITSEC_NAME(&This->cs); DeleteCriticalSection(&This->cs); @@ -939,7 +1155,7 @@ StdMarshalImpl_MarshalInterface( hres = marshal_object(apt, &stdobjref, riid, (IUnknown *)pv, mshlflags); if (hres) { - ERR("Failed to create ifstub, hres=0x%lx\n", hres); + ERR("Failed to create ifstub, hres=0x%x\n", hres); return hres; } @@ -952,7 +1168,10 @@ StdMarshalImpl_MarshalInterface( /* helper for StdMarshalImpl_UnmarshalInterface - does the unmarshaling with * no questions asked about the rules surrounding same-apartment unmarshals * and table marshaling */ -static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, REFIID riid, void **object) +static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, + MSHCTX dest_context, void *dest_context_data, + REFIID riid, const OXID_INFO *oxid_info, + void **object) { struct proxy_manager *proxy_manager = NULL; HRESULT hr = S_OK; @@ -965,12 +1184,12 @@ static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, REFI wine_dbgstr_longlong(stdobjref->oid), debugstr_guid(&stdobjref->ipid)); - /* create an a new proxy manager if one doesn't already exist for the + /* create a new proxy manager if one doesn't already exist for the * object */ if (!find_proxy_manager(apt, stdobjref->oxid, stdobjref->oid, &proxy_manager)) { hr = proxy_manager_construct(apt, stdobjref->flags, - stdobjref->oxid, stdobjref->oid, + stdobjref->oxid, stdobjref->oid, oxid_info, &proxy_manager); } else @@ -979,11 +1198,18 @@ static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, REFI if (hr == S_OK) { struct ifproxy * ifproxy; + + proxy_manager_set_context(proxy_manager, dest_context, dest_context_data); + hr = proxy_manager_find_ifproxy(proxy_manager, riid, &ifproxy); if (hr == E_NOINTERFACE) { IRpcChannelBuffer *chanbuf; - hr = RPC_CreateClientChannel(&stdobjref->oxid, &stdobjref->ipid, &chanbuf); + hr = RPC_CreateClientChannel(&stdobjref->oxid, &stdobjref->ipid, + &proxy_manager->oxid_info, + proxy_manager->dest_context, + proxy_manager->dest_context_data, + &chanbuf); if (hr == S_OK) hr = proxy_manager_create_ifproxy(proxy_manager, stdobjref, riid, chanbuf, &ifproxy); @@ -991,6 +1217,15 @@ static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, REFI else IUnknown_AddRef((IUnknown *)ifproxy->iface); + if (hr == S_OK) + { + InterlockedExchangeAdd((LONG *)&ifproxy->refs, stdobjref->cPublicRefs); + /* get at least one external reference to the object to keep it alive */ + hr = ifproxy_get_public_ref(ifproxy); + if (FAILED(hr)) + ifproxy_destroy(ifproxy); + } + if (hr == S_OK) *object = ifproxy->iface; } @@ -1005,7 +1240,8 @@ static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, REFI static HRESULT WINAPI StdMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void **ppv) { - struct stub_manager *stubmgr; + StdMarshalImpl *This = (StdMarshalImpl *)iface; + struct stub_manager *stubmgr = NULL; STDOBJREF stdobjref; ULONG res; HRESULT hres; @@ -1039,7 +1275,7 @@ StdMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, v /* unref the ifstub. FIXME: only do this on success? */ if (!stub_manager_is_table_marshaled(stubmgr, &stdobjref.ipid)) - stub_manager_ext_release(stubmgr, stdobjref.cPublicRefs); + stub_manager_ext_release(stubmgr, stdobjref.cPublicRefs, TRUE); stub_manager_int_release(stubmgr); return hres; @@ -1056,8 +1292,6 @@ StdMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, v { if (!stub_manager_notify_unmarshal(stubmgr, &stdobjref.ipid)) hres = CO_E_OBJNOTCONNECTED; - - stub_manager_int_release(stubmgr); } else { @@ -1066,17 +1300,20 @@ StdMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, v wine_dbgstr_longlong(stdobjref.oid)); hres = CO_E_OBJNOTCONNECTED; } - - apartment_release(stub_apt); } else TRACE("Treating unmarshal from OXID %s as inter-process\n", wine_dbgstr_longlong(stdobjref.oxid)); if (hres == S_OK) - hres = unmarshal_object(&stdobjref, apt, riid, ppv); + hres = unmarshal_object(&stdobjref, apt, This->dwDestContext, + This->pvDestContext, riid, + stubmgr ? &stubmgr->oxid_info : NULL, ppv); - if (hres) WARN("Failed with error 0x%08lx\n", hres); + if (stubmgr) stub_manager_int_release(stubmgr); + if (stub_apt) apartment_release(stub_apt); + + if (hres) WARN("Failed with error 0x%08x\n", hres); else TRACE("Successfully created proxy %p\n", *ppv); return hres; @@ -1185,11 +1422,11 @@ HRESULT WINAPI CoGetStandardMarshal(REFIID riid, IUnknown *pUnk, if (pUnk == NULL) { - FIXME("(%s,NULL,%lx,%p,%lx,%p), unimplemented yet.\n", + FIXME("(%s,NULL,%x,%p,%x,%p), unimplemented yet.\n", debugstr_guid(riid),dwDestContext,pvDestContext,mshlflags,ppMarshal); return E_NOTIMPL; } - TRACE("(%s,%p,%lx,%p,%lx,%p)\n", + TRACE("(%s,%p,%x,%p,%x,%p)\n", debugstr_guid(riid),pUnk,dwDestContext,pvDestContext,mshlflags,ppMarshal); *ppMarshal = HeapAlloc(GetProcessHeap(),0,sizeof(StdMarshalImpl)); dm = (StdMarshalImpl*) *ppMarshal; @@ -1241,7 +1478,7 @@ static HRESULT get_unmarshaler_from_stream(IStream *stream, IMarshal **marshal, hr = IStream_Read(stream, &objref, FIELD_OFFSET(OBJREF, u_objref), &res); if (hr || (res != FIELD_OFFSET(OBJREF, u_objref))) { - ERR("Failed to read common OBJREF header, 0x%08lx\n", hr); + ERR("Failed to read common OBJREF header, 0x%08x\n", hr); return STG_E_READFAULT; } @@ -1270,7 +1507,7 @@ static HRESULT get_unmarshaler_from_stream(IStream *stream, IMarshal **marshal, custom_header_size, &res); if (hr || (res != custom_header_size)) { - ERR("Failed to read OR_CUSTOM header, 0x%08lx\n", hr); + ERR("Failed to read OR_CUSTOM header, 0x%08x\n", hr); return STG_E_READFAULT; } /* now create the marshaler specified in the stream */ @@ -1286,7 +1523,7 @@ static HRESULT get_unmarshaler_from_stream(IStream *stream, IMarshal **marshal, } if (hr) - ERR("Failed to create marshal, 0x%08lx\n", hr); + ERR("Failed to create marshal, 0x%08x\n", hr); return hr; } @@ -1327,20 +1564,20 @@ HRESULT WINAPI CoGetMarshalSizeMax(ULONG *pulSize, REFIID riid, IUnknown *pUnk, pvDestContext, mshlFlags, &marshaler_clsid); if (hr) { - ERR("IMarshal::GetUnmarshalClass failed, 0x%08lx\n", hr); + ERR("IMarshal::GetUnmarshalClass failed, 0x%08x\n", hr); IMarshal_Release(pMarshal); return hr; } hr = IMarshal_GetMarshalSizeMax(pMarshal, riid, pUnk, dwDestContext, pvDestContext, mshlFlags, pulSize); - /* add on the size of the common header */ - *pulSize += FIELD_OFFSET(OBJREF, u_objref); - - /* if custom marshaling, add on size of custom header */ - if (!IsEqualCLSID(&marshaler_clsid, &CLSID_DfMarshal)) - *pulSize += FIELD_OFFSET(OBJREF, u_objref.u_custom.pData) - - FIELD_OFFSET(OBJREF, u_objref.u_custom); + if (IsEqualCLSID(&marshaler_clsid, &CLSID_DfMarshal)) + /* add on the size of the common header */ + *pulSize += FIELD_OFFSET(OBJREF, u_objref); + else + /* custom marshaling: add on the size of the whole OBJREF structure + * like native does */ + *pulSize += sizeof(OBJREF); IMarshal_Release(pMarshal); return hr; @@ -1400,12 +1637,12 @@ HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, OBJREF objref; LPMARSHAL pMarshal; - TRACE("(%p, %s, %p, %lx, %p,", pStream, debugstr_guid(riid), pUnk, + TRACE("(%p, %s, %p, %x, %p,", pStream, debugstr_guid(riid), pUnk, dwDestContext, pvDestContext); dump_MSHLFLAGS(mshlFlags); TRACE(")\n"); - if (pUnk == NULL) + if (!pUnk || !pStream) return E_INVALIDARG; objref.signature = OBJREF_SIGNATURE; @@ -1415,7 +1652,7 @@ HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, hr = get_marshaler(riid, pUnk, dwDestContext, pvDestContext, mshlFlags, &pMarshal); if (hr) { - ERR("Failed to get marshaller, 0x%08lx\n", hr); + ERR("Failed to get marshaller, 0x%08x\n", hr); return hr; } @@ -1423,7 +1660,7 @@ HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, pvDestContext, mshlFlags, &marshaler_clsid); if (hr) { - ERR("IMarshal::GetUnmarshalClass failed, 0x%08lx\n", hr); + ERR("IMarshal::GetUnmarshalClass failed, 0x%08x\n", hr); goto cleanup; } @@ -1437,7 +1674,7 @@ HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, hr = IStream_Write(pStream, &objref, FIELD_OFFSET(OBJREF, u_objref), NULL); if (hr) { - ERR("Failed to write OBJREF header to stream, 0x%08lx\n", hr); + ERR("Failed to write OBJREF header to stream, 0x%08x\n", hr); goto cleanup; } } @@ -1453,7 +1690,7 @@ HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, &objref.u_objref.u_custom.size); if (hr) { - ERR("Failed to get max size of marshal data, error 0x%08lx\n", hr); + ERR("Failed to get max size of marshal data, error 0x%08x\n", hr); goto cleanup; } /* write constant sized common header and OR_CUSTOM data into stream */ @@ -1461,7 +1698,7 @@ HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, FIELD_OFFSET(OBJREF, u_objref.u_custom.pData), NULL); if (hr) { - ERR("Failed to write OR_CUSTOM header to stream with 0x%08lx\n", hr); + ERR("Failed to write OR_CUSTOM header to stream with 0x%08x\n", hr); goto cleanup; } } @@ -1473,14 +1710,14 @@ HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, if (hr) { - ERR("Failed to marshal the interface %s, %lx\n", debugstr_guid(riid), hr); + ERR("Failed to marshal the interface %s, %x\n", debugstr_guid(riid), hr); goto cleanup; } cleanup: IMarshal_Release(pMarshal); - TRACE("completed with hr 0x%08lx\n", hr); + TRACE("completed with hr 0x%08x\n", hr); return hr; } @@ -1514,6 +1751,9 @@ HRESULT WINAPI CoUnmarshalInterface(IStream *pStream, REFIID riid, LPVOID *ppv) TRACE("(%p, %s, %p)\n", pStream, debugstr_guid(riid), ppv); + if (!pStream || !ppv) + return E_INVALIDARG; + hr = get_unmarshaler_from_stream(pStream, &pMarshal, &iid); if (hr != S_OK) return hr; @@ -1521,20 +1761,17 @@ HRESULT WINAPI CoUnmarshalInterface(IStream *pStream, REFIID riid, LPVOID *ppv) /* call the helper object to do the actual unmarshaling */ hr = IMarshal_UnmarshalInterface(pMarshal, pStream, &iid, (LPVOID*)&object); if (hr) - ERR("IMarshal::UnmarshalInterface failed, 0x%08lx\n", hr); - - /* IID_NULL means use the interface ID of the marshaled object */ - if (!IsEqualIID(riid, &IID_NULL)) - iid = *riid; + ERR("IMarshal::UnmarshalInterface failed, 0x%08x\n", hr); if (hr == S_OK) { - if (!IsEqualIID(riid, &iid)) + /* IID_NULL means use the interface ID of the marshaled object */ + if (!IsEqualIID(riid, &IID_NULL) && !IsEqualIID(riid, &iid)) { TRACE("requested interface != marshalled interface, additional QI needed\n"); - hr = IUnknown_QueryInterface(object, &iid, ppv); + hr = IUnknown_QueryInterface(object, riid, ppv); if (hr) - ERR("Couldn't query for interface %s, hr = 0x%08lx\n", + ERR("Couldn't query for interface %s, hr = 0x%08x\n", debugstr_guid(riid), hr); IUnknown_Release(object); } @@ -1546,7 +1783,7 @@ HRESULT WINAPI CoUnmarshalInterface(IStream *pStream, REFIID riid, LPVOID *ppv) IMarshal_Release(pMarshal); - TRACE("completed with hr 0x%lx\n", hr); + TRACE("completed with hr 0x%x\n", hr); return hr; } @@ -1588,7 +1825,7 @@ HRESULT WINAPI CoReleaseMarshalData(IStream *pStream) /* call the helper object to do the releasing of marshal data */ hr = IMarshal_ReleaseMarshalData(pMarshal, pStream); if (hr) - ERR("IMarshal::ReleaseMarshalData failed with error 0x%08lx\n", hr); + ERR("IMarshal::ReleaseMarshalData failed with error 0x%08x\n", hr); IMarshal_Release(pMarshal); return hr; @@ -1603,7 +1840,7 @@ HRESULT WINAPI CoReleaseMarshalData(IStream *pStream) * PARAMS * riid [I] Identifier of the interface to be marshalled. * pUnk [I] Pointer to IUnknown-derived interface that will be marshalled. - * ppStm [O] Pointer to IStream object that is created and then used to store the marshalled inteface. + * ppStm [O] Pointer to IStream object that is created and then used to store the marshalled interface. * * RETURNS * Success: S_OK @@ -1628,7 +1865,7 @@ HRESULT WINAPI CoMarshalInterThreadInterfaceInStream( if (SUCCEEDED(hres)) { memset(&seekto, 0, sizeof(seekto)); - IStream_Seek(*ppStm, seekto, SEEK_SET, &xpos); + IStream_Seek(*ppStm, seekto, STREAM_SEEK_SET, &xpos); } else { @@ -1642,10 +1879,10 @@ HRESULT WINAPI CoMarshalInterThreadInterfaceInStream( /*********************************************************************** * CoGetInterfaceAndReleaseStream [OLE32.@] * - * Unmarshalls an inteface from a stream and then releases the stream. + * Unmarshalls an interface from a stream and then releases the stream. * * PARAMS - * pStm [I] Stream that contains the marshalled inteface. + * pStm [I] Stream that contains the marshalled interface. * riid [I] Interface identifier of the object to unmarshall. * ppv [O] Address of pointer where the requested interface object will be stored. * @@ -1654,7 +1891,7 @@ HRESULT WINAPI CoMarshalInterThreadInterfaceInStream( * Failure: A COM error code * * SEE ALSO - * CoMarshalInterThreadInterfaceInStream() and CoUnmarshalInteface() + * CoMarshalInterThreadInterfaceInStream() and CoUnmarshalInterface() */ HRESULT WINAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID riid, LPVOID *ppv) @@ -1663,6 +1900,7 @@ HRESULT WINAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID riid, TRACE("(%p, %s, %p)\n", pStm, debugstr_guid(riid), ppv); + if(!pStm) return E_INVALIDARG; hres = CoUnmarshalInterface(pStm, riid, ppv); IStream_Release(pStm); return hres; diff --git a/reactos/dll/win32/ole32/memlockbytes.c b/reactos/dll/win32/ole32/memlockbytes.c index 2b5503475d7..57c5b0bfa4f 100644 --- a/reactos/dll/win32/ole32/memlockbytes.c +++ b/reactos/dll/win32/ole32/memlockbytes.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -43,7 +43,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); /****************************************************************************** * HGLOBALLockBytesImpl definition. * - * This class imlements the ILockBytes inteface and represents a byte array + * This class implements the ILockBytes interface and represents a byte array * object supported by an HGLOBAL pointer. */ struct HGLOBALLockBytesImpl @@ -81,77 +81,15 @@ typedef struct HGLOBALLockBytesImpl HGLOBALLockBytesImpl; /* * Method definition for the HGLOBALLockBytesImpl class. */ -HGLOBALLockBytesImpl* HGLOBALLockBytesImpl_Construct( +static HGLOBALLockBytesImpl* HGLOBALLockBytesImpl_Construct( HGLOBAL hGlobal, BOOL fDeleteOnRelease); -void HGLOBALLockBytesImpl_Destroy(HGLOBALLockBytesImpl* This); +static void HGLOBALLockBytesImpl_Destroy(HGLOBALLockBytesImpl* This); -HRESULT WINAPI HGLOBALLockBytesImpl_QueryInterface( - ILockBytes* iface, - REFIID riid, /* [in] */ - void** ppvObject); /* [iid_is][out] */ +static HRESULT WINAPI HGLOBALLockBytesImpl_SetSize( ILockBytes* iface, ULARGE_INTEGER libNewSize ); -ULONG WINAPI HGLOBALLockBytesImpl_AddRef( - ILockBytes* iface); - -ULONG WINAPI HGLOBALLockBytesImpl_Release( - ILockBytes* iface); - -HRESULT WINAPI HGLOBALLockBytesImpl_ReadAt( - ILockBytes* iface, - ULARGE_INTEGER ulOffset, /* [in] */ - void* pv, /* [length_is][size_is][out] */ - ULONG cb, /* [in] */ - ULONG* pcbRead); /* [out] */ - -HRESULT WINAPI HGLOBALLockBytesImpl_WriteAt( - ILockBytes* iface, - ULARGE_INTEGER ulOffset, /* [in] */ - const void* pv, /* [size_is][in] */ - ULONG cb, /* [in] */ - ULONG* pcbWritten); /* [out] */ - -HRESULT WINAPI HGLOBALLockBytesImpl_Flush( - ILockBytes* iface); - -HRESULT WINAPI HGLOBALLockBytesImpl_SetSize( - ILockBytes* iface, - ULARGE_INTEGER libNewSize); /* [in] */ - -HRESULT WINAPI HGLOBALLockBytesImpl_LockRegion( - ILockBytes* iface, - ULARGE_INTEGER libOffset, /* [in] */ - ULARGE_INTEGER cb, /* [in] */ - DWORD dwLockType); /* [in] */ - -HRESULT WINAPI HGLOBALLockBytesImpl_UnlockRegion( - ILockBytes* iface, - ULARGE_INTEGER libOffset, /* [in] */ - ULARGE_INTEGER cb, /* [in] */ - DWORD dwLockType); /* [in] */ - -HRESULT WINAPI HGLOBALLockBytesImpl_Stat( - ILockBytes* iface, - STATSTG* pstatstg, /* [out] */ - DWORD grfStatFlag); /* [in] */ - -/* - * Virtual function table for the HGLOBALLockBytesImpl class. - */ -static const ILockBytesVtbl HGLOBALLockBytesImpl_Vtbl = -{ - HGLOBALLockBytesImpl_QueryInterface, - HGLOBALLockBytesImpl_AddRef, - HGLOBALLockBytesImpl_Release, - HGLOBALLockBytesImpl_ReadAt, - HGLOBALLockBytesImpl_WriteAt, - HGLOBALLockBytesImpl_Flush, - HGLOBALLockBytesImpl_SetSize, - HGLOBALLockBytesImpl_LockRegion, - HGLOBALLockBytesImpl_UnlockRegion, - HGLOBALLockBytesImpl_Stat, -}; +static const ILockBytesVtbl HGLOBALLockBytesImpl_Vtbl; /****************************************************************************** * CreateILockBytesOnHGlobal [OLE32.@] @@ -224,10 +162,10 @@ HRESULT WINAPI GetHGlobalFromILockBytes(ILockBytes* plkbyt, HGLOBAL* phglobal) /* It is not our lockbytes implementation, so use a more generic way */ hres = ILockBytes_Stat(plkbyt,&stbuf,0); if (hres != S_OK) { - ERR("Cannot ILockBytes_Stat, %lx\n",hres); + ERR("Cannot ILockBytes_Stat, %x\n",hres); return hres; } - FIXME("cbSize is %ld\n",stbuf.cbSize.u.LowPart); + FIXME("cbSize is %d\n",stbuf.cbSize.u.LowPart); *phglobal = GlobalAlloc( GMEM_MOVEABLE|GMEM_SHARE, stbuf.cbSize.u.LowPart); if (!*phglobal) return E_INVALIDARG; @@ -235,11 +173,11 @@ HRESULT WINAPI GetHGlobalFromILockBytes(ILockBytes* plkbyt, HGLOBAL* phglobal) hres = ILockBytes_ReadAt(plkbyt, start, GlobalLock(*phglobal), stbuf.cbSize.u.LowPart, &xread); GlobalUnlock(*phglobal); if (hres != S_OK) { - FIXME("%p->ReadAt failed with %lx\n",plkbyt,hres); + FIXME("%p->ReadAt failed with %x\n",plkbyt,hres); return hres; } if (stbuf.cbSize.u.LowPart != xread) { - FIXME("Read size is not requested size %ld vs %ld?\n",stbuf.cbSize.u.LowPart, xread); + FIXME("Read size is not requested size %d vs %d?\n",stbuf.cbSize.u.LowPart, xread); } return S_OK; } @@ -258,8 +196,8 @@ HRESULT WINAPI GetHGlobalFromILockBytes(ILockBytes* plkbyt, HGLOBAL* phglobal) * fDeleteOnRelease [ I] Flag set to TRUE if the HGLOBAL will be released * when the IStream object is destroyed. */ -HGLOBALLockBytesImpl* HGLOBALLockBytesImpl_Construct(HGLOBAL hGlobal, - BOOL fDeleteOnRelease) +static HGLOBALLockBytesImpl* HGLOBALLockBytesImpl_Construct(HGLOBAL hGlobal, + BOOL fDeleteOnRelease) { HGLOBALLockBytesImpl* newLockBytes; newLockBytes = HeapAlloc(GetProcessHeap(), 0, sizeof(HGLOBALLockBytesImpl)); @@ -306,7 +244,7 @@ HGLOBALLockBytesImpl* HGLOBALLockBytesImpl_Construct(HGLOBAL hGlobal, * HGLOBALLockBytesImpl class. The pointer passed-in to this function will be * freed and will not be valid anymore. */ -void HGLOBALLockBytesImpl_Destroy(HGLOBALLockBytesImpl* This) +static void HGLOBALLockBytesImpl_Destroy(HGLOBALLockBytesImpl* This) { /* * Release the HGlobal if the constructor asked for that. @@ -327,7 +265,7 @@ void HGLOBALLockBytesImpl_Destroy(HGLOBALLockBytesImpl* This) * This implements the IUnknown method QueryInterface for this * class */ -HRESULT WINAPI HGLOBALLockBytesImpl_QueryInterface( +static HRESULT WINAPI HGLOBALLockBytesImpl_QueryInterface( ILockBytes* iface, REFIID riid, /* [in] */ void** ppvObject) /* [iid_is][out] */ @@ -348,11 +286,8 @@ HRESULT WINAPI HGLOBALLockBytesImpl_QueryInterface( /* * Compare the riid with the interface IDs implemented by this object. */ - if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0) - { - *ppvObject = (ILockBytes*)This; - } - else if (memcmp(&IID_ILockBytes, riid, sizeof(IID_ILockBytes)) == 0) + if (IsEqualIID(riid, &IID_IUnknown) || + IsEqualIID(riid, &IID_ILockBytes)) { *ppvObject = (ILockBytes*)This; } @@ -367,7 +302,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl_QueryInterface( * Query Interface always increases the reference count by one when it is * successful */ - HGLOBALLockBytesImpl_AddRef(iface); + IUnknown_AddRef(iface); return S_OK; } @@ -376,7 +311,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl_QueryInterface( * This implements the IUnknown method AddRef for this * class */ -ULONG WINAPI HGLOBALLockBytesImpl_AddRef(ILockBytes* iface) +static ULONG WINAPI HGLOBALLockBytesImpl_AddRef(ILockBytes* iface) { HGLOBALLockBytesImpl* const This=(HGLOBALLockBytesImpl*)iface; return InterlockedIncrement(&This->ref); @@ -386,7 +321,7 @@ ULONG WINAPI HGLOBALLockBytesImpl_AddRef(ILockBytes* iface) * This implements the IUnknown method Release for this * class */ -ULONG WINAPI HGLOBALLockBytesImpl_Release(ILockBytes* iface) +static ULONG WINAPI HGLOBALLockBytesImpl_Release(ILockBytes* iface) { HGLOBALLockBytesImpl* const This=(HGLOBALLockBytesImpl*)iface; ULONG ref; @@ -412,7 +347,7 @@ ULONG WINAPI HGLOBALLockBytesImpl_Release(ILockBytes* iface) * * See the documentation of ILockBytes for more info. */ -HRESULT WINAPI HGLOBALLockBytesImpl_ReadAt( +static HRESULT WINAPI HGLOBALLockBytesImpl_ReadAt( ILockBytes* iface, ULARGE_INTEGER ulOffset, /* [in] */ void* pv, /* [length_is][size_is][out] */ @@ -484,7 +419,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl_ReadAt( * * See the documentation of ILockBytes for more info. */ -HRESULT WINAPI HGLOBALLockBytesImpl_WriteAt( +static HRESULT WINAPI HGLOBALLockBytesImpl_WriteAt( ILockBytes* iface, ULARGE_INTEGER ulOffset, /* [in] */ const void* pv, /* [size_is][in] */ @@ -549,7 +484,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl_WriteAt( * * See the documentation of ILockBytes for more info. */ -HRESULT WINAPI HGLOBALLockBytesImpl_Flush(ILockBytes* iface) +static HRESULT WINAPI HGLOBALLockBytesImpl_Flush(ILockBytes* iface) { return S_OK; } @@ -561,7 +496,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl_Flush(ILockBytes* iface) * * See the documentation of ILockBytes for more info. */ -HRESULT WINAPI HGLOBALLockBytesImpl_SetSize( +static HRESULT WINAPI HGLOBALLockBytesImpl_SetSize( ILockBytes* iface, ULARGE_INTEGER libNewSize) /* [in] */ { @@ -598,7 +533,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl_SetSize( * * See the documentation of ILockBytes for more info. */ -HRESULT WINAPI HGLOBALLockBytesImpl_LockRegion( +static HRESULT WINAPI HGLOBALLockBytesImpl_LockRegion( ILockBytes* iface, ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ @@ -614,7 +549,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl_LockRegion( * * See the documentation of ILockBytes for more info. */ -HRESULT WINAPI HGLOBALLockBytesImpl_UnlockRegion( +static HRESULT WINAPI HGLOBALLockBytesImpl_UnlockRegion( ILockBytes* iface, ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ @@ -631,7 +566,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl_UnlockRegion( * * See the documentation of ILockBytes for more info. */ -HRESULT WINAPI HGLOBALLockBytesImpl_Stat( +static HRESULT WINAPI HGLOBALLockBytesImpl_Stat( ILockBytes* iface, STATSTG* pstatstg, /* [out] */ DWORD grfStatFlag) /* [in] */ @@ -646,3 +581,20 @@ HRESULT WINAPI HGLOBALLockBytesImpl_Stat( return S_OK; } + +/* + * Virtual function table for the HGLOBALLockBytesImpl class. + */ +static const ILockBytesVtbl HGLOBALLockBytesImpl_Vtbl = +{ + HGLOBALLockBytesImpl_QueryInterface, + HGLOBALLockBytesImpl_AddRef, + HGLOBALLockBytesImpl_Release, + HGLOBALLockBytesImpl_ReadAt, + HGLOBALLockBytesImpl_WriteAt, + HGLOBALLockBytesImpl_Flush, + HGLOBALLockBytesImpl_SetSize, + HGLOBALLockBytesImpl_LockRegion, + HGLOBALLockBytesImpl_UnlockRegion, + HGLOBALLockBytesImpl_Stat, +}; diff --git a/reactos/dll/win32/ole32/memlockbytes16.c b/reactos/dll/win32/ole32/memlockbytes16.c index 61078f8fede..bccb953c735 100644 --- a/reactos/dll/win32/ole32/memlockbytes16.c +++ b/reactos/dll/win32/ole32/memlockbytes16.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -43,7 +43,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); /****************************************************************************** * HGLOBALLockBytesImpl16 definition. * - * This class imlements the ILockBytes inteface and represents a byte array + * This class implements the ILockBytes interface and represents a byte array * object supported by an HGLOBAL pointer. */ struct HGLOBALLockBytesImpl16 @@ -174,7 +174,7 @@ static void HGLOBALLockBytesImpl16_Destroy(HGLOBALLockBytesImpl16* This) * This implements the IUnknown method AddRef for this * class */ -ULONG HGLOBALLockBytesImpl16_AddRef(ILockBytes16* iface) +ULONG CDECL HGLOBALLockBytesImpl16_AddRef(ILockBytes16* iface) { HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface; @@ -188,7 +188,7 @@ ULONG HGLOBALLockBytesImpl16_AddRef(ILockBytes16* iface) * This implements the IUnknown method QueryInterface for this * class */ -HRESULT HGLOBALLockBytesImpl16_QueryInterface( +HRESULT CDECL HGLOBALLockBytesImpl16_QueryInterface( ILockBytes16* iface, /* [in] SEGPTR */ REFIID riid, /* [in] */ void** ppvObject) /* [out][iid_is] (ptr to SEGPTR!) */ @@ -235,7 +235,7 @@ HRESULT HGLOBALLockBytesImpl16_QueryInterface( * This implements the IUnknown method Release for this * class */ -ULONG HGLOBALLockBytesImpl16_Release(ILockBytes16* iface) +ULONG CDECL HGLOBALLockBytesImpl16_Release(ILockBytes16* iface) { HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface; ULONG ref; @@ -260,7 +260,7 @@ ULONG HGLOBALLockBytesImpl16_Release(ILockBytes16* iface) * * See the documentation of ILockBytes for more info. */ -HRESULT HGLOBALLockBytesImpl16_ReadAt( +HRESULT CDECL HGLOBALLockBytesImpl16_ReadAt( ILockBytes16* iface, ULARGE_INTEGER ulOffset, /* [in] */ void* pv, /* [out][length_is][size_is] */ @@ -273,7 +273,7 @@ HRESULT HGLOBALLockBytesImpl16_ReadAt( ULONG bytesReadBuffer = 0; ULONG bytesToReadFromBuffer; - TRACE("(%p,%ld,%p,%ld,%p)\n",This,ulOffset.u.LowPart,pv,cb,pcbRead); + TRACE("(%p,%d,%p,%d,%p)\n",This,ulOffset.u.LowPart,pv,cb,pcbRead); /* * If the caller is not interested in the number of bytes read, * we use another buffer to avoid "if" statements in the code. @@ -332,14 +332,14 @@ HRESULT HGLOBALLockBytesImpl16_ReadAt( * * See the documentation of ILockBytes for more info. */ -HRESULT HGLOBALLockBytesImpl16_SetSize( +HRESULT CDECL HGLOBALLockBytesImpl16_SetSize( ILockBytes16* iface, ULARGE_INTEGER libNewSize) /* [in] */ { HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface; HGLOBAL16 supportHandle; - TRACE("(%p,%ld)\n",This,libNewSize.u.LowPart); + TRACE("(%p,%d)\n",This,libNewSize.u.LowPart); /* * As documented. */ @@ -371,7 +371,7 @@ HRESULT HGLOBALLockBytesImpl16_SetSize( * * See the documentation of ILockBytes for more info. */ -HRESULT HGLOBALLockBytesImpl16_WriteAt( +HRESULT CDECL HGLOBALLockBytesImpl16_WriteAt( ILockBytes16* iface, ULARGE_INTEGER ulOffset, /* [in] */ const void* pv, /* [in][size_is] */ @@ -384,7 +384,7 @@ HRESULT HGLOBALLockBytesImpl16_WriteAt( ULARGE_INTEGER newSize; ULONG bytesWritten = 0; - TRACE("(%p,%ld,%p,%ld,%p)\n",This,ulOffset.u.LowPart,pv,cb,pcbWritten); + TRACE("(%p,%d,%p,%d,%p)\n",This,ulOffset.u.LowPart,pv,cb,pcbWritten); /* * If the caller is not interested in the number of bytes written, * we use another buffer to avoid "if" statements in the code. @@ -433,7 +433,7 @@ HRESULT HGLOBALLockBytesImpl16_WriteAt( * * See the documentation of ILockBytes for more info. */ -HRESULT HGLOBALLockBytesImpl16_Flush(ILockBytes16* iface) +HRESULT CDECL HGLOBALLockBytesImpl16_Flush(ILockBytes16* iface) { TRACE("(%p)\n",iface); return S_OK; @@ -446,7 +446,7 @@ HRESULT HGLOBALLockBytesImpl16_Flush(ILockBytes16* iface) * * See the documentation of ILockBytes for more info. */ -HRESULT HGLOBALLockBytesImpl16_LockRegion( +HRESULT CDECL HGLOBALLockBytesImpl16_LockRegion( ILockBytes16* iface, ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ @@ -462,7 +462,7 @@ HRESULT HGLOBALLockBytesImpl16_LockRegion( * * See the documentation of ILockBytes for more info. */ -HRESULT HGLOBALLockBytesImpl16_UnlockRegion( +HRESULT CDECL HGLOBALLockBytesImpl16_UnlockRegion( ILockBytes16* iface, ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ @@ -479,7 +479,7 @@ HRESULT HGLOBALLockBytesImpl16_UnlockRegion( * * See the documentation of ILockBytes for more info. */ -HRESULT HGLOBALLockBytesImpl16_Stat( +HRESULT CDECL HGLOBALLockBytesImpl16_Stat( ILockBytes16*iface, STATSTG16* pstatstg, /* [out] */ DWORD grfStatFlag) /* [in] */ diff --git a/reactos/dll/win32/ole32/moniker.c b/reactos/dll/win32/ole32/moniker.c index a7425f13002..a4d2a5efc59 100644 --- a/reactos/dll/win32/ole32/moniker.c +++ b/reactos/dll/win32/ole32/moniker.c @@ -4,6 +4,7 @@ * Copyright 1998 Marcus Meissner * Copyright 1999 Noomen Hamza * Copyright 2005 Robert Shearman (for CodeWeavers) + * Copyright 2007 Robert Shearman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -17,7 +18,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * TODO: * - IRunningObjectTable should work interprocess, but currently doesn't. @@ -40,11 +41,17 @@ #include "wine/list.h" #include "wine/debug.h" +#include "wine/unicode.h" #include "compobj_private.h" +#include "moniker.h" WINE_DEFAULT_DEBUG_CHANNEL(ole); +/* see MSDN docs for IROTData::GetComparisonData, which states what this + * constant is (http://msdn2.microsoft.com/en-us/library/ms693773.aspx) */ +#define MAX_COMPARISON_DATA 2048 + /* define the structure of the running object table elements */ struct rot_entry { @@ -139,26 +146,77 @@ static HRESULT get_moniker_comparison_data(IMoniker *pMoniker, MInterfacePointer { HRESULT hr; IROTData *pROTData = NULL; - ULONG size = 0; hr = IMoniker_QueryInterface(pMoniker, &IID_IROTData, (void *)&pROTData); - if (hr != S_OK) + if (SUCCEEDED(hr)) { - ERR("Failed to query moniker for IROTData interface, hr = 0x%08lx\n", hr); - return hr; + ULONG size = MAX_COMPARISON_DATA; + *moniker_data = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(MInterfacePointer, abData[size])); + hr = IROTData_GetComparisonData(pROTData, (*moniker_data)->abData, size, &size); + if (hr != S_OK) + { + ERR("Failed to copy comparison data into buffer, hr = 0x%08x\n", hr); + HeapFree(GetProcessHeap(), 0, *moniker_data); + return hr; + } + (*moniker_data)->ulCntData = size; } - IROTData_GetComparisonData(pROTData, NULL, 0, &size); - *moniker_data = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(MInterfacePointer, abData[size])); - (*moniker_data)->ulCntData = size; - hr = IROTData_GetComparisonData(pROTData, (*moniker_data)->abData, size, &size); - if (hr != S_OK) + else { - ERR("Failed to copy comparison data into buffer, hr = 0x%08lx\n", hr); - HeapFree(GetProcessHeap(), 0, *moniker_data); - return hr; + IBindCtx *pbc; + LPOLESTR pszDisplayName; + CLSID clsid; + int len; + + TRACE("generating comparison data from display name\n"); + + hr = CreateBindCtx(0, &pbc); + if (FAILED(hr)) + return hr; + hr = IMoniker_GetDisplayName(pMoniker, pbc, NULL, &pszDisplayName); + IBindCtx_Release(pbc); + if (FAILED(hr)) + return hr; + hr = IMoniker_GetClassID(pMoniker, &clsid); + if (FAILED(hr)) + { + CoTaskMemFree(pszDisplayName); + return hr; + } + + len = strlenW(pszDisplayName); + *moniker_data = HeapAlloc(GetProcessHeap(), 0, + FIELD_OFFSET(MInterfacePointer, abData[sizeof(CLSID) + (len+1)*sizeof(WCHAR)])); + if (!*moniker_data) + { + CoTaskMemFree(pszDisplayName); + return E_OUTOFMEMORY; + } + (*moniker_data)->ulCntData = sizeof(CLSID) + (len+1)*sizeof(WCHAR); + + memcpy(&(*moniker_data)->abData[0], &clsid, sizeof(clsid)); + memcpy(&(*moniker_data)->abData[sizeof(clsid)], pszDisplayName, (len+1)*sizeof(WCHAR)); } return S_OK; } +static HRESULT reduce_moniker(IMoniker *pmk, IBindCtx *pbc, IMoniker **pmkReduced) +{ + IBindCtx *pbcNew = NULL; + HRESULT hr; + if (!pbc) + { + hr = CreateBindCtx(0, &pbcNew); + if (FAILED(hr)) + return hr; + pbc = pbcNew; + } + hr = IMoniker_Reduce(pmk, pbc, MKRREDUCE_ALL, NULL, pmkReduced); + if (FAILED(hr)) + ERR("reducing moniker failed with error 0x%08x\n", hr); + if (pbcNew) IBindCtx_Release(pbcNew); + return hr; +} + /*********************************************************************** * RunningObjectTable_QueryInterface */ @@ -223,6 +281,9 @@ RunningObjectTableImpl_Destroy(void) rot_entry_delete(rot_entry); } + DEBUG_CLEAR_CRITSEC_NAME(&runningObjectTableInstance->lock); + DeleteCriticalSection(&runningObjectTableInstance->lock); + /* free the ROT structure memory */ HeapFree(GetProcessHeap(),0,runningObjectTableInstance); runningObjectTableInstance = NULL; @@ -279,18 +340,13 @@ RunningObjectTableImpl_Register(IRunningObjectTable* iface, DWORD grfFlags, HRESULT hr = S_OK; IStream *pStream = NULL; DWORD mshlflags; + IBindCtx *pbc; - TRACE("(%p,%ld,%p,%p,%p)\n",This,grfFlags,punkObject,pmkObjectName,pdwRegister); + TRACE("(%p,%d,%p,%p,%p)\n",This,grfFlags,punkObject,pmkObjectName,pdwRegister); - /* - * there's only two types of register : strong and or weak registration - * (only one must be passed on parameter) - */ - if ( ( (grfFlags & ROTFLAGS_REGISTRATIONKEEPSALIVE) || !(grfFlags & ROTFLAGS_ALLOWANYCLIENT)) && - (!(grfFlags & ROTFLAGS_REGISTRATIONKEEPSALIVE) || (grfFlags & ROTFLAGS_ALLOWANYCLIENT)) && - (grfFlags) ) + if (grfFlags & ~(ROTFLAGS_REGISTRATIONKEEPSALIVE|ROTFLAGS_ALLOWANYCLIENT)) { - ERR("Invalid combination of ROTFLAGS: %lx\n", grfFlags); + ERR("Invalid grfFlags: 0x%08x\n", grfFlags & ~(ROTFLAGS_REGISTRATIONKEEPSALIVE|ROTFLAGS_ALLOWANYCLIENT)); return E_INVALIDARG; } @@ -301,8 +357,6 @@ RunningObjectTableImpl_Register(IRunningObjectTable* iface, DWORD grfFlags, if (!rot_entry) return E_OUTOFMEMORY; - CoFileTimeNow(&rot_entry->last_modified); - /* marshal object */ hr = CreateStreamOnHGlobal(NULL, TRUE, &pStream); if (hr != S_OK) @@ -335,10 +389,36 @@ RunningObjectTableImpl_Register(IRunningObjectTable* iface, DWORD grfFlags, return hr; } - hr = get_moniker_comparison_data(pmkObjectName, &rot_entry->moniker_data); + hr = CreateBindCtx(0, &pbc); + if (FAILED(hr)) + { + rot_entry_delete(rot_entry); + return hr; + } + + hr = reduce_moniker(pmkObjectName, pbc, &pmkObjectName); + if (FAILED(hr)) + { + rot_entry_delete(rot_entry); + IBindCtx_Release(pbc); + return hr; + } + + hr = IMoniker_GetTimeOfLastChange(pmkObjectName, pbc, NULL, + &rot_entry->last_modified); + IBindCtx_Release(pbc); + if (FAILED(hr)) + { + CoFileTimeNow(&rot_entry->last_modified); + hr = S_OK; + } + + hr = get_moniker_comparison_data(pmkObjectName, + &rot_entry->moniker_data); if (hr != S_OK) { rot_entry_delete(rot_entry); + IMoniker_Release(pmkObjectName); return hr; } @@ -346,10 +426,12 @@ RunningObjectTableImpl_Register(IRunningObjectTable* iface, DWORD grfFlags, if (hr != S_OK) { rot_entry_delete(rot_entry); + IMoniker_Release(pmkObjectName); return hr; } /* marshal moniker */ - hr = CoMarshalInterface(pStream, &IID_IMoniker, (IUnknown *)pmkObjectName, MSHCTX_LOCAL | MSHCTX_NOSHAREDMEM, NULL, MSHLFLAGS_TABLESTRONG); + hr = CoMarshalInterface(pStream, &IID_IMoniker, (IUnknown *)pmkObjectName, + MSHCTX_LOCAL | MSHCTX_NOSHAREDMEM, NULL, MSHLFLAGS_TABLESTRONG); /* FIXME: a cleaner way would be to create an IStream class that writes * directly to an MInterfacePointer */ if (hr == S_OK) @@ -367,6 +449,7 @@ RunningObjectTableImpl_Register(IRunningObjectTable* iface, DWORD grfFlags, } } IStream_Release(pStream); + IMoniker_Release(pmkObjectName); if (hr != S_OK) { rot_entry_delete(rot_entry); @@ -404,7 +487,7 @@ RunningObjectTableImpl_Revoke( IRunningObjectTable* iface, DWORD dwRegister) RunningObjectTableImpl *This = (RunningObjectTableImpl *)iface; struct rot_entry *rot_entry; - TRACE("(%p,%ld)\n",This,dwRegister); + TRACE("(%p,%d)\n",This,dwRegister); EnterCriticalSection(&This->lock); LIST_FOR_EACH_ENTRY(rot_entry, &This->rot, struct rot_entry, entry) @@ -439,7 +522,11 @@ RunningObjectTableImpl_IsRunning( IRunningObjectTable* iface, IMoniker *pmkObjec TRACE("(%p,%p)\n",This,pmkObjectName); + hr = reduce_moniker(pmkObjectName, NULL, &pmkObjectName); + if (FAILED(hr)) + return hr; hr = get_moniker_comparison_data(pmkObjectName, &moniker_data); + IMoniker_Release(pmkObjectName); if (hr != S_OK) return hr; @@ -448,7 +535,7 @@ RunningObjectTableImpl_IsRunning( IRunningObjectTable* iface, IMoniker *pmkObjec LIST_FOR_EACH_ENTRY(rot_entry, &This->rot, struct rot_entry, entry) { if ((rot_entry->moniker_data->ulCntData == moniker_data->ulCntData) && - !memcmp(moniker_data, rot_entry->moniker_data, moniker_data->ulCntData)) + !memcmp(&moniker_data->abData, &rot_entry->moniker_data->abData, moniker_data->ulCntData)) { hr = S_OK; break; @@ -486,7 +573,11 @@ RunningObjectTableImpl_GetObject( IRunningObjectTable* iface, *ppunkObject = NULL; + hr = reduce_moniker(pmkObjectName, NULL, &pmkObjectName); + if (FAILED(hr)) + return hr; hr = get_moniker_comparison_data(pmkObjectName, &moniker_data); + IMoniker_Release(pmkObjectName); if (hr != S_OK) return hr; @@ -494,7 +585,7 @@ RunningObjectTableImpl_GetObject( IRunningObjectTable* iface, LIST_FOR_EACH_ENTRY(rot_entry, &This->rot, struct rot_entry, entry) { if ((rot_entry->moniker_data->ulCntData == moniker_data->ulCntData) && - !memcmp(moniker_data, rot_entry->moniker_data, moniker_data->ulCntData)) + !memcmp(&moniker_data->abData, &rot_entry->moniker_data->abData, moniker_data->ulCntData)) { IStream *pStream; hr = create_stream_on_mip_ro(rot_entry->object, &pStream); @@ -535,7 +626,7 @@ RunningObjectTableImpl_NoteChangeTime(IRunningObjectTable* iface, RunningObjectTableImpl *This = (RunningObjectTableImpl *)iface; struct rot_entry *rot_entry; - TRACE("(%p,%ld,%p)\n",This,dwRegister,pfiletime); + TRACE("(%p,%d,%p)\n",This,dwRegister,pfiletime); EnterCriticalSection(&This->lock); LIST_FOR_EACH_ENTRY(rot_entry, &This->rot, struct rot_entry, entry) @@ -575,7 +666,11 @@ RunningObjectTableImpl_GetTimeOfLastChange(IRunningObjectTable* iface, if (pmkObjectName==NULL || pfiletime==NULL) return E_INVALIDARG; + hr = reduce_moniker(pmkObjectName, NULL, &pmkObjectName); + if (FAILED(hr)) + return hr; hr = get_moniker_comparison_data(pmkObjectName, &moniker_data); + IMoniker_Release(pmkObjectName); if (hr != S_OK) return hr; @@ -585,7 +680,7 @@ RunningObjectTableImpl_GetTimeOfLastChange(IRunningObjectTable* iface, LIST_FOR_EACH_ENTRY(rot_entry, &This->rot, struct rot_entry, entry) { if ((rot_entry->moniker_data->ulCntData == moniker_data->ulCntData) && - !memcmp(moniker_data, rot_entry->moniker_data, moniker_data->ulCntData)) + !memcmp(&moniker_data->abData, &rot_entry->moniker_data->abData, moniker_data->ulCntData)) { *pfiletime = rot_entry->last_modified; hr = S_OK; @@ -641,70 +736,6 @@ RunningObjectTableImpl_EnumRunning(IRunningObjectTable* iface, return hr; } -/*********************************************************************** - * GetRunningObjectTable (OLE32.@) - */ -HRESULT WINAPI -GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot) -{ - IID riid=IID_IRunningObjectTable; - HRESULT res; - - TRACE("()\n"); - - if (reserved!=0) - return E_UNEXPECTED; - - if(runningObjectTableInstance==NULL) - return CO_E_NOTINITIALIZED; - - res = IRunningObjectTable_QueryInterface((IRunningObjectTable*)runningObjectTableInstance,&riid,(void**)pprot); - - return res; -} - -/****************************************************************************** - * OleRun [OLE32.@] - */ -HRESULT WINAPI OleRun(LPUNKNOWN pUnknown) -{ - IRunnableObject *runable; - IRunnableObject *This = (IRunnableObject *)pUnknown; - LRESULT ret; - - ret = IRunnableObject_QueryInterface(This,&IID_IRunnableObject,(LPVOID*)&runable); - if (ret) - return 0; /* Appears to return no error. */ - ret = IRunnableObject_Run(runable,NULL); - IRunnableObject_Release(runable); - return ret; -} - -/****************************************************************************** - * MkParseDisplayName [OLE32.@] - */ -HRESULT WINAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szUserName, - LPDWORD pchEaten, LPMONIKER *ppmk) -{ - FIXME("(%p, %s, %p, %p): stub.\n", pbc, debugstr_w(szUserName), pchEaten, *ppmk); - - if (!(IsValidInterface((LPUNKNOWN) pbc))) - return E_INVALIDARG; - - return MK_E_SYNTAX; -} - -/****************************************************************************** - * CreateClassMoniker [OLE32.@] - */ -HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, IMoniker ** ppmk) -{ - FIXME("%s\n", debugstr_guid( rclsid )); - if( ppmk ) - *ppmk = NULL; - return E_NOTIMPL; -} - /* Virtual function table for the IRunningObjectTable class. */ static const IRunningObjectTableVtbl VT_RunningObjectTableImpl = { @@ -743,6 +774,7 @@ HRESULT WINAPI RunningObjectTableImpl_Initialize(void) list_init(&runningObjectTableInstance->rot); InitializeCriticalSection(&runningObjectTableInstance->lock); + DEBUG_SET_CRITSEC_NAME(&runningObjectTableInstance->lock, "RunningObjectTableImpl.lock"); return S_OK; } @@ -750,7 +782,7 @@ HRESULT WINAPI RunningObjectTableImpl_Initialize(void) /*********************************************************************** * RunningObjectTable_UnInitialize */ -HRESULT WINAPI RunningObjectTableImpl_UnInitialize() +HRESULT WINAPI RunningObjectTableImpl_UnInitialize(void) { TRACE("\n"); @@ -764,6 +796,265 @@ HRESULT WINAPI RunningObjectTableImpl_UnInitialize() return S_OK; } +/*********************************************************************** + * GetRunningObjectTable (OLE32.@) + * + * Retrieves the global running object table. + * + * PARAMS + * reserved [I] Reserved. Set to 0. + * pprot [O] Address that receives the pointer to the running object table. + * + * RETURNS + * Success: S_OK. + * Failure: Any HRESULT code. + */ +HRESULT WINAPI +GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot) +{ + IID riid=IID_IRunningObjectTable; + HRESULT res; + + TRACE("()\n"); + + if (reserved!=0) + return E_UNEXPECTED; + + if(runningObjectTableInstance==NULL) + return CO_E_NOTINITIALIZED; + + res = IRunningObjectTable_QueryInterface((IRunningObjectTable*)runningObjectTableInstance,&riid,(void**)pprot); + + return res; +} + +static HRESULT get_moniker_for_progid_display_name(LPBC pbc, + LPCOLESTR szDisplayName, + LPDWORD pchEaten, + LPMONIKER *ppmk) +{ + CLSID clsid; + HRESULT hr; + LPWSTR progid; + LPCWSTR start = szDisplayName; + LPCWSTR end; + int len; + IMoniker *class_moniker; + + if (*start == '@') + start++; + + /* find end delimiter */ + for (end = start; *end; end++) + if (*end == ':') + break; + + len = end - start; + + /* must start with '@' or have a ':' somewhere and mustn't be one character + * long (since that looks like an absolute path) */ + if (((start == szDisplayName) && (*end == '\0')) || (len <= 1)) + return MK_E_SYNTAX; + + progid = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); + if (progid) + { + memcpy(progid, start, len * sizeof(WCHAR)); + progid[len] = '\0'; + } + hr = CLSIDFromProgID(progid, &clsid); + HeapFree(GetProcessHeap(), 0, progid); + if (FAILED(hr)) + return MK_E_SYNTAX; + + hr = CreateClassMoniker(&clsid, &class_moniker); + if (SUCCEEDED(hr)) + { + IParseDisplayName *pdn; + hr = IMoniker_BindToObject(class_moniker, pbc, NULL, + &IID_IParseDisplayName, (void **)&pdn); + IMoniker_Release(class_moniker); + if (SUCCEEDED(hr)) + { + hr = IParseDisplayName_ParseDisplayName(pdn, pbc, + (LPOLESTR)szDisplayName, + pchEaten, ppmk); + IParseDisplayName_Release(pdn); + } + } + return hr; +} + +/****************************************************************************** + * MkParseDisplayName [OLE32.@] + */ +HRESULT WINAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szDisplayName, + LPDWORD pchEaten, LPMONIKER *ppmk) +{ + HRESULT hr = MK_E_SYNTAX; + static const WCHAR wszClsidColon[] = {'c','l','s','i','d',':'}; + IMoniker *moniker; + DWORD chEaten; + + TRACE("(%p, %s, %p, %p)\n", pbc, debugstr_w(szDisplayName), pchEaten, ppmk); + + if (!(IsValidInterface((LPUNKNOWN) pbc))) + return E_INVALIDARG; + + *pchEaten = 0; + *ppmk = NULL; + + if (!strncmpiW(szDisplayName, wszClsidColon, sizeof(wszClsidColon)/sizeof(wszClsidColon[0]))) + { + hr = ClassMoniker_CreateFromDisplayName(pbc, szDisplayName, &chEaten, &moniker); + if (FAILED(hr) && (hr != MK_E_SYNTAX)) + return hr; + } + else + { + hr = get_moniker_for_progid_display_name(pbc, szDisplayName, &chEaten, &moniker); + if (FAILED(hr) && (hr != MK_E_SYNTAX)) + return hr; + } + + if (FAILED(hr)) + { + hr = FileMoniker_CreateFromDisplayName(pbc, szDisplayName, &chEaten, &moniker); + if (FAILED(hr) && (hr != MK_E_SYNTAX)) + return hr; + } + + if (SUCCEEDED(hr)) + { + while (TRUE) + { + IMoniker *next_moniker; + *pchEaten += chEaten; + szDisplayName += chEaten; + if (!*szDisplayName) + { + *ppmk = moniker; + return S_OK; + } + chEaten = 0; + hr = IMoniker_ParseDisplayName(moniker, pbc, NULL, + (LPOLESTR)szDisplayName, &chEaten, + &next_moniker); + IMoniker_Release(moniker); + if (FAILED(hr)) + { + *pchEaten = 0; + break; + } + moniker = next_moniker; + } + } + + return hr; +} + +/*********************************************************************** + * GetClassFile (OLE32.@) + * + * Retrieves the class ID associated with the given filename. + * + * PARAMS + * filePathName [I] Filename to retrieve the class ID for. + * pclsid [O] Address that receives the class ID for the file. + * + * RETURNS + * Success: S_OK. + * Failure: Any HRESULT code. + */ +HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid) +{ + IStorage *pstg=0; + HRESULT res; + int nbElm, length, i; + LONG sizeProgId; + LPOLESTR *pathDec=0,absFile=0,progId=0; + LPWSTR extension; + static const WCHAR bkslashW[] = {'\\',0}; + static const WCHAR dotW[] = {'.',0}; + + TRACE("%s, %p\n", debugstr_w(filePathName), pclsid); + + /* if the file contain a storage object the return the CLSID written by IStorage_SetClass method*/ + if((StgIsStorageFile(filePathName))==S_OK){ + + res=StgOpenStorage(filePathName,NULL,STGM_READ | STGM_SHARE_DENY_WRITE,NULL,0,&pstg); + + if (SUCCEEDED(res)) + res=ReadClassStg(pstg,pclsid); + + IStorage_Release(pstg); + + return res; + } + /* if the file is not a storage object then attemps to match various bits in the file against a + pattern in the registry. this case is not frequently used ! so I present only the psodocode for + this case + + for(i=0;i= 0) && *(extension = &absFile[i]) != '.'; i--) + /* nothing */; + + if (!extension || !lstrcmpW(extension, dotW)) + return MK_E_INVALIDEXTENSION; + + res=RegQueryValueW(HKEY_CLASSES_ROOT, extension, NULL, &sizeProgId); + + /* get the progId associated to the extension */ + progId = CoTaskMemAlloc(sizeProgId); + res = RegQueryValueW(HKEY_CLASSES_ROOT, extension, progId, &sizeProgId); + + if (res==ERROR_SUCCESS) + /* return the clsid associated to the progId */ + res= CLSIDFromProgID(progId,pclsid); + + for(i=0; pathDec[i]!=NULL;i++) + CoTaskMemFree(pathDec[i]); + CoTaskMemFree(pathDec); + + CoTaskMemFree(progId); + + if (res==ERROR_SUCCESS) + return res; + + return MK_E_INVALIDEXTENSION; +} + /*********************************************************************** * EnumMoniker_QueryInterface */ @@ -817,7 +1108,7 @@ static ULONG WINAPI EnumMonikerImpl_Release(IEnumMoniker* iface) ref = InterlockedDecrement(&This->ref); - /* unitialize rot structure if there's no more reference to it*/ + /* uninitialize rot structure if there's no more reference to it*/ if (ref == 0) { ULONG i; @@ -841,7 +1132,7 @@ static HRESULT WINAPI EnumMonikerImpl_Next(IEnumMoniker* iface, ULONG celt, IM EnumMonikerImpl *This = (EnumMonikerImpl *)iface; HRESULT hr = S_OK; - TRACE("(%p) TabCurrentPos %ld Tablastindx %ld\n", This, This->pos, This->moniker_count); + TRACE("(%p) TabCurrentPos %d Tablastindx %d\n", This, This->pos, This->moniker_count); /* retrieve the requested number of moniker from the current position */ for(i = 0; (This->pos < This->moniker_count) && (i < celt); i++) @@ -1046,7 +1337,7 @@ static HRESULT WINAPI MonikerMarshal_GetUnmarshalClass( { MonikerMarshal *This = impl_from_IMarshal(iface); - TRACE("(%s, %p, %lx, %p, %lx, %p)\n", debugstr_guid(riid), pv, + TRACE("(%s, %p, %x, %p, %x, %p)\n", debugstr_guid(riid), pv, dwDestContext, pvDestContext, mshlflags, pCid); return IMoniker_GetClassID(This->moniker, pCid); @@ -1060,7 +1351,7 @@ static HRESULT WINAPI MonikerMarshal_GetMarshalSizeMax( HRESULT hr; ULARGE_INTEGER size; - TRACE("(%s, %p, %lx, %p, %lx, %p)\n", debugstr_guid(riid), pv, + TRACE("(%s, %p, %x, %p, %x, %p)\n", debugstr_guid(riid), pv, dwDestContext, pvDestContext, mshlflags, pSize); hr = IMoniker_GetSizeMax(This->moniker, &size); @@ -1075,7 +1366,7 @@ static HRESULT WINAPI MonikerMarshal_MarshalInterface(LPMARSHAL iface, IStream * { MonikerMarshal *This = impl_from_IMarshal(iface); - TRACE("(%p, %s, %p, %lx, %p, %lx)\n", pStm, debugstr_guid(riid), pv, + TRACE("(%p, %s, %p, %x, %p, %x)\n", pStm, debugstr_guid(riid), pv, dwDestContext, pvDestContext, mshlflags); return IMoniker_Save(This->moniker, pStm, FALSE); diff --git a/reactos/dll/win32/ole32/moniker.h b/reactos/dll/win32/ole32/moniker.h index 4c64b9b13ce..d3ce652105d 100644 --- a/reactos/dll/win32/ole32/moniker.h +++ b/reactos/dll/win32/ole32/moniker.h @@ -1,12 +1,47 @@ +/* + * Monikers + * + * Copyright 1998 Marcus Meissner + * Copyright 1999 Noomen Hamza + * Copyright 2005 Robert Shearman (for CodeWeavers) + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + #ifndef __WINE_MONIKER_H__ #define __WINE_MONIKER_H__ -extern const CLSID CLSID_FileMoniker; -extern const CLSID CLSID_ItemMoniker; -extern const CLSID CLSID_AntiMoniker; +DEFINE_OLEGUID( CLSID_FileMoniker, 0x303, 0, 0 ); +DEFINE_OLEGUID( CLSID_ItemMoniker, 0x304, 0, 0 ); +DEFINE_OLEGUID( CLSID_AntiMoniker, 0x305, 0, 0 ); +DEFINE_OLEGUID( CLSID_CompositeMoniker, 0x309, 0, 0 ); +DEFINE_OLEGUID( CLSID_ClassMoniker, 0x31a, 0, 0 ); HRESULT FileMonikerCF_Create(REFIID riid, LPVOID *ppv); HRESULT ItemMonikerCF_Create(REFIID riid, LPVOID *ppv); +HRESULT AntiMonikerCF_Create(REFIID riid, LPVOID *ppv); +HRESULT CompositeMonikerCF_Create(REFIID riid, LPVOID *ppv); +HRESULT ClassMonikerCF_Create(REFIID riid, LPVOID *ppv); + +/* This function decomposes a String path to a String Table containing all the elements ("\" or "subDirectory" or "Directory" or "FileName") of the path */ +int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR** stringTable); + +HRESULT FileMoniker_CreateFromDisplayName(LPBC pbc, LPCOLESTR szDisplayName, + LPDWORD pchEaten, LPMONIKER *ppmk); +HRESULT ClassMoniker_CreateFromDisplayName(LPBC pbc, LPCOLESTR szDisplayName, + LPDWORD pchEaten, LPMONIKER *ppmk); HRESULT MonikerMarshal_Create(IMoniker *inner, IUnknown **outer); diff --git a/reactos/dll/win32/ole32/ole16.c b/reactos/dll/win32/ole32/ole16.c index 117d484a5ec..d9c2202a118 100644 --- a/reactos/dll/win32/ole32/ole16.c +++ b/reactos/dll/win32/ole32/ole16.c @@ -19,7 +19,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -69,7 +69,7 @@ typedef struct /****************************************************************************** * IMalloc16_QueryInterface [COMPOBJ.500] */ -HRESULT IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID *obj) { +HRESULT CDECL IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID *obj) { IMalloc16Impl *This = (IMalloc16Impl *)iface; TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj); @@ -85,7 +85,7 @@ HRESULT IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID *obj) { /****************************************************************************** * IMalloc16_AddRef [COMPOBJ.501] */ -ULONG IMalloc16_fnAddRef(IMalloc16* iface) { +ULONG CDECL IMalloc16_fnAddRef(IMalloc16* iface) { IMalloc16Impl *This = (IMalloc16Impl *)iface; TRACE("(%p)->AddRef()\n",This); return 1; /* cannot be freed */ @@ -94,7 +94,7 @@ ULONG IMalloc16_fnAddRef(IMalloc16* iface) { /****************************************************************************** * IMalloc16_Release [COMPOBJ.502] */ -ULONG IMalloc16_fnRelease(IMalloc16* iface) { +ULONG CDECL IMalloc16_fnRelease(IMalloc16* iface) { IMalloc16Impl *This = (IMalloc16Impl *)iface; TRACE("(%p)->Release()\n",This); return 1; /* cannot be freed */ @@ -103,20 +103,20 @@ ULONG IMalloc16_fnRelease(IMalloc16* iface) { /****************************************************************************** * IMalloc16_Alloc [COMPOBJ.503] */ -SEGPTR IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) { +SEGPTR CDECL IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) { IMalloc16Impl *This = (IMalloc16Impl *)iface; - TRACE("(%p)->Alloc(%ld)\n",This,cb); + TRACE("(%p)->Alloc(%d)\n",This,cb); return MapLS( HeapAlloc( GetProcessHeap(), 0, cb ) ); } /****************************************************************************** * IMalloc16_Free [COMPOBJ.505] */ -VOID IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv) +VOID CDECL IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv) { void *ptr = MapSL(pv); IMalloc16Impl *This = (IMalloc16Impl *)iface; - TRACE("(%p)->Free(%08lx)\n",This,pv); + TRACE("(%p)->Free(%08x)\n",This,pv); UnMapLS(pv); HeapFree( GetProcessHeap(), 0, ptr ); } @@ -124,11 +124,11 @@ VOID IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv) /****************************************************************************** * IMalloc16_Realloc [COMPOBJ.504] */ -SEGPTR IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb) +SEGPTR CDECL IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb) { SEGPTR ret; IMalloc16Impl *This = (IMalloc16Impl *)iface; - TRACE("(%p)->Realloc(%08lx,%ld)\n",This,pv,cb); + TRACE("(%p)->Realloc(%08x,%d)\n",This,pv,cb); if (!pv) ret = IMalloc16_fnAlloc(iface, cb); else if (cb) { @@ -144,17 +144,17 @@ SEGPTR IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb) /****************************************************************************** * IMalloc16_GetSize [COMPOBJ.506] */ -DWORD IMalloc16_fnGetSize(IMalloc16* iface,SEGPTR pv) +DWORD CDECL IMalloc16_fnGetSize(IMalloc16* iface,SEGPTR pv) { IMalloc16Impl *This = (IMalloc16Impl *)iface; - TRACE("(%p)->GetSize(%08lx)\n",This,pv); + TRACE("(%p)->GetSize(%08x)\n",This,pv); return HeapSize( GetProcessHeap(), 0, MapSL(pv) ); } /****************************************************************************** * IMalloc16_DidAlloc [COMPOBJ.507] */ -INT16 IMalloc16_fnDidAlloc(IMalloc16* iface,LPVOID pv) { +INT16 CDECL IMalloc16_fnDidAlloc(IMalloc16* iface,LPVOID pv) { IMalloc16 *This = (IMalloc16 *)iface; TRACE("(%p)->DidAlloc(%p)\n",This,pv); return (INT16)-1; @@ -163,7 +163,7 @@ INT16 IMalloc16_fnDidAlloc(IMalloc16* iface,LPVOID pv) { /****************************************************************************** * IMalloc16_HeapMinimize [COMPOBJ.508] */ -LPVOID IMalloc16_fnHeapMinimize(IMalloc16* iface) { +LPVOID CDECL IMalloc16_fnHeapMinimize(IMalloc16* iface) { IMalloc16Impl *This = (IMalloc16Impl *)iface; TRACE("(%p)->HeapMinimize()\n",This); return NULL; @@ -284,8 +284,62 @@ HRESULT WINAPI CLSIDFromString16( LPCOLESTR16 idstr, /* [in] string representation of guid */ CLSID *id) /* [out] GUID converted from string */ { + const BYTE *s; + int i; + BYTE table[256]; - return __CLSIDFromStringA(idstr,id); + if (!idstr) { + memset( id, 0, sizeof (CLSID) ); + return S_OK; + } + + /* validate the CLSID string */ + if (strlen(idstr) != 38) + return CO_E_CLASSSTRING; + + s = (const BYTE *) idstr; + if ((s[0]!='{') || (s[9]!='-') || (s[14]!='-') || (s[19]!='-') || (s[24]!='-') || (s[37]!='}')) + return CO_E_CLASSSTRING; + + for (i=1; i<37; i++) { + if ((i == 9)||(i == 14)||(i == 19)||(i == 24)) continue; + if (!(((s[i] >= '0') && (s[i] <= '9')) || + ((s[i] >= 'a') && (s[i] <= 'f')) || + ((s[i] >= 'A') && (s[i] <= 'F')))) + return CO_E_CLASSSTRING; + } + + TRACE("%s -> %p\n", s, id); + + /* quick lookup table */ + memset(table, 0, 256); + + for (i = 0; i < 10; i++) { + table['0' + i] = i; + } + for (i = 0; i < 6; i++) { + table['A' + i] = i+10; + table['a' + i] = i+10; + } + + /* in form {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} */ + + id->Data1 = (table[s[1]] << 28 | table[s[2]] << 24 | table[s[3]] << 20 | table[s[4]] << 16 | + table[s[5]] << 12 | table[s[6]] << 8 | table[s[7]] << 4 | table[s[8]]); + id->Data2 = table[s[10]] << 12 | table[s[11]] << 8 | table[s[12]] << 4 | table[s[13]]; + id->Data3 = table[s[15]] << 12 | table[s[16]] << 8 | table[s[17]] << 4 | table[s[18]]; + + /* these are just sequential bytes */ + id->Data4[0] = table[s[20]] << 4 | table[s[21]]; + id->Data4[1] = table[s[22]] << 4 | table[s[23]]; + id->Data4[2] = table[s[25]] << 4 | table[s[26]]; + id->Data4[3] = table[s[27]] << 4 | table[s[28]]; + id->Data4[4] = table[s[29]] << 4 | table[s[30]]; + id->Data4[5] = table[s[31]] << 4 | table[s[32]]; + id->Data4[6] = table[s[33]] << 4 | table[s[34]]; + id->Data4[7] = table[s[35]] << 4 | table[s[36]]; + + return S_OK; } /****************************************************************************** @@ -317,7 +371,7 @@ _xmalloc16(DWORD size, SEGPTR *ptr) { (LPVOID)args, (LPDWORD)ptr )) { - ERR("CallTo16 IMalloc16 (%ld) failed\n",size); + ERR("CallTo16 IMalloc16 (%d) failed\n",size); return E_FAIL; } return S_OK; @@ -429,7 +483,7 @@ HRESULT WINAPI CoRegisterClassObject16( DWORD flags, /* [in] REGCLS flags indicating how connections are made */ LPDWORD lpdwRegister ) { - FIXME("(%s,%p,0x%08lx,0x%08lx,%p),stub\n", + FIXME("(%s,%p,0x%08x,0x%08x,%p),stub\n", debugstr_guid(rclsid),pUnk,dwClsContext,flags,lpdwRegister ); return 0; @@ -441,7 +495,7 @@ HRESULT WINAPI CoRegisterClassObject16( */ HRESULT WINAPI CoRevokeClassObject16(DWORD dwRegister) /* [in] token on class obj */ { - FIXME("(0x%08lx),stub!\n", dwRegister); + FIXME("(0x%08x),stub!\n", dwRegister); return 0; } @@ -504,7 +558,7 @@ HRESULT WINAPI CoGetState16(LPDWORD state) */ BOOL WINAPI COMPOBJ_DllEntryPoint(DWORD Reason, HINSTANCE16 hInst, WORD ds, WORD HeapSize, DWORD res1, WORD res2) { - TRACE("(%08lx, %04x, %04x, %04x, %08lx, %04x)\n", Reason, hInst, ds, HeapSize, res1, res2); + TRACE("(%08x, %04x, %04x, %04x, %08x, %04x)\n", Reason, hInst, ds, HeapSize, res1, res2); return TRUE; } @@ -516,7 +570,7 @@ SEGPTR WINAPI CoMemAlloc(DWORD size, DWORD dwMemContext, DWORD x) { SEGPTR segptr; /* FIXME: check context handling */ - TRACE("(%ld, 0x%08lx, 0x%08lx)\n", size, dwMemContext, x); + TRACE("(%d, 0x%08x, 0x%08x)\n", size, dwMemContext, x); hres = _xmalloc16(size, &segptr); if (hres != S_OK) return (SEGPTR)0; @@ -556,7 +610,7 @@ HRESULT WINAPI CLSIDFromProgID16(LPCOLESTR16 progid, LPCLSID riid) return CO_E_CLASSSTRING; } RegCloseKey(xhkey); - return __CLSIDFromStringA(buf2,riid); + return CLSIDFromString16(buf2,riid); } /*********************************************************************** @@ -586,13 +640,22 @@ HRESULT WINAPI CoCreateInstance16( REFIID iid, LPVOID *ppv) { - FIXME("(%s, %p, %lx, %s, %p), stub!\n", + FIXME("(%s, %p, %x, %s, %p), stub!\n", debugstr_guid(rclsid), pUnkOuter, dwClsContext, debugstr_guid(iid), ppv ); return E_NOTIMPL; } +/*********************************************************************** + * CoDisconnectObject [COMPOBJ.15] + */ +HRESULT WINAPI CoDisconnectObject16( LPUNKNOWN lpUnk, DWORD reserved ) +{ + FIXME("(%p, 0x%08x): stub!\n", lpUnk, reserved); + return E_NOTIMPL; +} + /*********************************************************************** * DllGetClassObject [OLE2.4] */ @@ -608,6 +671,6 @@ HRESULT WINAPI DllGetClassObject16(REFCLSID rclsid, REFIID iid, LPVOID *ppv) HRESULT WINAPI GetRunningObjectTable16(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot) { - FIXME("(%ld,%p),stub!\n",reserved,pprot); + FIXME("(%d,%p),stub!\n",reserved,pprot); return E_NOTIMPL; } diff --git a/reactos/dll/win32/ole32/ole2.c b/reactos/dll/win32/ole32/ole2.c index fd55930203a..908eb09d1d8 100644 --- a/reactos/dll/win32/ole32/ole2.c +++ b/reactos/dll/win32/ole32/ole2.c @@ -19,7 +19,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -48,6 +48,7 @@ #include "wine/unicode.h" #include "compobj_private.h" +#include "wine/list.h" #include "wine/debug.h" @@ -61,9 +62,8 @@ WINE_DECLARE_DEBUG_CHANNEL(accel); typedef struct tagDropTargetNode { HWND hwndTarget; - IDropTarget* dropTarget; - struct tagDropTargetNode* prevDropTarget; - struct tagDropTargetNode* nextDropTarget; + IDropTarget* dropTarget; + struct list entry; } DropTargetNode; typedef struct tagTrackerWindowInfo @@ -107,7 +107,7 @@ static OleMenuHookItem *hook_list; * This is the lock count on the OLE library. It is controlled by the * OLEInitialize/OLEUninitialize methods. */ -static ULONG OLE_moduleLockCount = 0; +static LONG OLE_moduleLockCount = 0; /* * Name of our registered window class. @@ -117,7 +117,7 @@ static const char OLEDD_DRAGTRACKERCLASS[] = "WineDragDropTracker32"; /* * This is the head of the Drop target container. */ -static DropTargetNode* targetListHead = NULL; +static struct list targetListHead = LIST_INIT(targetListHead); /****************************************************************************** * These are the prototypes of miscelaneous utility methods @@ -129,13 +129,13 @@ static void OLEUTL_ReadRegistryDWORDValue(HKEY regKey, DWORD* pdwValue); */ static void OLEMenu_Initialize(void); static void OLEMenu_UnInitialize(void); -BOOL OLEMenu_InstallHooks( DWORD tid ); -BOOL OLEMenu_UnInstallHooks( DWORD tid ); -OleMenuHookItem * OLEMenu_IsHookInstalled( DWORD tid ); +static BOOL OLEMenu_InstallHooks( DWORD tid ); +static BOOL OLEMenu_UnInstallHooks( DWORD tid ); +static OleMenuHookItem * OLEMenu_IsHookInstalled( DWORD tid ); static BOOL OLEMenu_FindMainMenuIndex( HMENU hMainMenu, HMENU hPopupMenu, UINT *pnPos ); -BOOL OLEMenu_SetIsServerMenu( HMENU hmenu, OleMenuDescriptor *pOleMenuDescriptor ); -LRESULT CALLBACK OLEMenu_CallWndProc(INT code, WPARAM wParam, LPARAM lParam); -LRESULT CALLBACK OLEMenu_GetMsgProc(INT code, WPARAM wParam, LPARAM lParam); +static BOOL OLEMenu_SetIsServerMenu( HMENU hmenu, OleMenuDescriptor *pOleMenuDescriptor ); +static LRESULT CALLBACK OLEMenu_CallWndProc(INT code, WPARAM wParam, LPARAM lParam); +static LRESULT CALLBACK OLEMenu_GetMsgProc(INT code, WPARAM wParam, LPARAM lParam); /****************************************************************************** * These are the prototypes of the OLE Clipboard initialization methods (in clipboard.c) @@ -147,13 +147,9 @@ extern void OLEClipbrd_Initialize(void); * These are the prototypes of the utility methods used for OLE Drag n Drop */ static void OLEDD_Initialize(void); -static void OLEDD_UnInitialize(void); -static void OLEDD_InsertDropTarget( - DropTargetNode* nodeToAdd); -static DropTargetNode* OLEDD_ExtractDropTarget( - HWND hwndOfTarget); static DropTargetNode* OLEDD_FindDropTarget( HWND hwndOfTarget); +static void OLEDD_FreeDropTarget(DropTargetNode*); static LRESULT WINAPI OLEDD_DragTrackerWindowProc( HWND hwnd, UINT uMsg, @@ -206,7 +202,8 @@ HRESULT WINAPI OleInitialize(LPVOID reserved) * Object linking and Embedding * In-place activation */ - if (OLE_moduleLockCount==0) + if (!COM_CurrentInfo()->ole_inits++ && + InterlockedIncrement(&OLE_moduleLockCount) == 1) { /* * Initialize the libraries. @@ -229,11 +226,6 @@ HRESULT WINAPI OleInitialize(LPVOID reserved) OLEMenu_Initialize(); } - /* - * Then, we increase the lock count on the OLE module. - */ - OLE_moduleLockCount++; - return hr; } @@ -245,15 +237,10 @@ void WINAPI OleUninitialize(void) { TRACE("()\n"); - /* - * Decrease the lock count on the OLE module. - */ - OLE_moduleLockCount--; - /* * If we hit the bottom of the lock stack, free the libraries. */ - if (OLE_moduleLockCount==0) + if (!--COM_CurrentInfo()->ole_inits && !InterlockedDecrement(&OLE_moduleLockCount)) { /* * Actually free the libraries. @@ -265,11 +252,6 @@ void WINAPI OleUninitialize(void) */ OLEClipbrd_UnInitialize(); - /* - * Drag and Drop - */ - OLEDD_UnInitialize(); - /* * OLE shared menu */ @@ -286,7 +268,7 @@ void WINAPI OleUninitialize(void) * OleInitializeWOW [OLE32.@] */ HRESULT WINAPI OleInitializeWOW(DWORD x, DWORD y) { - FIXME("(0x%08lx, 0x%08lx),stub!\n",x, y); + FIXME("(0x%08x, 0x%08x),stub!\n",x, y); return 0; } @@ -301,9 +283,21 @@ HRESULT WINAPI RegisterDragDrop( TRACE("(%p,%p)\n", hwnd, pDropTarget); + if (!COM_CurrentApt()) + { + ERR("COM not initialized\n"); + return CO_E_NOTINITIALIZED; + } + if (!pDropTarget) return E_INVALIDARG; - + + if (!IsWindow(hwnd)) + { + ERR("invalid hwnd %p\n", hwnd); + return DRAGDROP_E_INVALIDHWND; + } + /* * First, check if the window is already registered. */ @@ -321,19 +315,17 @@ HRESULT WINAPI RegisterDragDrop( return E_OUTOFMEMORY; dropTargetInfo->hwndTarget = hwnd; - dropTargetInfo->prevDropTarget = NULL; - dropTargetInfo->nextDropTarget = NULL; /* * Don't forget that this is an interface pointer, need to nail it down since * we keep a copy of it. */ + IDropTarget_AddRef(pDropTarget); dropTargetInfo->dropTarget = pDropTarget; - IDropTarget_AddRef(dropTargetInfo->dropTarget); - OLEDD_InsertDropTarget(dropTargetInfo); + list_add_tail(&targetListHead, &dropTargetInfo->entry); - return S_OK; + return S_OK; } /*********************************************************************** @@ -346,10 +338,16 @@ HRESULT WINAPI RevokeDragDrop( TRACE("(%p)\n", hwnd); + if (!IsWindow(hwnd)) + { + ERR("invalid hwnd %p\n", hwnd); + return DRAGDROP_E_INVALIDHWND; + } + /* * First, check if the window is already registered. */ - dropTargetInfo = OLEDD_ExtractDropTarget(hwnd); + dropTargetInfo = OLEDD_FindDropTarget(hwnd); /* * If it ain't in there, it's an error. @@ -357,14 +355,9 @@ HRESULT WINAPI RevokeDragDrop( if (dropTargetInfo==NULL) return DRAGDROP_E_NOTREGISTERED; - /* - * If it's in there, clean-up it's used memory and - * references - */ - IDropTarget_Release(dropTargetInfo->dropTarget); - HeapFree(GetProcessHeap(), 0, dropTargetInfo); + OLEDD_FreeDropTarget(dropTargetInfo); - return S_OK; + return S_OK; } /*********************************************************************** @@ -395,12 +388,12 @@ HRESULT WINAPI OleRegGetUserType( /* * Build the key name we're looking for */ - sprintf( keyName, "CLSID\\{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\", + sprintf( keyName, "CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\", clsid->Data1, clsid->Data2, clsid->Data3, clsid->Data4[0], clsid->Data4[1], clsid->Data4[2], clsid->Data4[3], clsid->Data4[4], clsid->Data4[5], clsid->Data4[6], clsid->Data4[7] ); - TRACE("(%s, %ld, %p)\n", keyName, dwFormOfType, pszUserType); + TRACE("(%s, %d, %p)\n", keyName, dwFormOfType, pszUserType); /* * Open the class id Key @@ -526,6 +519,8 @@ HRESULT WINAPI DoDragDrop ( */ SetCapture(hwndTrackWindow); + msg.message = 0; + /* * Pump messages. All mouse input should go the the capture window. */ @@ -564,6 +559,9 @@ HRESULT WINAPI DoDragDrop ( } } + /* re-post the quit message to outer message loop */ + if (msg.message == WM_QUIT) + PostQuitMessage(msg.wParam); /* * Destroy the temporary window. */ @@ -607,12 +605,12 @@ HRESULT WINAPI OleRegGetMiscStatus( /* * Build the key name we're looking for */ - sprintf( keyName, "CLSID\\{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\", + sprintf( keyName, "CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\", clsid->Data1, clsid->Data2, clsid->Data3, clsid->Data4[0], clsid->Data4[1], clsid->Data4[2], clsid->Data4[3], clsid->Data4[4], clsid->Data4[5], clsid->Data4[6], clsid->Data4[7] ); - TRACE("(%s, %ld, %p)\n", keyName, dwAspect, pdwStatus); + TRACE("(%s, %d, %p)\n", keyName, dwAspect, pdwStatus); /* * Open the class id Key @@ -646,7 +644,7 @@ HRESULT WINAPI OleRegGetMiscStatus( /* * Open the key specific to the requested aspect. */ - sprintf(keyName, "%ld", dwAspect); + sprintf(keyName, "%d", dwAspect); result = RegOpenKeyA(miscStatusKey, keyName, @@ -721,7 +719,7 @@ static HRESULT WINAPI EnumOLEVERB_Next( EnumOLEVERB *This = (EnumOLEVERB *)iface; HRESULT hr = S_OK; - TRACE("(%ld, %p, %p)\n", celt, rgelt, pceltFetched); + TRACE("(%d, %p, %p)\n", celt, rgelt, pceltFetched); if (pceltFetched) *pceltFetched = 0; @@ -741,14 +739,14 @@ static HRESULT WINAPI EnumOLEVERB_Next( } else if (res != ERROR_SUCCESS) { - ERR("RegEnumKeyW failed with error %ld\n", res); + ERR("RegEnumKeyW failed with error %d\n", res); hr = REGDB_E_READREGDB; break; } res = RegQueryValueW(This->hkeyVerb, wszSubKey, NULL, &cbData); if (res != ERROR_SUCCESS) { - ERR("RegQueryValueW failed with error %ld\n", res); + ERR("RegQueryValueW failed with error %d\n", res); hr = REGDB_E_READREGDB; break; } @@ -761,7 +759,7 @@ static HRESULT WINAPI EnumOLEVERB_Next( res = RegQueryValueW(This->hkeyVerb, wszSubKey, pwszOLEVERB, &cbData); if (res != ERROR_SUCCESS) { - ERR("RegQueryValueW failed with error %ld\n", res); + ERR("RegQueryValueW failed with error %d\n", res); hr = REGDB_E_READREGDB; CoTaskMemFree(pwszOLEVERB); break; @@ -796,7 +794,7 @@ static HRESULT WINAPI EnumOLEVERB_Next( rgelt->grfAttribs = atolW(pwszAttribs); if (pceltFetched) - *pceltFetched++; + (*pceltFetched)++; This->index++; } return hr; @@ -807,7 +805,7 @@ static HRESULT WINAPI EnumOLEVERB_Skip( { EnumOLEVERB *This = (EnumOLEVERB *)iface; - TRACE("(%ld)\n", celt); + TRACE("(%d)\n", celt); This->index += celt; return S_OK; @@ -896,7 +894,7 @@ HRESULT WINAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB* ppenum) else if (res == REGDB_E_KEYMISSING) ERR("no Verbs key for class %s\n", debugstr_guid(clsid)); else - ERR("failed to open Verbs key for CLSID %s with error %ld\n", + ERR("failed to open Verbs key for CLSID %s with error %d\n", debugstr_guid(clsid), res); return res; } @@ -905,7 +903,7 @@ HRESULT WINAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB* ppenum) NULL, NULL, NULL, NULL, NULL, NULL); if (res != ERROR_SUCCESS) { - ERR("failed to get subkey count with error %ld\n", GetLastError()); + ERR("failed to get subkey count with error %d\n", GetLastError()); return REGDB_E_READREGDB; } @@ -929,7 +927,7 @@ HRESULT WINAPI OleSetContainedObject( IRunnableObject* runnable = NULL; HRESULT hres; - TRACE("(%p,%x), stub!\n", pUnknown, fContained); + TRACE("(%p,%x)\n", pUnknown, fContained); hres = IUnknown_QueryInterface(pUnknown, &IID_IRunnableObject, @@ -947,6 +945,34 @@ HRESULT WINAPI OleSetContainedObject( return S_OK; } +/****************************************************************************** + * OleRun [OLE32.@] + * + * Set the OLE object to the running state. + * + * PARAMS + * pUnknown [I] OLE object to run. + * + * RETURNS + * Success: S_OK. + * Failure: Any HRESULT code. + */ +HRESULT WINAPI OleRun(LPUNKNOWN pUnknown) +{ + IRunnableObject *runable; + HRESULT hres; + + TRACE("(%p)\n", pUnknown); + + hres = IUnknown_QueryInterface(pUnknown, &IID_IRunnableObject, (void**)&runable); + if (FAILED(hres)) + return S_OK; /* Appears to return no error. */ + + hres = IRunnableObject_Run(runable, NULL); + IRunnableObject_Release(runable); + return hres; +} + /****************************************************************************** * OleLoad [OLE32.@] */ @@ -957,11 +983,14 @@ HRESULT WINAPI OleLoad( LPVOID* ppvObj) { IPersistStorage* persistStorage = NULL; - IOleObject* oleObject = NULL; + IUnknown* pUnk; + IOleObject* pOleObject = NULL; STATSTG storageInfo; HRESULT hres; - TRACE("(%p,%p,%p,%p)\n", pStg, riid, pClientSite, ppvObj); + TRACE("(%p, %s, %p, %p)\n", pStg, debugstr_guid(riid), pClientSite, ppvObj); + + *ppvObj = NULL; /* * TODO, Conversion ... OleDoAutoConvert @@ -977,9 +1006,9 @@ HRESULT WINAPI OleLoad( */ hres = CoCreateInstance(&storageInfo.clsid, NULL, - CLSCTX_INPROC_HANDLER, - &IID_IOleObject, - (void**)&oleObject); + CLSCTX_INPROC_HANDLER|CLSCTX_INPROC_SERVER, + riid, + (void**)&pUnk); /* * If that fails, as it will most times, load the default @@ -989,8 +1018,8 @@ HRESULT WINAPI OleLoad( { hres = OleCreateDefaultHandler(&storageInfo.clsid, NULL, - &IID_IOleObject, - (void**)&oleObject); + riid, + (void**)&pUnk); } /* @@ -999,35 +1028,63 @@ HRESULT WINAPI OleLoad( if (FAILED(hres)) return hres; - /* - * Inform the new object of it's client site. - */ - hres = IOleObject_SetClientSite(oleObject, pClientSite); + if (pClientSite) + { + hres = IUnknown_QueryInterface(pUnk, &IID_IOleObject, (void **)&pOleObject); + if (SUCCEEDED(hres)) + { + DWORD dwStatus; + hres = IOleObject_GetMiscStatus(pOleObject, DVASPECT_CONTENT, &dwStatus); + } + } - /* - * Initialize the object with it's IPersistStorage interface. - */ - hres = IOleObject_QueryInterface(oleObject, - &IID_IPersistStorage, - (void**)&persistStorage); + if (SUCCEEDED(hres)) + /* + * Initialize the object with it's IPersistStorage interface. + */ + hres = IOleObject_QueryInterface(pUnk, + &IID_IPersistStorage, + (void**)&persistStorage); if (SUCCEEDED(hres)) { - IPersistStorage_Load(persistStorage, pStg); + hres = IPersistStorage_Load(persistStorage, pStg); IPersistStorage_Release(persistStorage); persistStorage = NULL; } - /* - * Return the requested interface to the caller. - */ - hres = IOleObject_QueryInterface(oleObject, riid, ppvObj); + if (SUCCEEDED(hres) && pClientSite) + /* + * Inform the new object of it's client site. + */ + hres = IOleObject_SetClientSite(pOleObject, pClientSite); /* * Cleanup interfaces used internally */ - IOleObject_Release(oleObject); + if (pOleObject) + IOleObject_Release(pOleObject); + + if (SUCCEEDED(hres)) + { + IOleLink *pOleLink; + HRESULT hres1; + hres1 = IUnknown_QueryInterface(pUnk, &IID_IOleLink, (void **)&pOleLink); + if (SUCCEEDED(hres1)) + { + FIXME("handle OLE link\n"); + IOleLink_Release(pOleLink); + } + } + + if (FAILED(hres)) + { + IUnknown_Release(pUnk); + pUnk = NULL; + } + + *ppvObj = pUnk; return hres; } @@ -1108,7 +1165,7 @@ HRESULT WINAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCl * * Initializes the OLEMENU data structures. */ -static void OLEMenu_Initialize() +static void OLEMenu_Initialize(void) { } @@ -1117,7 +1174,7 @@ static void OLEMenu_Initialize() * * Releases the OLEMENU data structures. */ -static void OLEMenu_UnInitialize() +static void OLEMenu_UnInitialize(void) { } @@ -1128,7 +1185,7 @@ static void OLEMenu_UnInitialize() * RETURNS: TRUE if message hooks were successfully installed * FALSE on failure */ -BOOL OLEMenu_InstallHooks( DWORD tid ) +static BOOL OLEMenu_InstallHooks( DWORD tid ) { OleMenuHookItem *pHookItem = NULL; @@ -1177,7 +1234,7 @@ CLEANUP: * RETURNS: TRUE if message hooks were successfully installed * FALSE on failure */ -BOOL OLEMenu_UnInstallHooks( DWORD tid ) +static BOOL OLEMenu_UnInstallHooks( DWORD tid ) { OleMenuHookItem *pHookItem = NULL; OleMenuHookItem **ppHook = &hook_list; @@ -1219,7 +1276,7 @@ CLEANUP: * RETURNS: The pointer and index of the hook table entry for the tid * NULL and -1 for the index if no hooks were installed for this thread */ -OleMenuHookItem * OLEMenu_IsHookInstalled( DWORD tid ) +static OleMenuHookItem * OLEMenu_IsHookInstalled( DWORD tid ) { OleMenuHookItem *pHookItem = NULL; @@ -1285,7 +1342,7 @@ static BOOL OLEMenu_FindMainMenuIndex( HMENU hMainMenu, HMENU hPopupMenu, UINT * * RETURNS: TRUE if the popup menu is part of a server owned group * FALSE if the popup menu is part of a container owned group */ -BOOL OLEMenu_SetIsServerMenu( HMENU hmenu, OleMenuDescriptor *pOleMenuDescriptor ) +static BOOL OLEMenu_SetIsServerMenu( HMENU hmenu, OleMenuDescriptor *pOleMenuDescriptor ) { UINT nPos = 0, nWidth, i; @@ -1324,7 +1381,7 @@ BOOL OLEMenu_SetIsServerMenu( HMENU hmenu, OleMenuDescriptor *pOleMenuDescriptor * Thread scope WH_CALLWNDPROC hook proc filter function (callback) * This is invoked from a message hook installed in OleSetMenuDescriptor. */ -LRESULT CALLBACK OLEMenu_CallWndProc(INT code, WPARAM wParam, LPARAM lParam) +static LRESULT CALLBACK OLEMenu_CallWndProc(INT code, WPARAM wParam, LPARAM lParam) { LPCWPSTRUCT pMsg = NULL; HOLEMENU hOleMenu = 0; @@ -1429,7 +1486,7 @@ NEXTHOOK: * Thread scope WH_GETMESSAGE hook proc filter function (callback) * This is invoked from a message hook installed in OleSetMenuDescriptor. */ -LRESULT CALLBACK OLEMenu_GetMsgProc(INT code, WPARAM wParam, LPARAM lParam) +static LRESULT CALLBACK OLEMenu_GetMsgProc(INT code, WPARAM wParam, LPARAM lParam) { LPMSG pMsg = NULL; HOLEMENU hOleMenu = 0; @@ -1819,7 +1876,7 @@ void WINAPI ReleaseStgMedium( * * Initializes the OLE drag and drop data structures. */ -static void OLEDD_Initialize() +static void OLEDD_Initialize(void) { WNDCLASSA wndClass; @@ -1835,151 +1892,36 @@ static void OLEDD_Initialize() RegisterClassA (&wndClass); } +/*** + * OLEDD_FreeDropTarget() + * + * Frees the drag and drop data structure + */ +static void OLEDD_FreeDropTarget(DropTargetNode *dropTargetInfo) +{ + list_remove(&dropTargetInfo->entry); + IDropTarget_Release(dropTargetInfo->dropTarget); + HeapFree(GetProcessHeap(), 0, dropTargetInfo); +} + /*** * OLEDD_UnInitialize() * * Releases the OLE drag and drop data structures. */ -static void OLEDD_UnInitialize() +void OLEDD_UnInitialize(void) { /* * Simply empty the list. */ - while (targetListHead!=NULL) + while (!list_empty(&targetListHead)) { - RevokeDragDrop(targetListHead->hwndTarget); + DropTargetNode* curNode; + curNode = LIST_ENTRY(list_head(&targetListHead), DropTargetNode, entry); + OLEDD_FreeDropTarget(curNode); } } -/*** - * OLEDD_InsertDropTarget() - * - * Insert the target node in the tree. - */ -static void OLEDD_InsertDropTarget(DropTargetNode* nodeToAdd) -{ - DropTargetNode* curNode; - DropTargetNode** parentNodeLink; - - /* - * Iterate the tree to find the insertion point. - */ - curNode = targetListHead; - parentNodeLink = &targetListHead; - - while (curNode!=NULL) - { - if (nodeToAdd->hwndTargethwndTarget) - { - /* - * If the node we want to add has a smaller HWND, go left - */ - parentNodeLink = &curNode->prevDropTarget; - curNode = curNode->prevDropTarget; - } - else if (nodeToAdd->hwndTarget>curNode->hwndTarget) - { - /* - * If the node we want to add has a larger HWND, go right - */ - parentNodeLink = &curNode->nextDropTarget; - curNode = curNode->nextDropTarget; - } - else - { - /* - * The item was found in the list. It shouldn't have been there - */ - assert(FALSE); - return; - } - } - - /* - * If we get here, we have found a spot for our item. The parentNodeLink - * pointer points to the pointer that we have to modify. - * The curNode should be NULL. We just have to establish the link and Voila! - */ - assert(curNode==NULL); - assert(parentNodeLink!=NULL); - assert(*parentNodeLink==NULL); - - *parentNodeLink=nodeToAdd; -} - -/*** - * OLEDD_ExtractDropTarget() - * - * Removes the target node from the tree. - */ -static DropTargetNode* OLEDD_ExtractDropTarget(HWND hwndOfTarget) -{ - DropTargetNode* curNode; - DropTargetNode** parentNodeLink; - - /* - * Iterate the tree to find the insertion point. - */ - curNode = targetListHead; - parentNodeLink = &targetListHead; - - while (curNode!=NULL) - { - if (hwndOfTargethwndTarget) - { - /* - * If the node we want to add has a smaller HWND, go left - */ - parentNodeLink = &curNode->prevDropTarget; - curNode = curNode->prevDropTarget; - } - else if (hwndOfTarget>curNode->hwndTarget) - { - /* - * If the node we want to add has a larger HWND, go right - */ - parentNodeLink = &curNode->nextDropTarget; - curNode = curNode->nextDropTarget; - } - else - { - /* - * The item was found in the list. Detach it from it's parent and - * re-insert it's kids in the tree. - */ - assert(parentNodeLink!=NULL); - assert(*parentNodeLink==curNode); - - /* - * We arbitrately re-attach the left sub-tree to the parent. - */ - *parentNodeLink = curNode->prevDropTarget; - - /* - * And we re-insert the right subtree - */ - if (curNode->nextDropTarget!=NULL) - { - OLEDD_InsertDropTarget(curNode->nextDropTarget); - } - - /* - * The node we found is still a valid node once we complete - * the unlinking of the kids. - */ - curNode->nextDropTarget=NULL; - curNode->prevDropTarget=NULL; - - return curNode; - } - } - - /* - * If we get here, the node is not in the tree - */ - return NULL; -} - /*** * OLEDD_FindDropTarget() * @@ -1990,34 +1932,11 @@ static DropTargetNode* OLEDD_FindDropTarget(HWND hwndOfTarget) DropTargetNode* curNode; /* - * Iterate the tree to find the HWND value. + * Iterate the list to find the HWND value. */ - curNode = targetListHead; - - while (curNode!=NULL) - { - if (hwndOfTargethwndTarget) - { - /* - * If the node we want to add has a smaller HWND, go left - */ - curNode = curNode->prevDropTarget; - } - else if (hwndOfTarget>curNode->hwndTarget) - { - /* - * If the node we want to add has a larger HWND, go right - */ - curNode = curNode->nextDropTarget; - } - else - { - /* - * The item was found in the list. - */ + LIST_FOR_EACH_ENTRY(curNode, &targetListHead, DropTargetNode, entry) + if (hwndOfTarget==curNode->hwndTarget) return curNode; - } - } /* * If we get here, the item is not in the list @@ -2303,7 +2222,7 @@ static void OLEDD_TrackStateChange(TrackerWindowInfo* trackerInfo) * a button state mask equivalent to the one passed in the * WM_MOUSEMOVE wParam. */ -static DWORD OLEDD_GetButtonState() +static DWORD OLEDD_GetButtonState(void) { BYTE keyboardState[256]; DWORD keyMask = 0; @@ -2442,40 +2361,115 @@ HRESULT WINAPI OleCreate( LPSTORAGE pStg, LPVOID* ppvObj) { - HRESULT hres, hres1; + HRESULT hres; IUnknown * pUnk = NULL; + IOleObject *pOleObject = NULL; - FIXME("\n\t%s\n\t%s semi-stub!\n", debugstr_guid(rclsid), debugstr_guid(riid)); + TRACE("(%s, %s, %d, %p, %p, %p, %p)\n", debugstr_guid(rclsid), + debugstr_guid(riid), renderopt, pFormatEtc, pClientSite, pStg, ppvObj); - if (SUCCEEDED((hres = CoCreateInstance(rclsid, 0, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER|CLSCTX_LOCAL_SERVER , riid, (LPVOID*)&pUnk)))) + hres = CoCreateInstance(rclsid, 0, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, riid, (LPVOID*)&pUnk); + + if (SUCCEEDED(hres)) + hres = IStorage_SetClass(pStg, rclsid); + + if (pClientSite && SUCCEEDED(hres)) { - if (pClientSite) + hres = IUnknown_QueryInterface(pUnk, &IID_IOleObject, (LPVOID*)&pOleObject); + if (SUCCEEDED(hres)) { - IOleObject * pOE; - IPersistStorage * pPS; - if (SUCCEEDED((hres = IUnknown_QueryInterface( pUnk, &IID_IOleObject, (LPVOID*)&pOE)))) + DWORD dwStatus; + hres = IOleObject_GetMiscStatus(pOleObject, DVASPECT_CONTENT, &dwStatus); + } + } + + if (SUCCEEDED(hres)) + { + IPersistStorage * pPS; + if (SUCCEEDED((hres = IUnknown_QueryInterface(pUnk, &IID_IPersistStorage, (LPVOID*)&pPS)))) + { + TRACE("trying to set stg %p\n", pStg); + hres = IPersistStorage_InitNew(pPS, pStg); + TRACE("-- result 0x%08x\n", hres); + IPersistStorage_Release(pPS); + } + } + + if (pClientSite && SUCCEEDED(hres)) + { + TRACE("trying to set clientsite %p\n", pClientSite); + hres = IOleObject_SetClientSite(pOleObject, pClientSite); + TRACE("-- result 0x%08x\n", hres); + } + + if (pOleObject) + IOleObject_Release(pOleObject); + + if (((renderopt == OLERENDER_DRAW) || (renderopt == OLERENDER_FORMAT)) && + SUCCEEDED(hres)) + { + IRunnableObject *pRunnable; + IOleCache *pOleCache; + HRESULT hres2; + + hres2 = IUnknown_QueryInterface(pUnk, &IID_IRunnableObject, (void **)&pRunnable); + if (SUCCEEDED(hres2)) + { + hres = IRunnableObject_Run(pRunnable, NULL); + IRunnableObject_Release(pRunnable); + } + + if (SUCCEEDED(hres)) + { + hres2 = IUnknown_QueryInterface(pUnk, &IID_IOleCache, (void **)&pOleCache); + if (SUCCEEDED(hres2)) { - TRACE("trying to set clientsite %p\n", pClientSite); - hres1 = IOleObject_SetClientSite(pOE, pClientSite); - TRACE("-- result 0x%08lx\n", hres1); - IOleObject_Release(pOE); - } - if (SUCCEEDED((hres = IUnknown_QueryInterface( pUnk, &IID_IPersistStorage, (LPVOID*)&pPS)))) - { - TRACE("trying to set stg %p\n", pStg); - hres1 = IPersistStorage_InitNew(pPS, pStg); - TRACE("-- result 0x%08lx\n", hres1); - IPersistStorage_Release(pPS); + DWORD dwConnection; + hres = IOleCache_Cache(pOleCache, pFormatEtc, ADVF_PRIMEFIRST, &dwConnection); + IOleCache_Release(pOleCache); } } } + if (FAILED(hres) && pUnk) + { + IUnknown_Release(pUnk); + pUnk = NULL; + } + *ppvObj = pUnk; TRACE("-- %p\n", pUnk); return hres; } +/****************************************************************************** + * OleGetAutoConvert [OLE32.@] + */ +HRESULT WINAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew) +{ + static const WCHAR wszAutoConvertTo[] = {'A','u','t','o','C','o','n','v','e','r','t','T','o',0}; + HKEY hkey = NULL; + WCHAR buf[CHARS_IN_GUID]; + LONG len; + HRESULT res = S_OK; + + res = COM_OpenKeyForCLSID(clsidOld, wszAutoConvertTo, KEY_READ, &hkey); + if (FAILED(res)) + goto done; + + len = sizeof(buf); + if (RegQueryValueW(hkey, NULL, buf, &len)) + { + res = REGDB_E_KEYMISSING; + goto done; + } + res = CLSIDFromString(buf, pClsidNew); +done: + if (hkey) RegCloseKey(hkey); + return res; +} + /****************************************************************************** * OleSetAutoConvert [OLE32.@] */ @@ -2531,6 +2525,16 @@ BOOL WINAPI OleIsRunning(LPOLEOBJECT pObject) return running; } +/*********************************************************************** + * OleNoteObjectVisible [OLE32.@] + */ +HRESULT WINAPI OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL bVisible) +{ + TRACE("(%p, %s)\n", pUnknown, bVisible ? "TRUE" : "FALSE"); + return CoLockObjectExternal(pUnknown, bVisible, TRUE); +} + + /*********************************************************************** * OLE_FreeClipDataArray [internal] * @@ -2561,13 +2565,13 @@ BSTR WINAPI PropSysAllocString(LPCOLESTR str) len = lstrlenW(str); /* - * Find the length of the buffer passed-in in bytes. + * Find the length of the buffer passed-in, in bytes. */ bufferSize = len * sizeof (WCHAR); /* * Allocate a new buffer to hold the string. - * don't forget to keep an empty spot at the beginning of the + * Don't forget to keep an empty spot at the beginning of the * buffer for the character count and an extra character at the * end for the NULL. */ @@ -2590,15 +2594,7 @@ BSTR WINAPI PropSysAllocString(LPCOLESTR str) */ newBuffer++; - /* - * Copy the information in the buffer. - * Since it is valid to pass a NULL pointer here, we'll initialize the - * buffer to nul if it is the case. - */ - if (str != 0) - memcpy(newBuffer, str, bufferSize); - else - memset(newBuffer, 0, bufferSize); + memcpy(newBuffer, str, bufferSize); /* * Make sure that there is a nul character at the end of the @@ -2715,6 +2711,23 @@ HRESULT WINAPI PropVariantClear(PROPVARIANT * pvar) /* [in/out] */ switch(pvar->vt) { + case VT_EMPTY: + case VT_NULL: + case VT_I2: + case VT_I4: + case VT_R4: + case VT_R8: + case VT_CY: + case VT_DATE: + case VT_ERROR: + case VT_BOOL: + case VT_UI1: + case VT_UI2: + case VT_UI4: + case VT_I8: + case VT_UI8: + case VT_FILETIME: + break; case VT_STREAM: case VT_STREAMED_OBJECT: case VT_STORAGE: @@ -2737,7 +2750,7 @@ HRESULT WINAPI PropVariantClear(PROPVARIANT * pvar) /* [in/out] */ if (pvar->u.bstrVal) PropSysFreeString(pvar->u.bstrVal); break; - case VT_CF: + case VT_CF: if (pvar->u.pclipdata) { OLE_FreeClipDataArray(1, pvar->u.pclipdata); @@ -2806,6 +2819,8 @@ HRESULT WINAPI PropVariantCopy(PROPVARIANT *pvarDest, /* [out] */ switch(pvarSrc->vt) { + case VT_FILETIME: + break; case VT_STREAM: case VT_STREAMED_OBJECT: case VT_STORAGE: @@ -2842,7 +2857,10 @@ HRESULT WINAPI PropVariantCopy(PROPVARIANT *pvarDest, /* [out] */ if (pvarSrc->u.pclipdata) { len = pvarSrc->u.pclipdata->cbSize - sizeof(pvarSrc->u.pclipdata->ulClipFmt); - CoTaskMemAlloc(len); + pvarDest->u.pclipdata = CoTaskMemAlloc(sizeof (CLIPDATA)); + pvarDest->u.pclipdata->cbSize = pvarSrc->u.pclipdata->cbSize; + pvarDest->u.pclipdata->ulClipFmt = pvarSrc->u.pclipdata->ulClipFmt; + pvarDest->u.pclipdata->pClipData = CoTaskMemAlloc(len); CopyMemory(pvarDest->u.pclipdata->pClipData, pvarSrc->u.pclipdata->pClipData, len); } break; @@ -2937,7 +2955,10 @@ HRESULT WINAPI FreePropVariantArray(ULONG cVariants, /* [in] */ { ULONG i; - TRACE("(%lu, %p)\n", cVariants, rgvars); + TRACE("(%u, %p)\n", cVariants, rgvars); + + if (!rgvars) + return E_INVALIDARG; for(i = 0; i < cVariants; i++) PropVariantClear(&rgvars[i]); diff --git a/reactos/dll/win32/ole32/ole2_16.c b/reactos/dll/win32/ole32/ole2_16.c index 12599002332..20e9725a14b 100644 --- a/reactos/dll/win32/ole32/ole2_16.c +++ b/reactos/dll/win32/ole32/ole2_16.c @@ -18,7 +18,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -120,7 +120,7 @@ HGLOBAL16 WINAPI OleMetaFilePictFromIconAndLabel16( mf16 = (METAFILEPICT16 *)GlobalLock16(hmf16); mf16->mm = MM_ANISOTROPIC; mf16->xExt = 20; /* FIXME: bogus */ - mf16->yExt = 20; /* dito */ + mf16->yExt = 20; /* ditto */ mfSize = GetMetaFileBitsEx(hmf, 0, 0); mf16->hMF = GlobalAlloc16(GMEM_MOVEABLE, mfSize); if(mf16->hMF) @@ -154,9 +154,12 @@ HRESULT WINAPI CreateFileMoniker16(LPCOLESTR16 lpszPathName,LPMONIKER* ppmk) /****************************************************************************** * OleSetMenuDescriptor (OLE2.41) + * + * PARAMS + * hOleMenu FIXME: Should probably be an HOLEMENU16. */ HRESULT WINAPI OleSetMenuDescriptor16( - HOLEMENU hOleMenu, /* FIXME: HOLEMENU16 likely */ + HOLEMENU hOleMenu, HWND16 hwndFrame, HWND16 hwndActiveObject, LPOLEINPLACEFRAME lpFrame, @@ -205,7 +208,7 @@ HRESULT WINAPI OleLoad16( SEGPTR pClientSite, LPVOID* ppvObj) { - FIXME("(%lx,%s,%lx,%p), stub!\n", pStg, debugstr_guid(riid), pClientSite, ppvObj); + FIXME("(%x,%s,%x,%p), stub!\n", pStg, debugstr_guid(riid), pClientSite, ppvObj); return E_NOTIMPL; } diff --git a/reactos/dll/win32/ole32/ole2impl.c b/reactos/dll/win32/ole32/ole2impl.c index b939623e470..f123fe9c9c4 100644 --- a/reactos/dll/win32/ole32/ole2impl.c +++ b/reactos/dll/win32/ole32/ole2impl.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include diff --git a/reactos/dll/win32/ole32/ole2nls.c b/reactos/dll/win32/ole32/ole2nls.c index c30807e0c27..9851d707d2c 100644 --- a/reactos/dll/win32/ole32/ole2nls.c +++ b/reactos/dll/win32/ole32/ole2nls.c @@ -17,7 +17,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" diff --git a/reactos/dll/win32/ole32/ole2stubs.c b/reactos/dll/win32/ole32/ole2stubs.c index 9eca37ab216..e3396516564 100644 --- a/reactos/dll/win32/ole32/ole2stubs.c +++ b/reactos/dll/win32/ole32/ole2stubs.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #define NONAMELESSUNION @@ -39,7 +39,7 @@ HRESULT WINAPI OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj) { - FIXME("(%p,%p,%li,%p,%p,%p,%p), stub!\n",lpszFileName, riid, renderopt, lpFormatEtc, pClientSite, pStg, ppvObj); + FIXME("(%p,%p,%i,%p,%p,%p,%p), stub!\n",lpszFileName, riid, renderopt, lpFormatEtc, pClientSite, pStg, ppvObj); return E_NOTIMPL; } @@ -115,7 +115,7 @@ HRESULT WINAPI OleRegEnumFormatEtc ( DWORD dwDirection, LPENUMFORMATETC* ppenumFormatetc) { - FIXME("(%p, %ld, %p), stub!\n", clsid, dwDirection, ppenumFormatetc); + FIXME("(%p, %d, %p), stub!\n", clsid, dwDirection, ppenumFormatetc); return E_NOTIMPL; } diff --git a/reactos/dll/win32/ole32/ole32.rbuild b/reactos/dll/win32/ole32/ole32.rbuild index 82740c8cc30..cccee19b78f 100644 --- a/reactos/dll/win32/ole32/ole32.rbuild +++ b/reactos/dll/win32/ole32/ole32.rbuild @@ -4,11 +4,12 @@ . include/reactos/wine - + 0x600 0x501 0x501 - + + wine uuid ntdll @@ -17,8 +18,10 @@ gdi32 user32 rpcrt4 + dcom.idl antimoniker.c bindctx.c + classmoniker.c clipboard.c compobj.c compositemoniker.c @@ -49,6 +52,7 @@ storage32.c stubmanager.c usrmarshal.c + enumx.c ole32res.rc ole32.spec diff --git a/reactos/dll/win32/ole32/ole32.spec b/reactos/dll/win32/ole32/ole32.spec index 26f7c6fa1fb..3ae0240bd3e 100644 --- a/reactos/dll/win32/ole32/ole32.spec +++ b/reactos/dll/win32/ole32/ole32.spec @@ -20,7 +20,7 @@ @ stdcall CoFreeAllLibraries() @ stdcall CoFreeLibrary(long) @ stdcall CoFreeUnusedLibraries() -@ stub CoGetCallContext #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED +@ stdcall CoGetCallContext(ptr ptr) @ stub CoGetCallerTID @ stdcall CoGetClassObject(ptr long ptr ptr ptr) @ stub CoGetCurrentLogicalThreadId @@ -30,13 +30,13 @@ @ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr) @ stdcall CoGetMalloc(long ptr) @ stdcall CoGetMarshalSizeMax(ptr ptr ptr long ptr long) -@ stub CoGetObject +@ stdcall CoGetObject(wstr ptr ptr ptr) @ stdcall CoGetPSClsid(ptr ptr) @ stdcall CoGetStandardMarshal(ptr ptr long ptr long ptr) @ stdcall CoGetState(ptr) @ stub CoGetTIDFromIPID @ stdcall CoGetTreatAsClass(ptr ptr) -@ stub CoImpersonateClient +@ stdcall CoImpersonateClient() @ stdcall CoInitialize(ptr) @ stdcall CoInitializeEx(ptr long) @ stdcall CoInitializeSecurity(ptr long ptr ptr long long ptr long ptr) @@ -49,19 +49,19 @@ @ stdcall CoMarshalInterThreadInterfaceInStream(ptr ptr ptr) @ stdcall CoMarshalInterface(ptr ptr ptr long ptr long) @ stub CoQueryAuthenticationServices -@ stub CoQueryClientBlanket +@ stdcall CoQueryClientBlanket(ptr ptr ptr ptr ptr ptr ptr) @ stdcall CoQueryProxyBlanket(ptr ptr ptr ptr ptr ptr ptr ptr) @ stub CoQueryReleaseObject -@ stub CoRegisterChannelHook +@ stdcall CoRegisterChannelHook(ptr ptr) @ stdcall CoRegisterClassObject(ptr ptr long long ptr) @ stdcall CoRegisterMallocSpy (ptr) @ stdcall CoRegisterMessageFilter(ptr ptr) -@ stub CoRegisterPSClsid #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED +@ stdcall CoRegisterPSClsid(ptr ptr) @ stub CoRegisterSurrogate @ stdcall CoReleaseMarshalData(ptr) @ stdcall CoReleaseServerProcess() @ stdcall CoResumeClassObjects() -@ stub CoRevertToSelf #@ stdcall () return 0,ERR_NOTIMPLEMENTED +@ stdcall CoRevertToSelf() @ stdcall CoRevokeClassObject(long) @ stdcall CoRevokeMallocSpy() @ stdcall CoSetProxyBlanket(ptr long long wstr long long ptr long) @@ -76,6 +76,7 @@ @ stub CoUnloadingWOW @ stdcall CoUnmarshalHresult(ptr ptr) @ stdcall CoUnmarshalInterface(ptr ptr ptr) +@ stdcall CoWaitForMultipleHandles(long long long ptr ptr) @ stdcall CreateAntiMoniker(ptr) @ stdcall CreateBindCtx(long ptr) @ stdcall CreateClassMoniker(ptr ptr) @@ -135,14 +136,14 @@ @ stdcall HMENU_UserMarshal(ptr ptr ptr) @ stdcall HMENU_UserSize(ptr long ptr) @ stdcall HMENU_UserUnmarshal(ptr ptr ptr) -@ stub HMETAFILEPICT_UserFree -@ stub HMETAFILEPICT_UserMarshal -@ stub HMETAFILEPICT_UserSize -@ stub HMETAFILEPICT_UserUnmarshal -@ stub HMETAFILE_UserFree -@ stub HMETAFILE_UserMarshal -@ stub HMETAFILE_UserSize -@ stub HMETAFILE_UserUnmarshal +@ stdcall HMETAFILEPICT_UserFree(ptr ptr) +@ stdcall HMETAFILEPICT_UserMarshal(ptr ptr ptr) +@ stdcall HMETAFILEPICT_UserSize(ptr long ptr) +@ stdcall HMETAFILEPICT_UserUnmarshal(ptr ptr ptr) +@ stdcall HMETAFILE_UserFree(ptr ptr) +@ stdcall HMETAFILE_UserMarshal(ptr ptr ptr) +@ stdcall HMETAFILE_UserSize(ptr long ptr) +@ stdcall HMETAFILE_UserUnmarshal(ptr ptr ptr) @ stdcall HPALETTE_UserFree(ptr ptr) @ stdcall HPALETTE_UserMarshal(ptr ptr ptr) @ stdcall HPALETTE_UserSize(ptr long ptr) @@ -200,7 +201,7 @@ @ stdcall OleLoadFromStream(ptr ptr ptr) @ stdcall OleLockRunning(ptr long long) @ stdcall OleMetafilePictFromIconAndLabel(long ptr ptr long) -@ stub OleNoteObjectVisible +@ stdcall OleNoteObjectVisible(ptr long) @ stdcall OleQueryCreateFromData(ptr) @ stdcall OleQueryLinkFromData(ptr) @ stdcall OleRegEnumFormatEtc(ptr long ptr) diff --git a/reactos/dll/win32/ole32/ole32_main.c b/reactos/dll/win32/ole32/ole32_main.c index 4a133822527..328a972dda6 100644 --- a/reactos/dll/win32/ole32/ole32_main.c +++ b/reactos/dll/win32/ole32/ole32_main.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -32,6 +32,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); +#define HIMETRIC_INCHES 2540 + /*********************************************************************** * OleMetafilePictFromIconAndLabel (OLE32.@) */ @@ -40,27 +42,70 @@ HGLOBAL WINAPI OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel, { METAFILEPICT mfp; HDC hdc; - UINT dy; HGLOBAL hmem = NULL; LPVOID mfdata; static const char szIconOnly[] = "IconOnly"; + SIZE text_size = { 0, 0 }; + INT width; + INT icon_width; + INT icon_height; + INT label_offset; + HDC hdcScreen; + LOGFONTW lf; + HFONT font; TRACE("%p %p %s %d\n", hIcon, lpszLabel, debugstr_w(lpszSourceFile), iIconIndex); if( !hIcon ) return NULL; + if (!SystemParametersInfoW(SPI_GETICONTITLELOGFONT, sizeof(lf), &lf, 0)) + return NULL; + + font = CreateFontIndirectW(&lf); + if (!font) + return NULL; + hdc = CreateMetaFileW(NULL); if( !hdc ) + { + DeleteObject(font); return NULL; + } + + SelectObject(hdc, font); ExtEscape(hdc, MFCOMMENT, sizeof(szIconOnly), szIconOnly, 0, NULL); - /* FIXME: things are drawn in the wrong place */ - DrawIcon(hdc, 0, 0, hIcon); - dy = GetSystemMetrics(SM_CXICON); + icon_width = GetSystemMetrics(SM_CXICON); + icon_height = GetSystemMetrics(SM_CYICON); + /* FIXME: should we give the label a bit of padding here? */ + label_offset = icon_height; + if (lpszLabel) + { + HFONT screen_old_font; + /* metafile DCs don't support GetTextExtentPoint32, so size the font + * using the desktop window DC */ + hdcScreen = GetDC(NULL); + screen_old_font = SelectObject(hdcScreen, font); + GetTextExtentPoint32W(hdcScreen, lpszLabel, lstrlenW(lpszLabel), &text_size); + SelectObject(hdcScreen, screen_old_font); + ReleaseDC(NULL, hdcScreen); + + width = 3 * icon_width; + } + else + width = icon_width; + + SetMapMode(hdc, MM_ANISOTROPIC); + SetWindowOrgEx(hdc, 0, 0, NULL); + SetWindowExtEx(hdc, width, label_offset + text_size.cy, NULL); + + /* draw the icon centred */ + DrawIcon(hdc, (width-icon_width) / 2, 0, hIcon); if(lpszLabel) - TextOutW(hdc, 0, dy, lpszLabel, lstrlenW(lpszLabel)); + /* draw the label centred too, if provided */ + TextOutW(hdc, (width-text_size.cx) / 2, label_offset, lpszLabel, lstrlenW(lpszLabel)); if (lpszSourceFile) { @@ -80,9 +125,13 @@ HGLOBAL WINAPI OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel, ExtEscape(hdc, MFCOMMENT, strlen(szIconIndex)+1, szIconIndex, 0, NULL); } - mfp.mm = MM_ISOTROPIC; - mfp.xExt = mfp.yExt = 0; /* FIXME ? */ + mfp.mm = MM_ANISOTROPIC; + hdcScreen = GetDC(NULL); + mfp.xExt = MulDiv(width, HIMETRIC_INCHES, GetDeviceCaps(hdcScreen, LOGPIXELSX)); + mfp.yExt = MulDiv(label_offset + text_size.cy, HIMETRIC_INCHES, GetDeviceCaps(hdcScreen, LOGPIXELSY)); + ReleaseDC(NULL, hdcScreen); mfp.hMF = CloseMetaFile(hdc); + DeleteObject(font); if( !mfp.hMF ) return NULL; diff --git a/reactos/dll/win32/ole32/ole32res.rc b/reactos/dll/win32/ole32/ole32res.rc index 06156decc47..35173640a17 100644 --- a/reactos/dll/win32/ole32/ole32res.rc +++ b/reactos/dll/win32/ole32/ole32res.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "windef.h" diff --git a/reactos/dll/win32/ole32/oleobj.c b/reactos/dll/win32/ole32/oleobj.c index 3943aec6b88..1c887977ac5 100644 --- a/reactos/dll/win32/ole32/oleobj.c +++ b/reactos/dll/win32/ole32/oleobj.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ @@ -50,6 +50,156 @@ typedef struct OleAdviseHolderImpl } OleAdviseHolderImpl; +static HRESULT EnumOleSTATDATA_Construct(OleAdviseHolderImpl *pOleAdviseHolder, ULONG index, IEnumSTATDATA **ppenum); + +typedef struct +{ + const IEnumSTATDATAVtbl *lpvtbl; + LONG ref; + + ULONG index; + OleAdviseHolderImpl *pOleAdviseHolder; +} EnumOleSTATDATA; + +static HRESULT WINAPI EnumOleSTATDATA_QueryInterface( + IEnumSTATDATA *iface, REFIID riid, void **ppv) +{ + TRACE("(%s, %p)\n", debugstr_guid(riid), ppv); + if (IsEqualIID(riid, &IID_IUnknown) || + IsEqualIID(riid, &IID_IEnumSTATDATA)) + { + IUnknown_AddRef(iface); + *ppv = iface; + return S_OK; + } + return E_NOINTERFACE; +} + +static ULONG WINAPI EnumOleSTATDATA_AddRef( + IEnumSTATDATA *iface) +{ + EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface; + TRACE("()\n"); + return InterlockedIncrement(&This->ref); +} + +static ULONG WINAPI EnumOleSTATDATA_Release( + IEnumSTATDATA *iface) +{ + EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface; + LONG refs = InterlockedDecrement(&This->ref); + TRACE("()\n"); + if (!refs) + { + IOleAdviseHolder_Release((IOleAdviseHolder *)This->pOleAdviseHolder); + HeapFree(GetProcessHeap(), 0, This); + } + return refs; +} + +static HRESULT WINAPI EnumOleSTATDATA_Next( + IEnumSTATDATA *iface, ULONG celt, LPSTATDATA rgelt, + ULONG *pceltFetched) +{ + EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface; + HRESULT hr = S_OK; + + TRACE("(%d, %p, %p)\n", celt, rgelt, pceltFetched); + + if (pceltFetched) + *pceltFetched = 0; + + for (; celt; celt--, rgelt++) + { + while ((This->index < This->pOleAdviseHolder->maxSinks) && + !This->pOleAdviseHolder->arrayOfSinks[This->index]) + { + This->index++; + } + if (This->index >= This->pOleAdviseHolder->maxSinks) + { + hr = S_FALSE; + break; + } + + memset(&rgelt->formatetc, 0, sizeof(rgelt->formatetc)); + rgelt->advf = 0; + rgelt->pAdvSink = This->pOleAdviseHolder->arrayOfSinks[This->index]; + IAdviseSink_AddRef(rgelt->pAdvSink); + rgelt->dwConnection = This->index; + + if (pceltFetched) + (*pceltFetched)++; + This->index++; + } + return hr; +} + +static HRESULT WINAPI EnumOleSTATDATA_Skip( + IEnumSTATDATA *iface, ULONG celt) +{ + EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface; + + TRACE("(%d)\n", celt); + + for (; celt; celt--) + { + while ((This->index < This->pOleAdviseHolder->maxSinks) && + !This->pOleAdviseHolder->arrayOfSinks[This->index]) + { + This->index++; + } + if (This->index >= This->pOleAdviseHolder->maxSinks) + return S_FALSE; + This->index++; + } + return S_OK; +} + +static HRESULT WINAPI EnumOleSTATDATA_Reset( + IEnumSTATDATA *iface) +{ + EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface; + + TRACE("()\n"); + + This->index = 0; + return S_OK; +} + +static HRESULT WINAPI EnumOleSTATDATA_Clone( + IEnumSTATDATA *iface, + IEnumSTATDATA **ppenum) +{ + EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface; + return EnumOleSTATDATA_Construct(This->pOleAdviseHolder, This->index, ppenum); +} + +static const IEnumSTATDATAVtbl EnumOleSTATDATA_VTable = +{ + EnumOleSTATDATA_QueryInterface, + EnumOleSTATDATA_AddRef, + EnumOleSTATDATA_Release, + EnumOleSTATDATA_Next, + EnumOleSTATDATA_Skip, + EnumOleSTATDATA_Reset, + EnumOleSTATDATA_Clone +}; + +static HRESULT EnumOleSTATDATA_Construct(OleAdviseHolderImpl *pOleAdviseHolder, ULONG index, IEnumSTATDATA **ppenum) +{ + EnumOleSTATDATA *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); + if (!This) + return E_OUTOFMEMORY; + This->lpvtbl = &EnumOleSTATDATA_VTable; + This->ref = 1; + This->index = index; + This->pOleAdviseHolder = pOleAdviseHolder; + IOleAdviseHolder_AddRef((IOleAdviseHolder *)pOleAdviseHolder); + *ppenum = (IEnumSTATDATA *)&This->lpvtbl; + return S_OK; +} + /************************************************************************** * OleAdviseHolderImpl_Destructor */ @@ -127,7 +277,7 @@ static ULONG WINAPI OleAdviseHolderImpl_AddRef( OleAdviseHolderImpl *This = (OleAdviseHolderImpl *)iface; ULONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p)->(ref=%ld)\n", This, ref - 1); + TRACE("(%p)->(ref=%d)\n", This, ref - 1); return ref; } @@ -140,7 +290,7 @@ static ULONG WINAPI OleAdviseHolderImpl_Release( { OleAdviseHolderImpl *This = (OleAdviseHolderImpl *)iface; ULONG ref; - TRACE("(%p)->(ref=%ld)\n", This, This->ref); + TRACE("(%p)->(ref=%d)\n", This, This->ref); ref = InterlockedDecrement(&This->ref); if (ref == 0) OleAdviseHolderImpl_Destructor(This); @@ -224,7 +374,7 @@ static HRESULT WINAPI OleAdviseHolderImpl_Unadvise( { OleAdviseHolderImpl *This = (OleAdviseHolderImpl *)iface; - TRACE("(%p)->(%lu)\n", This, dwConnection); + TRACE("(%p)->(%u)\n", This, dwConnection); /* * So we don't return 0 as a cookie, the index was @@ -258,11 +408,12 @@ static HRESULT WINAPI OleAdviseHolderImpl_EnumAdvise (LPOLEADVISEHOLDER iface, IEnumSTATDATA **ppenumAdvise) { OleAdviseHolderImpl *This = (OleAdviseHolderImpl *)iface; - FIXME("(%p)->(%p)\n", This, ppenumAdvise); + + TRACE("(%p)->(%p)\n", This, ppenumAdvise); *ppenumAdvise = NULL; - return S_OK; + return EnumOleSTATDATA_Construct(This, 0, ppenumAdvise); } /****************************************************************************** @@ -271,11 +422,25 @@ OleAdviseHolderImpl_EnumAdvise (LPOLEADVISEHOLDER iface, IEnumSTATDATA **ppenumA static HRESULT WINAPI OleAdviseHolderImpl_SendOnRename (LPOLEADVISEHOLDER iface, IMoniker *pmk) { - OleAdviseHolderImpl *This = (OleAdviseHolderImpl *)iface; - FIXME("(%p)->(%p)\n", This, pmk); + IEnumSTATDATA *pEnum; + HRESULT hr; + TRACE("(%p)->(%p)\n", iface, pmk); - return S_OK; + hr = IOleAdviseHolder_EnumAdvise(iface, &pEnum); + if (SUCCEEDED(hr)) + { + STATDATA statdata; + while (IEnumSTATDATA_Next(pEnum, 1, &statdata, NULL) == S_OK) + { + IAdviseSink_OnRename(statdata.pAdvSink, pmk); + + IAdviseSink_Release(statdata.pAdvSink); + } + IEnumSTATDATA_Release(pEnum); + } + + return hr; } /****************************************************************************** @@ -284,10 +449,25 @@ OleAdviseHolderImpl_SendOnRename (LPOLEADVISEHOLDER iface, IMoniker *pmk) static HRESULT WINAPI OleAdviseHolderImpl_SendOnSave (LPOLEADVISEHOLDER iface) { - OleAdviseHolderImpl *This = (OleAdviseHolderImpl *)iface; - FIXME("(%p)\n", This); + IEnumSTATDATA *pEnum; + HRESULT hr; - return S_OK; + TRACE("(%p)->()\n", iface); + + hr = IOleAdviseHolder_EnumAdvise(iface, &pEnum); + if (SUCCEEDED(hr)) + { + STATDATA statdata; + while (IEnumSTATDATA_Next(pEnum, 1, &statdata, NULL) == S_OK) + { + IAdviseSink_OnSave(statdata.pAdvSink); + + IAdviseSink_Release(statdata.pAdvSink); + } + IEnumSTATDATA_Release(pEnum); + } + + return hr; } /****************************************************************************** @@ -296,11 +476,25 @@ OleAdviseHolderImpl_SendOnSave (LPOLEADVISEHOLDER iface) static HRESULT WINAPI OleAdviseHolderImpl_SendOnClose (LPOLEADVISEHOLDER iface) { - OleAdviseHolderImpl *This = (OleAdviseHolderImpl *)iface; - FIXME("(%p)\n", This); + IEnumSTATDATA *pEnum; + HRESULT hr; + TRACE("(%p)->()\n", iface); - return S_OK; + hr = IOleAdviseHolder_EnumAdvise(iface, &pEnum); + if (SUCCEEDED(hr)) + { + STATDATA statdata; + while (IEnumSTATDATA_Next(pEnum, 1, &statdata, NULL) == S_OK) + { + IAdviseSink_OnClose(statdata.pAdvSink); + + IAdviseSink_Release(statdata.pAdvSink); + } + IEnumSTATDATA_Release(pEnum); + } + + return hr; } /************************************************************************** @@ -361,6 +555,7 @@ typedef struct DataAdviseHolder LONG ref; DWORD maxCons; DataAdviseConnection* Connections; + IDataObject* delegate; } DataAdviseHolder; /* this connection has also has been advised to the delegate data object */ @@ -378,6 +573,11 @@ static void DataAdviseHolder_Destructor(DataAdviseHolder* ptrToDestroy) { if (ptrToDestroy->Connections[index].sink != NULL) { + if (ptrToDestroy->delegate && + (ptrToDestroy->Connections[index].advf & WINE_ADVF_REMOTE)) + IDataObject_DUnadvise(ptrToDestroy->delegate, + ptrToDestroy->Connections[index].remote_connection); + IAdviseSink_Release(ptrToDestroy->Connections[index].sink); ptrToDestroy->Connections[index].sink = NULL; } @@ -445,7 +645,7 @@ static ULONG WINAPI DataAdviseHolder_AddRef( IDataAdviseHolder* iface) { DataAdviseHolder *This = (DataAdviseHolder *)iface; - TRACE("(%p) (ref=%ld)\n", This, This->ref); + TRACE("(%p) (ref=%d)\n", This, This->ref); return InterlockedIncrement(&This->ref); } @@ -459,7 +659,7 @@ static ULONG WINAPI DataAdviseHolder_Release( { DataAdviseHolder *This = (DataAdviseHolder *)iface; ULONG ref; - TRACE("(%p) (ref=%ld)\n", This, This->ref); + TRACE("(%p) (ref=%d)\n", This, This->ref); /* * Decrease the reference count on this object. @@ -490,7 +690,7 @@ static HRESULT WINAPI DataAdviseHolder_Advise( DataAdviseHolder *This = (DataAdviseHolder *)iface; - TRACE("(%p)->(%p, %p, %08lx, %p, %p)\n", This, pDataObject, pFetc, advf, + TRACE("(%p)->(%p, %p, %08x, %p, %p)\n", This, pDataObject, pFetc, advf, pAdvise, pdwConnection); /* * Sanity check @@ -523,14 +723,42 @@ static HRESULT WINAPI DataAdviseHolder_Advise( * Store the new sink */ This->Connections[index].sink = pAdvise; - memcpy(&(This->Connections[index].fmat), pFetc, sizeof(FORMATETC)); This->Connections[index].advf = advf & ~WINE_ADVF_REMOTE; + memcpy(&(This->Connections[index].fmat), pFetc, sizeof(FORMATETC)); + if (pFetc->ptd) + { + This->Connections[index].fmat.ptd = CoTaskMemAlloc(pFetc->ptd->tdSize); + if (!This->Connections[index].fmat.ptd) + { + IDataAdviseHolder_Unadvise(iface, index + 1); + return E_OUTOFMEMORY; + } + memcpy(This->Connections[index].fmat.ptd, pFetc->ptd, pFetc->ptd->tdSize); + } if (This->Connections[index].sink != NULL) { IAdviseSink_AddRef(This->Connections[index].sink); - if(advf & ADVF_PRIMEFIRST) { - IDataAdviseHolder_SendOnDataChange(iface, pDataObject, 0, advf); + + /* if we are already connected advise the remote object */ + if (This->delegate) + { + HRESULT hr; + + hr = IDataObject_DAdvise(This->delegate, &This->Connections[index].fmat, + This->Connections[index].advf, + This->Connections[index].sink, + &This->Connections[index].remote_connection); + if (FAILED(hr)) + { + IDataAdviseHolder_Unadvise(iface, index + 1); + return hr; + } + This->Connections[index].advf |= WINE_ADVF_REMOTE; } + else if(advf & ADVF_PRIMEFIRST) + /* only do this if we have no delegate, since in the above case the + * delegate will do the priming for us */ + IDataAdviseHolder_SendOnDataChange(iface, pDataObject, 0, advf); } /* * Return the index as the cookie. @@ -551,7 +779,7 @@ static HRESULT WINAPI DataAdviseHolder_Unadvise( { DataAdviseHolder *This = (DataAdviseHolder *)iface; - TRACE("(%p)->(%lu)\n", This, dwConnection); + TRACE("(%p)->(%u)\n", This, dwConnection); /* * So we don't return 0 as a cookie, the index was @@ -569,11 +797,16 @@ static HRESULT WINAPI DataAdviseHolder_Unadvise( if (This->Connections[dwConnection].sink == NULL) return OLE_E_NOCONNECTION; + if (This->delegate && This->Connections[dwConnection].advf & WINE_ADVF_REMOTE) + IDataObject_DUnadvise(This->delegate, + This->Connections[dwConnection].remote_connection); + /* * Release the sink and mark the spot in the list as free. */ IAdviseSink_Release(This->Connections[dwConnection].sink); memset(&(This->Connections[dwConnection]), 0, sizeof(DataAdviseConnection)); + return S_OK; } @@ -601,16 +834,17 @@ static HRESULT WINAPI DataAdviseHolder_SendOnDataChange( STGMEDIUM stg; HRESULT res; - TRACE("(%p)->(%p,%08lx,%08lx)\n", This, pDataObject, dwReserved, advf); + TRACE("(%p)->(%p,%08x,%08x)\n", This, pDataObject, dwReserved, advf); for(index = 0; index < This->maxCons; index++) { if(This->Connections[index].sink != NULL) { + memset(&stg, 0, sizeof(stg)); if(!(This->Connections[index].advf & ADVF_NODATA)) { TRACE("Calling IDataObject_GetData\n"); res = IDataObject_GetData(pDataObject, &(This->Connections[index].fmat), &stg); - TRACE("returns %08lx\n", res); + TRACE("returns %08x\n", res); } TRACE("Calling IAdviseSink_OnDataChange\n"); IAdviseSink_OnDataChange(This->Connections[index].sink, @@ -658,13 +892,26 @@ HRESULT DataAdviseHolder_OnConnect(IDataAdviseHolder *iface, IDataObject *pDeleg This->Connections[index].advf |= WINE_ADVF_REMOTE; } } - /* FIXME: store pDelegate somewhere */ + This->delegate = pDelegate; return hr; } void DataAdviseHolder_OnDisconnect(IDataAdviseHolder *iface) { - /* FIXME: Unadvise all remote interfaces */ + DataAdviseHolder *This = (DataAdviseHolder *)iface; + DWORD index; + + for(index = 0; index < This->maxCons; index++) + { + if((This->Connections[index].sink != NULL) && + (This->Connections[index].advf & WINE_ADVF_REMOTE)) + { + IDataObject_DUnadvise(This->delegate, + This->Connections[index].remote_connection); + This->Connections[index].advf &= ~WINE_ADVF_REMOTE; + } + } + This->delegate = NULL; } /****************************************************************************** @@ -683,6 +930,7 @@ static IDataAdviseHolder* DataAdviseHolder_Constructor(void) HEAP_ZERO_MEMORY, newHolder->maxCons * sizeof(DataAdviseConnection)); + newHolder->delegate = NULL; TRACE("returning %p\n", newHolder); return (IDataAdviseHolder*)newHolder; diff --git a/reactos/dll/win32/ole32/oleproxy.c b/reactos/dll/win32/ole32/oleproxy.c index 095876b940b..dd12e5c3787 100644 --- a/reactos/dll/win32/ole32/oleproxy.c +++ b/reactos/dll/win32/ole32/oleproxy.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ /* Documentation on MSDN: @@ -39,7 +39,6 @@ #include #include -#include #include #include @@ -64,8 +63,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); -const CLSID CLSID_DfMarshal = { 0x0000030b, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} }; -const CLSID CLSID_PSFactoryBuffer = { 0x00000320, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} }; +static ULONG WINAPI RURpcProxyBufferImpl_Release(LPRPCPROXYBUFFER iface); /* From: http://msdn.microsoft.com/library/en-us/com/cmi_m_4lda.asp * @@ -161,7 +159,7 @@ CFStub_Invoke( ULONG res; if (msg->cbBuffer < sizeof(IID)) { - FIXME("Not enough bytes in buffer (%ld instead of %d)?\n",msg->cbBuffer,sizeof(IID)); + FIXME("Not enough bytes in buffer (%d)?\n",msg->cbBuffer); return E_FAIL; } memcpy(&iid,msg->Buffer,sizeof(iid)); @@ -173,51 +171,58 @@ CFStub_Invoke( } hres = IClassFactory_CreateInstance(classfac,NULL,&iid,(LPVOID*)&ppv); IClassFactory_Release(classfac); + msg->cbBuffer = 0; if (hres) { - msg->cbBuffer = 0; FIXME("Failed to create an instance of %s\n",debugstr_guid(&iid)); - return hres; + goto getbuffer; } hres = CreateStreamOnHGlobal(0,TRUE,&pStm); if (hres) { FIXME("Failed to create stream on hglobal\n"); - return hres; + goto getbuffer; } - hres = CoMarshalInterface(pStm,&iid,ppv,0,NULL,0); - IUnknown_Release((IUnknown*)ppv); + hres = IStream_Write(pStm, &ppv, sizeof(ppv), NULL); if (hres) { - FIXME("CoMarshalInterface failed, %lx!\n",hres); - msg->cbBuffer = 0; - return hres; + ERR("IStream_Write failed, 0x%08x\n", hres); + goto getbuffer; } + if (ppv) { + hres = CoMarshalInterface(pStm,&iid,ppv,0,NULL,0); + IUnknown_Release(ppv); + if (hres) { + FIXME("CoMarshalInterface failed, %x!\n",hres); + goto getbuffer; + } + } hres = IStream_Stat(pStm,&ststg,0); if (hres) { FIXME("Stat failed.\n"); - return hres; + goto getbuffer; } msg->cbBuffer = ststg.cbSize.u.LowPart; - I_RpcGetBuffer((RPC_MESSAGE *)msg); +getbuffer: + IRpcChannelBuffer_GetBuffer(chanbuf, msg, &IID_IClassFactory); if (hres) return hres; seekto.u.LowPart = 0;seekto.u.HighPart = 0; hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos); if (hres) { - FIXME("IStream_Seek failed, %lx\n",hres); + FIXME("IStream_Seek failed, %x\n",hres); return hres; } hres = IStream_Read(pStm,msg->Buffer,msg->cbBuffer,&res); if (hres) { - FIXME("Stream Read failed, %lx\n",hres); + FIXME("Stream Read failed, %x\n",hres); return hres; } IStream_Release(pStm); return S_OK; } FIXME("(%p,%p), stub!\n",msg,chanbuf); - FIXME("iMethod is %ld\n",msg->iMethod); - FIXME("cbBuffer is %ld\n",msg->cbBuffer); + FIXME("iMethod is %d\n",msg->iMethod); + FIXME("cbBuffer is %d\n",msg->cbBuffer); return E_FAIL; } @@ -346,18 +351,11 @@ static ULONG WINAPI CFProxy_AddRef(LPCLASSFACTORY iface) { } static ULONG WINAPI CFProxy_Release(LPCLASSFACTORY iface) { - ULONG ref; ICOM_THIS_MULTI(CFProxy,lpvtbl_cf,iface); if (This->outer_unknown) - ref = IUnknown_Release(This->outer_unknown); - else - ref = InterlockedDecrement(&This->ref); - - if (!ref) { - if (This->chanbuf) IRpcChannelBuffer_Release(This->chanbuf); - HeapFree(GetProcessHeap(),0,This); - } - return ref; + return IUnknown_Release(This->outer_unknown); + else + return IRpcProxyBufferImpl_Release((IRpcProxyBuffer *)&This->lpvtbl_proxy); } static HRESULT WINAPI CFProxy_CreateInstance( @@ -384,36 +382,48 @@ static HRESULT WINAPI CFProxy_CreateInstance( msg.Buffer = NULL; hres = IRpcChannelBuffer_GetBuffer(This->chanbuf,&msg,&IID_IClassFactory); if (hres) { - FIXME("IRpcChannelBuffer_GetBuffer failed with %lx?\n",hres); + FIXME("IRpcChannelBuffer_GetBuffer failed with %x?\n",hres); return hres; } memcpy(msg.Buffer,riid,sizeof(*riid)); hres = IRpcChannelBuffer_SendReceive(This->chanbuf,&msg,&srstatus); if (hres) { - FIXME("IRpcChannelBuffer_SendReceive failed with %lx?\n",hres); + FIXME("IRpcChannelBuffer_SendReceive failed with %x?\n",hres); + IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); return hres; } - if (!msg.cbBuffer) /* interface not found on remote */ + if (!msg.cbBuffer) { /* interface not found on remote */ + IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); return srstatus; + } /* We got back: [Marshalled Interface data] */ - TRACE("got %ld bytes data.\n",msg.cbBuffer); + TRACE("got %d bytes data.\n",msg.cbBuffer); hGlobal = GlobalAlloc(GMEM_MOVEABLE|GMEM_NODISCARD|GMEM_SHARE,msg.cbBuffer); memcpy(GlobalLock(hGlobal),msg.Buffer,msg.cbBuffer); hres = CreateStreamOnHGlobal(hGlobal,TRUE,&pStream); if (hres) { - FIXME("CreateStreamOnHGlobal failed with %lx\n",hres); + FIXME("CreateStreamOnHGlobal failed with %x\n",hres); + IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); return hres; } - hres = CoUnmarshalInterface( - pStream, - riid, - ppv - ); + hres = IStream_Read(pStream, ppv, sizeof(*ppv), NULL); + if (hres != S_OK) + hres = E_FAIL; + else if (*ppv) { + hres = CoUnmarshalInterface( + pStream, + riid, + ppv + ); + } IStream_Release(pStream); /* Does GlobalFree hGlobal too. */ + + IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); + if (hres) { - FIXME("CoMarshalInterface failed, %lx\n",hres); + FIXME("CoMarshalInterface failed, %x\n",hres); return hres; } return S_OK; @@ -530,7 +540,7 @@ static HRESULT WINAPI RemUnkStub_Invoke(LPRPCSTUBBUFFER iface, LPBYTE buf = pMsg->Buffer; HRESULT hr = RPC_E_INVALIDMETHOD; - TRACE("(%p)->Invoke(%p,%p) method %ld\n", This, pMsg, pChannel, iMethod); + TRACE("(%p)->Invoke(%p,%p) method %d\n", This, pMsg, pChannel, iMethod); switch (iMethod) { case 3: /* RemQueryInterface */ @@ -555,7 +565,7 @@ static HRESULT WINAPI RemUnkStub_Invoke(LPRPCSTUBBUFFER iface, /* out */ pMsg->cbBuffer = cIids * sizeof(REMQIRESULT) + sizeof(HRESULT); - I_RpcGetBuffer((RPC_MESSAGE *)pMsg); + IRpcChannelBuffer_GetBuffer(pChannel, pMsg, &IID_IRemUnknown); buf = pMsg->Buffer; *(HRESULT *)buf = hr; @@ -585,7 +595,7 @@ static HRESULT WINAPI RemUnkStub_Invoke(LPRPCSTUBBUFFER iface, /* out */ pMsg->cbBuffer = cIids * sizeof(HRESULT); - I_RpcGetBuffer((RPC_MESSAGE *)pMsg); + IRpcChannelBuffer_GetBuffer(pChannel, pMsg, &IID_IRemUnknown); if (!hr) { buf = pMsg->Buffer; @@ -610,6 +620,7 @@ static HRESULT WINAPI RemUnkStub_Invoke(LPRPCSTUBBUFFER iface, /* out */ pMsg->cbBuffer = 0; + IRpcChannelBuffer_GetBuffer(pChannel, pMsg, &IID_IRemUnknown); break; } } @@ -713,19 +724,12 @@ static ULONG WINAPI RemUnkProxy_AddRef(LPREMUNKNOWN iface) static ULONG WINAPI RemUnkProxy_Release(LPREMUNKNOWN iface) { RemUnkProxy *This = (RemUnkProxy *)iface; - ULONG refs; TRACE("(%p)->Release()\n",This); if (This->outer_unknown) - refs = IUnknown_Release(This->outer_unknown); - else - refs = InterlockedDecrement(&This->refs); - - if (!refs) { - if (This->chan) IRpcChannelBuffer_Release(This->chan); - HeapFree(GetProcessHeap(),0,This); - } - return refs; + return IUnknown_Release(This->outer_unknown); + else + return IRpcProxyBufferImpl_Release((IRpcProxyBuffer *)&This->lpvtbl_proxy); } static HRESULT WINAPI RemUnkProxy_RemQueryInterface(LPREMUNKNOWN iface, @@ -740,7 +744,7 @@ static HRESULT WINAPI RemUnkProxy_RemQueryInterface(LPREMUNKNOWN iface, HRESULT hr = S_OK; ULONG status; - TRACE("(%p)->(%s,%ld,%d,%p,%p)\n",This, + TRACE("(%p)->(%s,%d,%d,%p,%p)\n",This, debugstr_guid(ripid),cRefs,cIids,iids,ppQIResults); *ppQIResults = NULL; @@ -869,14 +873,14 @@ static HRESULT WINAPI RURpcProxyBufferImpl_QueryInterface(LPRPCPROXYBUFFER iface static ULONG WINAPI RURpcProxyBufferImpl_AddRef(LPRPCPROXYBUFFER iface) { ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); - TRACE("%p, %ld\n", iface, This->refs + 1); + TRACE("%p, %d\n", iface, This->refs + 1); return InterlockedIncrement(&This->refs); } static ULONG WINAPI RURpcProxyBufferImpl_Release(LPRPCPROXYBUFFER iface) { ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); ULONG ref = InterlockedDecrement(&This->refs); - TRACE("%p, %ld\n", iface, ref); + TRACE("%p, %d\n", iface, ref); if (!ref) { IRpcProxyBuffer_Disconnect(iface); HeapFree(GetProcessHeap(),0,This); @@ -1015,6 +1019,12 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv) return FileMonikerCF_Create(iid, ppv); if (IsEqualCLSID(rclsid, &CLSID_ItemMoniker)) return ItemMonikerCF_Create(iid, ppv); + if (IsEqualCLSID(rclsid, &CLSID_AntiMoniker)) + return AntiMonikerCF_Create(iid, ppv); + if (IsEqualCLSID(rclsid, &CLSID_CompositeMoniker)) + return CompositeMonikerCF_Create(iid, ppv); + if (IsEqualCLSID(rclsid, &CLSID_ClassMoniker)) + return ClassMonikerCF_Create(iid, ppv); FIXME("\n\tCLSID:\t%s,\n\tIID:\t%s\n",debugstr_guid(rclsid),debugstr_guid(iid)); return CLASS_E_CLASSNOTAVAILABLE; diff --git a/reactos/dll/win32/ole32/olestd.h b/reactos/dll/win32/ole32/olestd.h index b5814fad4a4..02a4d3b2aab 100644 --- a/reactos/dll/win32/ole32/olestd.h +++ b/reactos/dll/win32/ole32/olestd.h @@ -13,7 +13,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #if !defined( __WINE_OLESTD_H_ ) diff --git a/reactos/dll/win32/ole32/regsvr.c b/reactos/dll/win32/ole32/regsvr.c index 12961b542bd..fdb45c8a82f 100644 --- a/reactos/dll/win32/ole32/regsvr.c +++ b/reactos/dll/win32/ole32/regsvr.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -30,9 +30,11 @@ #include "winerror.h" #include "objbase.h" -#include "compobj_private.h" #include "ole2.h" #include "olectl.h" +#include "initguid.h" +#include "compobj_private.h" +#include "moniker.h" #include "wine/debug.h" @@ -66,6 +68,7 @@ struct regsvr_coclass LPCSTR ips; /* can be NULL to omit */ LPCSTR ips32; /* can be NULL to omit */ LPCSTR ips32_tmodel; /* can be NULL to omit */ + LPCSTR progid; /* can be NULL to omit */ }; static HRESULT register_coclasses(struct regsvr_coclass const *list); @@ -95,6 +98,8 @@ static WCHAR const ips_keyname[13] = { static WCHAR const ips32_keyname[15] = { 'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r', '3', '2', 0 }; +static WCHAR const progid_keyname[7] = { + 'P', 'r', 'o', 'g', 'I', 'D', 0 }; static char const tmodel_valuename[] = "ThreadingModel"; /*********************************************************************** @@ -105,7 +110,10 @@ static LONG register_key_defvalueW(HKEY base, WCHAR const *name, WCHAR const *value); static LONG register_key_defvalueA(HKEY base, WCHAR const *name, char const *value); +static LONG register_progid(WCHAR const *clsid, char const *progid, + char const *name); static LONG recursive_delete_key(HKEY key); +static LONG recursive_delete_keyA(HKEY base, char const *name); /*********************************************************************** @@ -137,7 +145,7 @@ static HRESULT register_interfaces(struct regsvr_interface const *list) } if (list->base_iid) { - register_key_guid(iid_key, base_ifa_keyname, list->base_iid); + res = register_key_guid(iid_key, base_ifa_keyname, list->base_iid); if (res != ERROR_SUCCESS) goto error_close_iid_key; } @@ -159,12 +167,12 @@ static HRESULT register_interfaces(struct regsvr_interface const *list) } if (list->ps_clsid) { - register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid); + res = register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid); if (res != ERROR_SUCCESS) goto error_close_iid_key; } if (list->ps_clsid32) { - register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32); + res = register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32); if (res != ERROR_SUCCESS) goto error_close_iid_key; } @@ -266,6 +274,15 @@ static HRESULT register_coclasses(struct regsvr_coclass const *list) if (res != ERROR_SUCCESS) goto error_close_clsid_key; } + if (list->progid) { + res = register_key_defvalueA(clsid_key, progid_keyname, + list->progid); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + + res = register_progid(buf, list->progid, list->name); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + error_close_clsid_key: RegCloseKey(clsid_key); } @@ -304,6 +321,11 @@ static HRESULT unregister_coclasses(struct regsvr_coclass const *list) res = recursive_delete_key(clsid_key); RegCloseKey(clsid_key); if (res != ERROR_SUCCESS) goto error_close_coclass_key; + + if (list->progid) { + res = recursive_delete_keyA(HKEY_CLASSES_ROOT, list->progid); + if (res != ERROR_SUCCESS) goto error_close_coclass_key; + } } error_close_coclass_key: @@ -363,6 +385,38 @@ static LONG register_key_defvalueA( return res; } +/*********************************************************************** + * regsvr_progid + */ +static LONG register_progid( + WCHAR const *clsid, + char const *progid, + char const *name) +{ + LONG res; + HKEY progid_key; + + res = RegCreateKeyExA(HKEY_CLASSES_ROOT, progid, 0, + NULL, 0, KEY_READ | KEY_WRITE, NULL, + &progid_key, NULL); + if (res != ERROR_SUCCESS) return res; + + if (name) { + res = RegSetValueExA(progid_key, NULL, 0, REG_SZ, + (CONST BYTE*)name, strlen(name) + 1); + if (res != ERROR_SUCCESS) goto error_close_progid_key; + } + + if (clsid) { + res = register_key_defvalueW(progid_key, clsid_keyname, clsid); + if (res != ERROR_SUCCESS) goto error_close_progid_key; + } + +error_close_progid_key: + RegCloseKey(progid_key); + return res; +} + /*********************************************************************** * recursive_delete_key */ @@ -395,29 +449,50 @@ static LONG recursive_delete_key(HKEY key) return res; } +/*********************************************************************** + * recursive_delete_keyA + */ +static LONG recursive_delete_keyA(HKEY base, char const *name) +{ + LONG res; + HKEY key; + + res = RegOpenKeyExA(base, name, 0, KEY_READ | KEY_WRITE, &key); + if (res == ERROR_FILE_NOT_FOUND) return ERROR_SUCCESS; + if (res != ERROR_SUCCESS) return res; + res = recursive_delete_key(key); + RegCloseKey(key); + return res; +} + /*********************************************************************** * coclass list */ -static GUID const CLSID_FileMoniker = { - 0x00000303, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; +static GUID const CLSID_StdOleLink = { + 0x00000300, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; -static GUID const CLSID_ItemMoniker = { - 0x00000304, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; +static GUID const CLSID_PointerMoniker = { + 0x00000306, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; -/* FIXME: DfMarshal and PSFactoryBuffer are defined elsewhere too */ +static GUID const CLSID_PackagerMoniker = { + 0x00000308, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; -static GUID const CLSID_DfMarshal = { - 0x0000030B, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; - -static GUID const CLSID_PSFactoryBuffer = { - 0x00000320, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; +extern GUID const CLSID_Picture_Metafile; +extern GUID const CLSID_Picture_Dib; static struct regsvr_coclass const coclass_list[] = { + { &CLSID_StdOleLink, + "StdOleLink", + NULL, + "ole32.dll", + NULL + }, { &CLSID_FileMoniker, "FileMoniker", NULL, "ole32.dll", - "Both" + "Both", + "file" }, { &CLSID_ItemMoniker, "ItemMoniker", @@ -425,12 +500,57 @@ static struct regsvr_coclass const coclass_list[] = { "ole32.dll", "Both" }, + { &CLSID_AntiMoniker, + "AntiMoniker", + NULL, + "ole32.dll", + "Both" + }, + { &CLSID_PointerMoniker, + "PointerMoniker", + NULL, + "ole32.dll", + "Both" + }, + { &CLSID_PackagerMoniker, + "PackagerMoniker", + NULL, + "ole32.dll", + "Both" + }, + { &CLSID_CompositeMoniker, + "CompositeMoniker", + NULL, + "ole32.dll", + "Both" + }, { &CLSID_DfMarshal, "DfMarshal", NULL, "ole32.dll", "Both" }, + { &CLSID_Picture_Metafile, + "Picture (Metafile)", + NULL, + "ole32.dll", + NULL, + "StaticMetafile" + }, + { &CLSID_Picture_Dib, + "Picture (Device Independent Bitmap)", + NULL, + "ole32.dll", + NULL, + "StaticDib" + }, + { &CLSID_ClassMoniker, + "ClassMoniker", + NULL, + "ole32.dll", + "Both", + "CLSID" + }, { &CLSID_PSFactoryBuffer, "PSFactoryBuffer", NULL, @@ -451,6 +571,7 @@ static struct regsvr_coclass const coclass_list[] = { */ #define INTERFACE_ENTRY(interface, base, clsid32, clsid16) { &IID_##interface, #interface, base, sizeof(interface##Vtbl)/sizeof(void*), clsid16, clsid32 } +#define BAS_INTERFACE_ENTRY(interface, base) INTERFACE_ENTRY(interface, &IID_##base, &CLSID_PSFactoryBuffer, NULL) #define STD_INTERFACE_ENTRY(interface) INTERFACE_ENTRY(interface, NULL, &CLSID_PSFactoryBuffer, NULL) #define LCL_INTERFACE_ENTRY(interface) INTERFACE_ENTRY(interface, NULL, NULL, NULL) @@ -459,31 +580,65 @@ static const struct regsvr_interface interface_list[] = { STD_INTERFACE_ENTRY(IClassFactory), LCL_INTERFACE_ENTRY(IMalloc), LCL_INTERFACE_ENTRY(IMarshal), + STD_INTERFACE_ENTRY(ILockBytes), STD_INTERFACE_ENTRY(IStorage), + STD_INTERFACE_ENTRY(IStream), + STD_INTERFACE_ENTRY(IEnumSTATSTG), + STD_INTERFACE_ENTRY(IBindCtx), + BAS_INTERFACE_ENTRY(IMoniker, IPersistStream), + STD_INTERFACE_ENTRY(IRunningObjectTable), + STD_INTERFACE_ENTRY(IRootStorage), LCL_INTERFACE_ENTRY(IMessageFilter), LCL_INTERFACE_ENTRY(IStdMarshalInfo), LCL_INTERFACE_ENTRY(IExternalConnection), LCL_INTERFACE_ENTRY(IMallocSpy), LCL_INTERFACE_ENTRY(IMultiQI), - STD_INTERFACE_ENTRY(IStream), - STD_INTERFACE_ENTRY(IPersistStorage), + STD_INTERFACE_ENTRY(IEnumUnknown), + STD_INTERFACE_ENTRY(IEnumString), + STD_INTERFACE_ENTRY(IEnumMoniker), + STD_INTERFACE_ENTRY(IEnumFORMATETC), + STD_INTERFACE_ENTRY(IEnumOLEVERB), + STD_INTERFACE_ENTRY(IEnumSTATDATA), + BAS_INTERFACE_ENTRY(IPersistStream, IPersist), + BAS_INTERFACE_ENTRY(IPersistStorage, IPersist), + BAS_INTERFACE_ENTRY(IPersistFile, IPersist), + STD_INTERFACE_ENTRY(IPersist), + STD_INTERFACE_ENTRY(IViewObject), STD_INTERFACE_ENTRY(IDataObject), STD_INTERFACE_ENTRY(IAdviseSink), LCL_INTERFACE_ENTRY(IDataAdviseHolder), LCL_INTERFACE_ENTRY(IOleAdviseHolder), STD_INTERFACE_ENTRY(IOleObject), + BAS_INTERFACE_ENTRY(IOleInPlaceObject, IOleWindow), + STD_INTERFACE_ENTRY(IOleWindow), + BAS_INTERFACE_ENTRY(IOleInPlaceUIWindow, IOleWindow), + STD_INTERFACE_ENTRY(IOleInPlaceFrame), + BAS_INTERFACE_ENTRY(IOleInPlaceActiveObject, IOleWindow), STD_INTERFACE_ENTRY(IOleClientSite), + BAS_INTERFACE_ENTRY(IOleInPlaceSite, IOleWindow), + STD_INTERFACE_ENTRY(IParseDisplayName), + BAS_INTERFACE_ENTRY(IOleContainer, IParseDisplayName), + BAS_INTERFACE_ENTRY(IOleItemContainer, IOleContainer), + STD_INTERFACE_ENTRY(IOleLink), + STD_INTERFACE_ENTRY(IOleCache), LCL_INTERFACE_ENTRY(IDropSource), + STD_INTERFACE_ENTRY(IDropTarget), + BAS_INTERFACE_ENTRY(IAdviseSink2, IAdviseSink), + STD_INTERFACE_ENTRY(IRunnableObject), + BAS_INTERFACE_ENTRY(IViewObject2, IViewObject), + BAS_INTERFACE_ENTRY(IOleCache2, IOleCache), + STD_INTERFACE_ENTRY(IOleCacheControl), STD_INTERFACE_ENTRY(IRemUnknown), LCL_INTERFACE_ENTRY(IClientSecurity), LCL_INTERFACE_ENTRY(IServerSecurity), + STD_INTERFACE_ENTRY(ISequentialStream), { NULL } /* list terminator */ }; /*********************************************************************** * DllRegisterServer (OLE32.@) */ -HRESULT WINAPI DllRegisterServer() +HRESULT WINAPI DllRegisterServer(void) { HRESULT hr; @@ -498,7 +653,7 @@ HRESULT WINAPI DllRegisterServer() /*********************************************************************** * DllUnregisterServer (OLE32.@) */ -HRESULT WINAPI DllUnregisterServer() +HRESULT WINAPI DllUnregisterServer(void) { HRESULT hr; diff --git a/reactos/dll/win32/ole32/rpc.c b/reactos/dll/win32/ole32/rpc.c index c57bab5e6ac..9c3ab832bb8 100644 --- a/reactos/dll/win32/ole32/rpc.c +++ b/reactos/dll/win32/ole32/rpc.c @@ -17,16 +17,14 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" +#include "wine/port.h" -#include #include -#include #include -#include #define COBJMACROS #define NONAMELESSUNION @@ -41,10 +39,7 @@ #include "rpc.h" #include "winerror.h" #include "winreg.h" -#include "wtypes.h" -#include "excpt.h" #include "wine/unicode.h" -#include "wine/exception.h" #include "compobj_private.h" @@ -69,7 +64,17 @@ static CRITICAL_SECTION_DEBUG csRegIf_debug = }; static CRITICAL_SECTION csRegIf = { &csRegIf_debug, -1, 0, 0, 0, 0 }; -static WCHAR wszPipeTransport[] = {'n','c','a','c','n','_','n','p',0}; +static struct list channel_hooks = LIST_INIT(channel_hooks); /* (CS csChannelHook) */ +static CRITICAL_SECTION csChannelHook; +static CRITICAL_SECTION_DEBUG csChannelHook_debug = +{ + 0, 0, &csChannelHook, + { &csChannelHook_debug.ProcessLocksList, &csChannelHook_debug.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": channel hooks") } +}; +static CRITICAL_SECTION csChannelHook = { &csChannelHook_debug, -1, 0, 0, 0, 0 }; + +static WCHAR wszRpcTransport[] = {'n','c','a','l','r','p','c',0}; struct registered_if @@ -98,6 +103,11 @@ typedef struct RpcChannelBuffer super; /* superclass */ RPC_BINDING_HANDLE bind; /* handle to the remote server */ + OXID oxid; /* apartment in which the channel is valid */ + DWORD server_pid; /* id of server process */ + DWORD dest_context; /* returned from GetDestCtx */ + LPVOID dest_context_data; /* returned from GetDestCtx */ + HANDLE event; /* cached event handle */ } ClientRpcChannelBuffer; struct dispatch_params @@ -105,18 +115,323 @@ struct dispatch_params RPCOLEMESSAGE *msg; /* message */ IRpcStubBuffer *stub; /* stub buffer, if applicable */ IRpcChannelBuffer *chan; /* server channel buffer, if applicable */ + IID iid; /* ID of interface being called */ + IUnknown *iface; /* interface being called */ HANDLE handle; /* handle that will become signaled when call finishes */ RPC_STATUS status; /* status (out) */ HRESULT hr; /* hresult (out) */ }; -static WINE_EXCEPTION_FILTER(ole_filter) +struct message_state { - if (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION) - return EXCEPTION_CONTINUE_SEARCH; - return EXCEPTION_EXECUTE_HANDLER; + RPC_BINDING_HANDLE binding_handle; + ULONG prefix_data_len; + SChannelHookCallInfo channel_hook_info; +}; + +typedef struct +{ + ULONG conformance; /* NDR */ + GUID id; + ULONG size; + /* [size_is((size+7)&~7)] */ unsigned char data[1]; +} WIRE_ORPC_EXTENT; + +struct channel_hook_entry +{ + struct list entry; + GUID id; + IChannelHook *hook; +}; + +struct channel_hook_buffer_data +{ + GUID id; + ULONG extension_size; +}; + + +static HRESULT unmarshal_ORPCTHAT(RPC_MESSAGE *msg, ORPCTHAT *orpcthat, + ORPC_EXTENT_ARRAY *orpc_ext_array, WIRE_ORPC_EXTENT **first_wire_orpc_extent); + +/* Channel Hook Functions */ + +static ULONG ChannelHooks_ClientGetSize(SChannelHookCallInfo *info, + struct channel_hook_buffer_data **data, unsigned int *hook_count, + ULONG *extension_count) +{ + struct channel_hook_entry *entry; + ULONG total_size = 0; + unsigned int hook_index = 0; + + *hook_count = 0; + *extension_count = 0; + + EnterCriticalSection(&csChannelHook); + + LIST_FOR_EACH_ENTRY(entry, &channel_hooks, struct channel_hook_entry, entry) + (*hook_count)++; + + if (*hook_count) + *data = HeapAlloc(GetProcessHeap(), 0, *hook_count * sizeof(struct channel_hook_buffer_data)); + else + *data = NULL; + + LIST_FOR_EACH_ENTRY(entry, &channel_hooks, struct channel_hook_entry, entry) + { + ULONG extension_size = 0; + + IChannelHook_ClientGetSize(entry->hook, &entry->id, &info->iid, &extension_size); + + TRACE("%s: extension_size = %u\n", debugstr_guid(&entry->id), extension_size); + + extension_size = (extension_size+7)&~7; + (*data)[hook_index].id = entry->id; + (*data)[hook_index].extension_size = extension_size; + + /* an extension is only put onto the wire if it has data to write */ + if (extension_size) + { + total_size += FIELD_OFFSET(WIRE_ORPC_EXTENT, data[extension_size]); + (*extension_count)++; + } + + hook_index++; + } + + LeaveCriticalSection(&csChannelHook); + + return total_size; } +static unsigned char * ChannelHooks_ClientFillBuffer(SChannelHookCallInfo *info, + unsigned char *buffer, struct channel_hook_buffer_data *data, + unsigned int hook_count) +{ + struct channel_hook_entry *entry; + + EnterCriticalSection(&csChannelHook); + + LIST_FOR_EACH_ENTRY(entry, &channel_hooks, struct channel_hook_entry, entry) + { + unsigned int i; + ULONG extension_size = 0; + WIRE_ORPC_EXTENT *wire_orpc_extent = (WIRE_ORPC_EXTENT *)buffer; + + for (i = 0; i < hook_count; i++) + if (IsEqualGUID(&entry->id, &data[i].id)) + extension_size = data[i].extension_size; + + /* an extension is only put onto the wire if it has data to write */ + if (!extension_size) + continue; + + IChannelHook_ClientFillBuffer(entry->hook, &entry->id, &info->iid, + &extension_size, buffer + FIELD_OFFSET(WIRE_ORPC_EXTENT, data[0])); + + TRACE("%s: extension_size = %u\n", debugstr_guid(&entry->id), extension_size); + + /* FIXME: set unused portion of wire_orpc_extent->data to 0? */ + + wire_orpc_extent->conformance = (extension_size+7)&~7; + wire_orpc_extent->size = extension_size; + memcpy(&wire_orpc_extent->id, &entry->id, sizeof(wire_orpc_extent->id)); + buffer += FIELD_OFFSET(WIRE_ORPC_EXTENT, data[wire_orpc_extent->conformance]); + } + + LeaveCriticalSection(&csChannelHook); + + HeapFree(GetProcessHeap(), 0, data); + + return buffer; +} + +static void ChannelHooks_ServerNotify(SChannelHookCallInfo *info, + DWORD lDataRep, WIRE_ORPC_EXTENT *first_wire_orpc_extent, + ULONG extension_count) +{ + struct channel_hook_entry *entry; + ULONG i; + + EnterCriticalSection(&csChannelHook); + + LIST_FOR_EACH_ENTRY(entry, &channel_hooks, struct channel_hook_entry, entry) + { + WIRE_ORPC_EXTENT *wire_orpc_extent; + for (i = 0, wire_orpc_extent = first_wire_orpc_extent; + i < extension_count; + i++, wire_orpc_extent = (WIRE_ORPC_EXTENT *)&wire_orpc_extent->data[wire_orpc_extent->conformance]) + { + if (IsEqualGUID(&entry->id, &wire_orpc_extent->id)) + break; + } + if (i == extension_count) wire_orpc_extent = NULL; + + IChannelHook_ServerNotify(entry->hook, &entry->id, &info->iid, + wire_orpc_extent ? wire_orpc_extent->size : 0, + wire_orpc_extent ? wire_orpc_extent->data : NULL, + lDataRep); + } + + LeaveCriticalSection(&csChannelHook); +} + +static ULONG ChannelHooks_ServerGetSize(SChannelHookCallInfo *info, + struct channel_hook_buffer_data **data, unsigned int *hook_count, + ULONG *extension_count) +{ + struct channel_hook_entry *entry; + ULONG total_size = 0; + unsigned int hook_index = 0; + + *hook_count = 0; + *extension_count = 0; + + EnterCriticalSection(&csChannelHook); + + LIST_FOR_EACH_ENTRY(entry, &channel_hooks, struct channel_hook_entry, entry) + (*hook_count)++; + + if (*hook_count) + *data = HeapAlloc(GetProcessHeap(), 0, *hook_count * sizeof(struct channel_hook_buffer_data)); + else + *data = NULL; + + LIST_FOR_EACH_ENTRY(entry, &channel_hooks, struct channel_hook_entry, entry) + { + ULONG extension_size = 0; + + IChannelHook_ServerGetSize(entry->hook, &entry->id, &info->iid, S_OK, + &extension_size); + + TRACE("%s: extension_size = %u\n", debugstr_guid(&entry->id), extension_size); + + extension_size = (extension_size+7)&~7; + (*data)[hook_index].id = entry->id; + (*data)[hook_index].extension_size = extension_size; + + /* an extension is only put onto the wire if it has data to write */ + if (extension_size) + { + total_size += FIELD_OFFSET(WIRE_ORPC_EXTENT, data[extension_size]); + (*extension_count)++; + } + + hook_index++; + } + + LeaveCriticalSection(&csChannelHook); + + return total_size; +} + +static unsigned char * ChannelHooks_ServerFillBuffer(SChannelHookCallInfo *info, + unsigned char *buffer, struct channel_hook_buffer_data *data, + unsigned int hook_count) +{ + struct channel_hook_entry *entry; + + EnterCriticalSection(&csChannelHook); + + LIST_FOR_EACH_ENTRY(entry, &channel_hooks, struct channel_hook_entry, entry) + { + unsigned int i; + ULONG extension_size = 0; + WIRE_ORPC_EXTENT *wire_orpc_extent = (WIRE_ORPC_EXTENT *)buffer; + + for (i = 0; i < hook_count; i++) + if (IsEqualGUID(&entry->id, &data[i].id)) + extension_size = data[i].extension_size; + + /* an extension is only put onto the wire if it has data to write */ + if (!extension_size) + continue; + + IChannelHook_ServerFillBuffer(entry->hook, &entry->id, &info->iid, + &extension_size, buffer + FIELD_OFFSET(WIRE_ORPC_EXTENT, data[0]), + S_OK); + + TRACE("%s: extension_size = %u\n", debugstr_guid(&entry->id), extension_size); + + /* FIXME: set unused portion of wire_orpc_extent->data to 0? */ + + wire_orpc_extent->conformance = (extension_size+7)&~7; + wire_orpc_extent->size = extension_size; + memcpy(&wire_orpc_extent->id, &entry->id, sizeof(wire_orpc_extent->id)); + buffer += FIELD_OFFSET(WIRE_ORPC_EXTENT, data[wire_orpc_extent->conformance]); + } + + LeaveCriticalSection(&csChannelHook); + + HeapFree(GetProcessHeap(), 0, data); + + return buffer; +} + +static void ChannelHooks_ClientNotify(SChannelHookCallInfo *info, + DWORD lDataRep, WIRE_ORPC_EXTENT *first_wire_orpc_extent, + ULONG extension_count, HRESULT hrFault) +{ + struct channel_hook_entry *entry; + ULONG i; + + EnterCriticalSection(&csChannelHook); + + LIST_FOR_EACH_ENTRY(entry, &channel_hooks, struct channel_hook_entry, entry) + { + WIRE_ORPC_EXTENT *wire_orpc_extent; + for (i = 0, wire_orpc_extent = first_wire_orpc_extent; + i < extension_count; + i++, wire_orpc_extent = (WIRE_ORPC_EXTENT *)&wire_orpc_extent->data[wire_orpc_extent->conformance]) + { + if (IsEqualGUID(&entry->id, &wire_orpc_extent->id)) + break; + } + if (i == extension_count) wire_orpc_extent = NULL; + + IChannelHook_ClientNotify(entry->hook, &entry->id, &info->iid, + wire_orpc_extent ? wire_orpc_extent->size : 0, + wire_orpc_extent ? wire_orpc_extent->data : NULL, + lDataRep, hrFault); + } + + LeaveCriticalSection(&csChannelHook); +} + +HRESULT RPC_RegisterChannelHook(REFGUID rguid, IChannelHook *hook) +{ + struct channel_hook_entry *entry; + + TRACE("(%s, %p)\n", debugstr_guid(rguid), hook); + + entry = HeapAlloc(GetProcessHeap(), 0, sizeof(*entry)); + if (!entry) + return E_OUTOFMEMORY; + + memcpy(&entry->id, rguid, sizeof(entry->id)); + entry->hook = hook; + IChannelHook_AddRef(hook); + + EnterCriticalSection(&csChannelHook); + list_add_tail(&channel_hooks, &entry->entry); + LeaveCriticalSection(&csChannelHook); + + return S_OK; +} + +void RPC_UnregisterAllChannelHooks(void) +{ + struct channel_hook_entry *cursor; + struct channel_hook_entry *cursor2; + + EnterCriticalSection(&csChannelHook); + LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, &channel_hooks, struct channel_hook_entry, entry) + HeapFree(GetProcessHeap(), 0, cursor); + LeaveCriticalSection(&csChannelHook); +} + +/* RPC Channel Buffer Functions */ + static HRESULT WINAPI RpcChannelBuffer_QueryInterface(LPRPCCHANNELBUFFER iface, REFIID riid, LPVOID *ppv) { *ppv = NULL; @@ -157,6 +472,7 @@ static ULONG WINAPI ClientRpcChannelBuffer_Release(LPRPCCHANNELBUFFER iface) if (ref) return ref; + if (This->event) CloseHandle(This->event); RpcBindingFree(&This->bind); HeapFree(GetProcessHeap(), 0, This); return 0; @@ -167,11 +483,77 @@ static HRESULT WINAPI ServerRpcChannelBuffer_GetBuffer(LPRPCCHANNELBUFFER iface, RpcChannelBuffer *This = (RpcChannelBuffer *)iface; RPC_MESSAGE *msg = (RPC_MESSAGE *)olemsg; RPC_STATUS status; + ORPCTHAT *orpcthat; + struct message_state *message_state; + ULONG extensions_size; + struct channel_hook_buffer_data *channel_hook_data; + unsigned int channel_hook_count; + ULONG extension_count; TRACE("(%p)->(%p,%s)\n", This, olemsg, debugstr_guid(riid)); + message_state = (struct message_state *)msg->Handle; + /* restore the binding handle and the real start of data */ + msg->Handle = message_state->binding_handle; + msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; + + extensions_size = ChannelHooks_ServerGetSize(&message_state->channel_hook_info, + &channel_hook_data, &channel_hook_count, &extension_count); + + msg->BufferLength += FIELD_OFFSET(ORPCTHAT, extensions) + 4; + if (extensions_size) + { + msg->BufferLength += FIELD_OFFSET(ORPC_EXTENT_ARRAY, extent) + 2*sizeof(DWORD) + extensions_size; + if (extension_count & 1) + msg->BufferLength += FIELD_OFFSET(WIRE_ORPC_EXTENT, data[0]); + } + status = I_RpcGetBuffer(msg); + orpcthat = (ORPCTHAT *)msg->Buffer; + msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(ORPCTHAT, extensions); + + orpcthat->flags = ORPCF_NULL /* FIXME? */; + + /* NDR representation of orpcthat->extensions */ + *(DWORD *)msg->Buffer = extensions_size ? 1 : 0; + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + + if (extensions_size) + { + ORPC_EXTENT_ARRAY *orpc_extent_array = msg->Buffer; + orpc_extent_array->size = extension_count; + orpc_extent_array->reserved = 0; + msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(ORPC_EXTENT_ARRAY, extent); + /* NDR representation of orpc_extent_array->extent */ + *(DWORD *)msg->Buffer = 1; + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + /* NDR representation of [size_is] attribute of orpc_extent_array->extent */ + *(DWORD *)msg->Buffer = (extension_count + 1) & ~1; + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + + msg->Buffer = ChannelHooks_ServerFillBuffer(&message_state->channel_hook_info, + msg->Buffer, channel_hook_data, channel_hook_count); + + /* we must add a dummy extension if there is an odd extension + * count to meet the contract specified by the size_is attribute */ + if (extension_count & 1) + { + WIRE_ORPC_EXTENT *wire_orpc_extent = msg->Buffer; + wire_orpc_extent->conformance = 0; + memcpy(&wire_orpc_extent->id, &GUID_NULL, sizeof(wire_orpc_extent->id)); + wire_orpc_extent->size = 0; + msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(WIRE_ORPC_EXTENT, data[0]); + } + } + + /* store the prefixed data length so that we can restore the real buffer + * later */ + message_state->prefix_data_len = (char *)msg->Buffer - (char *)orpcthat; + msg->BufferLength -= message_state->prefix_data_len; + /* save away the message state again */ + msg->Handle = message_state; + TRACE("-- %ld\n", status); return HRESULT_FROM_WIN32(status); @@ -183,6 +565,12 @@ static HRESULT WINAPI ClientRpcChannelBuffer_GetBuffer(LPRPCCHANNELBUFFER iface, RPC_MESSAGE *msg = (RPC_MESSAGE *)olemsg; RPC_CLIENT_INTERFACE *cif; RPC_STATUS status; + ORPCTHIS *orpcthis; + struct message_state *message_state; + ULONG extensions_size; + struct channel_hook_buffer_data *channel_hook_data; + unsigned int channel_hook_count; + ULONG extension_count; TRACE("(%p)->(%p,%s)\n", This, olemsg, debugstr_guid(riid)); @@ -190,52 +578,199 @@ static HRESULT WINAPI ClientRpcChannelBuffer_GetBuffer(LPRPCCHANNELBUFFER iface, if (!cif) return E_OUTOFMEMORY; + message_state = HeapAlloc(GetProcessHeap(), 0, sizeof(*message_state)); + if (!message_state) + { + HeapFree(GetProcessHeap(), 0, cif); + return E_OUTOFMEMORY; + } + cif->Length = sizeof(RPC_CLIENT_INTERFACE); /* RPC interface ID = COM interface ID */ cif->InterfaceId.SyntaxGUID = *riid; /* COM objects always have a version of 0.0 */ cif->InterfaceId.SyntaxVersion.MajorVersion = 0; cif->InterfaceId.SyntaxVersion.MinorVersion = 0; - msg->RpcInterfaceInformation = cif; msg->Handle = This->bind; - + msg->RpcInterfaceInformation = cif; + + message_state->channel_hook_info.iid = *riid; + message_state->channel_hook_info.cbSize = sizeof(message_state->channel_hook_info); + message_state->channel_hook_info.uCausality = COM_CurrentCausalityId(); + message_state->channel_hook_info.dwServerPid = This->server_pid; + message_state->channel_hook_info.iMethod = msg->ProcNum; + message_state->channel_hook_info.pObject = NULL; /* only present on server-side */ + + extensions_size = ChannelHooks_ClientGetSize(&message_state->channel_hook_info, + &channel_hook_data, &channel_hook_count, &extension_count); + + msg->BufferLength += FIELD_OFFSET(ORPCTHIS, extensions) + 4; + if (extensions_size) + { + msg->BufferLength += FIELD_OFFSET(ORPC_EXTENT_ARRAY, extent) + 2*sizeof(DWORD) + extensions_size; + if (extension_count & 1) + msg->BufferLength += FIELD_OFFSET(WIRE_ORPC_EXTENT, data[0]); + } + status = I_RpcGetBuffer(msg); + message_state->prefix_data_len = 0; + message_state->binding_handle = This->bind; + msg->Handle = message_state; + + if (status == RPC_S_OK) + { + orpcthis = (ORPCTHIS *)msg->Buffer; + msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(ORPCTHIS, extensions); + + orpcthis->version.MajorVersion = COM_MAJOR_VERSION; + orpcthis->version.MinorVersion = COM_MINOR_VERSION; + orpcthis->flags = message_state->channel_hook_info.dwServerPid ? ORPCF_LOCAL : ORPCF_NULL; + orpcthis->reserved1 = 0; + orpcthis->cid = message_state->channel_hook_info.uCausality; + + /* NDR representation of orpcthis->extensions */ + *(DWORD *)msg->Buffer = extensions_size ? 1 : 0; + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + + if (extensions_size) + { + ORPC_EXTENT_ARRAY *orpc_extent_array = msg->Buffer; + orpc_extent_array->size = extension_count; + orpc_extent_array->reserved = 0; + msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(ORPC_EXTENT_ARRAY, extent); + /* NDR representation of orpc_extent_array->extent */ + *(DWORD *)msg->Buffer = 1; + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + /* NDR representation of [size_is] attribute of orpc_extent_array->extent */ + *(DWORD *)msg->Buffer = (extension_count + 1) & ~1; + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + + msg->Buffer = ChannelHooks_ClientFillBuffer(&message_state->channel_hook_info, + msg->Buffer, channel_hook_data, channel_hook_count); + + /* we must add a dummy extension if there is an odd extension + * count to meet the contract specified by the size_is attribute */ + if (extension_count & 1) + { + WIRE_ORPC_EXTENT *wire_orpc_extent = msg->Buffer; + wire_orpc_extent->conformance = 0; + memcpy(&wire_orpc_extent->id, &GUID_NULL, sizeof(wire_orpc_extent->id)); + wire_orpc_extent->size = 0; + msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(WIRE_ORPC_EXTENT, data[0]); + } + } + + /* store the prefixed data length so that we can restore the real buffer + * pointer in ClientRpcChannelBuffer_SendReceive. */ + message_state->prefix_data_len = (char *)msg->Buffer - (char *)orpcthis; + msg->BufferLength -= message_state->prefix_data_len; + } + TRACE("-- %ld\n", status); return HRESULT_FROM_WIN32(status); } +static HRESULT WINAPI ServerRpcChannelBuffer_SendReceive(LPRPCCHANNELBUFFER iface, RPCOLEMESSAGE *olemsg, ULONG *pstatus) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HANDLE ClientRpcChannelBuffer_GetEventHandle(ClientRpcChannelBuffer *This) +{ + HANDLE event = InterlockedExchangePointer(&This->event, NULL); + + /* Note: must be auto-reset event so we can reuse it without a call + * to ResetEvent */ + if (!event) event = CreateEventW(NULL, FALSE, FALSE, NULL); + + return event; +} + +static void ClientRpcChannelBuffer_ReleaseEventHandle(ClientRpcChannelBuffer *This, HANDLE event) +{ + if (InterlockedCompareExchangePointer(&This->event, event, NULL)) + /* already a handle cached in This */ + CloseHandle(event); +} + /* this thread runs an outgoing RPC */ static DWORD WINAPI rpc_sendreceive_thread(LPVOID param) { struct dispatch_params *data = (struct dispatch_params *) param; - - /* FIXME: trap and rethrow RPC exceptions in app thread */ + + /* Note: I_RpcSendReceive doesn't raise exceptions like the higher-level + * RPC functions do */ data->status = I_RpcSendReceive((RPC_MESSAGE *)data->msg); TRACE("completed with status 0x%lx\n", data->status); - + + SetEvent(data->handle); + return 0; } -static HRESULT WINAPI RpcChannelBuffer_SendReceive(LPRPCCHANNELBUFFER iface, RPCOLEMESSAGE *olemsg, ULONG *pstatus) +static inline HRESULT ClientRpcChannelBuffer_IsCorrectApartment(ClientRpcChannelBuffer *This, APARTMENT *apt) { - HRESULT hr = S_OK; + OXID oxid; + if (!apt) + return S_FALSE; + if (apartment_getoxid(apt, &oxid) != S_OK) + return S_FALSE; + if (This->oxid != oxid) + return S_FALSE; + return S_OK; +} + +static HRESULT WINAPI ClientRpcChannelBuffer_SendReceive(LPRPCCHANNELBUFFER iface, RPCOLEMESSAGE *olemsg, ULONG *pstatus) +{ + ClientRpcChannelBuffer *This = (ClientRpcChannelBuffer *)iface; + HRESULT hr; RPC_MESSAGE *msg = (RPC_MESSAGE *)olemsg; RPC_STATUS status; DWORD index; struct dispatch_params *params; - DWORD tid; - IRpcStubBuffer *stub; - APARTMENT *apt; + APARTMENT *apt = NULL; IPID ipid; + struct message_state *message_state; + ORPCTHAT orpcthat; + ORPC_EXTENT_ARRAY orpc_ext_array; + WIRE_ORPC_EXTENT *first_wire_orpc_extent = NULL; + HRESULT hrFault = S_OK; - TRACE("(%p) iMethod=%ld\n", olemsg, olemsg->iMethod); + TRACE("(%p) iMethod=%d\n", olemsg, olemsg->iMethod); + + hr = ClientRpcChannelBuffer_IsCorrectApartment(This, COM_CurrentApt()); + if (hr != S_OK) + { + ERR("called from wrong apartment, should have been 0x%s\n", + wine_dbgstr_longlong(This->oxid)); + return RPC_E_WRONG_THREAD; + } + /* this situation should be impossible in multi-threaded apartments, + * because the calling thread isn't re-entrable. + * Note: doing a COM call during the processing of a sent message is + * only disallowed if a client call is already being waited for + * completion */ + if (!COM_CurrentApt()->multi_threaded && + COM_CurrentInfo()->pending_call_count_client && + InSendMessage()) + { + ERR("can't make an outgoing COM call in response to a sent message\n"); + return RPC_E_CANTCALLOUT_ININPUTSYNCCALL; + } params = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*params)); if (!params) return E_OUTOFMEMORY; - + + message_state = (struct message_state *)msg->Handle; + /* restore the binding handle and the real start of data */ + msg->Handle = message_state->binding_handle; + msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; + msg->BufferLength += message_state->prefix_data_len; + params->msg = olemsg; params->status = RPC_S_OK; params->hr = S_OK; @@ -247,21 +782,31 @@ static HRESULT WINAPI RpcChannelBuffer_SendReceive(LPRPCCHANNELBUFFER iface, RPC * a thread to process the RPC when this function is called indirectly * from DllMain */ - RpcBindingInqObject(msg->Handle, &ipid); - stub = ipid_to_apt_and_stubbuffer(&ipid, &apt); - if (apt && (apt->model & COINIT_APARTMENTTHREADED)) + RpcBindingInqObject(message_state->binding_handle, &ipid); + hr = ipid_get_dispatch_params(&ipid, &apt, ¶ms->stub, ¶ms->chan, + ¶ms->iid, ¶ms->iface); + params->handle = ClientRpcChannelBuffer_GetEventHandle(This); + if ((hr == S_OK) && !apt->multi_threaded) { - params->stub = stub; - params->chan = NULL; /* FIXME: pass server channel */ - params->handle = CreateEventW(NULL, FALSE, FALSE, NULL); + TRACE("Calling apartment thread 0x%08x...\n", apt->tid); - TRACE("Calling apartment thread 0x%08lx...\n", apt->tid); - - PostMessageW(apt->win, DM_EXECUTERPC, 0, (LPARAM)params); + if (!PostMessageW(apartment_getwindow(apt), DM_EXECUTERPC, 0, (LPARAM)params)) + { + ERR("PostMessage failed with error %u\n", GetLastError()); + hr = HRESULT_FROM_WIN32(GetLastError()); + } } else { - if (stub) IRpcStubBuffer_Release(stub); + if (hr == S_OK) + { + /* otherwise, we go via RPC runtime so the stub and channel aren't + * needed here */ + IRpcStubBuffer_Release(params->stub); + params->stub = NULL; + IRpcChannelBuffer_Release(params->chan); + params->chan = NULL; + } /* we use a separate thread here because we need to be able to * pump the message loop in the application thread: if we do not, @@ -269,38 +814,87 @@ static HRESULT WINAPI RpcChannelBuffer_SendReceive(LPRPCCHANNELBUFFER iface, RPC * and re-enter this STA from an incoming server thread will * deadlock. InstallShield is an example of that. */ - params->handle = CreateThread(NULL, 0, rpc_sendreceive_thread, params, 0, &tid); - if (!params->handle) + if (!QueueUserWorkItem(rpc_sendreceive_thread, params, WT_EXECUTEDEFAULT)) { - ERR("Could not create RpcSendReceive thread, error %lx\n", GetLastError()); + ERR("QueueUserWorkItem failed with error %u\n", GetLastError()); hr = E_UNEXPECTED; } + else + hr = S_OK; } if (apt) apartment_release(apt); if (hr == S_OK) - hr = CoWaitForMultipleHandles(0, INFINITE, 1, ¶ms->handle, &index); - CloseHandle(params->handle); + { + if (WaitForSingleObject(params->handle, 0)) + { + COM_CurrentInfo()->pending_call_count_client++; + hr = CoWaitForMultipleHandles(0, INFINITE, 1, ¶ms->handle, &index); + COM_CurrentInfo()->pending_call_count_client--; + } + } + ClientRpcChannelBuffer_ReleaseEventHandle(This, params->handle); - if (hr == S_OK) hr = params->hr; + /* for WM shortcut, faults are returned in params->hr */ + if (hr == S_OK) + hrFault = params->hr; status = params->status; HeapFree(GetProcessHeap(), 0, params); params = NULL; - if (hr) return hr; - - if (pstatus) *pstatus = status; + orpcthat.flags = ORPCF_NULL; + orpcthat.extensions = NULL; + /* for normal RPC calls, faults are returned in first 4 bytes of the + * buffer */ TRACE("RPC call status: 0x%lx\n", status); - if (status == RPC_S_OK) - hr = S_OK; - else if (status == RPC_S_CALL_FAILED) - hr = *(HRESULT *)olemsg->Buffer; - else + if (status == RPC_S_CALL_FAILED) + hrFault = *(HRESULT *)olemsg->Buffer; + else if (status != RPC_S_OK) hr = HRESULT_FROM_WIN32(status); - TRACE("-- 0x%08lx\n", hr); + TRACE("hrFault = 0x%08x\n", hrFault); + + /* FIXME: this condition should be + * "hr == S_OK && (!hrFault || msg->BufferLength > FIELD_OFFSET(ORPCTHAT, extensions) + 4)" + * but we don't currently reset the message length for PostMessage + * dispatched calls */ + if (hr == S_OK && hrFault == S_OK) + { + HRESULT hr2; + char *original_buffer = msg->Buffer; + + /* handle ORPCTHAT and client extensions */ + + hr2 = unmarshal_ORPCTHAT(msg, &orpcthat, &orpc_ext_array, &first_wire_orpc_extent); + if (FAILED(hr2)) + hr = hr2; + + message_state->prefix_data_len = (char *)msg->Buffer - original_buffer; + msg->BufferLength -= message_state->prefix_data_len; + } + else + message_state->prefix_data_len = 0; + + if (hr == S_OK) + { + ChannelHooks_ClientNotify(&message_state->channel_hook_info, + msg->DataRepresentation, + first_wire_orpc_extent, + orpcthat.extensions && first_wire_orpc_extent ? orpcthat.extensions->size : 0, + hrFault); + } + + /* save away the message state again */ + msg->Handle = message_state; + + if (pstatus) *pstatus = status; + + if (hr == S_OK) + hr = hrFault; + + TRACE("-- 0x%08x\n", hr); return hr; } @@ -309,11 +903,21 @@ static HRESULT WINAPI ServerRpcChannelBuffer_FreeBuffer(LPRPCCHANNELBUFFER iface { RPC_MESSAGE *msg = (RPC_MESSAGE *)olemsg; RPC_STATUS status; + struct message_state *message_state; TRACE("(%p)\n", msg); + message_state = (struct message_state *)msg->Handle; + /* restore the binding handle and the real start of data */ + msg->Handle = message_state->binding_handle; + msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; + msg->BufferLength += message_state->prefix_data_len; + message_state->prefix_data_len = 0; + status = I_RpcFreeBuffer(msg); + msg->Handle = message_state; + TRACE("-- %ld\n", status); return HRESULT_FROM_WIN32(status); @@ -323,20 +927,40 @@ static HRESULT WINAPI ClientRpcChannelBuffer_FreeBuffer(LPRPCCHANNELBUFFER iface { RPC_MESSAGE *msg = (RPC_MESSAGE *)olemsg; RPC_STATUS status; + struct message_state *message_state; TRACE("(%p)\n", msg); + message_state = (struct message_state *)msg->Handle; + /* restore the binding handle and the real start of data */ + msg->Handle = message_state->binding_handle; + msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; + msg->BufferLength += message_state->prefix_data_len; + status = I_RpcFreeBuffer(msg); HeapFree(GetProcessHeap(), 0, msg->RpcInterfaceInformation); msg->RpcInterfaceInformation = NULL; + HeapFree(GetProcessHeap(), 0, message_state); TRACE("-- %ld\n", status); return HRESULT_FROM_WIN32(status); } -static HRESULT WINAPI RpcChannelBuffer_GetDestCtx(LPRPCCHANNELBUFFER iface, DWORD* pdwDestContext, void** ppvDestContext) +static HRESULT WINAPI ClientRpcChannelBuffer_GetDestCtx(LPRPCCHANNELBUFFER iface, DWORD* pdwDestContext, void** ppvDestContext) +{ + ClientRpcChannelBuffer *This = (ClientRpcChannelBuffer *)iface; + + TRACE("(%p,%p)\n", pdwDestContext, ppvDestContext); + + *pdwDestContext = This->dest_context; + *ppvDestContext = This->dest_context_data; + + return S_OK; +} + +static HRESULT WINAPI ServerRpcChannelBuffer_GetDestCtx(LPRPCCHANNELBUFFER iface, DWORD* pdwDestContext, void** ppvDestContext) { FIXME("(%p,%p), stub!\n", pdwDestContext, ppvDestContext); return E_FAIL; @@ -355,9 +979,9 @@ static const IRpcChannelBufferVtbl ClientRpcChannelBufferVtbl = RpcChannelBuffer_AddRef, ClientRpcChannelBuffer_Release, ClientRpcChannelBuffer_GetBuffer, - RpcChannelBuffer_SendReceive, + ClientRpcChannelBuffer_SendReceive, ClientRpcChannelBuffer_FreeBuffer, - RpcChannelBuffer_GetDestCtx, + ClientRpcChannelBuffer_GetDestCtx, RpcChannelBuffer_IsConnected }; @@ -367,14 +991,17 @@ static const IRpcChannelBufferVtbl ServerRpcChannelBufferVtbl = RpcChannelBuffer_AddRef, ServerRpcChannelBuffer_Release, ServerRpcChannelBuffer_GetBuffer, - RpcChannelBuffer_SendReceive, + ServerRpcChannelBuffer_SendReceive, ServerRpcChannelBuffer_FreeBuffer, - RpcChannelBuffer_GetDestCtx, + ServerRpcChannelBuffer_GetDestCtx, RpcChannelBuffer_IsConnected }; /* returns a channel buffer for proxies */ -HRESULT RPC_CreateClientChannel(const OXID *oxid, const IPID *ipid, IRpcChannelBuffer **chan) +HRESULT RPC_CreateClientChannel(const OXID *oxid, const IPID *ipid, + const OXID_INFO *oxid_info, + DWORD dest_context, void *dest_context_data, + IRpcChannelBuffer **chan) { ClientRpcChannelBuffer *This; WCHAR endpoint[200]; @@ -382,14 +1009,14 @@ HRESULT RPC_CreateClientChannel(const OXID *oxid, const IPID *ipid, IRpcChannelB RPC_STATUS status; LPWSTR string_binding; - /* connect to the apartment listener thread */ + /* FIXME: get the endpoint from oxid_info->psa instead */ get_rpc_endpoint(endpoint, oxid); TRACE("proxy pipe: connecting to endpoint: %s\n", debugstr_w(endpoint)); status = RpcStringBindingComposeW( NULL, - wszPipeTransport, + wszRpcTransport, NULL, endpoint, NULL, @@ -426,6 +1053,11 @@ HRESULT RPC_CreateClientChannel(const OXID *oxid, const IPID *ipid, IRpcChannelB This->super.lpVtbl = &ClientRpcChannelBufferVtbl; This->super.refs = 1; This->bind = bind; + apartment_getoxid(COM_CurrentApt(), &This->oxid); + This->server_pid = oxid_info->dwPid; + This->dest_context = dest_context; + This->dest_context_data = dest_context_data; + This->event = NULL; *chan = (IRpcChannelBuffer*)This; @@ -446,68 +1078,344 @@ HRESULT RPC_CreateServerChannel(IRpcChannelBuffer **chan) return S_OK; } +/* unmarshals ORPC_EXTENT_ARRAY according to NDR rules, but doesn't allocate + * any memory */ +static HRESULT unmarshal_ORPC_EXTENT_ARRAY(RPC_MESSAGE *msg, const char *end, + ORPC_EXTENT_ARRAY *extensions, + WIRE_ORPC_EXTENT **first_wire_orpc_extent) +{ + DWORD pointer_id; + DWORD i; + + memcpy(extensions, msg->Buffer, FIELD_OFFSET(ORPC_EXTENT_ARRAY, extent)); + msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(ORPC_EXTENT_ARRAY, extent); + + if ((const char *)msg->Buffer + 2 * sizeof(DWORD) > end) + return RPC_E_INVALID_HEADER; + + pointer_id = *(DWORD *)msg->Buffer; + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + extensions->extent = NULL; + + if (pointer_id) + { + WIRE_ORPC_EXTENT *wire_orpc_extent; + + /* conformance */ + if (*(DWORD *)msg->Buffer != ((extensions->size+1)&~1)) + return RPC_S_INVALID_BOUND; + + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + + /* arbritary limit for security (don't know what native does) */ + if (extensions->size > 256) + { + ERR("too many extensions: %ld\n", extensions->size); + return RPC_S_INVALID_BOUND; + } + + *first_wire_orpc_extent = wire_orpc_extent = (WIRE_ORPC_EXTENT *)msg->Buffer; + for (i = 0; i < ((extensions->size+1)&~1); i++) + { + if ((const char *)&wire_orpc_extent->data[0] > end) + return RPC_S_INVALID_BOUND; + if (wire_orpc_extent->conformance != ((wire_orpc_extent->size+7)&~7)) + return RPC_S_INVALID_BOUND; + if ((const char *)&wire_orpc_extent->data[wire_orpc_extent->conformance] > end) + return RPC_S_INVALID_BOUND; + TRACE("size %u, guid %s\n", wire_orpc_extent->size, debugstr_guid(&wire_orpc_extent->id)); + wire_orpc_extent = (WIRE_ORPC_EXTENT *)&wire_orpc_extent->data[wire_orpc_extent->conformance]; + } + msg->Buffer = wire_orpc_extent; + } + + return S_OK; +} + +/* unmarshals ORPCTHIS according to NDR rules, but doesn't allocate any memory */ +static HRESULT unmarshal_ORPCTHIS(RPC_MESSAGE *msg, ORPCTHIS *orpcthis, + ORPC_EXTENT_ARRAY *orpc_ext_array, WIRE_ORPC_EXTENT **first_wire_orpc_extent) +{ + const char *end = (char *)msg->Buffer + msg->BufferLength; + + *first_wire_orpc_extent = NULL; + + if (msg->BufferLength < FIELD_OFFSET(ORPCTHIS, extensions) + 4) + { + ERR("invalid buffer length\n"); + return RPC_E_INVALID_HEADER; + } + + memcpy(orpcthis, msg->Buffer, FIELD_OFFSET(ORPCTHIS, extensions)); + msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(ORPCTHIS, extensions); + + if ((const char *)msg->Buffer + sizeof(DWORD) > end) + return RPC_E_INVALID_HEADER; + + if (*(DWORD *)msg->Buffer) + orpcthis->extensions = orpc_ext_array; + else + orpcthis->extensions = NULL; + + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + + if (orpcthis->extensions) + { + HRESULT hr = unmarshal_ORPC_EXTENT_ARRAY(msg, end, orpc_ext_array, + first_wire_orpc_extent); + if (FAILED(hr)) + return hr; + } + + if ((orpcthis->version.MajorVersion != COM_MAJOR_VERSION) || + (orpcthis->version.MinorVersion > COM_MINOR_VERSION)) + { + ERR("COM version {%d, %d} not supported\n", + orpcthis->version.MajorVersion, orpcthis->version.MinorVersion); + return RPC_E_VERSION_MISMATCH; + } + + if (orpcthis->flags & ~(ORPCF_LOCAL|ORPCF_RESERVED1|ORPCF_RESERVED2|ORPCF_RESERVED3|ORPCF_RESERVED4)) + { + ERR("invalid flags 0x%lx\n", orpcthis->flags & ~(ORPCF_LOCAL|ORPCF_RESERVED1|ORPCF_RESERVED2|ORPCF_RESERVED3|ORPCF_RESERVED4)); + return RPC_E_INVALID_HEADER; + } + + return S_OK; +} + +static HRESULT unmarshal_ORPCTHAT(RPC_MESSAGE *msg, ORPCTHAT *orpcthat, + ORPC_EXTENT_ARRAY *orpc_ext_array, WIRE_ORPC_EXTENT **first_wire_orpc_extent) +{ + const char *end = (char *)msg->Buffer + msg->BufferLength; + + *first_wire_orpc_extent = NULL; + + if (msg->BufferLength < FIELD_OFFSET(ORPCTHAT, extensions) + 4) + { + ERR("invalid buffer length\n"); + return RPC_E_INVALID_HEADER; + } + + memcpy(orpcthat, msg->Buffer, FIELD_OFFSET(ORPCTHAT, extensions)); + msg->Buffer = (char *)msg->Buffer + FIELD_OFFSET(ORPCTHAT, extensions); + + if ((const char *)msg->Buffer + sizeof(DWORD) > end) + return RPC_E_INVALID_HEADER; + + if (*(DWORD *)msg->Buffer) + orpcthat->extensions = orpc_ext_array; + else + orpcthat->extensions = NULL; + + msg->Buffer = (char *)msg->Buffer + sizeof(DWORD); + + if (orpcthat->extensions) + { + HRESULT hr = unmarshal_ORPC_EXTENT_ARRAY(msg, end, orpc_ext_array, + first_wire_orpc_extent); + if (FAILED(hr)) + return hr; + } + + if (orpcthat->flags & ~(ORPCF_LOCAL|ORPCF_RESERVED1|ORPCF_RESERVED2|ORPCF_RESERVED3|ORPCF_RESERVED4)) + { + ERR("invalid flags 0x%lx\n", orpcthat->flags & ~(ORPCF_LOCAL|ORPCF_RESERVED1|ORPCF_RESERVED2|ORPCF_RESERVED3|ORPCF_RESERVED4)); + return RPC_E_INVALID_HEADER; + } + + return S_OK; +} void RPC_ExecuteCall(struct dispatch_params *params) { - __TRY + struct message_state *message_state = NULL; + RPC_MESSAGE *msg = (RPC_MESSAGE *)params->msg; + char *original_buffer = msg->Buffer; + ORPCTHIS orpcthis; + ORPC_EXTENT_ARRAY orpc_ext_array; + WIRE_ORPC_EXTENT *first_wire_orpc_extent; + GUID old_causality_id; + + /* handle ORPCTHIS and server extensions */ + + params->hr = unmarshal_ORPCTHIS(msg, &orpcthis, &orpc_ext_array, &first_wire_orpc_extent); + if (params->hr != S_OK) { - params->hr = IRpcStubBuffer_Invoke(params->stub, params->msg, params->chan); + msg->Buffer = original_buffer; + goto exit; } - __EXCEPT(ole_filter) + + message_state = HeapAlloc(GetProcessHeap(), 0, sizeof(*message_state)); + if (!message_state) { - params->hr = GetExceptionCode(); + params->hr = E_OUTOFMEMORY; + msg->Buffer = original_buffer; + goto exit; } - __ENDTRY + + message_state->prefix_data_len = (char *)msg->Buffer - original_buffer; + message_state->binding_handle = msg->Handle; + + message_state->channel_hook_info.iid = params->iid; + message_state->channel_hook_info.cbSize = sizeof(message_state->channel_hook_info); + message_state->channel_hook_info.uCausality = orpcthis.cid; + message_state->channel_hook_info.dwServerPid = GetCurrentProcessId(); + message_state->channel_hook_info.iMethod = msg->ProcNum; + message_state->channel_hook_info.pObject = params->iface; + + if (orpcthis.extensions && first_wire_orpc_extent && + orpcthis.extensions->size) + ChannelHooks_ServerNotify(&message_state->channel_hook_info, msg->DataRepresentation, first_wire_orpc_extent, orpcthis.extensions->size); + + msg->Handle = message_state; + msg->BufferLength -= message_state->prefix_data_len; + + /* call message filter */ + + if (COM_CurrentApt()->filter) + { + DWORD handlecall; + INTERFACEINFO interface_info; + CALLTYPE calltype; + + interface_info.pUnk = params->iface; + interface_info.iid = params->iid; + interface_info.wMethod = msg->ProcNum; + + if (IsEqualGUID(&orpcthis.cid, &COM_CurrentInfo()->causality_id)) + calltype = CALLTYPE_NESTED; + else if (COM_CurrentInfo()->pending_call_count_server == 0) + calltype = CALLTYPE_TOPLEVEL; + else + calltype = CALLTYPE_TOPLEVEL_CALLPENDING; + + handlecall = IMessageFilter_HandleInComingCall(COM_CurrentApt()->filter, + calltype, + (HTASK)GetCurrentProcessId(), + 0 /* FIXME */, + &interface_info); + TRACE("IMessageFilter_HandleInComingCall returned %d\n", handlecall); + switch (handlecall) + { + case SERVERCALL_REJECTED: + params->hr = RPC_E_CALL_REJECTED; + goto exit_reset_state; + case SERVERCALL_RETRYLATER: +#if 0 /* FIXME: handle retries on the client side before enabling this code */ + params->hr = RPC_E_RETRY; + goto exit_reset_state; +#else + FIXME("retry call later not implemented\n"); + break; +#endif + case SERVERCALL_ISHANDLED: + default: + break; + } + } + + /* invoke the method */ + + /* save the old causality ID - note: any calls executed while processing + * messages received during the SendReceive will appear to originate from + * this call - this should be checked with what Windows does */ + old_causality_id = COM_CurrentInfo()->causality_id; + COM_CurrentInfo()->causality_id = orpcthis.cid; + COM_CurrentInfo()->pending_call_count_server++; + params->hr = IRpcStubBuffer_Invoke(params->stub, params->msg, params->chan); + COM_CurrentInfo()->pending_call_count_server--; + COM_CurrentInfo()->causality_id = old_causality_id; + +exit_reset_state: + message_state = (struct message_state *)msg->Handle; + msg->Handle = message_state->binding_handle; + msg->Buffer = (char *)msg->Buffer - message_state->prefix_data_len; + msg->BufferLength += message_state->prefix_data_len; + +exit: + HeapFree(GetProcessHeap(), 0, message_state); IRpcStubBuffer_Release(params->stub); + IRpcChannelBuffer_Release(params->chan); if (params->handle) SetEvent(params->handle); } static void __RPC_STUB dispatch_rpc(RPC_MESSAGE *msg) { struct dispatch_params *params; - IRpcStubBuffer *stub; - APARTMENT *apt; - IPID ipid; + APARTMENT *apt; + IPID ipid; + HRESULT hr; RpcBindingInqObject(msg->Handle, &ipid); TRACE("ipid = %s, iMethod = %d\n", debugstr_guid(&ipid), msg->ProcNum); - params = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*params)); - if (!params) return RpcRaiseException(E_OUTOFMEMORY); - - stub = ipid_to_apt_and_stubbuffer(&ipid, &apt); - if (!apt || !stub) + params = HeapAlloc(GetProcessHeap(), 0, sizeof(*params)); + if (!params) + { + RpcRaiseException(E_OUTOFMEMORY); + return; + } + + hr = ipid_get_dispatch_params(&ipid, &apt, ¶ms->stub, ¶ms->chan, + ¶ms->iid, ¶ms->iface); + if (hr != S_OK) { - if (apt) apartment_release(apt); ERR("no apartment found for ipid %s\n", debugstr_guid(&ipid)); - return RpcRaiseException(RPC_E_DISCONNECTED); + HeapFree(GetProcessHeap(), 0, params); + RpcRaiseException(hr); + return; } params->msg = (RPCOLEMESSAGE *)msg; - params->stub = stub; - params->chan = NULL; /* FIXME: pass server channel */ params->status = RPC_S_OK; + params->hr = S_OK; + params->handle = NULL; /* Note: this is the important difference between STAs and MTAs - we * always execute RPCs to STAs in the thread that originally created the * apartment (i.e. the one that pumps messages to the window) */ - if (apt->model & COINIT_APARTMENTTHREADED) + if (!apt->multi_threaded) { params->handle = CreateEventW(NULL, FALSE, FALSE, NULL); - TRACE("Calling apartment thread 0x%08lx...\n", apt->tid); + TRACE("Calling apartment thread 0x%08x...\n", apt->tid); - PostMessageW(apt->win, DM_EXECUTERPC, 0, (LPARAM)params); - WaitForSingleObject(params->handle, INFINITE); + if (PostMessageW(apartment_getwindow(apt), DM_EXECUTERPC, 0, (LPARAM)params)) + WaitForSingleObject(params->handle, INFINITE); + else + { + ERR("PostMessage failed with error %u\n", GetLastError()); + IRpcChannelBuffer_Release(params->chan); + IRpcStubBuffer_Release(params->stub); + } CloseHandle(params->handle); } else + { + BOOL joined = FALSE; + if (!COM_CurrentInfo()->apt) + { + apartment_joinmta(); + joined = TRUE; + } RPC_ExecuteCall(params); + if (joined) + { + apartment_release(COM_CurrentInfo()->apt); + COM_CurrentInfo()->apt = NULL; + } + } + hr = params->hr; HeapFree(GetProcessHeap(), 0, params); apartment_release(apt); + + /* if IRpcStubBuffer_Invoke fails, we should raise an exception to tell + * the RPC runtime that the call failed */ + if (hr) RpcRaiseException(hr); } /* stub registration */ @@ -578,12 +1486,9 @@ void RPC_UnregisterInterface(REFIID riid) { if (!--rif->refs) { -#if 0 /* this is a stub in builtin and spams the console with FIXME's */ - IID iid = *riid; /* RpcServerUnregisterIf doesn't take const IID */ - RpcServerUnregisterIf((RPC_IF_HANDLE)&rif->If, &iid, 0); + RpcServerUnregisterIf((RPC_IF_HANDLE)&rif->If, NULL, TRUE); list_remove(&rif->entry); HeapFree(GetProcessHeap(), 0, rif); -#endif } break; } @@ -591,6 +1496,27 @@ void RPC_UnregisterInterface(REFIID riid) LeaveCriticalSection(&csRegIf); } +/* get the info for an OXID, including the IPID for the rem unknown interface + * and the string binding */ +HRESULT RPC_ResolveOxid(OXID oxid, OXID_INFO *oxid_info) +{ + TRACE("%s\n", wine_dbgstr_longlong(oxid)); + + oxid_info->dwTid = 0; + oxid_info->dwPid = 0; + oxid_info->dwAuthnHint = RPC_C_AUTHN_LEVEL_NONE; + /* FIXME: this is a hack around not having an OXID resolver yet - + * this function should contact the machine's OXID resolver and then it + * should give us the IPID of the IRemUnknown interface */ + oxid_info->ipidRemUnknown.Data1 = 0xffffffff; + oxid_info->ipidRemUnknown.Data2 = 0xffff; + oxid_info->ipidRemUnknown.Data3 = 0xffff; + memcpy(&oxid_info->ipidRemUnknown.Data4, &oxid, sizeof(OXID)); + oxid_info->psa = NULL /* FIXME */; + + return S_OK; +} + /* make the apartment reachable by other threads and processes and create the * IRemUnknown object */ void RPC_StartRemoting(struct apartment *apt) @@ -603,7 +1529,7 @@ void RPC_StartRemoting(struct apartment *apt) get_rpc_endpoint(endpoint, &apt->oxid); status = RpcServerUseProtseqEpW( - wszPipeTransport, + wszRpcTransport, RPC_C_PROTSEQ_MAX_REQS_DEFAULT, endpoint, NULL); @@ -664,20 +1590,20 @@ static HRESULT create_server(REFCLSID rclsid) /* * start_local_service() - start a service given its name and parameters */ -static DWORD start_local_service(LPCWSTR name, DWORD num, LPWSTR *params) +static DWORD start_local_service(LPCWSTR name, DWORD num, LPCWSTR *params) { SC_HANDLE handle, hsvc; DWORD r = ERROR_FUNCTION_FAILED; - TRACE("Starting service %s %ld params\n", debugstr_w(name), num); + TRACE("Starting service %s %d params\n", debugstr_w(name), num); - handle = OpenSCManagerW(NULL, NULL, SC_MANAGER_ALL_ACCESS); + handle = OpenSCManagerW(NULL, NULL, SC_MANAGER_CONNECT); if (!handle) return r; - hsvc = OpenServiceW(handle, name, SC_MANAGER_ALL_ACCESS); + hsvc = OpenServiceW(handle, name, SERVICE_START); if (hsvc) { - if(StartServiceW(hsvc, num, (LPCWSTR*)params)) + if(StartServiceW(hsvc, num, params)) r = ERROR_SUCCESS; else r = GetLastError(); @@ -685,9 +1611,11 @@ static DWORD start_local_service(LPCWSTR name, DWORD num, LPWSTR *params) r = ERROR_SUCCESS; CloseServiceHandle(hsvc); } + else + r = GetLastError(); CloseServiceHandle(handle); - TRACE("StartService returned error %ld (%s)\n", r, r?"ok":"failed"); + TRACE("StartService returned error %u (%s)\n", r, (r == ERROR_SUCCESS) ? "ok":"failed"); return r; } @@ -704,9 +1632,7 @@ static DWORD start_local_service(LPCWSTR name, DWORD num, LPWSTR *params) static HRESULT create_local_service(REFCLSID rclsid) { HRESULT hres; - WCHAR buf[CHARS_IN_GUID], keyname[50]; - static const WCHAR szAppId[] = { 'A','p','p','I','d',0 }; - static const WCHAR szAppIdKey[] = { 'A','p','p','I','d','\\',0 }; + WCHAR buf[CHARS_IN_GUID]; static const WCHAR szLocalService[] = { 'L','o','c','a','l','S','e','r','v','i','c','e',0 }; static const WCHAR szServiceParams[] = {'S','e','r','v','i','c','e','P','a','r','a','m','s',0}; HKEY hkey; @@ -715,22 +1641,11 @@ static HRESULT create_local_service(REFCLSID rclsid) TRACE("Attempting to start Local service for %s\n", debugstr_guid(rclsid)); - /* read the AppID value under the class's key */ - hres = COM_OpenKeyForCLSID(rclsid, szAppId, KEY_READ, &hkey); + hres = COM_OpenKeyForAppIdFromCLSID(rclsid, KEY_READ, &hkey); if (FAILED(hres)) return hres; - sz = sizeof buf; - r = RegQueryValueExW(hkey, NULL, NULL, &type, (LPBYTE)buf, &sz); - RegCloseKey(hkey); - if (r!=ERROR_SUCCESS || type!=REG_SZ) - return hres; /* read the LocalService and ServiceParameters values from the AppID key */ - strcpyW(keyname, szAppIdKey); - strcatW(keyname, buf); - r = RegOpenKeyExW(HKEY_CLASSES_ROOT, keyname, 0, KEY_READ, &hkey); - if (r!=ERROR_SUCCESS) - return hres; sz = sizeof buf; r = RegQueryValueExW(hkey, szLocalService, NULL, &type, (LPBYTE)buf, &sz); if (r==ERROR_SUCCESS && type==REG_SZ) @@ -753,13 +1668,18 @@ static HRESULT create_local_service(REFCLSID rclsid) num_args++; RegQueryValueExW(hkey, szServiceParams, NULL, &type, (LPBYTE)args[0], &sz); } - r = start_local_service(buf, num_args, args); - if (r==ERROR_SUCCESS) - hres = S_OK; + r = start_local_service(buf, num_args, (LPCWSTR *)args); + if (r != ERROR_SUCCESS) + hres = REGDB_E_CLASSNOTREG; /* FIXME: check retval */ HeapFree(GetProcessHeap(),0,args[0]); } + else + { + WARN("No LocalService value\n"); + hres = REGDB_E_CLASSNOTREG; /* FIXME: check retval */ + } RegCloseKey(hkey); - + return hres; } @@ -797,12 +1717,12 @@ HRESULT RPC_GetLocalClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv) hPipe = CreateFileW(pipefn, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0); if (hPipe == INVALID_HANDLE_VALUE) { if (tries == 1) { - if ( (hres = create_server(rclsid)) && - (hres = create_local_service(rclsid)) ) + if ( (hres = create_local_service(rclsid)) && + (hres = create_server(rclsid)) ) return hres; Sleep(1000); } else { - WARN("Connecting to %s, no response yet, retrying: le is %lx\n", debugstr_w(pipefn), GetLastError()); + WARN("Connecting to %s, no response yet, retrying: le is %u\n", debugstr_w(pipefn), GetLastError()); Sleep(1000); } continue; @@ -840,6 +1760,9 @@ struct local_server_params { CLSID clsid; IStream *stream; + HANDLE ready_event; + BOOL multi_use; + HANDLE pipe; }; /* FIXME: should call to rpcss instead */ @@ -856,27 +1779,43 @@ static DWORD WINAPI local_server_thread(LPVOID param) LARGE_INTEGER seekto; ULARGE_INTEGER newpos; ULONG res; + BOOL multi_use = lsp->multi_use; TRACE("Starting threader for %s.\n",debugstr_guid(&lsp->clsid)); get_localserver_pipe_name(pipefn, &lsp->clsid); - HeapFree(GetProcessHeap(), 0, lsp); - hPipe = CreateNamedPipeW( pipefn, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE|PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 4096, 4096, 500 /* 0.5 second timeout */, NULL ); - + + lsp->pipe = hPipe; + SetEvent(lsp->ready_event); + + HeapFree(GetProcessHeap(), 0, lsp); + if (hPipe == INVALID_HANDLE_VALUE) { - FIXME("pipe creation failed for %s, le is %ld\n", debugstr_w(pipefn), GetLastError()); + FIXME("pipe creation failed for %s, le is %u\n", debugstr_w(pipefn), GetLastError()); return 1; } while (1) { - if (!ConnectNamedPipe(hPipe,NULL)) { - ERR("Failure during ConnectNamedPipe %ld, ABORT!\n",GetLastError()); - break; + if (!ConnectNamedPipe(hPipe,NULL)) + { + DWORD error = GetLastError(); + /* client already connected isn't an error */ + if (error != ERROR_PIPE_CONNECTED) + { + /* if error wasn't caused by RPC_StopLocalServer closing the + * pipe for us */ + if (error != ERROR_INVALID_HANDLE) + { + ERR("Failure during ConnectNamedPipe %u\n", error); + CloseHandle(hPipe); + } + break; + } } TRACE("marshalling IClassFactory to client\n"); @@ -884,43 +1823,71 @@ static DWORD WINAPI local_server_thread(LPVOID param) hres = IStream_Stat(pStm,&ststg,0); if (hres) return hres; - buflen = ststg.cbSize.u.LowPart; - buffer = HeapAlloc(GetProcessHeap(),0,buflen); seekto.u.LowPart = 0; seekto.u.HighPart = 0; hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos); if (hres) { - FIXME("IStream_Seek failed, %lx\n",hres); + FIXME("IStream_Seek failed, %x\n",hres); return hres; } + + buflen = ststg.cbSize.u.LowPart; + buffer = HeapAlloc(GetProcessHeap(),0,buflen); hres = IStream_Read(pStm,buffer,buflen,&res); if (hres) { - FIXME("Stream Read failed, %lx\n",hres); + FIXME("Stream Read failed, %x\n",hres); + HeapFree(GetProcessHeap(),0,buffer); return hres; } WriteFile(hPipe,buffer,buflen,&res,NULL); + HeapFree(GetProcessHeap(),0,buffer); + FlushFileBuffers(hPipe); DisconnectNamedPipe(hPipe); TRACE("done marshalling IClassFactory\n"); + + if (!multi_use) + { + TRACE("single use object, shutting down pipe %s\n", debugstr_w(pipefn)); + CloseHandle(hPipe); + break; + } } - CloseHandle(hPipe); IStream_Release(pStm); return 0; } -void RPC_StartLocalServer(REFCLSID clsid, IStream *stream) +/* starts listening for a local server */ +HRESULT RPC_StartLocalServer(REFCLSID clsid, IStream *stream, BOOL multi_use, void **registration) { DWORD tid; - HANDLE thread; + HANDLE thread, ready_event; struct local_server_params *lsp = HeapAlloc(GetProcessHeap(), 0, sizeof(*lsp)); lsp->clsid = *clsid; lsp->stream = stream; + IStream_AddRef(stream); + lsp->ready_event = ready_event = CreateEventW(NULL, FALSE, FALSE, NULL); + lsp->multi_use = multi_use; thread = CreateThread(NULL, 0, local_server_thread, lsp, 0, &tid); + if (!thread) + return HRESULT_FROM_WIN32(GetLastError()); CloseHandle(thread); - /* FIXME: failure handling */ + + WaitForSingleObject(ready_event, INFINITE); + CloseHandle(ready_event); + + *registration = lsp->pipe; + return S_OK; +} + +/* stops listening for a local server */ +void RPC_StopLocalServer(void *registration) +{ + HANDLE pipe = registration; + CloseHandle(pipe); } diff --git a/reactos/dll/win32/ole32/stg_bigblockfile.c b/reactos/dll/win32/ole32/stg_bigblockfile.c index 57123c9a85e..4f22207edbc 100644 --- a/reactos/dll/win32/ole32/stg_bigblockfile.c +++ b/reactos/dll/win32/ole32/stg_bigblockfile.c @@ -28,7 +28,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -91,6 +91,7 @@ struct MappedPage MappedPage *prev; DWORD page_index; + DWORD mapped_bytes; LPVOID lpBytes; LONG refcnt; @@ -108,16 +109,12 @@ static void BIGBLOCKFILE_ReleaseMappedPage(LPBIGBLOCKFILE This, static void BIGBLOCKFILE_FreeAllMappedPages(LPBIGBLOCKFILE This); static void BIGBLOCKFILE_UnmapAllMappedPages(LPBIGBLOCKFILE This); static void BIGBLOCKFILE_RemapAllMappedPages(LPBIGBLOCKFILE This); -static void* BIGBLOCKFILE_GetBigBlockPointer(LPBIGBLOCKFILE This, - ULONG index, - DWORD desired_access); -static MappedPage* BIGBLOCKFILE_GetPageFromPointer(LPBIGBLOCKFILE This, - void* pBlock); static MappedPage* BIGBLOCKFILE_CreatePage(LPBIGBLOCKFILE This, ULONG page_index); static DWORD BIGBLOCKFILE_GetProtectMode(DWORD openFlags); static BOOL BIGBLOCKFILE_FileInit(LPBIGBLOCKFILE This, HANDLE hFile); static BOOL BIGBLOCKFILE_MemInit(LPBIGBLOCKFILE This, ILockBytes* plkbyt); +static void BIGBLOCKFILE_DeleteList(LPBIGBLOCKFILE This, MappedPage *list); /* Note that this evaluates a and b multiple times, so don't * pass expressions with side effects. */ @@ -248,7 +245,7 @@ static BOOL BIGBLOCKFILE_FileInit(LPBIGBLOCKFILE This, HANDLE hFile) This->maplist = NULL; - TRACE("file len %lu\n", This->filesize.u.LowPart); + TRACE("file len %u\n", This->filesize.u.LowPart); return TRUE; } @@ -285,7 +282,7 @@ static BOOL BIGBLOCKFILE_MemInit(LPBIGBLOCKFILE This, ILockBytes* plkbyt) This->pbytearray = GlobalLock(This->hbytearray); - TRACE("mem on %p len %lu\n", This->pbytearray, This->filesize.u.LowPart); + TRACE("mem on %p len %u\n", This->pbytearray, This->filesize.u.LowPart); return TRUE; } @@ -317,46 +314,11 @@ void BIGBLOCKFILE_Destructor( } /****************************************************************************** - * BIGBLOCKFILE_GetROBigBlock + * BIGBLOCKFILE_EnsureExists * - * Returns the specified block in read only mode. - * Will return NULL if the block doesn't exists. + * Grows the file if necessary to make sure the block is valid. */ -void* BIGBLOCKFILE_GetROBigBlock( - LPBIGBLOCKFILE This, - ULONG index) -{ - /* - * block index starts at -1 - * translate to zero based index - */ - if (index == 0xffffffff) - index = 0; - else - index++; - - /* - * validate the block index - * - */ - if (This->blocksize * (index + 1) - > ROUND_UP(This->filesize.u.LowPart, This->blocksize)) - { - TRACE("out of range %lu vs %lu\n", This->blocksize * (index + 1), - This->filesize.u.LowPart); - return NULL; - } - - return BIGBLOCKFILE_GetBigBlockPointer(This, index, FILE_MAP_READ); -} - -/****************************************************************************** - * BIGBLOCKFILE_GetBigBlock - * - * Returns the specified block. - * Will grow the file if necessary. - */ -void* BIGBLOCKFILE_GetBigBlock(LPBIGBLOCKFILE This, ULONG index) +void BIGBLOCKFILE_EnsureExists(LPBIGBLOCKFILE This, ULONG index) { /* * block index starts at -1 @@ -379,28 +341,6 @@ void* BIGBLOCKFILE_GetBigBlock(LPBIGBLOCKFILE This, ULONG index) BIGBLOCKFILE_SetSize(This, newSize); } - - return BIGBLOCKFILE_GetBigBlockPointer(This, index, FILE_MAP_WRITE); -} - -/****************************************************************************** - * BIGBLOCKFILE_ReleaseBigBlock - * - * Releases the specified block. - */ -void BIGBLOCKFILE_ReleaseBigBlock(LPBIGBLOCKFILE This, void *pBlock) -{ - MappedPage *page; - - if (pBlock == NULL) - return; - - page = BIGBLOCKFILE_GetPageFromPointer(This, pBlock); - - if (page == NULL) - return; - - BIGBLOCKFILE_ReleaseMappedPage(This, page); } /****************************************************************************** @@ -414,57 +354,40 @@ void BIGBLOCKFILE_SetSize(LPBIGBLOCKFILE This, ULARGE_INTEGER newSize) if (This->filesize.u.LowPart == newSize.u.LowPart) return; - TRACE("from %lu to %lu\n", This->filesize.u.LowPart, newSize.u.LowPart); + TRACE("from %u to %u\n", This->filesize.u.LowPart, newSize.u.LowPart); /* * unmap all views, must be done before call to SetEndFile + * + * Just ditch the victim list because there is no guarentee we will need them + * and it is not worth the performance hit to unmap and remap them all. */ + BIGBLOCKFILE_DeleteList(This, This->victimhead); + This->victimhead = NULL; + This->victimtail = NULL; + This->num_victim_pages = 0; + BIGBLOCKFILE_UnmapAllMappedPages(This); if (This->fileBased) { - char buf[10]; - DWORD w; + LARGE_INTEGER newpos; - /* - * close file-mapping object, must be done before call to SetEndFile - */ - if( This->hfilemap ) - CloseHandle(This->hfilemap); - This->hfilemap = 0; + newpos.QuadPart = newSize.QuadPart; + if (SetFilePointerEx(This->hfile, newpos, NULL, FILE_BEGIN)) + { + if( This->hfilemap ) CloseHandle(This->hfilemap); - /* - * BEGIN HACK - * This fixes a bug when saving through smbfs. - * smbmount a Windows shared directory, save a structured storage file - * to that dir: crash. - * - * The problem is that the SetFilePointer-SetEndOfFile combo below - * doesn't always succeed. The file is not grown. It seems like the - * operation is cached. By doing the WriteFile, the file is actually - * grown on disk. - * This hack is only needed when saving to smbfs. - */ - memset(buf, '0', 10); - SetFilePointer(This->hfile, newSize.u.LowPart, NULL, FILE_BEGIN); - WriteFile(This->hfile, buf, 10, &w, NULL); - /* - * END HACK - */ + SetEndOfFile(This->hfile); - /* - * set the new end of file - */ - SetFilePointer(This->hfile, newSize.u.LowPart, NULL, FILE_BEGIN); - SetEndOfFile(This->hfile); - - /* - * re-create the file mapping object - */ - This->hfilemap = CreateFileMappingA(This->hfile, - NULL, - This->flProtect, - 0, 0, - NULL); + /* + * re-create the file mapping object + */ + This->hfilemap = CreateFileMappingA(This->hfile, + NULL, + This->flProtect, + 0, 0, + NULL); + } } else { @@ -499,85 +422,6 @@ ULARGE_INTEGER BIGBLOCKFILE_GetSize(LPBIGBLOCKFILE This) return This->filesize; } -/****************************************************************************** - * BIGBLOCKFILE_AccessCheck [PRIVATE] - * - * block_index is the index within the page. - */ -static BOOL BIGBLOCKFILE_AccessCheck(MappedPage *page, ULONG block_index, - DWORD desired_access) -{ - assert(block_index < BLOCKS_PER_PAGE); - - if (desired_access == FILE_MAP_READ) - { - if (BIGBLOCKFILE_TestBit(&page->writable_blocks, block_index)) - return FALSE; - - BIGBLOCKFILE_SetBit(&page->readable_blocks, block_index); - } - else - { - assert(desired_access == FILE_MAP_WRITE); - - if (BIGBLOCKFILE_TestBit(&page->readable_blocks, block_index)) - return FALSE; - - BIGBLOCKFILE_SetBit(&page->writable_blocks, block_index); - } - - return TRUE; -} - -/****************************************************************************** - * BIGBLOCKFILE_GetBigBlockPointer [PRIVATE] - * - * Returns a pointer to the specified block. - */ -static void* BIGBLOCKFILE_GetBigBlockPointer( - LPBIGBLOCKFILE This, - ULONG block_index, - DWORD desired_access) -{ - DWORD page_index = block_index / BLOCKS_PER_PAGE; - DWORD block_on_page = block_index % BLOCKS_PER_PAGE; - - MappedPage *page = BIGBLOCKFILE_GetMappedView(This, page_index); - if (!page || !page->lpBytes) return NULL; - - if (!BIGBLOCKFILE_AccessCheck(page, block_on_page, desired_access)) - { - BIGBLOCKFILE_ReleaseMappedPage(This, page); - return NULL; - } - - return (LPBYTE)page->lpBytes + (block_on_page * This->blocksize); -} - -/****************************************************************************** - * BIGBLOCKFILE_GetMappedPageFromPointer [PRIVATE] - * - * pBlock is a pointer to a block on a page. - * The page has to be on the in-use list. (As oppsed to the victim list.) - * - * Does not increment the usage count. - */ -static MappedPage *BIGBLOCKFILE_GetPageFromPointer(LPBIGBLOCKFILE This, - void *pBlock) -{ - MappedPage *page; - - for (page = This->maplist; page != NULL; page = page->next) - { - if ((LPBYTE)pBlock >= (LPBYTE)page->lpBytes - && (LPBYTE)pBlock <= (LPBYTE)page->lpBytes + PAGE_SIZE) - break; - - } - - return page; -} - /****************************************************************************** * BIGBLOCKFILE_FindPageInList [PRIVATE] * @@ -686,13 +530,15 @@ static BOOL BIGBLOCKFILE_MapPage(LPBIGBLOCKFILE This, MappedPage *page) page->lpBytes = MapViewOfFile(This->hfilemap, desired_access, 0, lowoffset, numBytesToMap); + page->mapped_bytes = numBytesToMap; } else { page->lpBytes = (LPBYTE)This->pbytearray + lowoffset; + page->mapped_bytes = PAGE_SIZE; } - TRACE("mapped page %lu to %p\n", page->page_index, page->lpBytes); + TRACE("mapped page %u to %p\n", page->page_index, page->lpBytes); return page->lpBytes != NULL; } @@ -712,7 +558,11 @@ static MappedPage *BIGBLOCKFILE_CreatePage(LPBIGBLOCKFILE This, page->next = NULL; page->prev = NULL; - BIGBLOCKFILE_MapPage(This, page); + if (!BIGBLOCKFILE_MapPage(This, page)) + { + HeapFree(GetProcessHeap(),0,page); + return NULL; + } BIGBLOCKFILE_Zero(&page->readable_blocks); BIGBLOCKFILE_Zero(&page->writable_blocks); @@ -722,7 +572,7 @@ static MappedPage *BIGBLOCKFILE_CreatePage(LPBIGBLOCKFILE This, static void BIGBLOCKFILE_UnmapPage(LPBIGBLOCKFILE This, MappedPage *page) { - TRACE("%ld at %p\n", page->page_index, page->lpBytes); + TRACE("%d at %p\n", page->page_index, page->lpBytes); if (page->refcnt > 0) ERR("unmapping inuse page %p\n", page->lpBytes); @@ -836,7 +686,7 @@ static void BIGBLOCKFILE_RemapList(LPBIGBLOCKFILE This, MappedPage *list) if (list->page_index * PAGE_SIZE > This->filesize.u.LowPart) { - TRACE("discarding %lu\n", list->page_index); + TRACE("discarding %u\n", list->page_index); /* page is entirely outside of the file, delete it */ BIGBLOCKFILE_UnlinkPage(list); @@ -874,3 +724,206 @@ static DWORD BIGBLOCKFILE_GetProtectMode(DWORD openFlags) } return PAGE_READONLY; } + + +/* ILockByte Interfaces */ + +/****************************************************************************** + * This method is part of the ILockBytes interface. + * + * It reads a block of information from the byte array at the specified + * offset. + * + * See the documentation of ILockBytes for more info. + */ +static HRESULT WINAPI ImplBIGBLOCKFILE_ReadAt( + BigBlockFile* const This, + ULARGE_INTEGER ulOffset, /* [in] */ + void* pv, /* [length_is][size_is][out] */ + ULONG cb, /* [in] */ + ULONG* pcbRead) /* [out] */ +{ + ULONG first_page = ulOffset.u.LowPart / PAGE_SIZE; + ULONG offset_in_page = ulOffset.u.LowPart % PAGE_SIZE; + ULONG bytes_left = cb; + ULONG page_index = first_page; + ULONG bytes_from_page; + LPVOID writePtr = pv; + + HRESULT rc = S_OK; + + TRACE("(%p)-> %i %p %i %p\n",This, ulOffset.u.LowPart, pv, cb, pcbRead); + + /* verify a sane environment */ + if (!This) return E_FAIL; + + if (offset_in_page + bytes_left > PAGE_SIZE) + bytes_from_page = PAGE_SIZE - offset_in_page; + else + bytes_from_page = bytes_left; + + if (pcbRead) + *pcbRead = 0; + + while (bytes_left) + { + LPBYTE readPtr; + BOOL eof = FALSE; + MappedPage *page = BIGBLOCKFILE_GetMappedView(This, page_index); + + if (!page || !page->lpBytes) + { + rc = STG_E_READFAULT; + break; + } + + TRACE("page %i, offset %u, bytes_from_page %u, bytes_left %u\n", + page->page_index, offset_in_page, bytes_from_page, bytes_left); + + if (page->mapped_bytes < bytes_from_page) + { + eof = TRUE; + bytes_from_page = page->mapped_bytes; + } + + readPtr = (BYTE*)page->lpBytes + offset_in_page; + memcpy(writePtr,readPtr,bytes_from_page); + BIGBLOCKFILE_ReleaseMappedPage(This, page); + + if (pcbRead) + *pcbRead += bytes_from_page; + bytes_left -= bytes_from_page; + + if (bytes_left && !eof) + { + writePtr = (LPBYTE)writePtr + bytes_from_page; + page_index ++; + offset_in_page = 0; + if (bytes_left > PAGE_SIZE) + bytes_from_page = PAGE_SIZE; + else + bytes_from_page = bytes_left; + } + if (eof) + { + rc = STG_E_READFAULT; + break; + } + } + + TRACE("finished\n"); + return rc; +} + +/****************************************************************************** + * This method is part of the ILockBytes interface. + * + * It writes the specified bytes at the specified offset. + * position. If the file is too small, it will be resized. + * + * See the documentation of ILockBytes for more info. + */ +static HRESULT WINAPI ImplBIGBLOCKFILE_WriteAt( + BigBlockFile* const This, + ULARGE_INTEGER ulOffset, /* [in] */ + const void* pv, /* [size_is][in] */ + ULONG cb, /* [in] */ + ULONG* pcbWritten) /* [out] */ +{ + ULONG size_needed = ulOffset.u.LowPart + cb; + ULONG first_page = ulOffset.u.LowPart / PAGE_SIZE; + ULONG offset_in_page = ulOffset.u.LowPart % PAGE_SIZE; + ULONG bytes_left = cb; + ULONG page_index = first_page; + ULONG bytes_to_page; + LPCVOID readPtr = pv; + + HRESULT rc = S_OK; + + TRACE("(%p)-> %i %p %i %p\n",This, ulOffset.u.LowPart, pv, cb, pcbWritten); + + /* verify a sane environment */ + if (!This) return E_FAIL; + + if (This->flProtect != PAGE_READWRITE) + return STG_E_ACCESSDENIED; + + if (size_needed > This->filesize.u.LowPart) + { + ULARGE_INTEGER newSize; + newSize.u.HighPart = 0; + newSize.u.LowPart = size_needed; + BIGBLOCKFILE_SetSize(This, newSize); + } + + if (offset_in_page + bytes_left > PAGE_SIZE) + bytes_to_page = PAGE_SIZE - offset_in_page; + else + bytes_to_page = bytes_left; + + if (pcbWritten) + *pcbWritten = 0; + + while (bytes_left) + { + LPBYTE writePtr; + MappedPage *page = BIGBLOCKFILE_GetMappedView(This, page_index); + + TRACE("page %i, offset %u, bytes_to_page %u, bytes_left %u\n", + page ? page->page_index : 0, offset_in_page, bytes_to_page, bytes_left); + + if (!page) + { + ERR("Unable to get a page to write. This should never happen\n"); + rc = E_FAIL; + break; + } + + if (page->mapped_bytes < bytes_to_page) + { + ERR("Not enough bytes mapped to the page. This should never happen\n"); + rc = E_FAIL; + break; + } + + writePtr = (BYTE*)page->lpBytes + offset_in_page; + memcpy(writePtr,readPtr,bytes_to_page); + BIGBLOCKFILE_ReleaseMappedPage(This, page); + + if (pcbWritten) + *pcbWritten += bytes_to_page; + bytes_left -= bytes_to_page; + + if (bytes_left) + { + readPtr = (LPBYTE)readPtr + bytes_to_page; + page_index ++; + offset_in_page = 0; + if (bytes_left > PAGE_SIZE) + bytes_to_page = PAGE_SIZE; + else + bytes_to_page = bytes_left; + } + } + + return rc; +} + + +HRESULT BIGBLOCKFILE_ReadAt(LPBIGBLOCKFILE This, ULARGE_INTEGER offset, + void* buffer, ULONG size, ULONG* bytesRead) +{ + if (This->fileBased) + return ImplBIGBLOCKFILE_ReadAt(This,offset,buffer,size,bytesRead); + else + return ILockBytes_ReadAt(This->pLkbyt,offset,buffer,size,bytesRead); +} + +HRESULT BIGBLOCKFILE_WriteAt(LPBIGBLOCKFILE This, ULARGE_INTEGER offset, + void* buffer, const ULONG size, ULONG* bytesRead) +{ + if (This->fileBased) + return ImplBIGBLOCKFILE_WriteAt(This,offset,buffer,size,bytesRead); + else + return ILockBytes_WriteAt(This->pLkbyt,offset,buffer,size,bytesRead); +} diff --git a/reactos/dll/win32/ole32/stg_prop.c b/reactos/dll/win32/ole32/stg_prop.c index 1d7b2dbd0b3..45c760e65a3 100644 --- a/reactos/dll/win32/ole32/stg_prop.c +++ b/reactos/dll/win32/ole32/stg_prop.c @@ -23,7 +23,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * There's a decent overview of property set storage here: * http://msdn.microsoft.com/archive/en-us/dnarolegen/html/msdn_propset.asp @@ -39,7 +39,6 @@ * - Not all PROPVARIANT types are supported. * - User defined properties are not supported, see comment in * PropertyStorage_ReadFromStream - * - IPropertyStorage::Enum is unimplemented */ #include @@ -60,6 +59,7 @@ #include "wine/debug.h" #include "dictionary.h" #include "storage32.h" +#include "enumx.h" WINE_DEFAULT_DEBUG_CHANNEL(storage); @@ -82,6 +82,11 @@ static inline StorageImpl *impl_from_IPropertySetStorage( IPropertySetStorage *i #define MAX_VERSION_0_PROP_NAME_LENGTH 256 +#define CFTAG_WINDOWS (-1L) +#define CFTAG_MACINTOSH (-2L) +#define CFTAG_FMTID (-3L) +#define CFTAG_NODATA 0L + /* The format version (and what it implies) is described here: * http://msdn.microsoft.com/library/en-us/stg/stg/format_version.asp */ @@ -112,25 +117,23 @@ typedef struct tagPROPERTYIDOFFSET DWORD dwOffset; /* from beginning of section */ } PROPERTYIDOFFSET; -struct tagPropertyStorage_impl; +typedef struct tagPropertyStorage_impl PropertyStorage_impl; /* Initializes the property storage from the stream (and undoes any uncommitted * changes in the process.) Returns an error if there is an error reading or * if the stream format doesn't match what's expected. */ -static HRESULT PropertyStorage_ReadFromStream(struct tagPropertyStorage_impl *); +static HRESULT PropertyStorage_ReadFromStream(PropertyStorage_impl *); -static HRESULT PropertyStorage_WriteToStream(struct tagPropertyStorage_impl *); +static HRESULT PropertyStorage_WriteToStream(PropertyStorage_impl *); /* Creates the dictionaries used by the property storage. If successful, all * the dictionaries have been created. If failed, none has been. (This makes * it a bit easier to deal with destroying them.) */ -static HRESULT PropertyStorage_CreateDictionaries( - struct tagPropertyStorage_impl *); +static HRESULT PropertyStorage_CreateDictionaries(PropertyStorage_impl *); -static void PropertyStorage_DestroyDictionaries( - struct tagPropertyStorage_impl *); +static void PropertyStorage_DestroyDictionaries(PropertyStorage_impl *); /* Copies from propvar to prop. If propvar's type is VT_LPSTR, copies the * string using PropertyStorage_StringCopy. @@ -149,11 +152,15 @@ static HRESULT PropertyStorage_StringCopy(LPCSTR src, LCID srcCP, LPSTR *dst, LCID targetCP); static const IPropertyStorageVtbl IPropertyStorage_Vtbl; +static const IEnumSTATPROPSETSTGVtbl IEnumSTATPROPSETSTG_Vtbl; +static const IEnumSTATPROPSTGVtbl IEnumSTATPROPSTG_Vtbl; +static HRESULT create_EnumSTATPROPSETSTG(StorageImpl *, IEnumSTATPROPSETSTG**); +static HRESULT create_EnumSTATPROPSTG(PropertyStorage_impl *, IEnumSTATPROPSTG**); /*********************************************************************** * Implementation of IPropertyStorage */ -typedef struct tagPropertyStorage_impl +struct tagPropertyStorage_impl { const IPropertyStorageVtbl *vtbl; LONG ref; @@ -172,7 +179,7 @@ typedef struct tagPropertyStorage_impl struct dictionary *name_to_propid; struct dictionary *propid_to_name; struct dictionary *propid_to_prop; -} PropertyStorage_impl; +}; /************************************************************************ * IPropertyStorage_fnQueryInterface (IPropertyStorage) @@ -226,6 +233,7 @@ static ULONG WINAPI IPropertyStorage_fnRelease( if (This->dirty) IPropertyStorage_Commit(iface, STGC_DEFAULT); IStream_Release(This->stm); + This->cs.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&This->cs); PropertyStorage_DestroyDictionaries(This); HeapFree(GetProcessHeap(), 0, This); @@ -238,7 +246,6 @@ static PROPVARIANT *PropertyStorage_FindProperty(PropertyStorage_impl *This, { PROPVARIANT *ret = NULL; - assert(This); dictionary_find(This->propid_to_prop, (void *)propid, (void **)&ret); TRACE("returning %p\n", ret); return ret; @@ -251,7 +258,6 @@ static PROPVARIANT *PropertyStorage_FindPropertyByName( PROPVARIANT *ret = NULL; PROPID propid; - assert(This); if (!name) return NULL; if (This->codePage == CP_UNICODE) @@ -282,7 +288,6 @@ static LPWSTR PropertyStorage_FindPropertyNameById(PropertyStorage_impl *This, { LPWSTR ret = NULL; - assert(This); dictionary_find(This->propid_to_name, (void *)propid, (void **)&ret); TRACE("returning %p\n", ret); return ret; @@ -298,13 +303,14 @@ static HRESULT WINAPI IPropertyStorage_fnReadMultiple( PROPVARIANT rgpropvar[]) { PropertyStorage_impl *This = (PropertyStorage_impl *)iface; - HRESULT hr = S_FALSE; + HRESULT hr = S_OK; ULONG i; - TRACE("(%p, %ld, %p, %p)\n", iface, cpspec, rgpspec, rgpropvar); - if (!This) - return E_INVALIDARG; - if (cpspec && (!rgpspec || !rgpropvar)) + TRACE("(%p, %d, %p, %p)\n", iface, cpspec, rgpspec, rgpropvar); + + if (!cpspec) + return S_FALSE; + if (!rgpspec || !rgpropvar) return E_INVALIDARG; EnterCriticalSection(&This->cs); for (i = 0; i < cpspec; i++) @@ -339,6 +345,8 @@ static HRESULT WINAPI IPropertyStorage_fnReadMultiple( if (prop) PropertyStorage_PropVariantCopy(&rgpropvar[i], prop, GetACP(), This->codePage); + else + hr = S_FALSE; } } } @@ -353,7 +361,7 @@ static HRESULT PropertyStorage_StringCopy(LPCSTR src, LCID srcCP, LPSTR *dst, HRESULT hr = S_OK; int len; - TRACE("%s, %p, %ld, %ld\n", + TRACE("%s, %p, %d, %d\n", srcCP == CP_UNICODE ? debugstr_w((LPCWSTR)src) : debugstr_a(src), dst, dstCP, srcCP); assert(src); @@ -386,16 +394,20 @@ static HRESULT PropertyStorage_StringCopy(LPCSTR src, LCID srcCP, LPSTR *dst, } else { - LPWSTR wideStr; + LPCWSTR wideStr = NULL; + LPWSTR wideStr_tmp = NULL; if (srcCP == CP_UNICODE) - wideStr = (LPWSTR)src; + wideStr = (LPCWSTR)src; else { len = MultiByteToWideChar(srcCP, 0, src, -1, NULL, 0); - wideStr = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); - if (wideStr) - MultiByteToWideChar(srcCP, 0, src, -1, wideStr, len); + wideStr_tmp = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (wideStr_tmp) + { + MultiByteToWideChar(srcCP, 0, src, -1, wideStr_tmp, len); + wideStr = wideStr_tmp; + } else hr = STG_E_INSUFFICIENTMEMORY; } @@ -419,11 +431,10 @@ static HRESULT PropertyStorage_StringCopy(LPCSTR src, LCID srcCP, LPSTR *dst, } } } - if (wideStr != (LPWSTR)src) - HeapFree(GetProcessHeap(), 0, wideStr); + HeapFree(GetProcessHeap(), 0, wideStr_tmp); } } - TRACE("returning 0x%08lx (%s)\n", hr, + TRACE("returning 0x%08x (%s)\n", hr, dstCP == CP_UNICODE ? debugstr_w((LPCWSTR)*dst) : debugstr_a(*dst)); return hr; } @@ -460,7 +471,6 @@ static HRESULT PropertyStorage_StorePropWithId(PropertyStorage_impl *This, HRESULT hr = S_OK; PROPVARIANT *prop = PropertyStorage_FindProperty(This, propid); - assert(This); assert(propvar); if (propvar->vt & VT_BYREF || propvar->vt & VT_ARRAY) This->format = 1; @@ -473,7 +483,7 @@ static HRESULT PropertyStorage_StorePropWithId(PropertyStorage_impl *This, case VT_VECTOR|VT_I1: This->format = 1; } - TRACE("Setting 0x%08lx to type %d\n", propid, propvar->vt); + TRACE("Setting 0x%08x to type %d\n", propid, propvar->vt); if (prop) { PropVariantClear(prop); @@ -531,7 +541,7 @@ static HRESULT PropertyStorage_StoreNameWithId(PropertyStorage_impl *This, if (strlen(name) >= MAX_VERSION_0_PROP_NAME_LENGTH) This->format = 1; } - TRACE("Adding prop name %s, propid %ld\n", + TRACE("Adding prop name %s, propid %d\n", This->codePage == CP_UNICODE ? debugstr_w((LPCWSTR)name) : debugstr_a(name), id); dictionary_insert(This->name_to_propid, name, (void *)id); @@ -554,9 +564,8 @@ static HRESULT WINAPI IPropertyStorage_fnWriteMultiple( HRESULT hr = S_OK; ULONG i; - TRACE("(%p, %ld, %p, %p)\n", iface, cpspec, rgpspec, rgpropvar); - if (!This) - return E_INVALIDARG; + TRACE("(%p, %d, %p, %p)\n", iface, cpspec, rgpspec, rgpropvar); + if (cpspec && (!rgpspec || !rgpropvar)) return E_INVALIDARG; if (!(This->grfMode & STGM_READWRITE)) @@ -654,9 +663,8 @@ static HRESULT WINAPI IPropertyStorage_fnDeleteMultiple( ULONG i; HRESULT hr; - TRACE("(%p, %ld, %p)\n", iface, cpspec, rgpspec); - if (!This) - return E_INVALIDARG; + TRACE("(%p, %d, %p)\n", iface, cpspec, rgpspec); + if (cpspec && !rgpspec) return E_INVALIDARG; if (!(This->grfMode & STGM_READWRITE)) @@ -703,9 +711,8 @@ static HRESULT WINAPI IPropertyStorage_fnReadPropertyNames( ULONG i; HRESULT hr = S_FALSE; - TRACE("(%p, %ld, %p, %p)\n", iface, cpropid, rgpropid, rglpwstrName); - if (!This) - return E_INVALIDARG; + TRACE("(%p, %d, %p, %p)\n", iface, cpropid, rgpropid, rglpwstrName); + if (cpropid && (!rgpropid || !rglpwstrName)) return E_INVALIDARG; EnterCriticalSection(&This->cs); @@ -744,9 +751,8 @@ static HRESULT WINAPI IPropertyStorage_fnWritePropertyNames( ULONG i; HRESULT hr; - TRACE("(%p, %ld, %p, %p)\n", iface, cpropid, rgpropid, rglpwstrName); - if (!This) - return E_INVALIDARG; + TRACE("(%p, %d, %p, %p)\n", iface, cpropid, rgpropid, rglpwstrName); + if (cpropid && (!rgpropid || !rglpwstrName)) return E_INVALIDARG; if (!(This->grfMode & STGM_READWRITE)) @@ -778,9 +784,8 @@ static HRESULT WINAPI IPropertyStorage_fnDeletePropertyNames( ULONG i; HRESULT hr; - TRACE("(%p, %ld, %p)\n", iface, cpropid, rgpropid); - if (!This) - return E_INVALIDARG; + TRACE("(%p, %d, %p)\n", iface, cpropid, rgpropid); + if (cpropid && !rgpropid) return E_INVALIDARG; if (!(This->grfMode & STGM_READWRITE)) @@ -815,9 +820,8 @@ static HRESULT WINAPI IPropertyStorage_fnCommit( PropertyStorage_impl *This = (PropertyStorage_impl *)iface; HRESULT hr; - TRACE("(%p, 0x%08lx)\n", iface, grfCommitFlags); - if (!This) - return E_INVALIDARG; + TRACE("(%p, 0x%08x)\n", iface, grfCommitFlags); + if (!(This->grfMode & STGM_READWRITE)) return STG_E_ACCESSDENIED; EnterCriticalSection(&This->cs); @@ -839,8 +843,6 @@ static HRESULT WINAPI IPropertyStorage_fnRevert( PropertyStorage_impl *This = (PropertyStorage_impl *)iface; TRACE("%p\n", iface); - if (!This) - return E_INVALIDARG; EnterCriticalSection(&This->cs); if (This->dirty) @@ -863,8 +865,8 @@ static HRESULT WINAPI IPropertyStorage_fnEnum( IPropertyStorage* iface, IEnumSTATPROPSTG** ppenum) { - FIXME("\n"); - return E_NOTIMPL; + PropertyStorage_impl *This = (PropertyStorage_impl *)iface; + return create_EnumSTATPROPSTG(This, ppenum); } /************************************************************************ @@ -890,7 +892,8 @@ static HRESULT WINAPI IPropertyStorage_fnSetClass( PropertyStorage_impl *This = (PropertyStorage_impl *)iface; TRACE("%p, %s\n", iface, debugstr_guid(clsid)); - if (!This || !clsid) + + if (!clsid) return E_INVALIDARG; if (!(This->grfMode & STGM_READWRITE)) return STG_E_ACCESSDENIED; @@ -913,7 +916,8 @@ static HRESULT WINAPI IPropertyStorage_fnStat( HRESULT hr; TRACE("%p, %p\n", iface, statpsstg); - if (!This || !statpsstg) + + if (!statpsstg) return E_INVALIDARG; hr = IStream_Stat(This->stm, &stat, STATFLAG_NONAME); @@ -961,7 +965,7 @@ static void PropertyStorage_PropNameDestroy(void *k, void *d, void *extra) static int PropertyStorage_PropCompare(const void *a, const void *b, void *extra) { - TRACE("(%ld, %ld)\n", (PROPID)a, (PROPID)b); + TRACE("(%d, %d)\n", (PROPID)a, (PROPID)b); return (PROPID)a - (PROPID)b; } @@ -1000,12 +1004,11 @@ static HRESULT PropertyStorage_ReadDictionary(PropertyStorage_impl *This, DWORD numEntries, i; HRESULT hr = S_OK; - assert(This); assert(This->name_to_propid); assert(This->propid_to_name); StorageUtl_ReadDWord(ptr, 0, &numEntries); - TRACE("Reading %ld entries:\n", numEntries); + TRACE("Reading %d entries:\n", numEntries); ptr += sizeof(DWORD); for (i = 0; SUCCEEDED(hr) && i < numEntries; i++) { @@ -1016,7 +1019,7 @@ static HRESULT PropertyStorage_ReadDictionary(PropertyStorage_impl *This, ptr += sizeof(PROPID); StorageUtl_ReadDWord(ptr, 0, &cbEntry); ptr += sizeof(DWORD); - TRACE("Reading entry with ID 0x%08lx, %ld bytes\n", propid, cbEntry); + TRACE("Reading entry with ID 0x%08x, %d bytes\n", propid, cbEntry); /* Make sure the source string is NULL-terminated */ if (This->codePage != CP_UNICODE) ptr[cbEntry - 1] = '\0'; @@ -1075,7 +1078,7 @@ static HRESULT PropertyStorage_ReadProperty(PropertyStorage_impl *This, case VT_UINT: case VT_UI4: StorageUtl_ReadDWord(data, 0, &prop->u.ulVal); - TRACE("Read ulong %ld\n", prop->u.ulVal); + TRACE("Read ulong %d\n", prop->u.ulVal); break; case VT_LPSTR: { @@ -1138,6 +1141,25 @@ static HRESULT PropertyStorage_ReadProperty(PropertyStorage_impl *This, StorageUtl_ReadULargeInteger(data, 0, (ULARGE_INTEGER *)&prop->u.filetime); break; + case VT_CF: + { + DWORD len = 0, tag = 0; + + StorageUtl_ReadDWord(data, 0, &len); + StorageUtl_ReadDWord(data, 4, &tag); + if (len > 8) + { + len -= 8; + prop->u.pclipdata = CoTaskMemAlloc(sizeof (CLIPDATA)); + prop->u.pclipdata->cbSize = len; + prop->u.pclipdata->ulClipFmt = tag; + prop->u.pclipdata->pClipData = CoTaskMemAlloc(len); + memcpy(prop->u.pclipdata->pClipData, data+8, len); + } + else + hr = STG_E_INVALIDPARAMETER; + } + break; default: FIXME("unsupported type %d\n", prop->vt); hr = STG_E_INVALIDPARAMETER; @@ -1159,7 +1181,7 @@ static HRESULT PropertyStorage_ReadHeaderFromStream(IStream *stm, { if (count != sizeof(buf)) { - WARN("read %ld, expected %d\n", count, sizeof(buf)); + WARN("read only %d\n", count); hr = STG_E_INVALIDHEADER; } else @@ -1176,7 +1198,7 @@ static HRESULT PropertyStorage_ReadHeaderFromStream(IStream *stm, &hdr->reserved); } } - TRACE("returning 0x%08lx\n", hr); + TRACE("returning 0x%08x\n", hr); return hr; } @@ -1194,7 +1216,7 @@ static HRESULT PropertyStorage_ReadFmtIdOffsetFromStream(IStream *stm, { if (count != sizeof(buf)) { - WARN("read %ld, expected %d\n", count, sizeof(buf)); + WARN("read only %d\n", count); hr = STG_E_INVALIDHEADER; } else @@ -1205,7 +1227,7 @@ static HRESULT PropertyStorage_ReadFmtIdOffsetFromStream(IStream *stm, &fmt->dwOffset); } } - TRACE("returning 0x%08lx\n", hr); + TRACE("returning 0x%08x\n", hr); return hr; } @@ -1223,7 +1245,7 @@ static HRESULT PropertyStorage_ReadSectionHeaderFromStream(IStream *stm, { if (count != sizeof(buf)) { - WARN("read %ld, expected %d\n", count, sizeof(buf)); + WARN("read only %d\n", count); hr = STG_E_INVALIDHEADER; } else @@ -1234,7 +1256,7 @@ static HRESULT PropertyStorage_ReadSectionHeaderFromStream(IStream *stm, cProperties), &hdr->cProperties); } } - TRACE("returning 0x%08lx\n", hr); + TRACE("returning 0x%08x\n", hr); return hr; } @@ -1251,7 +1273,6 @@ static HRESULT PropertyStorage_ReadFromStream(PropertyStorage_impl *This) ULONG count = 0; DWORD dictOffset = 0; - assert(This); This->dirty = FALSE; This->highestProp = 0; hr = IStream_Stat(This->stm, &stat, STATFLAG_NONAME); @@ -1307,7 +1328,7 @@ static HRESULT PropertyStorage_ReadFromStream(PropertyStorage_impl *This) goto end; if (fmtOffset.dwOffset > stat.cbSize.u.LowPart) { - WARN("invalid offset %ld (stream length is %ld)\n", fmtOffset.dwOffset, + WARN("invalid offset %d (stream length is %d)\n", fmtOffset.dwOffset, stat.cbSize.u.LowPart); hr = STG_E_INVALIDHEADER; goto end; @@ -1325,8 +1346,7 @@ static HRESULT PropertyStorage_ReadFromStream(PropertyStorage_impl *This) /* The section size includes the section header, so check it */ if (sectionHdr.cbSection < sizeof(PROPERTYSECTIONHEADER)) { - WARN("section header too small, got %ld, expected at least %d\n", - sectionHdr.cbSection, sizeof(PROPERTYSECTIONHEADER)); + WARN("section header too small, got %d\n", sectionHdr.cbSection); hr = STG_E_INVALIDHEADER; goto end; } @@ -1341,7 +1361,7 @@ static HRESULT PropertyStorage_ReadFromStream(PropertyStorage_impl *This) sizeof(PROPERTYSECTIONHEADER), &count); if (FAILED(hr)) goto end; - TRACE("Reading %ld properties:\n", sectionHdr.cProperties); + TRACE("Reading %d properties:\n", sectionHdr.cProperties); for (i = 0; SUCCEEDED(hr) && i < sectionHdr.cProperties; i++) { PROPERTYIDOFFSET *idOffset = (PROPERTYIDOFFSET *)(buf + @@ -1363,16 +1383,17 @@ static HRESULT PropertyStorage_ReadFromStream(PropertyStorage_impl *This) * later. */ dictOffset = idOffset->dwOffset; - TRACE("Dictionary offset is %ld\n", dictOffset); + TRACE("Dictionary offset is %d\n", dictOffset); } else { PROPVARIANT prop; + PropVariantInit(&prop); if (SUCCEEDED(PropertyStorage_ReadProperty(This, &prop, buf + idOffset->dwOffset - sizeof(PROPERTYSECTIONHEADER)))) { - TRACE("Read property with ID 0x%08lx, type %d\n", + TRACE("Read property with ID 0x%08x, type %d\n", idOffset->propid, prop.vt); switch(idOffset->propid) { @@ -1410,7 +1431,7 @@ static HRESULT PropertyStorage_ReadFromStream(PropertyStorage_impl *This) } if (!This->locale) This->locale = LOCALE_SYSTEM_DEFAULT; - TRACE("Code page is %d, locale is %ld\n", This->codePage, This->locale); + TRACE("Code page is %d, locale is %d\n", This->codePage, This->locale); if (dictOffset) hr = PropertyStorage_ReadDictionary(This, buf + dictOffset - sizeof(PROPERTYSECTIONHEADER)); @@ -1432,7 +1453,6 @@ end: static void PropertyStorage_MakeHeader(PropertyStorage_impl *This, PROPERTYSETHEADER *hdr) { - assert(This); assert(hdr); StorageUtl_WriteWord((BYTE *)&hdr->wByteOrder, 0, PROPSETHDR_BYTEORDER_MAGIC); @@ -1445,7 +1465,6 @@ static void PropertyStorage_MakeHeader(PropertyStorage_impl *This, static void PropertyStorage_MakeFmtIdOffset(PropertyStorage_impl *This, FORMATIDOFFSET *fmtOffset) { - assert(This); assert(fmtOffset); StorageUtl_WriteGUID((BYTE *)fmtOffset, 0, &This->fmtid); StorageUtl_WriteDWord((BYTE *)fmtOffset, offsetof(FORMATIDOFFSET, dwOffset), @@ -1485,7 +1504,6 @@ static BOOL PropertyStorage_DictionaryWriter(const void *key, ULONG count; assert(key); - assert(This); assert(closure); StorageUtl_WriteDWord((LPBYTE)&propid, 0, (DWORD)value); c->hr = IStream_Write(This->stm, &propid, sizeof(propid), &count); @@ -1497,7 +1515,7 @@ static BOOL PropertyStorage_DictionaryWriter(const void *key, DWORD keyLen, pad = 0; StorageUtl_WriteDWord((LPBYTE)&keyLen, 0, - (lstrlenW((LPWSTR)key) + 1) * sizeof(WCHAR)); + (lstrlenW((LPCWSTR)key) + 1) * sizeof(WCHAR)); c->hr = IStream_Write(This->stm, &keyLen, sizeof(keyLen), &count); if (FAILED(c->hr)) goto end; @@ -1553,7 +1571,6 @@ static HRESULT PropertyStorage_WriteDictionaryToStream( DWORD dwTemp; struct DictionaryClosure closure; - assert(This); assert(sectionOffset); /* The dictionary's always the first property written, so seek to its @@ -1590,9 +1607,9 @@ static HRESULT PropertyStorage_WriteDictionaryToStream( *sectionOffset += closure.bytesWritten; if (closure.bytesWritten % sizeof(DWORD)) { - TRACE("adding %ld bytes of padding\n", sizeof(DWORD) - - closure.bytesWritten % sizeof(DWORD)); - *sectionOffset += sizeof(DWORD) - closure.bytesWritten % sizeof(DWORD); + DWORD padding = sizeof(DWORD) - closure.bytesWritten % sizeof(DWORD); + TRACE("adding %d bytes of padding\n", padding); + *sectionOffset += padding; } end: @@ -1608,11 +1625,10 @@ static HRESULT PropertyStorage_WritePropertyToStream(PropertyStorage_impl *This, ULONG count; DWORD dwType, bytesWritten; - assert(This); assert(var); assert(sectionOffset); - TRACE("%p, %ld, 0x%08lx, (%d), (%ld)\n", This, propNum, propid, var->vt, + TRACE("%p, %d, 0x%08x, (%d), (%d)\n", This, propNum, propid, var->vt, *sectionOffset); seek.QuadPart = SECTIONHEADER_OFFSET + sizeof(PROPERTYSECTIONHEADER) + @@ -1706,6 +1722,22 @@ static HRESULT PropertyStorage_WritePropertyToStream(PropertyStorage_impl *This, bytesWritten = count; break; } + case VT_CF: + { + DWORD cf_hdr[2], len; + + len = var->u.pclipdata->cbSize; + StorageUtl_WriteDWord((LPBYTE)&cf_hdr[0], 0, len + 8); + StorageUtl_WriteDWord((LPBYTE)&cf_hdr[1], 0, var->u.pclipdata->ulClipFmt); + hr = IStream_Write(This->stm, &cf_hdr, sizeof(cf_hdr), &count); + if (FAILED(hr)) + goto end; + hr = IStream_Write(This->stm, &var->u.pclipdata->pClipData, len, &count); + if (FAILED(hr)) + goto end; + bytesWritten = count + sizeof cf_hdr; + break; + } default: FIXME("unsupported type: %d\n", var->vt); return STG_E_INVALIDPARAMETER; @@ -1716,9 +1748,9 @@ static HRESULT PropertyStorage_WritePropertyToStream(PropertyStorage_impl *This, *sectionOffset += bytesWritten; if (bytesWritten % sizeof(DWORD)) { - TRACE("adding %ld bytes of padding\n", sizeof(DWORD) - - bytesWritten % sizeof(DWORD)); - *sectionOffset += sizeof(DWORD) - bytesWritten % sizeof(DWORD); + DWORD padding = sizeof(DWORD) - bytesWritten % sizeof(DWORD); + TRACE("adding %d bytes of padding\n", padding); + *sectionOffset += padding; } } @@ -1753,7 +1785,6 @@ static HRESULT PropertyStorage_WritePropertiesToStream( { struct PropertyClosure closure; - assert(This); assert(sectionOffset); closure.hr = S_OK; closure.propNum = startingPropNum; @@ -1771,7 +1802,6 @@ static HRESULT PropertyStorage_WriteHeadersToStream(PropertyStorage_impl *This) PROPERTYSETHEADER hdr; FORMATIDOFFSET fmtOffset; - assert(This); hr = IStream_Seek(This->stm, seek, STREAM_SEEK_SET, NULL); if (FAILED(hr)) goto end; @@ -1809,8 +1839,6 @@ static HRESULT PropertyStorage_WriteToStream(PropertyStorage_impl *This) DWORD numProps, prop, sectionOffset, dwTemp; PROPVARIANT var; - assert(This); - PropertyStorage_WriteHeadersToStream(This); /* Count properties. Always at least one property, the code page */ @@ -1897,7 +1925,6 @@ end: */ static void PropertyStorage_DestroyDictionaries(PropertyStorage_impl *This) { - assert(This); dictionary_destroy(This->name_to_propid); This->name_to_propid = NULL; dictionary_destroy(This->propid_to_name); @@ -1910,7 +1937,6 @@ static HRESULT PropertyStorage_CreateDictionaries(PropertyStorage_impl *This) { HRESULT hr = S_OK; - assert(This); This->name_to_propid = dictionary_create( PropertyStorage_PropNameCompare, PropertyStorage_PropNameDestroy, This); @@ -1953,6 +1979,7 @@ static HRESULT PropertyStorage_BaseConstruct(IStream *stm, (*pps)->vtbl = &IPropertyStorage_Vtbl; (*pps)->ref = 1; InitializeCriticalSection(&(*pps)->cs); + (*pps)->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": PropertyStorage_impl.cs"); (*pps)->stm = stm; memcpy(&(*pps)->fmtid, rfmtid, sizeof((*pps)->fmtid)); (*pps)->grfMode = grfMode; @@ -1961,6 +1988,7 @@ static HRESULT PropertyStorage_BaseConstruct(IStream *stm, if (FAILED(hr)) { IStream_Release(stm); + (*pps)->cs.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&(*pps)->cs); HeapFree(GetProcessHeap(), 0, *pps); *pps = NULL; @@ -2017,7 +2045,7 @@ static HRESULT PropertyStorage_ConstructEmpty(IStream *stm, else ps->codePage = CP_UNICODE; ps->locale = LOCALE_SYSTEM_DEFAULT; - TRACE("Code page is %d, locale is %ld\n", ps->codePage, ps->locale); + TRACE("Code page is %d, locale is %d\n", ps->codePage, ps->locale); *pps = (IPropertyStorage *)ps; TRACE("PropertyStorage %p constructed\n", ps); hr = S_OK; @@ -2084,7 +2112,7 @@ static HRESULT WINAPI IPropertySetStorage_fnCreate( IStream *stm = NULL; HRESULT r; - TRACE("%p %s %08lx %08lx %p\n", This, debugstr_guid(rfmtid), grfFlags, + TRACE("%p %s %08x %08x %p\n", This, debugstr_guid(rfmtid), grfFlags, grfMode, ppprstg); /* be picky */ @@ -2121,7 +2149,7 @@ static HRESULT WINAPI IPropertySetStorage_fnCreate( r = PropertyStorage_ConstructEmpty(stm, rfmtid, grfFlags, grfMode, ppprstg); end: - TRACE("returning 0x%08lx\n", r); + TRACE("returning 0x%08x\n", r); return r; } @@ -2139,7 +2167,7 @@ static HRESULT WINAPI IPropertySetStorage_fnOpen( WCHAR name[CCH_MAX_PROPSTG_NAME]; HRESULT r; - TRACE("%p %s %08lx %p\n", This, debugstr_guid(rfmtid), grfMode, ppprstg); + TRACE("%p %s %08x %p\n", This, debugstr_guid(rfmtid), grfMode, ppprstg); /* be picky */ if (grfMode != (STGM_READWRITE|STGM_SHARE_EXCLUSIVE) && @@ -2166,7 +2194,7 @@ static HRESULT WINAPI IPropertySetStorage_fnOpen( r = PropertyStorage_ConstructFromStream(stm, rfmtid, grfMode, ppprstg); end: - TRACE("returning 0x%08lx\n", r); + TRACE("returning 0x%08x\n", r); return r; } @@ -2203,10 +2231,201 @@ static HRESULT WINAPI IPropertySetStorage_fnEnum( IEnumSTATPROPSETSTG** ppenum) { StorageImpl *This = impl_from_IPropertySetStorage(ppstg); - FIXME("%p\n", This); - return E_NOTIMPL; + return create_EnumSTATPROPSETSTG(This, ppenum); } +/************************************************************************ + * Implement IEnumSTATPROPSETSTG using enumx + */ +static HRESULT WINAPI IEnumSTATPROPSETSTG_fnQueryInterface( + IEnumSTATPROPSETSTG *iface, + REFIID riid, + void** ppvObject) +{ + return enumx_QueryInterface((enumx_impl*)iface, riid, ppvObject); +} + +static ULONG WINAPI IEnumSTATPROPSETSTG_fnAddRef( + IEnumSTATPROPSETSTG *iface) +{ + return enumx_AddRef((enumx_impl*)iface); +} + +static ULONG WINAPI IEnumSTATPROPSETSTG_fnRelease( + IEnumSTATPROPSETSTG *iface) +{ + return enumx_Release((enumx_impl*)iface); +} + +static HRESULT WINAPI IEnumSTATPROPSETSTG_fnNext( + IEnumSTATPROPSETSTG *iface, + ULONG celt, + STATPROPSETSTG *rgelt, + ULONG *pceltFetched) +{ + return enumx_Next((enumx_impl*)iface, celt, rgelt, pceltFetched); +} + +static HRESULT WINAPI IEnumSTATPROPSETSTG_fnSkip( + IEnumSTATPROPSETSTG *iface, + ULONG celt) +{ + return enumx_Skip((enumx_impl*)iface, celt); +} + +static HRESULT WINAPI IEnumSTATPROPSETSTG_fnReset( + IEnumSTATPROPSETSTG *iface) +{ + return enumx_Reset((enumx_impl*)iface); +} + +static HRESULT WINAPI IEnumSTATPROPSETSTG_fnClone( + IEnumSTATPROPSETSTG *iface, + IEnumSTATPROPSETSTG **ppenum) +{ + return enumx_Clone((enumx_impl*)iface, (enumx_impl**)ppenum); +} + +static HRESULT create_EnumSTATPROPSETSTG( + StorageImpl *This, + IEnumSTATPROPSETSTG** ppenum) +{ + IStorage *stg = (IStorage*) &This->base.lpVtbl; + IEnumSTATSTG *penum = NULL; + STATSTG stat; + ULONG count; + HRESULT r; + STATPROPSETSTG statpss; + enumx_impl *enumx; + + TRACE("%p %p\n", This, ppenum); + + enumx = enumx_allocate(&IID_IEnumSTATPROPSETSTG, + &IEnumSTATPROPSETSTG_Vtbl, + sizeof (STATPROPSETSTG)); + + /* add all the property set elements into a list */ + r = IStorage_EnumElements(stg, 0, NULL, 0, &penum); + if (FAILED(r)) + return E_OUTOFMEMORY; + + while (1) + { + count = 0; + r = IEnumSTATSTG_Next(penum, 1, &stat, &count); + if (FAILED(r)) + break; + if (!count) + break; + if (!stat.pwcsName) + continue; + if (stat.pwcsName[0] == 5 && stat.type == STGTY_STREAM) + { + PropStgNameToFmtId(stat.pwcsName, &statpss.fmtid); + TRACE("adding %s (%s)\n", debugstr_w(stat.pwcsName), + debugstr_guid(&statpss.fmtid)); + statpss.mtime = stat.mtime; + statpss.atime = stat.atime; + statpss.ctime = stat.ctime; + statpss.grfFlags = stat.grfMode; + memcpy(&statpss.clsid, &stat.clsid, sizeof stat.clsid); + enumx_add_element(enumx, &statpss); + } + CoTaskMemFree(stat.pwcsName); + } + IEnumSTATSTG_Release(penum); + + *ppenum = (IEnumSTATPROPSETSTG*) enumx; + + return S_OK; +} + +/************************************************************************ + * Implement IEnumSTATPROPSTG using enumx + */ +static HRESULT WINAPI IEnumSTATPROPSTG_fnQueryInterface( + IEnumSTATPROPSTG *iface, + REFIID riid, + void** ppvObject) +{ + return enumx_QueryInterface((enumx_impl*)iface, riid, ppvObject); +} + +static ULONG WINAPI IEnumSTATPROPSTG_fnAddRef( + IEnumSTATPROPSTG *iface) +{ + return enumx_AddRef((enumx_impl*)iface); +} + +static ULONG WINAPI IEnumSTATPROPSTG_fnRelease( + IEnumSTATPROPSTG *iface) +{ + return enumx_Release((enumx_impl*)iface); +} + +static HRESULT WINAPI IEnumSTATPROPSTG_fnNext( + IEnumSTATPROPSTG *iface, + ULONG celt, + STATPROPSTG *rgelt, + ULONG *pceltFetched) +{ + return enumx_Next((enumx_impl*)iface, celt, rgelt, pceltFetched); +} + +static HRESULT WINAPI IEnumSTATPROPSTG_fnSkip( + IEnumSTATPROPSTG *iface, + ULONG celt) +{ + return enumx_Skip((enumx_impl*)iface, celt); +} + +static HRESULT WINAPI IEnumSTATPROPSTG_fnReset( + IEnumSTATPROPSTG *iface) +{ + return enumx_Reset((enumx_impl*)iface); +} + +static HRESULT WINAPI IEnumSTATPROPSTG_fnClone( + IEnumSTATPROPSTG *iface, + IEnumSTATPROPSTG **ppenum) +{ + return enumx_Clone((enumx_impl*)iface, (enumx_impl**)ppenum); +} + +static BOOL prop_enum_stat(const void *k, const void *v, void *extra, void *arg) +{ + enumx_impl *enumx = arg; + PROPID propid = (PROPID) k; + const PROPVARIANT *prop = v; + STATPROPSTG stat; + + stat.lpwstrName = NULL; + stat.propid = propid; + stat.vt = prop->vt; + + enumx_add_element(enumx, &stat); + + return TRUE; +} + +static HRESULT create_EnumSTATPROPSTG( + PropertyStorage_impl *This, + IEnumSTATPROPSTG** ppenum) +{ + enumx_impl *enumx; + + TRACE("%p %p\n", This, ppenum); + + enumx = enumx_allocate(&IID_IEnumSTATPROPSTG, + &IEnumSTATPROPSTG_Vtbl, + sizeof (STATPROPSTG)); + + dictionary_enumerate(This->propid_to_prop, prop_enum_stat, enumx); + + *ppenum = (IEnumSTATPROPSTG*) enumx; + + return S_OK; +} /*********************************************************************** * vtables @@ -2241,6 +2460,28 @@ static const IPropertyStorageVtbl IPropertyStorage_Vtbl = IPropertyStorage_fnStat, }; +static const IEnumSTATPROPSETSTGVtbl IEnumSTATPROPSETSTG_Vtbl = +{ + IEnumSTATPROPSETSTG_fnQueryInterface, + IEnumSTATPROPSETSTG_fnAddRef, + IEnumSTATPROPSETSTG_fnRelease, + IEnumSTATPROPSETSTG_fnNext, + IEnumSTATPROPSETSTG_fnSkip, + IEnumSTATPROPSETSTG_fnReset, + IEnumSTATPROPSETSTG_fnClone, +}; + +static const IEnumSTATPROPSTGVtbl IEnumSTATPROPSTG_Vtbl = +{ + IEnumSTATPROPSTG_fnQueryInterface, + IEnumSTATPROPSTG_fnAddRef, + IEnumSTATPROPSTG_fnRelease, + IEnumSTATPROPSTG_fnNext, + IEnumSTATPROPSTG_fnSkip, + IEnumSTATPROPSTG_fnReset, + IEnumSTATPROPSTG_fnClone, +}; + /*********************************************************************** * Format ID <-> name conversion */ @@ -2286,12 +2527,12 @@ HRESULT WINAPI FmtIdToPropStgName(const FMTID *rfmtid, LPOLESTR str) lstrcpyW(str, szDocSummaryInfo); else { - BYTE *fmtptr; + const BYTE *fmtptr; WCHAR *pstr = str; ULONG bitsRemaining = BITS_PER_BYTE; *pstr++ = 5; - for (fmtptr = (BYTE *)rfmtid; fmtptr < (BYTE *)rfmtid + sizeof(FMTID); ) + for (fmtptr = (const BYTE *)rfmtid; fmtptr < (const BYTE *)rfmtid + sizeof(FMTID); ) { ULONG i = *fmtptr >> (BITS_PER_BYTE - bitsRemaining); diff --git a/reactos/dll/win32/ole32/stg_stream.c b/reactos/dll/win32/ole32/stg_stream.c index 19b8bda5a7d..e144b2c9487 100644 --- a/reactos/dll/win32/ole32/stg_stream.c +++ b/reactos/dll/win32/ole32/stg_stream.c @@ -20,7 +20,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -58,8 +58,21 @@ static void StgStreamImpl_Destroy(StgStreamImpl* This) /* * Release the reference we are holding on the parent storage. + * IStorage_Release((IStorage*)This->parentStorage); + * + * No, don't do this. Some apps call IStorage_Release without + * calling IStream_Release first. If we grab a reference the + * file is not closed, and the app fails when it tries to + * reopen the file (Easy-PC, for example). Just inform the + * storage that we have closed the stream */ - IStorage_Release((IStorage*)This->parentStorage); + + if(This->parentStorage) { + + StorageBaseImpl_RemoveStream(This->parentStorage, This); + + } + This->parentStorage = 0; /* @@ -108,8 +121,11 @@ static HRESULT WINAPI StgStreamImpl_QueryInterface( /* * Compare the riid with the interface IDs implemented by this object. */ - if (IsEqualGUID(&IID_IUnknown, riid)|| - IsEqualGUID(&IID_IStream, riid)) + if (IsEqualIID(&IID_IUnknown, riid) || + IsEqualIID(&IID_IPersist, riid) || + IsEqualIID(&IID_IPersistStream, riid) || + IsEqualIID(&IID_ISequentialStream, riid) || + IsEqualIID(&IID_IStream, riid)) { *ppvObject = (IStream*)This; } @@ -173,7 +189,7 @@ static void StgStreamImpl_OpenBlockChain( StgStreamImpl* This) { StgProperty curProperty; - BOOL readSucessful; + BOOL readSuccessful; /* * Make sure no old object is left over. @@ -193,11 +209,11 @@ static void StgStreamImpl_OpenBlockChain( /* * Read the information from the property. */ - readSucessful = StorageImpl_ReadProperty(This->parentStorage->ancestorStorage, + readSuccessful = StorageImpl_ReadProperty(This->parentStorage->ancestorStorage, This->ownerProperty, &curProperty); - if (readSucessful) + if (readSuccessful) { This->streamSize = curProperty.size; @@ -251,9 +267,15 @@ static HRESULT WINAPI StgStreamImpl_Read( ULONG bytesToReadFromBuffer; HRESULT res; - TRACE("(%p, %p, %ld, %p)\n", + TRACE("(%p, %p, %d, %p)\n", iface, pv, cb, pcbRead); + if (!This->parentStorage) + { + WARN("storage reverted\n"); + return STG_E_REVERTED; + } + /* * If the caller is not interested in the number of bytes read, * we use another buffer to avoid "if" statements in the code. @@ -282,15 +304,11 @@ static HRESULT WINAPI StgStreamImpl_Read( } else if (This->bigBlockChain!=0) { - BOOL success = BlockChainStream_ReadAt(This->bigBlockChain, - This->currentPosition, - bytesToReadFromBuffer, - pv, - pcbRead); - if (success) - res = S_OK; - else - res = STG_E_READFAULT; + res = BlockChainStream_ReadAt(This->bigBlockChain, + This->currentPosition, + bytesToReadFromBuffer, + pv, + pcbRead); } else { @@ -319,7 +337,7 @@ static HRESULT WINAPI StgStreamImpl_Read( } end: - TRACE("<-- %08lx\n", res); + TRACE("<-- %08x\n", res); return res; } @@ -343,8 +361,9 @@ static HRESULT WINAPI StgStreamImpl_Write( ULARGE_INTEGER newSize; ULONG bytesWritten = 0; + HRESULT res; - TRACE("(%p, %p, %ld, %p)\n", + TRACE("(%p, %p, %d, %p)\n", iface, pv, cb, pcbWritten); /* @@ -356,12 +375,19 @@ static HRESULT WINAPI StgStreamImpl_Write( case STGM_READWRITE: break; default: + WARN("access denied by flags: 0x%x\n", STGM_ACCESS_MODE(This->grfMode)); return STG_E_ACCESSDENIED; } if (!pv) return STG_E_INVALIDPOINTER; + if (!This->parentStorage) + { + WARN("storage reverted\n"); + return STG_E_REVERTED; + } + /* * If the caller is not interested in the number of bytes written, * we use another buffer to avoid "if" statements in the code. @@ -376,6 +402,7 @@ static HRESULT WINAPI StgStreamImpl_Write( if (cb == 0) { + TRACE("<-- S_OK, written 0\n"); return S_OK; } else @@ -390,7 +417,9 @@ static HRESULT WINAPI StgStreamImpl_Write( if (newSize.u.LowPart > This->streamSize.u.LowPart) { /* grow stream */ - IStream_SetSize(iface, newSize); + res = IStream_SetSize(iface, newSize); + if (FAILED(res)) + return res; } /* @@ -399,7 +428,7 @@ static HRESULT WINAPI StgStreamImpl_Write( */ if (This->smallBlockChain!=0) { - SmallBlockChainStream_WriteAt(This->smallBlockChain, + res = SmallBlockChainStream_WriteAt(This->smallBlockChain, This->currentPosition, cb, pv, @@ -408,21 +437,27 @@ static HRESULT WINAPI StgStreamImpl_Write( } else if (This->bigBlockChain!=0) { - BlockChainStream_WriteAt(This->bigBlockChain, + res = BlockChainStream_WriteAt(This->bigBlockChain, This->currentPosition, cb, pv, pcbWritten); } else + { + /* this should never happen because the IStream_SetSize call above will + * make sure a big or small block chain is created */ assert(FALSE); + res = 0; + } /* * Advance the position pointer for the number of positions written. */ This->currentPosition.u.LowPart += *pcbWritten; - return S_OK; + TRACE("<-- S_OK, written %u\n", *pcbWritten); + return res; } /*** @@ -443,9 +478,19 @@ static HRESULT WINAPI StgStreamImpl_Seek( ULARGE_INTEGER newPosition; - TRACE("(%p, %ld, %ld, %p)\n", + TRACE("(%p, %d, %d, %p)\n", iface, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + /* + * fail if the stream has no parent (as does windows) + */ + + if (!This->parentStorage) + { + WARN("storage reverted\n"); + return STG_E_REVERTED; + } + /* * The caller is allowed to pass in NULL as the new position return value. * If it happens, we assign it to a dynamic variable to avoid special cases @@ -473,6 +518,7 @@ static HRESULT WINAPI StgStreamImpl_Seek( *plibNewPosition = This->streamSize; break; default: + WARN("invalid dwOrigin %d\n", dwOrigin); return STG_E_INVALIDFUNCTION; } @@ -504,19 +550,31 @@ static HRESULT WINAPI StgStreamImpl_SetSize( StgProperty curProperty; BOOL Success; - TRACE("(%p, %ld)\n", iface, libNewSize.u.LowPart); + TRACE("(%p, %d)\n", iface, libNewSize.u.LowPart); + + if(!This->parentStorage) + { + WARN("storage reverted\n"); + return STG_E_REVERTED; + } /* * As documented. */ if (libNewSize.u.HighPart != 0) + { + WARN("invalid value for libNewSize.u.HighPart %d\n", libNewSize.u.HighPart); return STG_E_INVALIDFUNCTION; + } /* * Do we have permission? */ if (!(This->grfMode & (STGM_WRITE | STGM_READWRITE))) + { + WARN("access denied\n"); return STG_E_ACCESSDENIED; + } if (This->streamSize.u.LowPart == libNewSize.u.LowPart) return S_OK; @@ -609,18 +667,26 @@ static HRESULT WINAPI StgStreamImpl_CopyTo( ULARGE_INTEGER* pcbRead, /* [out] */ ULARGE_INTEGER* pcbWritten) /* [out] */ { + StgStreamImpl* const This=(StgStreamImpl*)iface; HRESULT hr = S_OK; BYTE tmpBuffer[128]; ULONG bytesRead, bytesWritten, copySize; ULARGE_INTEGER totalBytesRead; ULARGE_INTEGER totalBytesWritten; - TRACE("(%p, %p, %ld, %p, %p)\n", + TRACE("(%p, %p, %d, %p, %p)\n", iface, pstm, cb.u.LowPart, pcbRead, pcbWritten); /* * Sanity check */ + + if (!This->parentStorage) + { + WARN("storage reverted\n"); + return STG_E_REVERTED; + } + if ( pstm == 0 ) return STG_E_INVALIDPOINTER; @@ -653,6 +719,7 @@ static HRESULT WINAPI StgStreamImpl_CopyTo( if (bytesRead != bytesWritten) { hr = STG_E_MEDIUMFULL; + WARN("medium full\n"); break; } @@ -691,6 +758,14 @@ static HRESULT WINAPI StgStreamImpl_Commit( IStream* iface, DWORD grfCommitFlags) /* [in] */ { + StgStreamImpl* const This=(StgStreamImpl*)iface; + + if (!This->parentStorage) + { + WARN("storage reverted\n"); + return STG_E_REVERTED; + } + return S_OK; } @@ -714,6 +789,14 @@ static HRESULT WINAPI StgStreamImpl_LockRegion( ULARGE_INTEGER cb, /* [in] */ DWORD dwLockType) /* [in] */ { + StgStreamImpl* const This=(StgStreamImpl*)iface; + + if (!This->parentStorage) + { + WARN("storage reverted\n"); + return STG_E_REVERTED; + } + FIXME("not implemented!\n"); return E_NOTIMPL; } @@ -724,6 +807,14 @@ static HRESULT WINAPI StgStreamImpl_UnlockRegion( ULARGE_INTEGER cb, /* [in] */ DWORD dwLockType) /* [in] */ { + StgStreamImpl* const This=(StgStreamImpl*)iface; + + if (!This->parentStorage) + { + WARN("storage reverted\n"); + return STG_E_REVERTED; + } + FIXME("not implemented!\n"); return E_NOTIMPL; } @@ -744,16 +835,28 @@ static HRESULT WINAPI StgStreamImpl_Stat( StgStreamImpl* const This=(StgStreamImpl*)iface; StgProperty curProperty; - BOOL readSucessful; + BOOL readSuccessful; + + TRACE("%p %p %d\n", This, pstatstg, grfStatFlag); + + /* + * if stream has no parent, return STG_E_REVERTED + */ + + if (!This->parentStorage) + { + WARN("storage reverted\n"); + return STG_E_REVERTED; + } /* * Read the information from the property. */ - readSucessful = StorageImpl_ReadProperty(This->parentStorage->ancestorStorage, + readSuccessful = StorageImpl_ReadProperty(This->parentStorage->ancestorStorage, This->ownerProperty, &curProperty); - if (readSucessful) + if (readSuccessful) { StorageUtl_CopyPropertyToSTATSTG(pstatstg, &curProperty, @@ -764,6 +867,7 @@ static HRESULT WINAPI StgStreamImpl_Stat( return S_OK; } + WARN("failed to read properties\n"); return E_FAIL; } @@ -788,9 +892,15 @@ static HRESULT WINAPI StgStreamImpl_Clone( StgStreamImpl* new_stream; LARGE_INTEGER seek_pos; + TRACE("%p %p\n", This, ppstm); + /* * Sanity check */ + + if (!This->parentStorage) + return STG_E_REVERTED; + if ( ppstm == 0 ) return STG_E_INVALIDPOINTER; @@ -800,6 +910,8 @@ static HRESULT WINAPI StgStreamImpl_Clone( return STG_E_INSUFFICIENTMEMORY; /* Currently the only reason for new_stream=0 */ *ppstm = (IStream*) new_stream; + IStream_AddRef(*ppstm); + seek_pos.QuadPart = This->currentPosition.QuadPart; hres=StgStreamImpl_Seek (*ppstm, seek_pos, STREAM_SEEK_SET, NULL); @@ -858,12 +970,19 @@ StgStreamImpl* StgStreamImpl_Construct( newStream->lpVtbl = &StgStreamImpl_Vtbl; newStream->ref = 0; + newStream->parentStorage = parentStorage; + /* * We want to nail-down the reference to the storage in case the * stream out-lives the storage in the client application. + * + * -- IStorage_AddRef((IStorage*)newStream->parentStorage); + * + * No, don't do this. Some apps call IStorage_Release without + * calling IStream_Release first. If we grab a reference the + * file is not closed, and the app fails when it tries to + * reopen the file (Easy-PC, for example) */ - newStream->parentStorage = parentStorage; - IStorage_AddRef((IStorage*)newStream->parentStorage); newStream->grfMode = grfMode; newStream->ownerProperty = ownerProperty; @@ -887,6 +1006,9 @@ StgStreamImpl* StgStreamImpl_Construct( * this stream are large or small. */ StgStreamImpl_OpenBlockChain(newStream); + + /* add us to the storage's list of active streams */ + StorageBaseImpl_AddStream(parentStorage, newStream); } return newStream; diff --git a/reactos/dll/win32/ole32/storage.c b/reactos/dll/win32/ole32/storage.c index d1bd1933727..401c9845442 100644 --- a/reactos/dll/win32/ole32/storage.c +++ b/reactos/dll/win32/ole32/storage.c @@ -18,7 +18,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -353,12 +353,12 @@ STORAGE_get_big_block(stream_access16 *str,int n,BYTE *block) if ((SetFilePointer( str->hf, (n+1)*BIGSIZE, NULL, SEEK_SET ) == INVALID_SET_FILE_POINTER) && GetLastError()) { - WARN("(%p,%d,%p), seek failed (%ld)\n",str->hf, n, block, GetLastError()); + WARN("(%p,%d,%p), seek failed (%d)\n",str->hf, n, block, GetLastError()); return FALSE; } if (!ReadFile( str->hf, block, BIGSIZE, &result, NULL ) || result != BIGSIZE) { - WARN("(hf=%p, block size %d): read didn't read (%ld)\n",str->hf,n,GetLastError()); + WARN("(hf=%p, block size %d): read didn't read (%d)\n",str->hf,n,GetLastError()); return FALSE; } } else { @@ -382,7 +382,7 @@ STORAGE_get_big_block(stream_access16 *str,int n,BYTE *block) (LPVOID)args, (LPDWORD)&hres )) { - ERR("CallTo16 ILockBytes16::ReadAt() failed, hres %lx\n",hres); + ERR("CallTo16 ILockBytes16::ReadAt() failed, hres %x\n",hres); return FALSE; } memcpy(block, MapSL(args[3]), BIGSIZE); @@ -414,7 +414,7 @@ _ilockbytes16_writeat(SEGPTR lockbytes, DWORD offset, DWORD length, void *buffer (LPVOID)args, (LPDWORD)&hres )) { - ERR("CallTo16 ILockBytes16::WriteAt() failed, hres %lx\n",hres); + ERR("CallTo16 ILockBytes16::WriteAt() failed, hres %x\n",hres); return FALSE; } UnMapLS(args[3]); @@ -434,12 +434,12 @@ STORAGE_put_big_block(stream_access16 *str,int n,BYTE *block) if ((SetFilePointer( str->hf, (n+1)*BIGSIZE, NULL, SEEK_SET ) == INVALID_SET_FILE_POINTER) && GetLastError()) { - WARN("seek failed (%ld)\n",GetLastError()); + WARN("seek failed (%d)\n",GetLastError()); return FALSE; } if (!WriteFile( str->hf, block, BIGSIZE, &result, NULL ) || result != BIGSIZE) { - WARN(" write failed (%ld)\n",GetLastError()); + WARN(" write failed (%d)\n",GetLastError()); return FALSE; } return TRUE; @@ -719,9 +719,9 @@ STORAGE_dump_pps_entry(struct storage_pps_entry *stde) { return; DPRINTF("name: %s\n",name); DPRINTF("type: %d\n",stde->pps_type); - DPRINTF("prev pps: %ld\n",stde->pps_prev); - DPRINTF("next pps: %ld\n",stde->pps_next); - DPRINTF("dir pps: %ld\n",stde->pps_dir); + DPRINTF("prev pps: %d\n",stde->pps_prev); + DPRINTF("next pps: %d\n",stde->pps_next); + DPRINTF("dir pps: %d\n",stde->pps_dir); DPRINTF("guid: %s\n",debugstr_guid(&(stde->pps_guid))); if (stde->pps_type !=2) { time_t t; @@ -733,8 +733,8 @@ STORAGE_dump_pps_entry(struct storage_pps_entry *stde) { t = dw; DPRINTF("ts2: %s\n",ctime(&t)); } - DPRINTF("startblock: %ld\n",stde->pps_sb); - DPRINTF("size: %ld\n",stde->pps_size); + DPRINTF("startblock: %d\n",stde->pps_sb); + DPRINTF("size: %d\n",stde->pps_size); } /****************************************************************************** @@ -1071,7 +1071,7 @@ typedef struct /****************************************************************************** * IStream16_QueryInterface [STORAGE.518] */ -HRESULT IStream16_fnQueryInterface( +HRESULT CDECL IStream16_fnQueryInterface( IStream16* iface,REFIID refiid,LPVOID *obj ) { IStream16Impl *This = (IStream16Impl *)iface; @@ -1087,7 +1087,7 @@ HRESULT IStream16_fnQueryInterface( /****************************************************************************** * IStream16_AddRef [STORAGE.519] */ -ULONG IStream16_fnAddRef(IStream16* iface) { +ULONG CDECL IStream16_fnAddRef(IStream16* iface) { IStream16Impl *This = (IStream16Impl *)iface; return InterlockedIncrement(&This->ref); } @@ -1107,7 +1107,7 @@ _ilockbytes16_addref(SEGPTR lockbytes) { (LPVOID)args, (LPDWORD)&hres )) - ERR("CallTo16 ILockBytes16::AddRef() failed, hres %lx\n",hres); + ERR("CallTo16 ILockBytes16::AddRef() failed, hres %x\n",hres); } static void @@ -1125,7 +1125,7 @@ _ilockbytes16_release(SEGPTR lockbytes) { (LPVOID)args, (LPDWORD)&hres )) - ERR("CallTo16 ILockBytes16::Release() failed, hres %lx\n",hres); + ERR("CallTo16 ILockBytes16::Release() failed, hres %x\n",hres); } static void @@ -1143,13 +1143,13 @@ _ilockbytes16_flush(SEGPTR lockbytes) { (LPVOID)args, (LPDWORD)&hres )) - ERR("CallTo16 ILockBytes16::Flush() failed, hres %lx\n",hres); + ERR("CallTo16 ILockBytes16::Flush() failed, hres %x\n",hres); } /****************************************************************************** * IStream16_Release [STORAGE.520] */ -ULONG IStream16_fnRelease(IStream16* iface) { +ULONG CDECL IStream16_fnRelease(IStream16* iface) { IStream16Impl *This = (IStream16Impl *)iface; ULONG ref; @@ -1176,11 +1176,11 @@ ULONG IStream16_fnRelease(IStream16* iface) { * FIXME * Does not handle 64 bits */ -HRESULT IStream16_fnSeek( +HRESULT CDECL IStream16_fnSeek( IStream16* iface,LARGE_INTEGER offset,DWORD whence,ULARGE_INTEGER *newpos ) { IStream16Impl *This = (IStream16Impl *)iface; - TRACE_(relay)("(%p)->([%ld.%ld],%ld,%p)\n",This,offset.u.HighPart,offset.u.LowPart,whence,newpos); + TRACE_(relay)("(%p)->([%d.%d],%d,%p)\n",This,offset.u.HighPart,offset.u.LowPart,whence,newpos); switch (whence) { /* unix SEEK_xx should be the same as win95 ones */ @@ -1220,7 +1220,7 @@ HRESULT IStream16_fnSeek( /****************************************************************************** * IStream16_Read [STORAGE.521] */ -HRESULT IStream16_fnRead( +HRESULT CDECL IStream16_fnRead( IStream16* iface,void *pv,ULONG cb,ULONG *pcbRead ) { IStream16Impl *This = (IStream16Impl *)iface; @@ -1229,7 +1229,7 @@ HRESULT IStream16_fnRead( int blocknr; LPBYTE pbv = pv; - TRACE_(relay)("(%p)->(%p,%ld,%p)\n",This,pv,cb,pcbRead); + TRACE_(relay)("(%p)->(%p,%d,%p)\n",This,pv,cb,pcbRead); if (!pcbRead) bytesread=&xxread; *bytesread = 0; @@ -1282,7 +1282,7 @@ HRESULT IStream16_fnRead( /****************************************************************************** * IStream16_Write [STORAGE.522] */ -HRESULT IStream16_fnWrite( +HRESULT CDECL IStream16_fnWrite( IStream16* iface,const void *pv,ULONG cb,ULONG *pcbWrite ) { IStream16Impl *This = (IStream16Impl *)iface; @@ -1294,7 +1294,7 @@ HRESULT IStream16_fnWrite( if (!pcbWrite) byteswritten=&xxwritten; *byteswritten = 0; - TRACE_(relay)("(%p)->(%p,%ld,%p)\n",This,pv,cb,pcbWrite); + TRACE_(relay)("(%p)->(%p,%d,%p)\n",This,pv,cb,pcbWrite); /* do we need to junk some blocks? */ newsize = This->offset.u.LowPart+cb; oldsize = This->stde.pps_size; @@ -1667,7 +1667,7 @@ ULONG WINAPI IStream_fnRelease(IStream* iface) { /****************************************************************************** * IStorage16_QueryInterface [STORAGE.500] */ -HRESULT IStorage16_fnQueryInterface( +HRESULT CDECL IStorage16_fnQueryInterface( IStorage16* iface,REFIID refiid,LPVOID *obj ) { IStorage16Impl *This = (IStorage16Impl *)iface; @@ -1684,7 +1684,7 @@ HRESULT IStorage16_fnQueryInterface( /****************************************************************************** * IStorage16_AddRef [STORAGE.501] */ -ULONG IStorage16_fnAddRef(IStorage16* iface) { +ULONG CDECL IStorage16_fnAddRef(IStorage16* iface) { IStorage16Impl *This = (IStorage16Impl *)iface; return InterlockedIncrement(&This->ref); } @@ -1692,7 +1692,7 @@ ULONG IStorage16_fnAddRef(IStorage16* iface) { /****************************************************************************** * IStorage16_Release [STORAGE.502] */ -ULONG IStorage16_fnRelease(IStorage16* iface) { +ULONG CDECL IStorage16_fnRelease(IStorage16* iface) { IStorage16Impl *This = (IStorage16Impl *)iface; ULONG ref; ref = InterlockedDecrement(&This->ref); @@ -1707,14 +1707,14 @@ ULONG IStorage16_fnRelease(IStorage16* iface) { /****************************************************************************** * IStorage16_Stat [STORAGE.517] */ -HRESULT IStorage16_fnStat( +HRESULT CDECL IStorage16_fnStat( LPSTORAGE16 iface,STATSTG16 *pstatstg, DWORD grfStatFlag ) { IStorage16Impl *This = (IStorage16Impl *)iface; DWORD len = WideCharToMultiByte( CP_ACP, 0, This->stde.pps_rawname, -1, NULL, 0, NULL, NULL ); LPSTR nameA = HeapAlloc( GetProcessHeap(), 0, len ); - TRACE("(%p)->(%p,0x%08lx)\n", + TRACE("(%p)->(%p,0x%08x)\n", This,pstatstg,grfStatFlag ); WideCharToMultiByte( CP_ACP, 0, This->stde.pps_rawname, -1, nameA, len, NULL, NULL ); @@ -1735,11 +1735,11 @@ HRESULT IStorage16_fnStat( /****************************************************************************** * IStorage16_Commit [STORAGE.509] */ -HRESULT IStorage16_fnCommit( +HRESULT CDECL IStorage16_fnCommit( LPSTORAGE16 iface,DWORD commitflags ) { IStorage16Impl *This = (IStorage16Impl *)iface; - FIXME("(%p)->(0x%08lx),STUB!\n", + FIXME("(%p)->(0x%08x),STUB!\n", This,commitflags ); return S_OK; @@ -1748,9 +1748,9 @@ HRESULT IStorage16_fnCommit( /****************************************************************************** * IStorage16_CopyTo [STORAGE.507] */ -HRESULT IStorage16_fnCopyTo(LPSTORAGE16 iface,DWORD ciidExclude,const IID *rgiidExclude,SNB16 SNB16Exclude,IStorage16 *pstgDest) { +HRESULT CDECL IStorage16_fnCopyTo(LPSTORAGE16 iface,DWORD ciidExclude,const IID *rgiidExclude,SNB16 SNB16Exclude,IStorage16 *pstgDest) { IStorage16Impl *This = (IStorage16Impl *)iface; - FIXME("IStorage16(%p)->(0x%08lx,%s,%p,%p),stub!\n", + FIXME("IStorage16(%p)->(0x%08x,%s,%p,%p),stub!\n", This,ciidExclude,debugstr_guid(rgiidExclude),SNB16Exclude,pstgDest ); return S_OK; @@ -1760,7 +1760,7 @@ HRESULT IStorage16_fnCopyTo(LPSTORAGE16 iface,DWORD ciidExclude,const IID *rgiid /****************************************************************************** * IStorage16_CreateStorage [STORAGE.505] */ -HRESULT IStorage16_fnCreateStorage( +HRESULT CDECL IStorage16_fnCreateStorage( LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD dwStgFormat,DWORD reserved2, IStorage16 **ppstg ) { IStorage16Impl *This = (IStorage16Impl *)iface; @@ -1772,7 +1772,7 @@ HRESULT IStorage16_fnCreateStorage( int nPPSEntries; READ_HEADER(&This->str); - TRACE("(%p)->(%s,0x%08lx,0x%08lx,0x%08lx,%p)\n", + TRACE("(%p)->(%s,0x%08x,0x%08x,0x%08x,%p)\n", This,pwcsName,grfMode,dwStgFormat,reserved2,ppstg ); if (grfMode & STGM_TRANSACTED) @@ -1829,7 +1829,7 @@ HRESULT IStorage16_fnCreateStorage( /****************************************************************************** * IStorage16_CreateStream [STORAGE.503] */ -HRESULT IStorage16_fnCreateStream( +HRESULT CDECL IStorage16_fnCreateStream( LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD reserved1,DWORD reserved2, IStream16 **ppstm ) { IStorage16Impl *This = (IStorage16Impl *)iface; @@ -1839,7 +1839,7 @@ HRESULT IStorage16_fnCreateStream( BOOL ret; int nPPSEntries; - TRACE("(%p)->(%s,0x%08lx,0x%08lx,0x%08lx,%p)\n", + TRACE("(%p)->(%s,0x%08x,0x%08x,0x%08x,%p)\n", This,pwcsName,grfMode,reserved1,reserved2,ppstm ); if (grfMode & STGM_TRANSACTED) @@ -1893,7 +1893,7 @@ HRESULT IStorage16_fnCreateStream( /****************************************************************************** * IStorage16_OpenStorage [STORAGE.506] */ -HRESULT IStorage16_fnOpenStorage( +HRESULT CDECL IStorage16_fnOpenStorage( LPSTORAGE16 iface,LPCOLESTR16 pwcsName, IStorage16 *pstgPrio, DWORD grfMode, SNB16 snbExclude, DWORD reserved, IStorage16 **ppstg ) { IStorage16Impl *This = (IStorage16Impl *)iface; @@ -1901,7 +1901,7 @@ HRESULT IStorage16_fnOpenStorage( WCHAR name[33]; int newpps; - TRACE("(%p)->(%s,%p,0x%08lx,%p,0x%08lx,%p)\n", + TRACE("(%p)->(%s,%p,0x%08x,%p,0x%08x,%p)\n", This,pwcsName,pstgPrio,grfMode,snbExclude,reserved,ppstg ); if (grfMode & STGM_TRANSACTED) @@ -1933,7 +1933,7 @@ HRESULT IStorage16_fnOpenStorage( /****************************************************************************** * IStorage16_OpenStream [STORAGE.504] */ -HRESULT IStorage16_fnOpenStream( +HRESULT CDECL IStorage16_fnOpenStream( LPSTORAGE16 iface,LPCOLESTR16 pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream16 **ppstm ) { IStorage16Impl *This = (IStorage16Impl *)iface; @@ -1941,7 +1941,7 @@ HRESULT IStorage16_fnOpenStream( WCHAR name[33]; int newpps; - TRACE("(%p)->(%s,%p,0x%08lx,0x%08lx,%p)\n", + TRACE("(%p)->(%s,%p,0x%08x,0x%08x,%p)\n", This,pwcsName,reserved1,grfMode,reserved2,ppstm ); if (grfMode & STGM_TRANSACTED) @@ -2052,13 +2052,13 @@ HRESULT WINAPI StgCreateDocFile16( IStorage16Impl* lpstg; struct storage_pps_entry stde; - TRACE("(%s,0x%08lx,0x%08lx,%p)\n", + TRACE("(%s,0x%08x,0x%08x,%p)\n", pwcsName,grfMode,reserved,ppstgOpen ); _create_istorage16(ppstgOpen); hf = CreateFileA(pwcsName,GENERIC_READ|GENERIC_WRITE,0,NULL,CREATE_NEW,0,0); if (hf==INVALID_HANDLE_VALUE) { - WARN("couldn't open file for storage:%ld\n",GetLastError()); + WARN("couldn't open file for storage:%d\n",GetLastError()); return E_FAIL; } lpstg = MapSL((SEGPTR)*ppstgOpen); @@ -2113,7 +2113,7 @@ HRESULT WINAPI StgOpenStorage16( IStorage16Impl* lpstg; struct storage_pps_entry stde; - TRACE("(%s,%p,0x%08lx,%p,%ld,%p)\n", + TRACE("(%s,%p,0x%08x,%p,%d,%p)\n", pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstgOpen ); _create_istorage16(ppstgOpen); @@ -2168,7 +2168,7 @@ HRESULT WINAPI StgIsStorageILockBytes16(SEGPTR plkbyt) (LPVOID)args, (LPDWORD)&hres )) { - ERR("CallTo16 ILockBytes16::ReadAt() failed, hres %lx\n",hres); + ERR("CallTo16 ILockBytes16::ReadAt() failed, hres %x\n",hres); return hres; } if (memcmp(MapSL(args[3]), STORAGE_magic, sizeof(STORAGE_magic)) == 0) { @@ -2181,9 +2181,12 @@ HRESULT WINAPI StgIsStorageILockBytes16(SEGPTR plkbyt) /****************************************************************************** * StgOpenStorageOnILockBytes [STORAGE.4] + * + * PARAMS + * plkbyt FIXME: Should probably be an ILockBytes16 *. */ HRESULT WINAPI StgOpenStorageOnILockBytes16( - SEGPTR /*ILockBytes16 **/plkbyt, + SEGPTR plkbyt, IStorage16 *pstgPriority, DWORD grfMode, SNB16 snbExclude, @@ -2194,7 +2197,7 @@ HRESULT WINAPI StgOpenStorageOnILockBytes16( int i,ret; struct storage_pps_entry stde; - FIXME("(%lx, %p, 0x%08lx, %d, %lx, %p)\n", plkbyt, pstgPriority, grfMode, (int)snbExclude, reserved, ppstgOpen); + FIXME("(%x, %p, 0x%08x, %d, %x, %p)\n", plkbyt, pstgPriority, grfMode, (int)snbExclude, reserved, ppstgOpen); if ((plkbyt == 0) || (ppstgOpen == 0)) return STG_E_INVALIDPOINTER; @@ -2241,7 +2244,7 @@ HRESULT WINAPI ReadClassStg16(SEGPTR pstg, CLSID *pclsid) HRESULT hres; DWORD args[3]; - TRACE("(%lx, %p)\n", pstg, pclsid); + TRACE("(%x, %p)\n", pstg, pclsid); if(pclsid==NULL) return E_POINTER; @@ -2262,7 +2265,7 @@ HRESULT WINAPI ReadClassStg16(SEGPTR pstg, CLSID *pclsid) (LPDWORD)&hres )) { WOWGlobalUnlockFree16(args[1]); - ERR("CallTo16 IStorage16::Stat() failed, hres %lx\n",hres); + ERR("CallTo16 IStorage16::Stat() failed, hres %x\n",hres); return hres; } memcpy(&statstg, MapSL(args[1]), sizeof(STATSTG16)); diff --git a/reactos/dll/win32/ole32/storage32.c b/reactos/dll/win32/ole32/storage32.c index c9d696e8c2c..97f53dfee7e 100644 --- a/reactos/dll/win32/ole32/storage32.c +++ b/reactos/dll/win32/ole32/storage32.c @@ -22,7 +22,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES * The compound file implementation of IStorage used for create @@ -62,8 +62,55 @@ WINE_DEFAULT_DEBUG_CHANNEL(storage); #define OLESTREAM_ID 0x501 #define OLESTREAM_MAX_STR_LEN 255 +/* + * These are signatures to detect the type of Document file. + */ +static const BYTE STORAGE_magic[8] ={0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1}; +static const BYTE STORAGE_oldmagic[8] ={0xd0,0xcf,0x11,0xe0,0x0e,0x11,0xfc,0x0d}; + static const char rootPropertyName[] = "Root Entry"; +/**************************************************************************** + * Storage32InternalImpl definitions. + * + * Definition of the implementation structure for the IStorage32 interface. + * This one implements the IStorage32 interface for storage that are + * inside another storage. + */ +struct StorageInternalImpl +{ + struct StorageBaseImpl base; + /* + * There is no specific data for this class. + */ +}; +typedef struct StorageInternalImpl StorageInternalImpl; + +/* Method definitions for the Storage32InternalImpl class. */ +static StorageInternalImpl* StorageInternalImpl_Construct(StorageImpl* ancestorStorage, + DWORD openFlags, ULONG rootTropertyIndex); +static void StorageImpl_Destroy(StorageBaseImpl* iface); +static BOOL StorageImpl_ReadBigBlock(StorageImpl* This, ULONG blockIndex, void* buffer); +static BOOL StorageImpl_WriteBigBlock(StorageImpl* This, ULONG blockIndex, void* buffer); +static void StorageImpl_SetNextBlockInChain(StorageImpl* This, ULONG blockIndex, ULONG nextBlock); +static HRESULT StorageImpl_LoadFileHeader(StorageImpl* This); +static void StorageImpl_SaveFileHeader(StorageImpl* This); + +static void Storage32Impl_AddBlockDepot(StorageImpl* This, ULONG blockIndex); +static ULONG Storage32Impl_AddExtBlockDepot(StorageImpl* This); +static ULONG Storage32Impl_GetNextExtendedBlock(StorageImpl* This, ULONG blockIndex); +static ULONG Storage32Impl_GetExtDepotBlock(StorageImpl* This, ULONG depotIndex); +static void Storage32Impl_SetExtDepotBlock(StorageImpl* This, ULONG depotIndex, ULONG blockIndex); + +static ULONG BlockChainStream_GetHeadOfChain(BlockChainStream* This); +static ULARGE_INTEGER BlockChainStream_GetSize(BlockChainStream* This); +static ULONG BlockChainStream_GetCount(BlockChainStream* This); + +static ULARGE_INTEGER SmallBlockChainStream_GetSize(SmallBlockChainStream* This); +static BOOL StorageImpl_WriteDWordToBigBlock( StorageImpl* This, + ULONG blockIndex, ULONG offset, DWORD value); +static BOOL StorageImpl_ReadDWordFromBigBlock( StorageImpl* This, + ULONG blockIndex, ULONG offset, DWORD* value); /* OLESTREAM memory structure to use for Get and Put Routines */ /* Used for OleConvertIStorageToOLESTREAM and OleConvertOLESTREAMToIStorage */ @@ -166,10 +213,78 @@ static DWORD GetCreationModeFromSTGM(DWORD stgm); extern const IPropertySetStorageVtbl IPropertySetStorage_Vtbl; +/**************************************************************************** + * IEnumSTATSTGImpl definitions. + * + * Definition of the implementation structure for the IEnumSTATSTGImpl interface. + * This class allows iterating through the content of a storage and to find + * specific items inside it. + */ +struct IEnumSTATSTGImpl +{ + const IEnumSTATSTGVtbl *lpVtbl; /* Needs to be the first item in the struct + * since we want to cast this in an IEnumSTATSTG pointer */ + + LONG ref; /* Reference count */ + StorageImpl* parentStorage; /* Reference to the parent storage */ + ULONG firstPropertyNode; /* Index of the root of the storage to enumerate */ + + /* + * The current implementation of the IEnumSTATSTGImpl class uses a stack + * to walk the property sets to get the content of a storage. This stack + * is implemented by the following 3 data members + */ + ULONG stackSize; + ULONG stackMaxSize; + ULONG* stackToVisit; + +#define ENUMSTATSGT_SIZE_INCREMENT 10 +}; + + +static IEnumSTATSTGImpl* IEnumSTATSTGImpl_Construct(StorageImpl* This, ULONG firstPropertyNode); +static void IEnumSTATSTGImpl_Destroy(IEnumSTATSTGImpl* This); +static void IEnumSTATSTGImpl_PushSearchNode(IEnumSTATSTGImpl* This, ULONG nodeToPush); +static ULONG IEnumSTATSTGImpl_PopSearchNode(IEnumSTATSTGImpl* This, BOOL remove); +static ULONG IEnumSTATSTGImpl_FindProperty(IEnumSTATSTGImpl* This, const OLECHAR* lpszPropName, + StgProperty* buffer); +static INT IEnumSTATSTGImpl_FindParentProperty(IEnumSTATSTGImpl *This, ULONG childProperty, + StgProperty *currentProperty, ULONG *propertyId); + +/************************************************************************ +** Block Functions +*/ + +static ULONG BLOCK_GetBigBlockOffset(ULONG index) +{ + if (index == 0xffffffff) + index = 0; + else + index ++; + + return index * BIG_BLOCK_SIZE; +} /************************************************************************ ** Storage32BaseImpl implementatiion */ +static HRESULT StorageImpl_ReadAt(StorageImpl* This, + ULARGE_INTEGER offset, + void* buffer, + ULONG size, + ULONG* bytesRead) +{ + return BIGBLOCKFILE_ReadAt(This->bigBlockFile,offset,buffer,size,bytesRead); +} + +static HRESULT StorageImpl_WriteAt(StorageImpl* This, + ULARGE_INTEGER offset, + void* buffer, + const ULONG size, + ULONG* bytesWritten) +{ + return BIGBLOCKFILE_WriteAt(This->bigBlockFile,offset,buffer,size,bytesWritten); +} /************************************************************************ * Storage32BaseImpl_QueryInterface (IUnknown) @@ -179,7 +294,7 @@ extern const IPropertySetStorageVtbl IPropertySetStorage_Vtbl; * * See Windows documentation for more details on IUnknown methods. */ -HRESULT WINAPI StorageBaseImpl_QueryInterface( +static HRESULT WINAPI StorageBaseImpl_QueryInterface( IStorage* iface, REFIID riid, void** ppvObject) @@ -199,15 +314,12 @@ HRESULT WINAPI StorageBaseImpl_QueryInterface( /* * Compare the riid with the interface IDs implemented by this object. */ - if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0) + if (IsEqualGUID(&IID_IUnknown, riid) || + IsEqualGUID(&IID_IStorage, riid)) { *ppvObject = (IStorage*)This; } - else if (memcmp(&IID_IStorage, riid, sizeof(IID_IStorage)) == 0) - { - *ppvObject = (IStorage*)This; - } - else if (memcmp(&IID_IPropertySetStorage, riid, sizeof(IID_IPropertySetStorage)) == 0) + else if (IsEqualGUID(&IID_IPropertySetStorage, riid)) { *ppvObject = (IStorage*)&This->pssVtbl; } @@ -235,13 +347,13 @@ HRESULT WINAPI StorageBaseImpl_QueryInterface( * * See Windows documentation for more details on IUnknown methods. */ -ULONG WINAPI StorageBaseImpl_AddRef( +static ULONG WINAPI StorageBaseImpl_AddRef( IStorage* iface) { StorageBaseImpl *This = (StorageBaseImpl *)iface; ULONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) AddRef to %ld\n", This, ref); + TRACE("(%p) AddRef to %d\n", This, ref); return ref; } @@ -254,7 +366,7 @@ ULONG WINAPI StorageBaseImpl_AddRef( * * See Windows documentation for more details on IUnknown methods. */ -ULONG WINAPI StorageBaseImpl_Release( +static ULONG WINAPI StorageBaseImpl_Release( IStorage* iface) { StorageBaseImpl *This = (StorageBaseImpl *)iface; @@ -263,7 +375,7 @@ ULONG WINAPI StorageBaseImpl_Release( */ ULONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ReleaseRef to %ld\n", This, ref); + TRACE("(%p) ReleaseRef to %d\n", This, ref); /* * If the reference count goes down to 0, perform suicide. @@ -288,7 +400,7 @@ ULONG WINAPI StorageBaseImpl_Release( * * See Windows documentation for more details on IStorage methods. */ -HRESULT WINAPI StorageBaseImpl_OpenStream( +static HRESULT WINAPI StorageBaseImpl_OpenStream( IStorage* iface, const OLECHAR* pwcsName, /* [string][in] */ void* reserved1, /* [unique][in] */ @@ -302,9 +414,8 @@ HRESULT WINAPI StorageBaseImpl_OpenStream( StgProperty currentProperty; ULONG foundPropertyIndex; HRESULT res = STG_E_UNKNOWN; - DWORD parent_grfMode; - TRACE("(%p, %s, %p, %lx, %ld, %p)\n", + TRACE("(%p, %s, %p, %x, %d, %p)\n", iface, debugstr_w(pwcsName), reserved1, grfMode, reserved2, ppstm); /* @@ -324,7 +435,8 @@ HRESULT WINAPI StorageBaseImpl_OpenStream( /* * Validate the STGM flags */ - if ( FAILED( validateSTGM(grfMode) )) + if ( FAILED( validateSTGM(grfMode) ) || + STGM_SHARE_MODE(grfMode) != STGM_SHARE_EXCLUSIVE) { res = STG_E_INVALIDFLAG; goto end; @@ -333,22 +445,22 @@ HRESULT WINAPI StorageBaseImpl_OpenStream( /* * As documented. */ - if ( STGM_SHARE_MODE(grfMode) != STGM_SHARE_EXCLUSIVE || - (grfMode & STGM_DELETEONRELEASE) || - (grfMode & STGM_TRANSACTED) ) + if ( (grfMode & STGM_DELETEONRELEASE) || (grfMode & STGM_TRANSACTED) ) { res = STG_E_INVALIDFUNCTION; goto end; } /* - * Check that we're compatible with the parent's storage mode + * Check that we're compatible with the parent's storage mode, but + * only if we are not in transacted mode */ - parent_grfMode = STGM_ACCESS_MODE( This->ancestorStorage->base.openFlags ); - if ( STGM_ACCESS_MODE( grfMode ) > STGM_ACCESS_MODE( parent_grfMode ) ) - { - res = STG_E_ACCESSDENIED; - goto end; + if(!(This->ancestorStorage->base.openFlags & STGM_TRANSACTED)) { + if ( STGM_ACCESS_MODE( grfMode ) > STGM_ACCESS_MODE( This->openFlags ) ) + { + res = STG_E_ACCESSDENIED; + goto end; + } } /* @@ -403,7 +515,7 @@ HRESULT WINAPI StorageBaseImpl_OpenStream( end: if (res == S_OK) TRACE("<-- IStream %p\n", *ppstm); - TRACE("<-- %08lx\n", res); + TRACE("<-- %08x\n", res); return res; } @@ -414,7 +526,7 @@ end: * * See Windows documentation for more details on IStorage methods. */ -HRESULT WINAPI StorageBaseImpl_OpenStorage( +static HRESULT WINAPI StorageBaseImpl_OpenStorage( IStorage* iface, const OLECHAR* pwcsName, /* [string][unique][in] */ IStorage* pstgPriority, /* [unique][in] */ @@ -429,9 +541,8 @@ HRESULT WINAPI StorageBaseImpl_OpenStorage( StgProperty currentProperty; ULONG foundPropertyIndex; HRESULT res = STG_E_UNKNOWN; - DWORD parent_grfMode; - TRACE("(%p, %s, %p, %lx, %p, %ld, %p)\n", + TRACE("(%p, %s, %p, %x, %p, %d, %p)\n", iface, debugstr_w(pwcsName), pstgPriority, grfMode, snbExclude, reserved, ppstg); @@ -472,13 +583,15 @@ HRESULT WINAPI StorageBaseImpl_OpenStorage( } /* - * Check that we're compatible with the parent's storage mode + * Check that we're compatible with the parent's storage mode, + * but only if we are not transacted */ - parent_grfMode = STGM_ACCESS_MODE( This->ancestorStorage->base.openFlags ); - if ( STGM_ACCESS_MODE( grfMode ) > STGM_ACCESS_MODE( parent_grfMode ) ) - { - res = STG_E_ACCESSDENIED; - goto end; + if(!(This->ancestorStorage->base.openFlags & STGM_TRANSACTED)) { + if ( STGM_ACCESS_MODE( grfMode ) > STGM_ACCESS_MODE( This->openFlags ) ) + { + res = STG_E_ACCESSDENIED; + goto end; + } } /* @@ -541,7 +654,7 @@ HRESULT WINAPI StorageBaseImpl_OpenStorage( res = STG_E_FILENOTFOUND; end: - TRACE("<-- %08lx\n", res); + TRACE("<-- %08x\n", res); return res; } @@ -553,7 +666,7 @@ end: * * See Windows documentation for more details on IStorage methods. */ -HRESULT WINAPI StorageBaseImpl_EnumElements( +static HRESULT WINAPI StorageBaseImpl_EnumElements( IStorage* iface, DWORD reserved1, /* [in] */ void* reserved2, /* [size_is][unique][in] */ @@ -563,7 +676,7 @@ HRESULT WINAPI StorageBaseImpl_EnumElements( StorageBaseImpl *This = (StorageBaseImpl *)iface; IEnumSTATSTGImpl* newEnum; - TRACE("(%p, %ld, %p, %ld, %p)\n", + TRACE("(%p, %d, %p, %d, %p)\n", iface, reserved1, reserved2, reserved3, ppenum); /* @@ -602,7 +715,7 @@ HRESULT WINAPI StorageBaseImpl_EnumElements( * * See Windows documentation for more details on IStorage methods. */ -HRESULT WINAPI StorageBaseImpl_Stat( +static HRESULT WINAPI StorageBaseImpl_Stat( IStorage* iface, STATSTG* pstatstg, /* [out] */ DWORD grfStatFlag) /* [in] */ @@ -612,7 +725,7 @@ HRESULT WINAPI StorageBaseImpl_Stat( BOOL readSuccessful; HRESULT res = STG_E_UNKNOWN; - TRACE("(%p, %p, %lx)\n", + TRACE("(%p, %p, %x)\n", iface, pstatstg, grfStatFlag); /* @@ -639,6 +752,8 @@ HRESULT WINAPI StorageBaseImpl_Stat( &curProperty, grfStatFlag); + pstatstg->grfMode = This->openFlags; + res = S_OK; goto end; } @@ -648,9 +763,9 @@ HRESULT WINAPI StorageBaseImpl_Stat( end: if (res == S_OK) { - TRACE("<-- STATSTG: pwcsName: %s, type: %ld, cbSize.Low/High: %ld/%ld, grfMode: %08lx, grfLocksSupported: %ld, grfStateBits: %08lx\n", debugstr_w(pstatstg->pwcsName), pstatstg->type, pstatstg->cbSize.u.LowPart, pstatstg->cbSize.u.HighPart, pstatstg->grfMode, pstatstg->grfLocksSupported, pstatstg->grfStateBits); + TRACE("<-- STATSTG: pwcsName: %s, type: %d, cbSize.Low/High: %d/%d, grfMode: %08x, grfLocksSupported: %d, grfStateBits: %08x\n", debugstr_w(pstatstg->pwcsName), pstatstg->type, pstatstg->cbSize.u.LowPart, pstatstg->cbSize.u.HighPart, pstatstg->grfMode, pstatstg->grfLocksSupported, pstatstg->grfStateBits); } - TRACE("<-- %08lx\n", res); + TRACE("<-- %08x\n", res); return res; } @@ -665,7 +780,7 @@ end: * of the deleted StgProperty object setting it with the new name and to * perform a DestroyElement of the old StgProperty. */ -HRESULT WINAPI StorageBaseImpl_RenameElement( +static HRESULT WINAPI StorageBaseImpl_RenameElement( IStorage* iface, const OLECHAR* pwcsOldName, /* [in] */ const OLECHAR* pwcsNewName) /* [in] */ @@ -775,13 +890,13 @@ HRESULT WINAPI StorageBaseImpl_RenameElement( /* * At this point the renamed property has been inserted in the tree, - * now, before to Destroy the old property we must zeroed it's dirProperty + * now, before Destroying the old property we must zero its dirProperty * otherwise the DestroyProperty below will zap it all and we do not want * this to happen. * Also, we fake that the old property is a storage so the DestroyProperty * will not do a SetSize(0) on the stream data. * - * This means that we need to tweek the StgProperty if it is a stream or a + * This means that we need to tweak the StgProperty if it is a stream or a * non empty storage. */ StorageImpl_ReadProperty(This->ancestorStorage, @@ -797,7 +912,7 @@ HRESULT WINAPI StorageBaseImpl_RenameElement( /* * Invoke Destroy to get rid of the ole property and automatically redo - * the linking of it's previous and next members... + * the linking of its previous and next members... */ IStorage_DestroyElement((IStorage*)This->ancestorStorage, pwcsOldName); @@ -820,7 +935,7 @@ HRESULT WINAPI StorageBaseImpl_RenameElement( * * See Windows documentation for more details on IStorage methods. */ -HRESULT WINAPI StorageBaseImpl_CreateStream( +static HRESULT WINAPI StorageBaseImpl_CreateStream( IStorage* iface, const OLECHAR* pwcsName, /* [string][in] */ DWORD grfMode, /* [in] */ @@ -833,9 +948,8 @@ HRESULT WINAPI StorageBaseImpl_CreateStream( StgStreamImpl* newStream; StgProperty currentProperty, newStreamProperty; ULONG foundPropertyIndex, newPropertyIndex; - DWORD parent_grfMode; - TRACE("(%p, %s, %lx, %ld, %ld, %p)\n", + TRACE("(%p, %s, %x, %d, %d, %p)\n", iface, debugstr_w(pwcsName), grfMode, reserved1, reserved2, ppstm); @@ -869,10 +983,12 @@ HRESULT WINAPI StorageBaseImpl_CreateStream( /* * Check that we're compatible with the parent's storage mode + * if not in transacted mode */ - parent_grfMode = STGM_ACCESS_MODE( This->ancestorStorage->base.openFlags ); - if ( STGM_ACCESS_MODE( grfMode ) > STGM_ACCESS_MODE( parent_grfMode ) ) - return STG_E_ACCESSDENIED; + if(!(This->ancestorStorage->base.openFlags & STGM_TRANSACTED)) { + if ( STGM_ACCESS_MODE( grfMode ) > STGM_ACCESS_MODE( This->openFlags ) ) + return STG_E_ACCESSDENIED; + } /* * Initialize the out parameter @@ -903,6 +1019,11 @@ HRESULT WINAPI StorageBaseImpl_CreateStream( else return STG_E_FILEALREADYEXISTS; } + else if (STGM_ACCESS_MODE(This->openFlags) == STGM_READ) + { + WARN("read-only storage\n"); + return STG_E_ACCESSDENIED; + } /* * memset the empty property @@ -987,7 +1108,7 @@ HRESULT WINAPI StorageBaseImpl_CreateStream( * * See Windows documentation for more details on IStorage methods. */ -HRESULT WINAPI StorageBaseImpl_SetClass( +static HRESULT WINAPI StorageBaseImpl_SetClass( IStorage* iface, REFCLSID clsid) /* [in] */ { @@ -1026,7 +1147,7 @@ HRESULT WINAPI StorageBaseImpl_SetClass( * * See Windows documentation for more details on IStorage methods. */ -HRESULT WINAPI StorageImpl_CreateStorage( +static HRESULT WINAPI StorageImpl_CreateStorage( IStorage* iface, const OLECHAR *pwcsName, /* [string][in] */ DWORD grfMode, /* [in] */ @@ -1042,9 +1163,8 @@ HRESULT WINAPI StorageImpl_CreateStorage( ULONG foundPropertyIndex; ULONG newPropertyIndex; HRESULT hr; - DWORD parent_grfMode; - TRACE("(%p, %s, %lx, %ld, %ld, %p)\n", + TRACE("(%p, %s, %x, %d, %d, %p)\n", iface, debugstr_w(pwcsName), grfMode, reserved1, reserved2, ppstg); @@ -1068,15 +1188,14 @@ HRESULT WINAPI StorageImpl_CreateStorage( if ( FAILED( validateSTGM(grfMode) ) || (grfMode & STGM_DELETEONRELEASE) ) { - WARN("bad grfMode: 0x%lx\n", grfMode); + WARN("bad grfMode: 0x%x\n", grfMode); return STG_E_INVALIDFLAG; } /* * Check that we're compatible with the parent's storage mode */ - parent_grfMode = STGM_ACCESS_MODE( This->base.ancestorStorage->base.openFlags ); - if ( STGM_ACCESS_MODE( grfMode ) > STGM_ACCESS_MODE( parent_grfMode ) ) + if ( STGM_ACCESS_MODE( grfMode ) > STGM_ACCESS_MODE( This->base.openFlags ) ) { WARN("access denied\n"); return STG_E_ACCESSDENIED; @@ -1106,6 +1225,11 @@ HRESULT WINAPI StorageImpl_CreateStorage( return STG_E_FILEALREADYEXISTS; } } + else if (STGM_ACCESS_MODE(This->base.openFlags) == STGM_READ) + { + WARN("read-only storage\n"); + return STG_E_ACCESSDENIED; + } /* * memset the empty property @@ -1409,7 +1533,7 @@ static void updatePropertyChain( else { /* - * The root storage is empty, link the new property to it's dir property + * The root storage is empty, link the new property to its dir property */ currentProperty.dirProperty = newPropertyIndex; StorageImpl_WriteProperty(storage->base.ancestorStorage, @@ -1422,7 +1546,7 @@ static void updatePropertyChain( /************************************************************************* * CopyTo (IStorage) */ -HRESULT WINAPI StorageImpl_CopyTo( +static HRESULT WINAPI StorageImpl_CopyTo( IStorage* iface, DWORD ciidExclude, /* [in] */ const IID* rgiidExclude, /* [size_is][unique][in] */ @@ -1438,7 +1562,7 @@ HRESULT WINAPI StorageImpl_CopyTo( if ((ciidExclude != 0) || (rgiidExclude != NULL) || (snbExclude != NULL)) FIXME("Exclude option not implemented\n"); - TRACE("(%p, %ld, %p, %p, %p)\n", + TRACE("(%p, %d, %p, %p, %p)\n", iface, ciidExclude, rgiidExclude, snbExclude, pstgDest); @@ -1572,7 +1696,7 @@ HRESULT WINAPI StorageImpl_CopyTo( } else { - WARN("unknown element type: %ld\n", curElement.type); + WARN("unknown element type: %d\n", curElement.type); } } while (hr == S_OK); @@ -1588,14 +1712,16 @@ HRESULT WINAPI StorageImpl_CopyTo( /************************************************************************* * MoveElementTo (IStorage) */ -HRESULT WINAPI StorageImpl_MoveElementTo( +static HRESULT WINAPI StorageImpl_MoveElementTo( IStorage* iface, const OLECHAR *pwcsName, /* [string][in] */ IStorage *pstgDest, /* [unique][in] */ const OLECHAR *pwcsNewName,/* [string][in] */ DWORD grfFlags) /* [in] */ { - FIXME("not implemented!\n"); + FIXME("(%p %s %p %s %u): stub\n", iface, + debugstr_w(pwcsName), pstgDest, + debugstr_w(pwcsNewName), grfFlags); return E_NOTIMPL; } @@ -1609,11 +1735,11 @@ HRESULT WINAPI StorageImpl_MoveElementTo( * Wine doesn't implement transacted mode, which seems to be a basic * optimization, so we can ignore this stub for now. */ -HRESULT WINAPI StorageImpl_Commit( +static HRESULT WINAPI StorageImpl_Commit( IStorage* iface, DWORD grfCommitFlags)/* [in] */ { - FIXME("(%ld): stub!\n", grfCommitFlags); + FIXME("(%p %d): stub\n", iface, grfCommitFlags); return S_OK; } @@ -1622,25 +1748,25 @@ HRESULT WINAPI StorageImpl_Commit( * * Discard all changes that have been made since the last commit operation */ -HRESULT WINAPI StorageImpl_Revert( +static HRESULT WINAPI StorageImpl_Revert( IStorage* iface) { - FIXME("not implemented!\n"); + FIXME("(%p): stub\n", iface); return E_NOTIMPL; } /************************************************************************* * DestroyElement (IStorage) * - * Stategy: This implementation is build this way for simplicity not for speed. - * I always delete the top most element of the enumeration and adjust + * Strategy: This implementation is built this way for simplicity not for speed. + * I always delete the topmost element of the enumeration and adjust * the deleted element pointer all the time. This takes longer to * do but allow to reinvoke DestroyElement whenever we encounter a - * storage object. The optimisation reside in the usage of another - * enumeration stategy that would give all the leaves of a storage + * storage object. The optimisation resides in the usage of another + * enumeration strategy that would give all the leaves of a storage * first. (postfix order) */ -HRESULT WINAPI StorageImpl_DestroyElement( +static HRESULT WINAPI StorageImpl_DestroyElement( IStorage* iface, const OLECHAR *pwcsName)/* [string][in] */ { @@ -1653,7 +1779,7 @@ HRESULT WINAPI StorageImpl_DestroyElement( StgProperty parentProperty; ULONG foundPropertyIndexToDelete; ULONG typeOfRelation; - ULONG parentPropertyId; + ULONG parentPropertyId = 0; TRACE("(%p, %s)\n", iface, debugstr_w(pwcsName)); @@ -1686,7 +1812,7 @@ HRESULT WINAPI StorageImpl_DestroyElement( /* * Find the parent property of the property to delete (the one that * link to it). If This->dirProperty == foundPropertyIndexToDelete, - * the parent is This. Otherwise, the parent is one of it's sibling... + * the parent is This. Otherwise, the parent is one of its sibling... */ /* @@ -1771,7 +1897,7 @@ HRESULT WINAPI StorageImpl_DestroyElement( * * See Windows documentation for more details on IStorage methods. */ -HRESULT WINAPI StorageImpl_Stat( IStorage* iface, +static HRESULT WINAPI StorageImpl_Stat( IStorage* iface, STATSTG* pstatstg, /* [out] */ DWORD grfStatFlag) /* [in] */ { @@ -1788,6 +1914,34 @@ HRESULT WINAPI StorageImpl_Stat( IStorage* iface, return result; } +/****************************************************************************** + * Internal stream list handlers + */ + +void StorageBaseImpl_AddStream(StorageBaseImpl * stg, StgStreamImpl * strm) +{ + TRACE("Stream added (stg=%p strm=%p)\n", stg, strm); + list_add_tail(&stg->strmHead,&strm->StrmListEntry); +} + +void StorageBaseImpl_RemoveStream(StorageBaseImpl * stg, StgStreamImpl * strm) +{ + TRACE("Stream removed (stg=%p strm=%p)\n", stg,strm); + list_remove(&(strm->StrmListEntry)); +} + +static void StorageBaseImpl_DeleteAll(StorageBaseImpl * stg) +{ + struct list *cur, *cur2; + StgStreamImpl *strm=NULL; + + LIST_FOR_EACH_SAFE(cur, cur2, &stg->strmHead) { + strm = LIST_ENTRY(cur,StgStreamImpl,StrmListEntry); + TRACE("Streams deleted (stg=%p strm=%p next=%p prev=%p)\n", stg,strm,cur->next,cur->prev); + strm->parentStorage = NULL; + list_remove(cur); + } +} /********************************************************************* @@ -1815,7 +1969,7 @@ static HRESULT deleteStorageProperty( (IStorage*)parentStorage, propertyToDelete.name, 0, - STGM_SHARE_EXCLUSIVE, + STGM_WRITE | STGM_SHARE_EXCLUSIVE, 0, 0, &childStorage); @@ -1854,7 +2008,7 @@ static HRESULT deleteStorageProperty( } while ((hr == S_OK) && (destroyHr == S_OK)); /* - * Invalidate the property by zeroing it's name member. + * Invalidate the property by zeroing its name member. */ propertyToDelete.sizeOfNameString = 0; @@ -1916,7 +2070,7 @@ static HRESULT deleteStreamProperty( IStream_Release(pis); /* - * Invalidate the property by zeroing it's name member. + * Invalidate the property by zeroing its name member. */ propertyToDelete.sizeOfNameString = 0; @@ -2179,7 +2333,7 @@ static HRESULT adjustPropertyChain( /****************************************************************************** * SetElementTimes (IStorage) */ -HRESULT WINAPI StorageImpl_SetElementTimes( +static HRESULT WINAPI StorageImpl_SetElementTimes( IStorage* iface, const OLECHAR *pwcsName,/* [string][in] */ const FILETIME *pctime, /* [in] */ @@ -2193,7 +2347,7 @@ HRESULT WINAPI StorageImpl_SetElementTimes( /****************************************************************************** * SetStateBits (IStorage) */ -HRESULT WINAPI StorageImpl_SetStateBits( +static HRESULT WINAPI StorageImpl_SetStateBits( IStorage* iface, DWORD grfStateBits,/* [in] */ DWORD grfMask) /* [in] */ @@ -2227,7 +2381,7 @@ static const IStorageVtbl Storage32Impl_Vtbl = StorageImpl_Stat }; -HRESULT StorageImpl_Construct( +static HRESULT StorageImpl_Construct( StorageImpl* This, HANDLE hFile, LPCOLESTR pwcsName, @@ -2246,13 +2400,19 @@ HRESULT StorageImpl_Construct( memset(This, 0, sizeof(StorageImpl)); + /* + * Initialize stream list + */ + + list_init(&This->base.strmHead); + /* * Initialize the virtual function table. */ This->base.lpVtbl = &Storage32Impl_Vtbl; This->base.pssVtbl = &IPropertySetStorage_Vtbl; This->base.v_destructor = &StorageImpl_Destroy; - This->base.openFlags = openFlags; + This->base.openFlags = (openFlags & ~STGM_CREATE); /* * This is the top-level storage so initialize the ancestor pointer @@ -2293,7 +2453,7 @@ HRESULT StorageImpl_Construct( if (fileCreate) { ULARGE_INTEGER size; - BYTE* bigBlockBuffer; + BYTE bigBlockBuffer[BIG_BLOCK_SIZE]; /* * Initialize all header variables: @@ -2326,11 +2486,10 @@ HRESULT StorageImpl_Construct( /* * Initialize the big block depot */ - bigBlockBuffer = StorageImpl_GetBigBlock(This, 0); memset(bigBlockBuffer, BLOCK_UNUSED, This->bigBlockSize); StorageUtl_WriteDWord(bigBlockBuffer, 0, BLOCK_SPECIAL); StorageUtl_WriteDWord(bigBlockBuffer, sizeof(ULONG), BLOCK_END_OF_CHAIN); - StorageImpl_ReleaseBigBlock(This, bigBlockBuffer); + StorageImpl_WriteBigBlock(This, 0, bigBlockBuffer); } else { @@ -2370,7 +2529,7 @@ HRESULT StorageImpl_Construct( return STG_E_READFAULT; /* - * Write the root property + * Write the root property (memory only) */ if (fileCreate) { @@ -2434,11 +2593,13 @@ HRESULT StorageImpl_Construct( return hr; } -void StorageImpl_Destroy(StorageBaseImpl* iface) +static void StorageImpl_Destroy(StorageBaseImpl* iface) { StorageImpl *This = (StorageImpl*) iface; TRACE("(%p)\n", This); + StorageBaseImpl_DeleteAll(&This->base); + HeapFree(GetProcessHeap(), 0, This->pwcsName); BlockChainStream_Destroy(This->smallBlockRootChain); @@ -2456,11 +2617,12 @@ void StorageImpl_Destroy(StorageBaseImpl* iface) * If the big block depot is filled, this method will enlarge it. * */ -ULONG StorageImpl_GetNextFreeBigBlock( +static ULONG StorageImpl_GetNextFreeBigBlock( StorageImpl* This) { ULONG depotBlockIndexPos; - void *depotBuffer; + BYTE depotBuffer[BIG_BLOCK_SIZE]; + BOOL success; ULONG depotBlockOffset; ULONG blocksPerDepot = This->bigBlockSize / sizeof(ULONG); ULONG nextBlockIndex = BLOCK_SPECIAL; @@ -2553,9 +2715,9 @@ ULONG StorageImpl_GetNextFreeBigBlock( } } - depotBuffer = StorageImpl_GetROBigBlock(This, depotBlockIndexPos); + success = StorageImpl_ReadBigBlock(This, depotBlockIndexPos, depotBuffer); - if (depotBuffer != 0) + if (success) { while ( ( (depotBlockOffset/sizeof(ULONG) ) < blocksPerDepot) && ( nextBlockIndex != BLOCK_UNUSED)) @@ -2570,14 +2732,17 @@ ULONG StorageImpl_GetNextFreeBigBlock( depotBlockOffset += sizeof(ULONG); } - - StorageImpl_ReleaseBigBlock(This, depotBuffer); } depotIndex++; depotBlockOffset = 0; } + /* + * make sure that the block physically exists before using it + */ + BIGBLOCKFILE_EnsureExists(This->bigBlockFile, freeBlock); + This->prevFreeBlock = freeBlock; return freeBlock; @@ -2589,18 +2754,15 @@ ULONG StorageImpl_GetNextFreeBigBlock( * This will create a depot block, essentially it is a block initialized * to BLOCK_UNUSEDs. */ -void Storage32Impl_AddBlockDepot(StorageImpl* This, ULONG blockIndex) +static void Storage32Impl_AddBlockDepot(StorageImpl* This, ULONG blockIndex) { - BYTE* blockBuffer; - - blockBuffer = StorageImpl_GetBigBlock(This, blockIndex); + BYTE blockBuffer[BIG_BLOCK_SIZE]; /* * Initialize blocks as free */ memset(blockBuffer, BLOCK_UNUSED, This->bigBlockSize); - - StorageImpl_ReleaseBigBlock(This, blockBuffer); + StorageImpl_WriteBigBlock(This, blockIndex, blockBuffer); } /****************************************************************************** @@ -2610,7 +2772,7 @@ void Storage32Impl_AddBlockDepot(StorageImpl* This, ULONG blockIndex) * index. This method is only for depot indexes equal or greater than * COUNT_BBDEPOTINHEADER. */ -ULONG Storage32Impl_GetExtDepotBlock(StorageImpl* This, ULONG depotIndex) +static ULONG Storage32Impl_GetExtDepotBlock(StorageImpl* This, ULONG depotIndex) { ULONG depotBlocksPerExtBlock = (This->bigBlockSize / sizeof(ULONG)) - 1; ULONG numExtBlocks = depotIndex - COUNT_BBDEPOTINHEADER; @@ -2631,20 +2793,8 @@ ULONG Storage32Impl_GetExtDepotBlock(StorageImpl* This, ULONG depotIndex) } if (extBlockIndex != BLOCK_UNUSED) - { - BYTE* depotBuffer; - - depotBuffer = StorageImpl_GetROBigBlock(This, extBlockIndex); - - if (depotBuffer != 0) - { - StorageUtl_ReadDWord(depotBuffer, - extBlockOffset * sizeof(ULONG), - &blockIndex); - - StorageImpl_ReleaseBigBlock(This, depotBuffer); - } - } + StorageImpl_ReadDWordFromBigBlock(This, extBlockIndex, + extBlockOffset * sizeof(ULONG), &blockIndex); return blockIndex; } @@ -2656,9 +2806,7 @@ ULONG Storage32Impl_GetExtDepotBlock(StorageImpl* This, ULONG depotIndex) * This method is only for depot indexes equal or greater than * COUNT_BBDEPOTINHEADER. */ -void Storage32Impl_SetExtDepotBlock(StorageImpl* This, - ULONG depotIndex, - ULONG blockIndex) +static void Storage32Impl_SetExtDepotBlock(StorageImpl* This, ULONG depotIndex, ULONG blockIndex) { ULONG depotBlocksPerExtBlock = (This->bigBlockSize / sizeof(ULONG)) - 1; ULONG numExtBlocks = depotIndex - COUNT_BBDEPOTINHEADER; @@ -2676,18 +2824,9 @@ void Storage32Impl_SetExtDepotBlock(StorageImpl* This, if (extBlockIndex != BLOCK_UNUSED) { - BYTE* depotBuffer; - - depotBuffer = StorageImpl_GetBigBlock(This, extBlockIndex); - - if (depotBuffer != 0) - { - StorageUtl_WriteDWord(depotBuffer, - extBlockOffset * sizeof(ULONG), - blockIndex); - - StorageImpl_ReleaseBigBlock(This, depotBuffer); - } + StorageImpl_WriteDWordToBigBlock(This, extBlockIndex, + extBlockOffset * sizeof(ULONG), + blockIndex); } } @@ -2696,11 +2835,11 @@ void Storage32Impl_SetExtDepotBlock(StorageImpl* This, * * Creates an extended depot block. */ -ULONG Storage32Impl_AddExtBlockDepot(StorageImpl* This) +static ULONG Storage32Impl_AddExtBlockDepot(StorageImpl* This) { ULONG numExtBlocks = This->extBigBlockDepotCount; ULONG nextExtBlock = This->extBigBlockDepotStart; - BYTE* depotBuffer = NULL; + BYTE depotBuffer[BIG_BLOCK_SIZE]; ULONG index = BLOCK_UNUSED; ULONG nextBlockOffset = This->bigBlockSize - sizeof(ULONG); ULONG blocksPerDepotBlock = This->bigBlockSize / sizeof(ULONG); @@ -2730,17 +2869,15 @@ ULONG Storage32Impl_AddExtBlockDepot(StorageImpl* This) /* * Add the new extended block to the chain. */ - depotBuffer = StorageImpl_GetBigBlock(This, nextExtBlock); - StorageUtl_WriteDWord(depotBuffer, nextBlockOffset, index); - StorageImpl_ReleaseBigBlock(This, depotBuffer); + StorageImpl_WriteDWordToBigBlock(This, nextExtBlock, nextBlockOffset, + index); } /* * Initialize this block. */ - depotBuffer = StorageImpl_GetBigBlock(This, index); memset(depotBuffer, BLOCK_UNUSED, This->bigBlockSize); - StorageImpl_ReleaseBigBlock(This, depotBuffer); + StorageImpl_WriteBigBlock(This, index, depotBuffer); return index; } @@ -2750,7 +2887,7 @@ ULONG Storage32Impl_AddExtBlockDepot(StorageImpl* This) * * This method will flag the specified block as free in the big block depot. */ -void StorageImpl_FreeBigBlock( +static void StorageImpl_FreeBigBlock( StorageImpl* This, ULONG blockIndex) { @@ -2784,7 +2921,7 @@ void StorageImpl_FreeBigBlock( * * See Windows documentation for more details on IStorage methods. */ -HRESULT StorageImpl_GetNextBlockInChain( +static HRESULT StorageImpl_GetNextBlockInChain( StorageImpl* This, ULONG blockIndex, ULONG* nextBlockIndex) @@ -2792,7 +2929,8 @@ HRESULT StorageImpl_GetNextBlockInChain( ULONG offsetInDepot = blockIndex * sizeof (ULONG); ULONG depotBlockCount = offsetInDepot / This->bigBlockSize; ULONG depotBlockOffset = offsetInDepot % This->bigBlockSize; - void* depotBuffer; + BYTE depotBuffer[BIG_BLOCK_SIZE]; + BOOL success; ULONG depotBlockIndexPos; int index; @@ -2800,7 +2938,7 @@ HRESULT StorageImpl_GetNextBlockInChain( if(depotBlockCount >= This->bigBlockDepotCount) { - WARN("depotBlockCount %ld, bigBlockDepotCount %ld\n", depotBlockCount, + WARN("depotBlockCount %d, bigBlockDepotCount %d\n", depotBlockCount, This->bigBlockDepotCount); return STG_E_READFAULT; } @@ -2824,9 +2962,9 @@ HRESULT StorageImpl_GetNextBlockInChain( depotBlockIndexPos = Storage32Impl_GetExtDepotBlock(This, depotBlockCount); } - depotBuffer = StorageImpl_GetROBigBlock(This, depotBlockIndexPos); + success = StorageImpl_ReadBigBlock(This, depotBlockIndexPos, depotBuffer); - if (!depotBuffer) + if (!success) return STG_E_READFAULT; for (index = 0; index < NUM_BLOCKS_PER_DEPOT_BLOCK; index++) @@ -2834,7 +2972,6 @@ HRESULT StorageImpl_GetNextBlockInChain( StorageUtl_ReadDWord(depotBuffer, index*sizeof(ULONG), nextBlockIndex); This->blockDepotCached[index] = *nextBlockIndex; } - StorageImpl_ReleaseBigBlock(This, depotBuffer); } *nextBlockIndex = This->blockDepotCached[depotBlockOffset/sizeof(ULONG)]; @@ -2857,20 +2994,13 @@ HRESULT StorageImpl_GetNextBlockInChain( * - BLOCK_UNUSED: there is no next extended block. * - Any other return values denotes failure. */ -ULONG Storage32Impl_GetNextExtendedBlock(StorageImpl* This, ULONG blockIndex) +static ULONG Storage32Impl_GetNextExtendedBlock(StorageImpl* This, ULONG blockIndex) { ULONG nextBlockIndex = BLOCK_SPECIAL; ULONG depotBlockOffset = This->bigBlockSize - sizeof(ULONG); - void* depotBuffer; - depotBuffer = StorageImpl_GetROBigBlock(This, blockIndex); - - if (depotBuffer!=0) - { - StorageUtl_ReadDWord(depotBuffer, depotBlockOffset, &nextBlockIndex); - - StorageImpl_ReleaseBigBlock(This, depotBuffer); - } + StorageImpl_ReadDWordFromBigBlock(This, blockIndex, depotBlockOffset, + &nextBlockIndex); return nextBlockIndex; } @@ -2889,7 +3019,7 @@ ULONG Storage32Impl_GetNextExtendedBlock(StorageImpl* This, ULONG blockIndex) * Storage32Impl_SetNextBlockInChain(This, 7, BLOCK_END_OF_CHAIN); * */ -void StorageImpl_SetNextBlockInChain( +static void StorageImpl_SetNextBlockInChain( StorageImpl* This, ULONG blockIndex, ULONG nextBlock) @@ -2898,7 +3028,6 @@ void StorageImpl_SetNextBlockInChain( ULONG depotBlockCount = offsetInDepot / This->bigBlockSize; ULONG depotBlockOffset = offsetInDepot % This->bigBlockSize; ULONG depotBlockIndexPos; - void* depotBuffer; assert(depotBlockCount < This->bigBlockDepotCount); assert(blockIndex != nextBlock); @@ -2915,14 +3044,8 @@ void StorageImpl_SetNextBlockInChain( depotBlockIndexPos = Storage32Impl_GetExtDepotBlock(This, depotBlockCount); } - depotBuffer = StorageImpl_GetBigBlock(This, depotBlockIndexPos); - - if (depotBuffer!=0) - { - StorageUtl_WriteDWord(depotBuffer, depotBlockOffset, nextBlock); - StorageImpl_ReleaseBigBlock(This, depotBuffer); - } - + StorageImpl_WriteDWordToBigBlock(This, depotBlockIndexPos, depotBlockOffset, + nextBlock); /* * Update the cached block depot, if necessary. */ @@ -2937,22 +3060,24 @@ void StorageImpl_SetNextBlockInChain( * * This method will read in the file header, i.e. big block index -1. */ -HRESULT StorageImpl_LoadFileHeader( +static HRESULT StorageImpl_LoadFileHeader( StorageImpl* This) { HRESULT hr = STG_E_FILENOTFOUND; - void* headerBigBlock = NULL; + BYTE headerBigBlock[BIG_BLOCK_SIZE]; + BOOL success; int index; + TRACE("\n"); /* * Get a pointer to the big block of data containing the header. */ - headerBigBlock = StorageImpl_GetROBigBlock(This, -1); + success = StorageImpl_ReadBigBlock(This, -1, headerBigBlock); /* * Extract the information from the header. */ - if (headerBigBlock!=0) + if (success) { /* * Check for the "magic number" signature and return an error if it is not @@ -2960,13 +3085,11 @@ HRESULT StorageImpl_LoadFileHeader( */ if (memcmp(headerBigBlock, STORAGE_oldmagic, sizeof(STORAGE_oldmagic))==0) { - StorageImpl_ReleaseBigBlock(This, headerBigBlock); return STG_E_OLDFORMAT; } if (memcmp(headerBigBlock, STORAGE_magic, sizeof(STORAGE_magic))!=0) { - StorageImpl_ReleaseBigBlock(This, headerBigBlock); return STG_E_INVALIDHEADER; } @@ -3039,11 +3162,6 @@ HRESULT StorageImpl_LoadFileHeader( } else hr = S_OK; - - /* - * Release the block. - */ - StorageImpl_ReleaseBigBlock(This, headerBigBlock); } return hr; @@ -3054,7 +3172,7 @@ HRESULT StorageImpl_LoadFileHeader( * * This method will save to the file the header, i.e. big block -1. */ -void StorageImpl_SaveFileHeader( +static void StorageImpl_SaveFileHeader( StorageImpl* This) { BYTE headerBigBlock[BIG_BLOCK_SIZE]; @@ -3160,20 +3278,20 @@ BOOL StorageImpl_ReadProperty( { BYTE currentProperty[PROPSET_BLOCK_SIZE]; ULARGE_INTEGER offsetInPropSet; - BOOL readSuccessful; + HRESULT readRes; ULONG bytesRead; offsetInPropSet.u.HighPart = 0; offsetInPropSet.u.LowPart = index * PROPSET_BLOCK_SIZE; - readSuccessful = BlockChainStream_ReadAt( + readRes = BlockChainStream_ReadAt( This->rootBlockChain, offsetInPropSet, PROPSET_BLOCK_SIZE, currentProperty, &bytesRead); - if (readSuccessful) + if (SUCCEEDED(readRes)) { /* replace the name of root entry (often "Root Entry") by the file name */ WCHAR *propName = (index == This->base.rootPropertySetIndex) ? @@ -3246,7 +3364,7 @@ BOOL StorageImpl_ReadProperty( buffer->size.u.HighPart = 0; } - return readSuccessful; + return SUCCEEDED(readRes) ? TRUE : FALSE; } /********************************************************************* @@ -3259,7 +3377,7 @@ BOOL StorageImpl_WriteProperty( { BYTE currentProperty[PROPSET_BLOCK_SIZE]; ULARGE_INTEGER offsetInPropSet; - BOOL writeSuccessful; + HRESULT writeRes; ULONG bytesWritten; offsetInPropSet.u.HighPart = 0; @@ -3329,75 +3447,79 @@ BOOL StorageImpl_WriteProperty( OFFSET_PS_SIZE, buffer->size.u.LowPart); - writeSuccessful = BlockChainStream_WriteAt(This->rootBlockChain, - offsetInPropSet, - PROPSET_BLOCK_SIZE, - currentProperty, - &bytesWritten); - return writeSuccessful; + writeRes = BlockChainStream_WriteAt(This->rootBlockChain, + offsetInPropSet, + PROPSET_BLOCK_SIZE, + currentProperty, + &bytesWritten); + return SUCCEEDED(writeRes) ? TRUE : FALSE; } -BOOL StorageImpl_ReadBigBlock( +static BOOL StorageImpl_ReadBigBlock( StorageImpl* This, ULONG blockIndex, void* buffer) { - void* bigBlockBuffer; + ULARGE_INTEGER ulOffset; + DWORD read; - bigBlockBuffer = StorageImpl_GetROBigBlock(This, blockIndex); + ulOffset.u.HighPart = 0; + ulOffset.u.LowPart = BLOCK_GetBigBlockOffset(blockIndex); - if (bigBlockBuffer!=0) - { - memcpy(buffer, bigBlockBuffer, This->bigBlockSize); - - StorageImpl_ReleaseBigBlock(This, bigBlockBuffer); - - return TRUE; - } - - return FALSE; + StorageImpl_ReadAt(This, ulOffset, buffer, This->bigBlockSize, &read); + return (read == This->bigBlockSize); } -BOOL StorageImpl_WriteBigBlock( +static BOOL StorageImpl_ReadDWordFromBigBlock( + StorageImpl* This, + ULONG blockIndex, + ULONG offset, + DWORD* value) +{ + ULARGE_INTEGER ulOffset; + DWORD read; + DWORD tmp; + + ulOffset.u.HighPart = 0; + ulOffset.u.LowPart = BLOCK_GetBigBlockOffset(blockIndex); + ulOffset.u.LowPart += offset; + + StorageImpl_ReadAt(This, ulOffset, &tmp, sizeof(DWORD), &read); + *value = le32toh(tmp); + return (read == sizeof(DWORD)); +} + +static BOOL StorageImpl_WriteBigBlock( StorageImpl* This, ULONG blockIndex, void* buffer) { - void* bigBlockBuffer; + ULARGE_INTEGER ulOffset; + DWORD wrote; - bigBlockBuffer = StorageImpl_GetBigBlock(This, blockIndex); + ulOffset.u.HighPart = 0; + ulOffset.u.LowPart = BLOCK_GetBigBlockOffset(blockIndex); - if (bigBlockBuffer!=0) - { - memcpy(bigBlockBuffer, buffer, This->bigBlockSize); - - StorageImpl_ReleaseBigBlock(This, bigBlockBuffer); - - return TRUE; - } - - return FALSE; + StorageImpl_WriteAt(This, ulOffset, buffer, This->bigBlockSize, &wrote); + return (wrote == This->bigBlockSize); } -void* StorageImpl_GetROBigBlock( +static BOOL StorageImpl_WriteDWordToBigBlock( StorageImpl* This, - ULONG blockIndex) + ULONG blockIndex, + ULONG offset, + DWORD value) { - return BIGBLOCKFILE_GetROBigBlock(This->bigBlockFile, blockIndex); -} + ULARGE_INTEGER ulOffset; + DWORD wrote; -void* StorageImpl_GetBigBlock( - StorageImpl* This, - ULONG blockIndex) -{ - return BIGBLOCKFILE_GetBigBlock(This->bigBlockFile, blockIndex); -} + ulOffset.u.HighPart = 0; + ulOffset.u.LowPart = BLOCK_GetBigBlockOffset(blockIndex); + ulOffset.u.LowPart += offset; -void StorageImpl_ReleaseBigBlock( - StorageImpl* This, - void* pBigBlock) -{ - BIGBLOCKFILE_ReleaseBigBlock(This->bigBlockFile, pBigBlock); + value = htole32(value); + StorageImpl_WriteAt(This, ulOffset, &value, sizeof(DWORD), &wrote); + return (wrote == sizeof(DWORD)); } /****************************************************************************** @@ -3412,10 +3534,11 @@ BlockChainStream* Storage32Impl_SmallBlocksToBigBlocks( { ULONG bbHeadOfChain = BLOCK_END_OF_CHAIN; ULARGE_INTEGER size, offset; - ULONG cbRead, cbWritten, cbTotalRead, cbTotalWritten; + ULONG cbRead, cbWritten; + ULARGE_INTEGER cbTotalRead; ULONG propertyIndex; - BOOL successWrite; - HRESULT successRead; + HRESULT resWrite = S_OK; + HRESULT resRead; StgProperty chainProperty; BYTE *buffer; BlockChainStream *bbTempChain = NULL; @@ -3442,32 +3565,43 @@ BlockChainStream* Storage32Impl_SmallBlocksToBigBlocks( */ offset.u.LowPart = 0; offset.u.HighPart = 0; - cbTotalRead = 0; - cbTotalWritten = 0; + cbTotalRead.QuadPart = 0; buffer = HeapAlloc(GetProcessHeap(),0,DEF_SMALL_BLOCK_SIZE); do { - successRead = SmallBlockChainStream_ReadAt(*ppsbChain, - offset, - DEF_SMALL_BLOCK_SIZE, - buffer, - &cbRead); - cbTotalRead += cbRead; + resRead = SmallBlockChainStream_ReadAt(*ppsbChain, + offset, + This->smallBlockSize, + buffer, + &cbRead); + if (FAILED(resRead)) + break; - successWrite = BlockChainStream_WriteAt(bbTempChain, + if (cbRead > 0) + { + cbTotalRead.QuadPart += cbRead; + + resWrite = BlockChainStream_WriteAt(bbTempChain, offset, cbRead, buffer, &cbWritten); - cbTotalWritten += cbWritten; - offset.u.LowPart += This->smallBlockSize; + if (FAILED(resWrite)) + break; - } while (SUCCEEDED(successRead) && successWrite); + offset.u.LowPart += This->smallBlockSize; + } + } while (cbTotalRead.QuadPart < size.QuadPart); HeapFree(GetProcessHeap(),0,buffer); - assert(cbTotalRead == cbTotalWritten); + if (FAILED(resRead) || FAILED(resWrite)) + { + ERR("conversion failed: resRead = 0x%08x, resWrite = 0x%08x\n", resRead, resWrite); + BlockChainStream_Destroy(bbTempChain); + return NULL; + } /* * Destroy the small block chain. @@ -3501,7 +3635,7 @@ BlockChainStream* Storage32Impl_SmallBlocksToBigBlocks( return bigBlockChain; } -void StorageInternalImpl_Destroy( StorageBaseImpl *iface) +static void StorageInternalImpl_Destroy( StorageBaseImpl *iface) { StorageInternalImpl* This = (StorageInternalImpl*) iface; @@ -3516,7 +3650,7 @@ void StorageInternalImpl_Destroy( StorageBaseImpl *iface) ** The non-root storages cannot be opened in transacted mode thus this function ** does nothing. */ -HRESULT WINAPI StorageInternalImpl_Commit( +static HRESULT WINAPI StorageInternalImpl_Commit( IStorage* iface, DWORD grfCommitFlags) /* [in] */ { @@ -3530,20 +3664,20 @@ HRESULT WINAPI StorageInternalImpl_Commit( ** The non-root storages cannot be opened in transacted mode thus this function ** does nothing. */ -HRESULT WINAPI StorageInternalImpl_Revert( +static HRESULT WINAPI StorageInternalImpl_Revert( IStorage* iface) { return S_OK; } -void IEnumSTATSTGImpl_Destroy(IEnumSTATSTGImpl* This) +static void IEnumSTATSTGImpl_Destroy(IEnumSTATSTGImpl* This) { IStorage_Release((IStorage*)This->parentStorage); HeapFree(GetProcessHeap(), 0, This->stackToVisit); HeapFree(GetProcessHeap(), 0, This); } -HRESULT WINAPI IEnumSTATSTGImpl_QueryInterface( +static HRESULT WINAPI IEnumSTATSTGImpl_QueryInterface( IEnumSTATSTG* iface, REFIID riid, void** ppvObject) @@ -3565,7 +3699,7 @@ HRESULT WINAPI IEnumSTATSTGImpl_QueryInterface( * Compare the riid with the interface IDs implemented by this object. */ if (IsEqualGUID(&IID_IUnknown, riid) || - IsEqualGUID(&IID_IStorage, riid)) + IsEqualGUID(&IID_IEnumSTATSTG, riid)) { *ppvObject = (IEnumSTATSTG*)This; IEnumSTATSTG_AddRef((IEnumSTATSTG*)This); @@ -3575,14 +3709,14 @@ HRESULT WINAPI IEnumSTATSTGImpl_QueryInterface( return E_NOINTERFACE; } -ULONG WINAPI IEnumSTATSTGImpl_AddRef( +static ULONG WINAPI IEnumSTATSTGImpl_AddRef( IEnumSTATSTG* iface) { IEnumSTATSTGImpl* const This=(IEnumSTATSTGImpl*)iface; return InterlockedIncrement(&This->ref); } -ULONG WINAPI IEnumSTATSTGImpl_Release( +static ULONG WINAPI IEnumSTATSTGImpl_Release( IEnumSTATSTG* iface) { IEnumSTATSTGImpl* const This=(IEnumSTATSTGImpl*)iface; @@ -3602,7 +3736,7 @@ ULONG WINAPI IEnumSTATSTGImpl_Release( return newRef; } -HRESULT WINAPI IEnumSTATSTGImpl_Next( +static HRESULT WINAPI IEnumSTATSTGImpl_Next( IEnumSTATSTG* iface, ULONG celt, STATSTG* rgelt, @@ -3685,7 +3819,7 @@ HRESULT WINAPI IEnumSTATSTGImpl_Next( } -HRESULT WINAPI IEnumSTATSTGImpl_Skip( +static HRESULT WINAPI IEnumSTATSTGImpl_Skip( IEnumSTATSTG* iface, ULONG celt) { @@ -3737,7 +3871,7 @@ HRESULT WINAPI IEnumSTATSTGImpl_Skip( return S_FALSE; } -HRESULT WINAPI IEnumSTATSTGImpl_Reset( +static HRESULT WINAPI IEnumSTATSTGImpl_Reset( IEnumSTATSTG* iface) { IEnumSTATSTGImpl* const This=(IEnumSTATSTGImpl*)iface; @@ -3771,7 +3905,7 @@ HRESULT WINAPI IEnumSTATSTGImpl_Reset( return S_OK; } -HRESULT WINAPI IEnumSTATSTGImpl_Clone( +static HRESULT WINAPI IEnumSTATSTGImpl_Clone( IEnumSTATSTG* iface, IEnumSTATSTG** ppenum) { @@ -3814,7 +3948,7 @@ HRESULT WINAPI IEnumSTATSTGImpl_Clone( return S_OK; } -INT IEnumSTATSTGImpl_FindParentProperty( +static INT IEnumSTATSTGImpl_FindParentProperty( IEnumSTATSTGImpl *This, ULONG childProperty, StgProperty *currentProperty, @@ -3879,7 +4013,7 @@ INT IEnumSTATSTGImpl_FindParentProperty( return PROPERTY_NULL; } -ULONG IEnumSTATSTGImpl_FindProperty( +static ULONG IEnumSTATSTGImpl_FindProperty( IEnumSTATSTGImpl* This, const OLECHAR* lpszPropName, StgProperty* currentProperty) @@ -3924,7 +4058,7 @@ ULONG IEnumSTATSTGImpl_FindProperty( return PROPERTY_NULL; } -void IEnumSTATSTGImpl_PushSearchNode( +static void IEnumSTATSTGImpl_PushSearchNode( IEnumSTATSTGImpl* This, ULONG nodeToPush) { @@ -3973,7 +4107,7 @@ void IEnumSTATSTGImpl_PushSearchNode( } } -ULONG IEnumSTATSTGImpl_PopSearchNode( +static ULONG IEnumSTATSTGImpl_PopSearchNode( IEnumSTATSTGImpl* This, BOOL remove) { @@ -4008,7 +4142,7 @@ static const IEnumSTATSTGVtbl IEnumSTATSTGImpl_Vtbl = ** IEnumSTATSTGImpl implementation */ -IEnumSTATSTGImpl* IEnumSTATSTGImpl_Construct( +static IEnumSTATSTGImpl* IEnumSTATSTGImpl_Construct( StorageImpl* parentStorage, ULONG firstPropertyNode) { @@ -4079,7 +4213,7 @@ static const IStorageVtbl Storage32InternalImpl_Vtbl = ** Storage32InternalImpl implementation */ -StorageInternalImpl* StorageInternalImpl_Construct( +static StorageInternalImpl* StorageInternalImpl_Construct( StorageImpl* ancestorStorage, DWORD openFlags, ULONG rootPropertyIndex) @@ -4095,12 +4229,18 @@ StorageInternalImpl* StorageInternalImpl_Construct( { memset(newStorage, 0, sizeof(StorageInternalImpl)); + /* + * Initialize the stream list + */ + + list_init(&newStorage->base.strmHead); + /* * Initialize the virtual function table. */ newStorage->base.lpVtbl = &Storage32InternalImpl_Vtbl; newStorage->base.v_destructor = &StorageInternalImpl_Destroy; - newStorage->base.openFlags = openFlags; + newStorage->base.openFlags = (openFlags & ~STGM_CREATE); /* * Keep the ancestor storage pointer and nail a reference to it. @@ -4300,7 +4440,7 @@ void BlockChainStream_Destroy(BlockChainStream* This) * This->headOfStreamPlaceHolder. * */ -ULONG BlockChainStream_GetHeadOfChain(BlockChainStream* This) +static ULONG BlockChainStream_GetHeadOfChain(BlockChainStream* This) { StgProperty chainProperty; BOOL readSuccessful; @@ -4331,7 +4471,7 @@ ULONG BlockChainStream_GetHeadOfChain(BlockChainStream* This) * This is not the size of the stream as the last block may not be full! * */ -ULONG BlockChainStream_GetCount(BlockChainStream* This) +static ULONG BlockChainStream_GetCount(BlockChainStream* This) { ULONG blockIndex; ULONG count = 0; @@ -4359,7 +4499,7 @@ ULONG BlockChainStream_GetCount(BlockChainStream* This) * bytesRead may be NULL. * Failure will be returned if the specified number of bytes has not been read. */ -BOOL BlockChainStream_ReadAt(BlockChainStream* This, +HRESULT BlockChainStream_ReadAt(BlockChainStream* This, ULARGE_INTEGER offset, ULONG size, void* buffer, @@ -4370,7 +4510,8 @@ BOOL BlockChainStream_ReadAt(BlockChainStream* This, ULONG bytesToReadInBuffer; ULONG blockIndex; BYTE* bufferWalker; - BYTE* bigBlockBuffer; + + TRACE("(%p)-> %i %p %i %p\n",This, offset.u.LowPart, buffer, size, bytesRead); /* * Find the first block in the stream that contains part of the buffer. @@ -4394,12 +4535,12 @@ BOOL BlockChainStream_ReadAt(BlockChainStream* This, while ( (blockNoInSequence > 0) && (blockIndex != BLOCK_END_OF_CHAIN)) { if(FAILED(StorageImpl_GetNextBlockInChain(This->parentStorage, blockIndex, &blockIndex))) - return FALSE; + return STG_E_DOCFILECORRUPT; blockNoInSequence--; } if ((blockNoInSequence > 0) && (blockIndex == BLOCK_END_OF_CHAIN)) - return FALSE; /* We failed to find the starting block */ + return STG_E_DOCFILECORRUPT; /* We failed to find the starting block */ This->lastBlockNoInSequenceIndex = blockIndex; @@ -4411,36 +4552,40 @@ BOOL BlockChainStream_ReadAt(BlockChainStream* This, while ( (size > 0) && (blockIndex != BLOCK_END_OF_CHAIN) ) { + ULARGE_INTEGER ulOffset; + DWORD bytesReadAt; /* * Calculate how many bytes we can copy from this big block. */ bytesToReadInBuffer = min(This->parentStorage->bigBlockSize - offsetInBlock, size); - /* - * Copy those bytes to the buffer - */ - bigBlockBuffer = - StorageImpl_GetROBigBlock(This->parentStorage, blockIndex); - - memcpy(bufferWalker, bigBlockBuffer + offsetInBlock, bytesToReadInBuffer); - - StorageImpl_ReleaseBigBlock(This->parentStorage, bigBlockBuffer); + TRACE("block %i\n",blockIndex); + ulOffset.u.HighPart = 0; + ulOffset.u.LowPart = BLOCK_GetBigBlockOffset(blockIndex) + + offsetInBlock; + StorageImpl_ReadAt(This->parentStorage, + ulOffset, + bufferWalker, + bytesToReadInBuffer, + &bytesReadAt); /* * Step to the next big block. */ - if(FAILED(StorageImpl_GetNextBlockInChain(This->parentStorage, blockIndex, &blockIndex))) - return FALSE; + if( size > bytesReadAt && FAILED(StorageImpl_GetNextBlockInChain(This->parentStorage, blockIndex, &blockIndex))) + return STG_E_DOCFILECORRUPT; - bufferWalker += bytesToReadInBuffer; - size -= bytesToReadInBuffer; - *bytesRead += bytesToReadInBuffer; + bufferWalker += bytesReadAt; + size -= bytesReadAt; + *bytesRead += bytesReadAt; offsetInBlock = 0; /* There is no offset on the next block */ + if (bytesToReadInBuffer != bytesReadAt) + break; } - return (size == 0); + return (size == 0) ? S_OK : STG_E_READFAULT; } /****************************************************************************** @@ -4450,7 +4595,7 @@ BOOL BlockChainStream_ReadAt(BlockChainStream* This, * bytesWritten may be NULL. * Will fail if not all specified number of bytes have been written. */ -BOOL BlockChainStream_WriteAt(BlockChainStream* This, +HRESULT BlockChainStream_WriteAt(BlockChainStream* This, ULARGE_INTEGER offset, ULONG size, const void* buffer, @@ -4461,7 +4606,6 @@ BOOL BlockChainStream_WriteAt(BlockChainStream* This, ULONG bytesToWrite; ULONG blockIndex; const BYTE* bufferWalker; - BYTE* bigBlockBuffer; /* * Find the first block in the stream that contains part of the buffer. @@ -4486,12 +4630,20 @@ BOOL BlockChainStream_WriteAt(BlockChainStream* This, { if(FAILED(StorageImpl_GetNextBlockInChain(This->parentStorage, blockIndex, &blockIndex))) - return FALSE; + return STG_E_DOCFILECORRUPT; blockNoInSequence--; } This->lastBlockNoInSequenceIndex = blockIndex; + /* BlockChainStream_SetSize should have already been called to ensure we have + * enough blocks in the chain to write into */ + if (blockIndex == BLOCK_END_OF_CHAIN) + { + ERR("not enough blocks in chain to write data\n"); + return STG_E_DOCFILECORRUPT; + } + /* * Here, I'm casting away the constness on the buffer variable * This is OK since we don't intend to modify that buffer. @@ -4501,34 +4653,42 @@ BOOL BlockChainStream_WriteAt(BlockChainStream* This, while ( (size > 0) && (blockIndex != BLOCK_END_OF_CHAIN) ) { + ULARGE_INTEGER ulOffset; + DWORD bytesWrittenAt; /* * Calculate how many bytes we can copy from this big block. */ bytesToWrite = min(This->parentStorage->bigBlockSize - offsetInBlock, size); - /* - * Copy those bytes to the buffer - */ - bigBlockBuffer = StorageImpl_GetBigBlock(This->parentStorage, blockIndex); + TRACE("block %i\n",blockIndex); + ulOffset.u.HighPart = 0; + ulOffset.u.LowPart = BLOCK_GetBigBlockOffset(blockIndex) + + offsetInBlock; - memcpy(bigBlockBuffer + offsetInBlock, bufferWalker, bytesToWrite); - - StorageImpl_ReleaseBigBlock(This->parentStorage, bigBlockBuffer); + StorageImpl_WriteAt(This->parentStorage, + ulOffset, + (BYTE*)bufferWalker, + bytesToWrite, + &bytesWrittenAt); /* * Step to the next big block. */ - if(FAILED(StorageImpl_GetNextBlockInChain(This->parentStorage, blockIndex, + if(size > bytesWrittenAt && FAILED(StorageImpl_GetNextBlockInChain(This->parentStorage, blockIndex, &blockIndex))) - return FALSE; - bufferWalker += bytesToWrite; - size -= bytesToWrite; - *bytesWritten += bytesToWrite; + return STG_E_DOCFILECORRUPT; + + bufferWalker += bytesWrittenAt; + size -= bytesWrittenAt; + *bytesWritten += bytesWrittenAt; offsetInBlock = 0; /* There is no offset on the next block */ + + if (bytesWrittenAt != bytesToWrite) + break; } - return (size == 0); + return (size == 0) ? S_OK : STG_E_WRITEFAULT; } /****************************************************************************** @@ -4536,8 +4696,8 @@ BOOL BlockChainStream_WriteAt(BlockChainStream* This, * * Shrinks this chain in the big block depot. */ -BOOL BlockChainStream_Shrink(BlockChainStream* This, - ULARGE_INTEGER newSize) +static BOOL BlockChainStream_Shrink(BlockChainStream* This, + ULARGE_INTEGER newSize) { ULONG blockIndex, extraBlock; ULONG numBlocks; @@ -4604,8 +4764,8 @@ BOOL BlockChainStream_Shrink(BlockChainStream* This, * * Grows this chain in the big block depot. */ -BOOL BlockChainStream_Enlarge(BlockChainStream* This, - ULARGE_INTEGER newSize) +static BOOL BlockChainStream_Enlarge(BlockChainStream* This, + ULARGE_INTEGER newSize) { ULONG blockIndex, currentBlock; ULONG newNumBlocks; @@ -4735,21 +4895,6 @@ BOOL BlockChainStream_SetSize( } else { - ULARGE_INTEGER fileSize = - BIGBLOCKFILE_GetSize(This->parentStorage->bigBlockFile); - - ULONG diff = newSize.u.LowPart - size.u.LowPart; - - /* - * Make sure the file stays a multiple of blocksize - */ - if ((diff % This->parentStorage->bigBlockSize) != 0) - diff += (This->parentStorage->bigBlockSize - - (diff % This->parentStorage->bigBlockSize) ); - - fileSize.u.LowPart += diff; - BIGBLOCKFILE_SetSize(This->parentStorage->bigBlockFile, fileSize); - BlockChainStream_Enlarge(This, newSize); } @@ -4762,7 +4907,7 @@ BOOL BlockChainStream_SetSize( * Returns the size of this chain. * Will return the block count if this chain doesn't have a property. */ -ULARGE_INTEGER BlockChainStream_GetSize(BlockChainStream* This) +static ULARGE_INTEGER BlockChainStream_GetSize(BlockChainStream* This) { StgProperty chainProperty; @@ -4826,7 +4971,7 @@ void SmallBlockChainStream_Destroy( * * Returns the head of this chain of small blocks. */ -ULONG SmallBlockChainStream_GetHeadOfChain( +static ULONG SmallBlockChainStream_GetHeadOfChain( SmallBlockChainStream* This) { StgProperty chainProperty; @@ -4858,7 +5003,7 @@ ULONG SmallBlockChainStream_GetHeadOfChain( * - BLOCK_END_OF_CHAIN: end of this chain * - BLOCK_UNUSED: small block 'blockIndex' is free */ -HRESULT SmallBlockChainStream_GetNextBlockInChain( +static HRESULT SmallBlockChainStream_GetNextBlockInChain( SmallBlockChainStream* This, ULONG blockIndex, ULONG* nextBlockInChain) @@ -4866,7 +5011,7 @@ HRESULT SmallBlockChainStream_GetNextBlockInChain( ULARGE_INTEGER offsetOfBlockInDepot; DWORD buffer; ULONG bytesRead; - BOOL success; + HRESULT res; *nextBlockInChain = BLOCK_END_OF_CHAIN; @@ -4876,20 +5021,20 @@ HRESULT SmallBlockChainStream_GetNextBlockInChain( /* * Read those bytes in the buffer from the small block file. */ - success = BlockChainStream_ReadAt( + res = BlockChainStream_ReadAt( This->parentStorage->smallBlockDepotChain, offsetOfBlockInDepot, sizeof(DWORD), &buffer, &bytesRead); - if (success) + if (SUCCEEDED(res)) { StorageUtl_ReadDWord((BYTE *)&buffer, 0, nextBlockInChain); return S_OK; } - return STG_E_READFAULT; + return res; } /****************************************************************************** @@ -4900,7 +5045,7 @@ HRESULT SmallBlockChainStream_GetNextBlockInChain( * To set the end of chain use BLOCK_END_OF_CHAIN as nextBlock. * To flag a block as free use BLOCK_UNUSED as nextBlock. */ -void SmallBlockChainStream_SetNextBlockInChain( +static void SmallBlockChainStream_SetNextBlockInChain( SmallBlockChainStream* This, ULONG blockIndex, ULONG nextBlock) @@ -4930,7 +5075,7 @@ void SmallBlockChainStream_SetNextBlockInChain( * * Flag small block 'blockIndex' as free in the small block depot. */ -void SmallBlockChainStream_FreeBlock( +static void SmallBlockChainStream_FreeBlock( SmallBlockChainStream* This, ULONG blockIndex) { @@ -4944,7 +5089,7 @@ void SmallBlockChainStream_FreeBlock( * enlarged if necessary. The small block chain will also be enlarged if * necessary. */ -ULONG SmallBlockChainStream_GetNextFreeBlock( +static ULONG SmallBlockChainStream_GetNextFreeBlock( SmallBlockChainStream* This) { ULARGE_INTEGER offsetOfBlockInDepot; @@ -4952,7 +5097,7 @@ ULONG SmallBlockChainStream_GetNextFreeBlock( ULONG bytesRead; ULONG blockIndex = 0; ULONG nextBlockIndex = BLOCK_END_OF_CHAIN; - BOOL success = TRUE; + HRESULT res = S_OK; ULONG smallBlocksPerBigBlock; offsetOfBlockInDepot.u.HighPart = 0; @@ -4964,7 +5109,7 @@ ULONG SmallBlockChainStream_GetNextFreeBlock( { offsetOfBlockInDepot.u.LowPart = blockIndex * sizeof(ULONG); - success = BlockChainStream_ReadAt( + res = BlockChainStream_ReadAt( This->parentStorage->smallBlockDepotChain, offsetOfBlockInDepot, sizeof(DWORD), @@ -4974,7 +5119,7 @@ ULONG SmallBlockChainStream_GetNextFreeBlock( /* * If we run out of space for the small block depot, enlarge it */ - if (success) + if (SUCCEEDED(res)) { StorageUtl_ReadDWord((BYTE *)&buffer, 0, &nextBlockIndex); @@ -4988,7 +5133,7 @@ ULONG SmallBlockChainStream_GetNextFreeBlock( ULONG sbdIndex = This->parentStorage->smallBlockDepotStart; ULONG nextBlock, newsbdIndex; - BYTE* smallBlockDepot; + BYTE smallBlockDepot[BIG_BLOCK_SIZE]; nextBlock = sbdIndex; while (nextBlock != BLOCK_END_OF_CHAIN) @@ -5012,11 +5157,8 @@ ULONG SmallBlockChainStream_GetNextFreeBlock( /* * Initialize all the small blocks to free */ - smallBlockDepot = - StorageImpl_GetBigBlock(This->parentStorage, newsbdIndex); - memset(smallBlockDepot, BLOCK_UNUSED, This->parentStorage->bigBlockSize); - StorageImpl_ReleaseBigBlock(This->parentStorage, smallBlockDepot); + StorageImpl_WriteBigBlock(This->parentStorage, newsbdIndex, smallBlockDepot); if (count == 0) { @@ -5166,29 +5308,29 @@ HRESULT SmallBlockChainStream_ReadAt( * The small block has already been identified so it shouldn't fail * unless the file is corrupt. */ - if (!BlockChainStream_ReadAt(This->parentStorage->smallBlockRootChain, + rc = BlockChainStream_ReadAt(This->parentStorage->smallBlockRootChain, offsetInBigBlockFile, bytesToReadInBuffer, bufferWalker, - &bytesReadFromBigBlockFile)) - return STG_E_DOCFILECORRUPT; + &bytesReadFromBigBlockFile); - assert(bytesReadFromBigBlockFile == bytesToReadInBuffer); + if (FAILED(rc)) + return rc; /* * Step to the next big block. */ rc = SmallBlockChainStream_GetNextBlockInChain(This, blockIndex, &blockIndex); if(FAILED(rc)) - return rc; + return STG_E_DOCFILECORRUPT; - bufferWalker += bytesToReadInBuffer; - size -= bytesToReadInBuffer; - *bytesRead += bytesToReadInBuffer; - offsetInBlock = 0; /* There is no offset on the next block */ + bufferWalker += bytesReadFromBigBlockFile; + size -= bytesReadFromBigBlockFile; + *bytesRead += bytesReadFromBigBlockFile; + offsetInBlock = (offsetInBlock + bytesReadFromBigBlockFile) % This->parentStorage->smallBlockSize; } - return rc; + return (size == 0) ? S_OK : STG_E_READFAULT; } /****************************************************************************** @@ -5198,7 +5340,7 @@ HRESULT SmallBlockChainStream_ReadAt( * bytesWritten may be NULL. * Will fail if not all specified number of bytes have been written. */ -BOOL SmallBlockChainStream_WriteAt( +HRESULT SmallBlockChainStream_WriteAt( SmallBlockChainStream* This, ULARGE_INTEGER offset, ULONG size, @@ -5212,8 +5354,9 @@ BOOL SmallBlockChainStream_WriteAt( ULONG offsetInBlock = offset.u.LowPart % This->parentStorage->smallBlockSize; ULONG bytesToWriteInBuffer; ULONG blockIndex; - ULONG bytesWrittenFromBigBlockFile; + ULONG bytesWrittenToBigBlockFile; const BYTE* bufferWalker; + HRESULT res; /* * This should never happen on a small block file. @@ -5228,7 +5371,7 @@ BOOL SmallBlockChainStream_WriteAt( while ( (blockNoInSequence > 0) && (blockIndex != BLOCK_END_OF_CHAIN)) { if(FAILED(SmallBlockChainStream_GetNextBlockInChain(This, blockIndex, &blockIndex))) - return FALSE; + return STG_E_DOCFILECORRUPT; blockNoInSequence--; } @@ -5260,13 +5403,14 @@ BOOL SmallBlockChainStream_WriteAt( /* * Write those bytes in the buffer to the small block file. */ - BlockChainStream_WriteAt(This->parentStorage->smallBlockRootChain, + res = BlockChainStream_WriteAt( + This->parentStorage->smallBlockRootChain, offsetInBigBlockFile, bytesToWriteInBuffer, bufferWalker, - &bytesWrittenFromBigBlockFile); - - assert(bytesWrittenFromBigBlockFile == bytesToWriteInBuffer); + &bytesWrittenToBigBlockFile); + if (FAILED(res)) + return res; /* * Step to the next big block. @@ -5274,13 +5418,13 @@ BOOL SmallBlockChainStream_WriteAt( if(FAILED(SmallBlockChainStream_GetNextBlockInChain(This, blockIndex, &blockIndex))) return FALSE; - bufferWalker += bytesToWriteInBuffer; - size -= bytesToWriteInBuffer; - *bytesWritten += bytesToWriteInBuffer; - offsetInBlock = 0; /* There is no offset on the next block */ + bufferWalker += bytesWrittenToBigBlockFile; + size -= bytesWrittenToBigBlockFile; + *bytesWritten += bytesWrittenToBigBlockFile; + offsetInBlock = (offsetInBlock + bytesWrittenToBigBlockFile) % This->parentStorage->smallBlockSize; } - return (size == 0); + return (size == 0) ? S_OK : STG_E_WRITEFAULT; } /****************************************************************************** @@ -5288,7 +5432,7 @@ BOOL SmallBlockChainStream_WriteAt( * * Shrinks this chain in the small block depot. */ -BOOL SmallBlockChainStream_Shrink( +static BOOL SmallBlockChainStream_Shrink( SmallBlockChainStream* This, ULARGE_INTEGER newSize) { @@ -5371,7 +5515,7 @@ BOOL SmallBlockChainStream_Shrink( * * Grows this chain in the small block depot. */ -BOOL SmallBlockChainStream_Enlarge( +static BOOL SmallBlockChainStream_Enlarge( SmallBlockChainStream* This, ULARGE_INTEGER newSize) { @@ -5445,30 +5589,6 @@ BOOL SmallBlockChainStream_Enlarge( return TRUE; } -/****************************************************************************** - * SmallBlockChainStream_GetCount - * - * Returns the number of blocks that comprises this chain. - * This is not the size of this chain as the last block may not be full! - */ -ULONG SmallBlockChainStream_GetCount(SmallBlockChainStream* This) -{ - ULONG blockIndex; - ULONG count = 0; - - blockIndex = SmallBlockChainStream_GetHeadOfChain(This); - - while (blockIndex != BLOCK_END_OF_CHAIN) - { - count++; - - if(FAILED(SmallBlockChainStream_GetNextBlockInChain(This, blockIndex, &blockIndex))) - return 0; - } - - return count; -} - /****************************************************************************** * SmallBlockChainStream_SetSize * @@ -5505,7 +5625,7 @@ BOOL SmallBlockChainStream_SetSize( * * Returns the size of this chain. */ -ULARGE_INTEGER SmallBlockChainStream_GetSize(SmallBlockChainStream* This) +static ULARGE_INTEGER SmallBlockChainStream_GetSize(SmallBlockChainStream* This) { StgProperty chainProperty; @@ -5519,6 +5639,22 @@ ULARGE_INTEGER SmallBlockChainStream_GetSize(SmallBlockChainStream* This) /****************************************************************************** * StgCreateDocfile [OLE32.@] + * Creates a new compound file storage object + * + * PARAMS + * pwcsName [ I] Unicode string with filename (can be relative or NULL) + * grfMode [ I] Access mode for opening the new storage object (see STGM_ constants) + * reserved [ ?] unused?, usually 0 + * ppstgOpen [IO] A pointer to IStorage pointer to the new onject + * + * RETURNS + * S_OK if the file was successfully created + * some STG_E_ value if error + * NOTES + * if pwcsName is NULL, create file with new unique name + * the function can returns + * STG_S_CONVERTED if the specified file was successfully converted to storage format + * (unrealized now) */ HRESULT WINAPI StgCreateDocfile( LPCOLESTR pwcsName, @@ -5535,7 +5671,7 @@ HRESULT WINAPI StgCreateDocfile( DWORD fileAttributes; WCHAR tempFileName[MAX_PATH]; - TRACE("(%s, %lx, %ld, %p)\n", + TRACE("(%s, %x, %d, %p)\n", debugstr_w(pwcsName), grfMode, reserved, ppstgOpen); @@ -5553,7 +5689,7 @@ HRESULT WINAPI StgCreateDocfile( if ( FAILED( validateSTGM(grfMode) )) goto end; - /* StgCreateDocFile always opens for write */ + /* StgCreateDocFile seems to refuse readonly access, despite MSDN */ switch(STGM_ACCESS_MODE(grfMode)) { case STGM_WRITE: @@ -5563,20 +5699,19 @@ HRESULT WINAPI StgCreateDocfile( goto end; } - /* can't share write */ - switch(STGM_SHARE_MODE(grfMode)) - { - case STGM_SHARE_EXCLUSIVE: - case STGM_SHARE_DENY_WRITE: - break; - default: - goto end; - } + /* if no share mode given then DENY_NONE is the default */ + if (STGM_SHARE_MODE(grfMode) == 0) + grfMode |= STGM_SHARE_DENY_NONE; - /* shared reading requires transacted mode */ - if( STGM_SHARE_MODE(grfMode) == STGM_SHARE_DENY_WRITE && - !(grfMode&STGM_TRANSACTED) ) + /* must have at least one access mode */ + if (STGM_ACCESS_MODE(grfMode) == 0) goto end; + + /* in direct mode, can only use SHARE_EXCLUSIVE */ + if (!(grfMode & STGM_TRANSACTED) && (STGM_SHARE_MODE(grfMode) != STGM_SHARE_EXCLUSIVE)) + goto end; + + /* but in transacted mode, any share mode is valid */ /* * Generate a unique name. @@ -5586,9 +5721,6 @@ HRESULT WINAPI StgCreateDocfile( WCHAR tempPath[MAX_PATH]; static const WCHAR prefix[] = { 'S', 'T', 'O', 0 }; - if (STGM_SHARE_MODE(grfMode) != STGM_SHARE_EXCLUSIVE) - goto end; - memset(tempPath, 0, sizeof(tempPath)); memset(tempFileName, 0, sizeof(tempFileName)); @@ -5680,7 +5812,7 @@ HRESULT WINAPI StgCreateDocfile( (REFIID)&IID_IStorage, (void**)ppstgOpen); end: - TRACE("<-- %p r = %08lx\n", *ppstgOpen, hr); + TRACE("<-- %p r = %08x\n", *ppstgOpen, hr); return hr; } @@ -5690,7 +5822,7 @@ end: */ HRESULT WINAPI StgCreateStorageEx(const WCHAR* pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, STGOPTIONS* pStgOptions, void* reserved, REFIID riid, void** ppObjectOpen) { - TRACE("(%s, %lx, %lx, %lx, %p, %p, %p, %p)\n", debugstr_w(pwcsName), + TRACE("(%s, %x, %x, %x, %p, %p, %p, %p)\n", debugstr_w(pwcsName), grfMode, stgfmt, grfAttrs, pStgOptions, reserved, riid, ppObjectOpen); if (stgfmt != STGFMT_FILE && grfAttrs != 0) @@ -5699,7 +5831,7 @@ HRESULT WINAPI StgCreateStorageEx(const WCHAR* pwcsName, DWORD grfMode, DWORD st return STG_E_INVALIDPARAMETER; } - if (stgfmt != STGFMT_FILE && grfAttrs != 0 && grfAttrs != FILE_FLAG_NO_BUFFERING) + if (stgfmt == STGFMT_FILE && grfAttrs != 0 && grfAttrs != FILE_FLAG_NO_BUFFERING) { ERR("grfAttrs must be 0 or FILE_FLAG_NO_BUFFERING if stgfmt == STGFMT_FILE\n"); return STG_E_INVALIDPARAMETER; @@ -5729,7 +5861,7 @@ HRESULT WINAPI StgCreatePropSetStg(IStorage *pstg, DWORD reserved, { HRESULT hr; - TRACE("(%p, 0x%lx, %p): stub\n", pstg, reserved, ppPropSetStg); + TRACE("(%p, 0x%x, %p)\n", pstg, reserved, ppPropSetStg); if (reserved) hr = STG_E_INVALIDPARAMETER; else @@ -5743,7 +5875,7 @@ HRESULT WINAPI StgCreatePropSetStg(IStorage *pstg, DWORD reserved, */ HRESULT WINAPI StgOpenStorageEx(const WCHAR* pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, STGOPTIONS* pStgOptions, void* reserved, REFIID riid, void** ppObjectOpen) { - TRACE("(%s, %lx, %lx, %lx, %p, %p, %p, %p)\n", debugstr_w(pwcsName), + TRACE("(%s, %x, %x, %x, %p, %p, %p, %p)\n", debugstr_w(pwcsName), grfMode, stgfmt, grfAttrs, pStgOptions, reserved, riid, ppObjectOpen); if (stgfmt != STGFMT_DOCFILE && grfAttrs != 0) @@ -5752,28 +5884,33 @@ HRESULT WINAPI StgOpenStorageEx(const WCHAR* pwcsName, DWORD grfMode, DWORD stgf return STG_E_INVALIDPARAMETER; } - if (stgfmt != STGFMT_DOCFILE && grfAttrs != 0 && grfAttrs != FILE_FLAG_NO_BUFFERING) - { - ERR("grfAttrs must be 0 or FILE_FLAG_NO_BUFFERING if stgfmt == STGFMT_DOCFILE\n"); - return STG_E_INVALIDPARAMETER; - } - - if (stgfmt == STGFMT_FILE) + switch (stgfmt) { + case STGFMT_FILE: ERR("Cannot use STGFMT_FILE - this is NTFS only\n"); return STG_E_INVALIDPARAMETER; + + case STGFMT_STORAGE: + break; + + case STGFMT_DOCFILE: + if (grfAttrs && grfAttrs != FILE_FLAG_NO_BUFFERING) + { + ERR("grfAttrs must be 0 or FILE_FLAG_NO_BUFFERING if stgfmt == STGFMT_DOCFILE\n"); + return STG_E_INVALIDPARAMETER; + } + FIXME("Stub: calling StgOpenStorage, but ignoring pStgOptions and grfAttrs\n"); + break; + + case STGFMT_ANY: + WARN("STGFMT_ANY assuming storage\n"); + break; + + default: + return STG_E_INVALIDPARAMETER; } - if (stgfmt == STGFMT_STORAGE || stgfmt == STGFMT_DOCFILE || stgfmt == STGFMT_ANY) - { - if (stgfmt == STGFMT_ANY) - WARN("STGFMT_ANY assuming storage\n"); - FIXME("Stub: calling StgOpenStorage, but ignoring pStgOptions and grfAttrs\n"); - return StgOpenStorage(pwcsName, NULL, grfMode, (SNB)NULL, 0, (IStorage **)ppObjectOpen); - } - - ERR("Invalid stgfmt argument\n"); - return STG_E_INVALIDPARAMETER; + return StgOpenStorage(pwcsName, NULL, grfMode, (SNB)NULL, 0, (IStorage **)ppObjectOpen); } @@ -5783,20 +5920,19 @@ HRESULT WINAPI StgOpenStorageEx(const WCHAR* pwcsName, DWORD grfMode, DWORD stgf HRESULT WINAPI StgOpenStorage( const OLECHAR *pwcsName, IStorage *pstgPriority, - DWORD grfMode, - SNB snbExclude, - DWORD reserved, - IStorage **ppstgOpen) + DWORD grfMode, + SNB snbExclude, + DWORD reserved, + IStorage **ppstgOpen) { - StorageImpl* newStorage = 0; + StorageImpl* newStorage = 0; HRESULT hr = S_OK; - HANDLE hFile = 0; + HANDLE hFile = 0; DWORD shareMode; DWORD accessMode; WCHAR fullname[MAX_PATH]; - DWORD length; - TRACE("(%s, %p, %lx, %p, %ld, %p)\n", + TRACE("(%s, %p, %x, %p, %d, %p)\n", debugstr_w(pwcsName), pstgPriority, grfMode, snbExclude, reserved, ppstgOpen); @@ -5821,10 +5957,29 @@ HRESULT WINAPI StgOpenStorage( goto end; } + if (grfMode & STGM_PRIORITY) + { + if (grfMode & (STGM_TRANSACTED|STGM_SIMPLE|STGM_NOSCRATCH|STGM_NOSNAPSHOT)) + return STG_E_INVALIDFLAG; + if (grfMode & STGM_DELETEONRELEASE) + return STG_E_INVALIDFUNCTION; + if(STGM_ACCESS_MODE(grfMode) != STGM_READ) + return STG_E_INVALIDFLAG; + grfMode &= ~0xf0; /* remove the existing sharing mode */ + grfMode |= STGM_SHARE_DENY_NONE; + + /* STGM_PRIORITY stops other IStorage objects on the same file from + * committing until the STGM_PRIORITY IStorage is closed. it also + * stops non-transacted mode StgOpenStorage calls with write access from + * succeeding. obviously, both of these cannot be achieved through just + * file share flags */ + FIXME("STGM_PRIORITY mode not implemented correctly\n"); + } + /* * Validate the sharing mode */ - if (!(grfMode & STGM_TRANSACTED)) + if (!(grfMode & (STGM_TRANSACTED|STGM_PRIORITY))) switch(STGM_SHARE_MODE(grfMode)) { case STGM_SHARE_EXCLUSIVE: @@ -5909,8 +6064,7 @@ HRESULT WINAPI StgOpenStorage( * Refuse to open the file if it's too small to be a structured storage file * FIXME: verify the file when reading instead of here */ - length = GetFileSize(hFile, NULL); - if (length < 0x100) + if (GetFileSize(hFile, NULL) < 0x100) { CloseHandle(hFile); hr = STG_E_FILEALREADYEXISTS; @@ -5928,15 +6082,15 @@ HRESULT WINAPI StgOpenStorage( goto end; } - /* if the file's length was zero, initialize the storage */ + /* Initialize the storage */ hr = StorageImpl_Construct( newStorage, hFile, - pwcsName, + pwcsName, NULL, grfMode, TRUE, - FALSE ); + FALSE ); if (FAILED(hr)) { @@ -5963,7 +6117,7 @@ HRESULT WINAPI StgOpenStorage( (void**)ppstgOpen); end: - TRACE("<-- %08lx, IStorage %p\n", hr, ppstgOpen ? *ppstgOpen : NULL); + TRACE("<-- %08x, IStorage %p\n", hr, ppstgOpen ? *ppstgOpen : NULL); return hr; } @@ -6282,7 +6436,7 @@ static HRESULT validateSTGM(DWORD stgm) if (stgm&~STGM_KNOWN_FLAGS) { - ERR("unknown flags %08lx\n", stgm); + ERR("unknown flags %08x\n", stgm); return E_FAIL; } @@ -6880,7 +7034,7 @@ static HRESULT STREAM_ReadString( IStream *stm, LPWSTR *string ) if( count != sizeof(len) ) return E_OUTOFMEMORY; - TRACE("%ld bytes\n",len); + TRACE("%d bytes\n",len); str = CoTaskMemAlloc( len ); if( !str ) @@ -7012,7 +7166,7 @@ HRESULT WINAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT* pcf, LPOLESTR* lp STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &stm ); if( FAILED ( r ) ) { - WARN("Failed to open stream r = %08lx\n", r); + WARN("Failed to open stream r = %08x\n", r); return r; } @@ -7519,6 +7673,8 @@ HRESULT WINAPI OleConvertOLESTREAMToIStorage ( HRESULT hRes=S_OK; OLECONVERT_OLESTREAM_DATA pOleStreamData[2]; + TRACE("%p %p %p\n", pOleStream, pstg, ptd); + memset(pOleStreamData, 0, sizeof(pOleStreamData)); if(ptd != NULL) @@ -7609,6 +7765,7 @@ HRESULT WINAPI OleConvertIStorageToOLESTREAM ( OLECONVERT_OLESTREAM_DATA pOleStreamData[2]; static const WCHAR wstrStreamName[] = {1, 'O', 'l', 'e', '1', '0', 'N', 'a', 't', 'i', 'v', 'e', 0}; + TRACE("%p %p\n", pstg, pOleStream); memset(pOleStreamData, 0, sizeof(pOleStreamData)); @@ -7666,6 +7823,14 @@ HRESULT WINAPI GetConvertStg(IStorage *stg) { /****************************************************************************** * StgIsStorageFile [OLE32.@] + * Verify if the file contains a storage object + * + * PARAMS + * fn [ I] Filename + * + * RETURNS + * S_OK if file has magic bytes as a storage object + * S_FALSE if file is not storage */ HRESULT WINAPI StgIsStorageFile(LPCOLESTR fn) @@ -7674,7 +7839,7 @@ StgIsStorageFile(LPCOLESTR fn) BYTE magic[8]; DWORD bytes_read; - TRACE("(\'%s\')\n", debugstr_w(fn)); + TRACE("%s\n", debugstr_w(fn)); hf = CreateFileW(fn, GENERIC_READ, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); @@ -7704,3 +7869,63 @@ StgIsStorageFile(LPCOLESTR fn) WARN(" -> Invalid header.\n"); return S_FALSE; } + +/*********************************************************************** + * WriteClassStm (OLE32.@) + * + * Writes a CLSID to a stream. + * + * PARAMS + * pStm [I] Stream to write to. + * rclsid [I] CLSID to write. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + */ +HRESULT WINAPI WriteClassStm(IStream *pStm,REFCLSID rclsid) +{ + TRACE("(%p,%p)\n",pStm,rclsid); + + if (!pStm || !rclsid) + return E_INVALIDARG; + + return IStream_Write(pStm,rclsid,sizeof(CLSID),NULL); +} + +/*********************************************************************** + * ReadClassStm (OLE32.@) + * + * Reads a CLSID from a stream. + * + * PARAMS + * pStm [I] Stream to read from. + * rclsid [O] CLSID to read. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + */ +HRESULT WINAPI ReadClassStm(IStream *pStm,CLSID *pclsid) +{ + ULONG nbByte; + HRESULT res; + + TRACE("(%p,%p)\n",pStm,pclsid); + + if (!pStm || !pclsid) + return E_INVALIDARG; + + /* clear the output args */ + memcpy(pclsid, &CLSID_NULL, sizeof(*pclsid)); + + res = IStream_Read(pStm,(void*)pclsid,sizeof(CLSID),&nbByte); + + if (FAILED(res)) + return res; + + if (nbByte != sizeof(CLSID)) + return STG_E_READFAULT; + else + return S_OK; +} diff --git a/reactos/dll/win32/ole32/storage32.h b/reactos/dll/win32/ole32/storage32.h index 0472524f3a1..ffad5503051 100644 --- a/reactos/dll/win32/ole32/storage32.h +++ b/reactos/dll/win32/ole32/storage32.h @@ -24,7 +24,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __STORAGE32_H__ #define __STORAGE32_H__ @@ -37,6 +37,7 @@ #include "objbase.h" #include "winreg.h" #include "winternl.h" +#include "wine/list.h" /* * Definitions for the file format offsets. @@ -110,19 +111,12 @@ static const ULONG PROPERTY_NULL = 0xFFFFFFFF; STGM_TRANSACTED | STGM_CONVERT | STGM_PRIORITY | STGM_NOSCRATCH | \ STGM_NOSNAPSHOT | STGM_DIRECT_SWMR | STGM_DELETEONRELEASE | STGM_SIMPLE) -/* - * These are signatures to detect the type of Document file. - */ -static const BYTE STORAGE_magic[8] ={0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1}; -static const BYTE STORAGE_oldmagic[8] ={0xd0,0xcf,0x11,0xe0,0x0e,0x11,0xfc,0x0d}; - /* * Forward declarations of all the structures used by the storage * module. */ typedef struct StorageBaseImpl StorageBaseImpl; typedef struct StorageImpl StorageImpl; -typedef struct StorageInternalImpl StorageInternalImpl; typedef struct BlockChainStream BlockChainStream; typedef struct SmallBlockChainStream SmallBlockChainStream; typedef struct IEnumSTATSTGImpl IEnumSTATSTGImpl; @@ -190,11 +184,12 @@ BigBlockFile* BIGBLOCKFILE_Construct(HANDLE hFile, ULONG blocksize, BOOL fileBased); void BIGBLOCKFILE_Destructor(LPBIGBLOCKFILE This); -void* BIGBLOCKFILE_GetBigBlock(LPBIGBLOCKFILE This, ULONG index); -void* BIGBLOCKFILE_GetROBigBlock(LPBIGBLOCKFILE This, ULONG index); -void BIGBLOCKFILE_ReleaseBigBlock(LPBIGBLOCKFILE This, void *pBlock); +void BIGBLOCKFILE_EnsureExists(LPBIGBLOCKFILE This, ULONG index); void BIGBLOCKFILE_SetSize(LPBIGBLOCKFILE This, ULARGE_INTEGER newSize); -ULARGE_INTEGER BIGBLOCKFILE_GetSize(LPBIGBLOCKFILE This); +HRESULT BIGBLOCKFILE_ReadAt(LPBIGBLOCKFILE This, ULARGE_INTEGER offset, + void* buffer, ULONG size, ULONG* bytesRead); +HRESULT BIGBLOCKFILE_WriteAt(LPBIGBLOCKFILE This, ULARGE_INTEGER offset, + void* buffer, const ULONG size, ULONG* bytesRead); /************************************************************************* * Ole Convert support @@ -219,6 +214,12 @@ struct StorageBaseImpl const IPropertySetStorageVtbl *pssVtbl; /* interface for adding a properties stream */ + /* + * Stream tracking list + */ + + struct list strmHead; + /* * Reference count of this object */ @@ -246,6 +247,12 @@ struct StorageBaseImpl DWORD openFlags; }; +/**************************************************************************** + * StorageBaseImpl stream list handlers + */ + +void StorageBaseImpl_AddStream(StorageBaseImpl * stg, StgStreamImpl * strm); +void StorageBaseImpl_RemoveStream(StorageBaseImpl * stg, StgStreamImpl * strm); /**************************************************************************** * Storage32Impl definitions. @@ -298,63 +305,6 @@ struct StorageImpl BigBlockFile* bigBlockFile; }; -void StorageImpl_Destroy( - StorageBaseImpl* This); - -HRESULT StorageImpl_Construct( - StorageImpl* This, - HANDLE hFile, - LPCOLESTR pwcsName, - ILockBytes* pLkbyt, - DWORD openFlags, - BOOL fileBased, - BOOL fileCreate); - -BOOL StorageImpl_ReadBigBlock( - StorageImpl* This, - ULONG blockIndex, - void* buffer); - -BOOL StorageImpl_WriteBigBlock( - StorageImpl* This, - ULONG blockIndex, - void* buffer); - -void* StorageImpl_GetROBigBlock( - StorageImpl* This, - ULONG blockIndex); - -void* StorageImpl_GetBigBlock( - StorageImpl* This, - ULONG blockIndex); - -void StorageImpl_ReleaseBigBlock( - StorageImpl* This, - void* pBigBlock); - -ULONG StorageImpl_GetNextFreeBigBlock( - StorageImpl* This); - -void StorageImpl_FreeBigBlock( - StorageImpl* This, - ULONG blockIndex); - -HRESULT StorageImpl_GetNextBlockInChain( - StorageImpl* This, - ULONG blockIndex, - ULONG* nextBlockIndex); - -void StorageImpl_SetNextBlockInChain( - StorageImpl* This, - ULONG blockIndex, - ULONG nextBlock); - -HRESULT StorageImpl_LoadFileHeader( - StorageImpl* This); - -void StorageImpl_SaveFileHeader( - StorageImpl* This); - BOOL StorageImpl_ReadProperty( StorageImpl* This, ULONG index, @@ -369,114 +319,10 @@ BlockChainStream* Storage32Impl_SmallBlocksToBigBlocks( StorageImpl* This, SmallBlockChainStream** ppsbChain); -ULONG Storage32Impl_GetNextExtendedBlock(StorageImpl* This, - ULONG blockIndex); - -void Storage32Impl_AddBlockDepot(StorageImpl* This, - ULONG blockIndex); - -ULONG Storage32Impl_AddExtBlockDepot(StorageImpl* This); - -ULONG Storage32Impl_GetExtDepotBlock(StorageImpl* This, - ULONG depotIndex); - -void Storage32Impl_SetExtDepotBlock(StorageImpl* This, - ULONG depotIndex, - ULONG blockIndex); -/**************************************************************************** - * Storage32InternalImpl definitions. - * - * Definition of the implementation structure for the IStorage32 interface. - * This one implements the IStorage32 interface for storage that are - * inside another storage. - */ -struct StorageInternalImpl -{ - struct StorageBaseImpl base; - - /* - * There is no specific data for this class. - */ -}; - -/* - * Method definitions for the Storage32InternalImpl class. - */ -StorageInternalImpl* StorageInternalImpl_Construct( - StorageImpl* ancestorStorage, - DWORD openFlags, - ULONG rootTropertyIndex); - -void StorageInternalImpl_Destroy( - StorageBaseImpl* This); - -HRESULT WINAPI StorageInternalImpl_Commit( - IStorage* iface, - DWORD grfCommitFlags); /* [in] */ - -HRESULT WINAPI StorageInternalImpl_Revert( - IStorage* iface); - - -/**************************************************************************** - * IEnumSTATSTGImpl definitions. - * - * Definition of the implementation structure for the IEnumSTATSTGImpl interface. - * This class allows iterating through the content of a storage and to find - * specific items inside it. - */ -struct IEnumSTATSTGImpl -{ - const IEnumSTATSTGVtbl *lpVtbl; /* Needs to be the first item in the struct - * since we want to cast this in an IEnumSTATSTG pointer */ - - LONG ref; /* Reference count */ - StorageImpl* parentStorage; /* Reference to the parent storage */ - ULONG firstPropertyNode; /* Index of the root of the storage to enumerate */ - - /* - * The current implementation of the IEnumSTATSTGImpl class uses a stack - * to walk the property sets to get the content of a storage. This stack - * is implemented by the following 3 data members - */ - ULONG stackSize; - ULONG stackMaxSize; - ULONG* stackToVisit; - -#define ENUMSTATSGT_SIZE_INCREMENT 10 -}; - -IEnumSTATSTGImpl* IEnumSTATSTGImpl_Construct( - StorageImpl* This, - ULONG firstPropertyNode); - -void IEnumSTATSTGImpl_Destroy( - IEnumSTATSTGImpl* This); - -void IEnumSTATSTGImpl_PushSearchNode( - IEnumSTATSTGImpl* This, - ULONG nodeToPush); - -ULONG IEnumSTATSTGImpl_PopSearchNode( - IEnumSTATSTGImpl* This, - BOOL remove); - -ULONG IEnumSTATSTGImpl_FindProperty( - IEnumSTATSTGImpl* This, - const OLECHAR* lpszPropName, - StgProperty* buffer); - -INT IEnumSTATSTGImpl_FindParentProperty( - IEnumSTATSTGImpl *This, - ULONG childProperty, - StgProperty *currentProperty, - ULONG *propertyId); - - /**************************************************************************** * StgStreamImpl definitions. * - * This class imlements the IStream32 inteface and represents a stream + * This class implements the IStream32 interface and represents a stream * located inside a storage object. */ struct StgStreamImpl @@ -484,6 +330,12 @@ struct StgStreamImpl const IStreamVtbl *lpVtbl; /* Needs to be the first item in the struct * since we want to cast this to an IStream pointer */ + /* + * We are an entry in the storage object's stream handler list + */ + + struct list StrmListEntry; + /* * Reference count */ @@ -598,17 +450,14 @@ BlockChainStream* BlockChainStream_Construct( void BlockChainStream_Destroy( BlockChainStream* This); -ULONG BlockChainStream_GetHeadOfChain( - BlockChainStream* This); - -BOOL BlockChainStream_ReadAt( +HRESULT BlockChainStream_ReadAt( BlockChainStream* This, ULARGE_INTEGER offset, ULONG size, void* buffer, ULONG* bytesRead); -BOOL BlockChainStream_WriteAt( +HRESULT BlockChainStream_WriteAt( BlockChainStream* This, ULARGE_INTEGER offset, ULONG size, @@ -619,12 +468,6 @@ BOOL BlockChainStream_SetSize( BlockChainStream* This, ULARGE_INTEGER newSize); -ULARGE_INTEGER BlockChainStream_GetSize( - BlockChainStream* This); - -ULONG BlockChainStream_GetCount( - BlockChainStream* This); - /**************************************************************************** * SmallBlockChainStream definitions. * @@ -647,26 +490,6 @@ SmallBlockChainStream* SmallBlockChainStream_Construct( void SmallBlockChainStream_Destroy( SmallBlockChainStream* This); -ULONG SmallBlockChainStream_GetHeadOfChain( - SmallBlockChainStream* This); - -HRESULT SmallBlockChainStream_GetNextBlockInChain( - SmallBlockChainStream* This, - ULONG blockIndex, - ULONG* nextBlockIndex); - -void SmallBlockChainStream_SetNextBlockInChain( - SmallBlockChainStream* This, - ULONG blockIndex, - ULONG nextBlock); - -void SmallBlockChainStream_FreeBlock( - SmallBlockChainStream* This, - ULONG blockIndex); - -ULONG SmallBlockChainStream_GetNextFreeBlock( - SmallBlockChainStream* This); - HRESULT SmallBlockChainStream_ReadAt( SmallBlockChainStream* This, ULARGE_INTEGER offset, @@ -674,7 +497,7 @@ HRESULT SmallBlockChainStream_ReadAt( void* buffer, ULONG* bytesRead); -BOOL SmallBlockChainStream_WriteAt( +HRESULT SmallBlockChainStream_WriteAt( SmallBlockChainStream* This, ULARGE_INTEGER offset, ULONG size, @@ -685,11 +508,5 @@ BOOL SmallBlockChainStream_SetSize( SmallBlockChainStream* This, ULARGE_INTEGER newSize); -ULARGE_INTEGER SmallBlockChainStream_GetSize( - SmallBlockChainStream* This); - -ULONG SmallBlockChainStream_GetCount( - SmallBlockChainStream* This); - #endif /* __STORAGE32_H__ */ diff --git a/reactos/dll/win32/ole32/stubmanager.c b/reactos/dll/win32/ole32/stubmanager.c index 413f4f3e426..76e07a21c3d 100644 --- a/reactos/dll/win32/ole32/stubmanager.c +++ b/reactos/dll/win32/ole32/stubmanager.c @@ -20,7 +20,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #define COBJMACROS @@ -35,9 +35,8 @@ #include "winbase.h" #include "winuser.h" #include "objbase.h" -#include "ole2.h" -#include "ole2ver.h" #include "rpc.h" + #include "wine/debug.h" #include "compobj_private.h" @@ -71,6 +70,23 @@ struct stub_manager *new_stub_manager(APARTMENT *apt, IUnknown *object) * and the caller will also hold a reference */ sm->refs = 2; + sm->oxid_info.dwPid = GetCurrentProcessId(); + sm->oxid_info.dwTid = GetCurrentThreadId(); + /* + * FIXME: this is a hack for marshalling IRemUnknown. In real + * DCOM, the IPID of the IRemUnknown interface is generated like + * any other and passed to the OXID resolver which then returns it + * when queried. We don't have an OXID resolver yet so instead we + * use a magic IPID reserved for IRemUnknown. + */ + sm->oxid_info.ipidRemUnknown.Data1 = 0xffffffff; + sm->oxid_info.ipidRemUnknown.Data2 = 0xffff; + sm->oxid_info.ipidRemUnknown.Data3 = 0xffff; + assert(sizeof(sm->oxid_info.ipidRemUnknown.Data4) == sizeof(apt->oxid)); + memcpy(&sm->oxid_info.ipidRemUnknown.Data4, &apt->oxid, sizeof(OXID)); + sm->oxid_info.dwAuthnHint = RPC_C_AUTHN_LEVEL_NONE; + sm->oxid_info.psa = NULL /* FIXME */; + /* yes, that's right, this starts at zero. that's zero EXTERNAL * refs, ie nobody has unmarshalled anything yet. we can't have * negative refs because the stub manager cannot be explicitly @@ -103,6 +119,7 @@ static void stub_manager_delete(struct stub_manager *m) stub_manager_delete_ifstub(m, ifstub); } + CoTaskMemFree(m->oxid_info.psa); IUnknown_Release(m->object); DEBUG_CLEAR_CRITSEC_NAME(&m->lock); @@ -205,7 +222,7 @@ ULONG stub_manager_int_addref(struct stub_manager *This) refs = ++This->refs; LeaveCriticalSection(&This->apt->cs); - TRACE("before %ld\n", refs - 1); + TRACE("before %d\n", refs - 1); return refs; } @@ -219,7 +236,7 @@ ULONG stub_manager_int_release(struct stub_manager *This) EnterCriticalSection(&apt->cs); refs = --This->refs; - TRACE("after %ld\n", refs); + TRACE("after %d\n", refs); /* remove from apartment so no other thread can access it... */ if (!refs) @@ -247,13 +264,13 @@ ULONG stub_manager_ext_addref(struct stub_manager *m, ULONG refs) LeaveCriticalSection(&m->lock); - TRACE("added %lu refs to %p (oid %s), rc is now %lu\n", refs, m, wine_dbgstr_longlong(m->oid), rc); + TRACE("added %u refs to %p (oid %s), rc is now %u\n", refs, m, wine_dbgstr_longlong(m->oid), rc); return rc; } /* remove some external references */ -ULONG stub_manager_ext_release(struct stub_manager *m, ULONG refs) +ULONG stub_manager_ext_release(struct stub_manager *m, ULONG refs, BOOL last_unlock_releases) { ULONG rc; @@ -265,9 +282,9 @@ ULONG stub_manager_ext_release(struct stub_manager *m, ULONG refs) LeaveCriticalSection(&m->lock); - TRACE("removed %lu refs from %p (oid %s), rc is now %lu\n", refs, m, wine_dbgstr_longlong(m->oid), rc); + TRACE("removed %u refs from %p (oid %s), rc is now %u\n", refs, m, wine_dbgstr_longlong(m->oid), rc); - if (rc == 0) + if (rc == 0 && last_unlock_releases) stub_manager_int_release(m); return rc; @@ -365,29 +382,41 @@ HRESULT ipid_to_stub_manager(const IPID *ipid, APARTMENT **stub_apt, struct stub return S_OK; } -/* gets the apartment and IRpcStubBuffer from an object. the caller must - * release the references to both objects */ -IRpcStubBuffer *ipid_to_apt_and_stubbuffer(const IPID *ipid, APARTMENT **stub_apt) +/* gets the apartment, stub and channel of an object. the caller must + * release the references to all objects (except iface) if the function + * returned success, otherwise no references are returned. */ +HRESULT ipid_get_dispatch_params(const IPID *ipid, APARTMENT **stub_apt, + IRpcStubBuffer **stub, IRpcChannelBuffer **chan, + IID *iid, IUnknown **iface) { - IRpcStubBuffer *ret = NULL; struct stub_manager *stubmgr; struct ifstub *ifstub; + APARTMENT *apt; HRESULT hr; - *stub_apt = NULL; - - hr = ipid_to_stub_manager(ipid, stub_apt, &stubmgr); - if (hr != S_OK) return NULL; + hr = ipid_to_stub_manager(ipid, &apt, &stubmgr); + if (hr != S_OK) return RPC_E_DISCONNECTED; ifstub = stub_manager_ipid_to_ifstub(stubmgr, ipid); if (ifstub) - ret = ifstub->stubbuffer; + { + *stub = ifstub->stubbuffer; + IRpcStubBuffer_AddRef(*stub); + *chan = ifstub->chan; + IRpcChannelBuffer_AddRef(*chan); + *stub_apt = apt; + *iid = ifstub->iid; + *iface = ifstub->iface; - if (ret) IRpcStubBuffer_AddRef(ret); - - stub_manager_int_release(stubmgr); - - return ret; + stub_manager_int_release(stubmgr); + return S_OK; + } + else + { + stub_manager_int_release(stubmgr); + apartment_release(apt); + return RPC_E_DISCONNECTED; + } } /* generates an ipid in the following format (similar to native version): @@ -417,6 +446,7 @@ static inline HRESULT generate_ipid(struct stub_manager *m, IPID *ipid) struct ifstub *stub_manager_new_ifstub(struct stub_manager *m, IRpcStubBuffer *sb, IUnknown *iptr, REFIID iid, MSHLFLAGS flags) { struct ifstub *stub; + HRESULT hr; TRACE("oid=%s, stubbuffer=%p, iptr=%p, iid=%s\n", wine_dbgstr_longlong(m->oid), sb, iptr, debugstr_guid(iid)); @@ -424,6 +454,13 @@ struct ifstub *stub_manager_new_ifstub(struct stub_manager *m, IRpcStubBuffer *s stub = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct ifstub)); if (!stub) return NULL; + hr = RPC_CreateServerChannel(&stub->chan); + if (hr != S_OK) + { + HeapFree(GetProcessHeap(), 0, stub); + return NULL; + } + stub->stubbuffer = sb; if (sb) IRpcStubBuffer_AddRef(sb); @@ -432,21 +469,10 @@ struct ifstub *stub_manager_new_ifstub(struct stub_manager *m, IRpcStubBuffer *s stub->flags = flags; stub->iid = *iid; - /* - * FIXME: this is a hack for marshalling IRemUnknown. In real - * DCOM, the IPID of the IRemUnknown interface is generated like - * any other and passed to the OXID resolver which then returns it - * when queried. We don't have an OXID resolver yet so instead we - * use a magic IPID reserved for IRemUnknown. - */ - if (IsEqualIID(iid, &IID_IRemUnknown)) - { - stub->ipid.Data1 = 0xffffffff; - stub->ipid.Data2 = 0xffff; - stub->ipid.Data3 = 0xffff; - assert(sizeof(stub->ipid.Data4) == sizeof(m->apt->oxid)); - memcpy(&stub->ipid.Data4, &m->apt->oxid, sizeof(OXID)); - } + /* FIXME: find a cleaner way of identifying that we are creating an ifstub + * for the remunknown interface */ + if (flags & MSHLFLAGSP_REMUNKNOWN) + stub->ipid = m->oxid_info.ipidRemUnknown; else generate_ipid(m, &stub->ipid); @@ -468,9 +494,10 @@ static void stub_manager_delete_ifstub(struct stub_manager *m, struct ifstub *if list_remove(&ifstub->entry); RPC_UnregisterInterface(&ifstub->iid); - + if (ifstub->stubbuffer) IUnknown_Release(ifstub->stubbuffer); IUnknown_Release(ifstub->iface); + IRpcChannelBuffer_Release(ifstub->chan); HeapFree(GetProcessHeap(), 0, ifstub); } @@ -516,10 +543,10 @@ void stub_manager_release_marshal_data(struct stub_manager *m, ULONG refs, const if (ifstub->flags & MSHLFLAGS_TABLEWEAK) refs = 0; - else + else if (ifstub->flags & MSHLFLAGS_TABLESTRONG) refs = 1; - stub_manager_ext_release(m, refs); + stub_manager_ext_release(m, refs, TRUE); } /* is an ifstub table marshaled? */ @@ -542,8 +569,6 @@ BOOL stub_manager_is_table_marshaled(struct stub_manager *m, const IPID *ipid) * interacts with stub managers. */ -const IID IID_IRemUnknown = { 0x00000131, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} }; - typedef struct rem_unknown { const IRemUnknownVtbl *lpVtbl; @@ -592,7 +617,7 @@ static ULONG WINAPI RemUnknown_AddRef(IRemUnknown *iface) refs = InterlockedIncrement(&This->refs); - TRACE("%p before: %ld\n", iface, refs-1); + TRACE("%p before: %d\n", iface, refs-1); return refs; } @@ -605,7 +630,7 @@ static ULONG WINAPI RemUnknown_Release(IRemUnknown *iface) if (!refs) HeapFree(GetProcessHeap(), 0, This); - TRACE("%p after: %ld\n", iface, refs); + TRACE("%p after: %d\n", iface, refs); return refs; } @@ -619,7 +644,7 @@ static HRESULT WINAPI RemUnknown_RemQueryInterface(IRemUnknown *iface, APARTMENT *apt; struct stub_manager *stubmgr; - TRACE("(%p)->(%s, %ld, %d, %p, %p)\n", iface, debugstr_guid(ripid), cRefs, cIids, iids, ppQIResults); + TRACE("(%p)->(%s, %d, %d, %p, %p)\n", iface, debugstr_guid(ripid), cRefs, cIids, iids, ppQIResults); hr = ipid_to_stub_manager(ripid, &apt, &stubmgr); if (hr != S_OK) return hr; @@ -701,7 +726,7 @@ static HRESULT WINAPI RemUnknown_RemRelease(IRemUnknown *iface, break; } - stub_manager_ext_release(stubmgr, InterfaceRefs[i].cPublicRefs); + stub_manager_ext_release(stubmgr, InterfaceRefs[i].cPublicRefs, TRUE); if (InterfaceRefs[i].cPrivateRefs) FIXME("Releasing %ld refs securely not implemented\n", InterfaceRefs[i].cPrivateRefs); @@ -723,7 +748,7 @@ static const IRemUnknownVtbl RemUnknown_Vtbl = }; /* starts the IRemUnknown listener for the current apartment */ -HRESULT start_apartment_remote_unknown() +HRESULT start_apartment_remote_unknown(void) { IRemUnknown *pRemUnknown; HRESULT hr = S_OK; @@ -738,7 +763,7 @@ HRESULT start_apartment_remote_unknown() { STDOBJREF stdobjref; /* dummy - not used */ /* register it with the stub manager */ - hr = marshal_object(apt, &stdobjref, &IID_IRemUnknown, (IUnknown *)pRemUnknown, MSHLFLAGS_NORMAL); + hr = marshal_object(apt, &stdobjref, &IID_IRemUnknown, (IUnknown *)pRemUnknown, MSHLFLAGS_NORMAL|MSHLFLAGSP_REMUNKNOWN); /* release our reference to the object as the stub manager will manage the life cycle for us */ IRemUnknown_Release(pRemUnknown); if (hr == S_OK) diff --git a/reactos/dll/win32/ole32/usrmarshal.c b/reactos/dll/win32/ole32/usrmarshal.c index 3bd46cb73e2..c1b55422bd3 100644 --- a/reactos/dll/win32/ole32/usrmarshal.c +++ b/reactos/dll/win32/ole32/usrmarshal.c @@ -15,9 +15,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#include #include #include @@ -34,6 +35,8 @@ #include "ole2.h" #include "oleauto.h" #include "rpcproxy.h" + +#include "wine/unicode.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(ole); @@ -43,27 +46,64 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); #define ALIGN_LENGTH(_Len, _Align) _Len = ALIGNED_LENGTH(_Len, _Align) #define ALIGN_POINTER(_Ptr, _Align) _Ptr = ALIGNED_POINTER(_Ptr, _Align) -static void dump_user_flags(unsigned long *pFlags) +#define USER_MARSHAL_PTR_PREFIX \ + ( (DWORD)'U' | ( (DWORD)'s' << 8 ) | \ + ( (DWORD)'e' << 16 ) | ( (DWORD)'r' << 24 ) ) + +static const char* debugstr_user_flags(ULONG *pFlags) { - if (HIWORD(*pFlags) == NDR_LOCAL_DATA_REPRESENTATION) - TRACE("MAKELONG(NDR_LOCAL_REPRESENTATION, "); - else - TRACE("MAKELONG(0x%04x, ", HIWORD(*pFlags)); + char buf[12]; + const char* loword; switch (LOWORD(*pFlags)) { - case MSHCTX_LOCAL: TRACE("MSHCTX_LOCAL)"); break; - case MSHCTX_NOSHAREDMEM: TRACE("MSHCTX_NOSHAREDMEM)"); break; - case MSHCTX_DIFFERENTMACHINE: TRACE("MSHCTX_DIFFERENTMACHINE)"); break; - case MSHCTX_INPROC: TRACE("MSHCTX_INPROC)"); break; - default: TRACE("%d)", LOWORD(*pFlags)); + case MSHCTX_LOCAL: + loword="MSHCTX_LOCAL"; + break; + case MSHCTX_NOSHAREDMEM: + loword="MSHCTX_NOSHAREDMEM"; + break; + case MSHCTX_DIFFERENTMACHINE: + loword="MSHCTX_DIFFERENTMACHINE"; + break; + case MSHCTX_INPROC: + loword="MSHCTX_INPROC"; + break; + default: + sprintf(buf, "%d", LOWORD(*pFlags)); + loword=buf; } + + if (HIWORD(*pFlags) == NDR_LOCAL_DATA_REPRESENTATION) + return wine_dbg_sprintf("MAKELONG(NDR_LOCAL_REPRESENTATION, %s)", loword); + else + return wine_dbg_sprintf("MAKELONG(0x%04x, %s)", HIWORD(*pFlags), loword); } -unsigned long __RPC_USER CLIPFORMAT_UserSize(unsigned long *pFlags, unsigned long StartingSize, CLIPFORMAT *pCF) +/****************************************************************************** + * CLIPFORMAT_UserSize [OLE32.@] + * + * Calculates the buffer size required to marshal a clip format. + * + * PARAMS + * pFlags [I] Flags. See notes. + * StartingSize [I] Starting size of the buffer. This value is added on to + * the buffer size required for the clip format. + * pCF [I] Clip format to size. + * + * RETURNS + * The buffer size required to marshal a clip format plus the starting size. + * + * NOTES + * Even though the function is documented to take a pointer to an unsigned + * long in pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an unsigned long. + * This function is only intended to be called by the RPC runtime. + */ +ULONG __RPC_USER CLIPFORMAT_UserSize(ULONG *pFlags, ULONG StartingSize, CLIPFORMAT *pCF) { - unsigned long size = StartingSize; + ULONG size = StartingSize; - TRACE("("); dump_user_flags(pFlags); TRACE(", %ld, %p\n", StartingSize, pCF); + TRACE("(%s, %d, %p\n", debugstr_user_flags(pFlags), StartingSize, pCF); size += sizeof(userCLIPFORMAT); @@ -85,11 +125,30 @@ unsigned long __RPC_USER CLIPFORMAT_UserSize(unsigned long *pFlags, unsigned lon return size; } -unsigned char * __RPC_USER CLIPFORMAT_UserMarshal(unsigned long *pFlags, unsigned char *pBuffer, CLIPFORMAT *pCF) +/****************************************************************************** + * CLIPFORMAT_UserMarshal [OLE32.@] + * + * Marshals a clip format into a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format into. + * pCF [I] Clip format to marshal. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an unsigned + * long in pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an unsigned long. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER CLIPFORMAT_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, CLIPFORMAT *pCF) { wireCLIPFORMAT wirecf = (wireCLIPFORMAT)pBuffer; - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, &0x%04x\n", pBuffer, *pCF); + TRACE("(%s, %p, &0x%04x\n", debugstr_user_flags(pFlags), pBuffer, *pCF); wirecf->u.dwValue = *pCF; pBuffer += sizeof(*wirecf); @@ -123,11 +182,30 @@ unsigned char * __RPC_USER CLIPFORMAT_UserMarshal(unsigned long *pFlags, unsigne return pBuffer; } -unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, CLIPFORMAT *pCF) +/****************************************************************************** + * CLIPFORMAT_UserUnmarshal [OLE32.@] + * + * Unmarshals a clip format from a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format from. + * pCF [O] Address that receive the unmarshaled clip format. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an unsigned + * long in pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an unsigned long. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, CLIPFORMAT *pCF) { wireCLIPFORMAT wirecf = (wireCLIPFORMAT)pBuffer; - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, %p\n", pBuffer, pCF); + TRACE("(%s, %p, %p\n", debugstr_user_flags(pFlags), pBuffer, pCF); pBuffer += sizeof(*wirecf); if (wirecf->fContext == WDT_INPROC_CALL) @@ -158,13 +236,31 @@ unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(unsigned long *pFlags, unsig return pBuffer; } -void __RPC_USER CLIPFORMAT_UserFree(unsigned long *pFlags, CLIPFORMAT *pCF) +/****************************************************************************** + * CLIPFORMAT_UserFree [OLE32.@] + * + * Frees an unmarshaled clip format. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pCF [I] Clip format to free. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an unsigned + * long in pFlags, it actually takes a pointer to a USER_MARSHAL_CB + * structure, of which the first parameter is an unsigned long. + * This function is only intended to be called by the RPC runtime. + */ +void __RPC_USER CLIPFORMAT_UserFree(ULONG *pFlags, CLIPFORMAT *pCF) { /* there is no inverse of the RegisterClipboardFormat function, * so nothing to do */ } -static unsigned long __RPC_USER handle_UserSize(unsigned long *pFlags, unsigned long StartingSize, HANDLE *handle) +static ULONG __RPC_USER handle_UserSize(ULONG *pFlags, ULONG StartingSize, HANDLE *handle) { if (LOWORD(*pFlags) == MSHCTX_DIFFERENTMACHINE) { @@ -175,7 +271,7 @@ static unsigned long __RPC_USER handle_UserSize(unsigned long *pFlags, unsigned return StartingSize + sizeof(RemotableHandle); } -static unsigned char * __RPC_USER handle_UserMarshal(unsigned long *pFlags, unsigned char *pBuffer, HANDLE *handle) +static unsigned char * __RPC_USER handle_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HANDLE *handle) { RemotableHandle *remhandle = (RemotableHandle *)pBuffer; if (LOWORD(*pFlags) == MSHCTX_DIFFERENTMACHINE) @@ -189,7 +285,7 @@ static unsigned char * __RPC_USER handle_UserMarshal(unsigned long *pFlags, unsi return pBuffer + sizeof(RemotableHandle); } -static unsigned char * __RPC_USER handle_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, HANDLE *handle) +static unsigned char * __RPC_USER handle_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HANDLE *handle) { RemotableHandle *remhandle = (RemotableHandle *)pBuffer; if (remhandle->fContext != WDT_INPROC_CALL) @@ -198,45 +294,65 @@ static unsigned char * __RPC_USER handle_UserUnmarshal(unsigned long *pFlags, un return pBuffer + sizeof(RemotableHandle); } -static void __RPC_USER handle_UserFree(unsigned long *pFlags, HANDLE *phMenu) +static void __RPC_USER handle_UserFree(ULONG *pFlags, HANDLE *phMenu) { /* nothing to do */ } #define IMPL_WIREM_HANDLE(type) \ - unsigned long __RPC_USER type##_UserSize(unsigned long *pFlags, unsigned long StartingSize, type *handle) \ + ULONG __RPC_USER type##_UserSize(ULONG *pFlags, ULONG StartingSize, type *handle) \ { \ - TRACE("("); dump_user_flags(pFlags); TRACE(", %ld, %p\n", StartingSize, handle); \ + TRACE("(%s, %d, %p\n", debugstr_user_flags(pFlags), StartingSize, handle); \ return handle_UserSize(pFlags, StartingSize, (HANDLE *)handle); \ } \ \ - unsigned char * __RPC_USER type##_UserMarshal(unsigned long *pFlags, unsigned char *pBuffer, type *handle) \ + unsigned char * __RPC_USER type##_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, type *handle) \ { \ - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, &%p\n", pBuffer, *handle); \ + TRACE("(%s, %p, &%p\n", debugstr_user_flags(pFlags), pBuffer, *handle); \ return handle_UserMarshal(pFlags, pBuffer, (HANDLE *)handle); \ } \ \ - unsigned char * __RPC_USER type##_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, type *handle) \ + unsigned char * __RPC_USER type##_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, type *handle) \ { \ - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, %p\n", pBuffer, handle); \ + TRACE("(%s, %p, %p\n", debugstr_user_flags(pFlags), pBuffer, handle); \ return handle_UserUnmarshal(pFlags, pBuffer, (HANDLE *)handle); \ } \ \ - void __RPC_USER type##_UserFree(unsigned long *pFlags, type *handle) \ + void __RPC_USER type##_UserFree(ULONG *pFlags, type *handle) \ { \ - TRACE("("); dump_user_flags(pFlags); TRACE(", &%p\n", *handle); \ - return handle_UserFree(pFlags, (HANDLE *)handle); \ + TRACE("(%s, &%p\n", debugstr_user_flags(pFlags), *handle); \ + handle_UserFree(pFlags, (HANDLE *)handle); \ } IMPL_WIREM_HANDLE(HACCEL) IMPL_WIREM_HANDLE(HMENU) IMPL_WIREM_HANDLE(HWND) -unsigned long __RPC_USER HGLOBAL_UserSize(unsigned long *pFlags, unsigned long StartingSize, HGLOBAL *phGlobal) +/****************************************************************************** + * HGLOBAL_UserSize [OLE32.@] + * + * Calculates the buffer size required to marshal an HGLOBAL. + * + * PARAMS + * pFlags [I] Flags. See notes. + * StartingSize [I] Starting size of the buffer. This value is added on to + * the buffer size required for the clip format. + * phGlobal [I] HGLOBAL to size. + * + * RETURNS + * The buffer size required to marshal an HGLOBAL plus the starting size. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +ULONG __RPC_USER HGLOBAL_UserSize(ULONG *pFlags, ULONG StartingSize, HGLOBAL *phGlobal) { - unsigned long size = StartingSize; + ULONG size = StartingSize; - TRACE("("); dump_user_flags(pFlags); TRACE(", %ld, %p\n", StartingSize, phGlobal); + TRACE("(%s, %d, %p\n", debugstr_user_flags(pFlags), StartingSize, phGlobal); ALIGN_LENGTH(size, 3); @@ -252,16 +368,35 @@ unsigned long __RPC_USER HGLOBAL_UserSize(unsigned long *pFlags, unsigned long S SIZE_T ret; size += 3 * sizeof(ULONG); ret = GlobalSize(*phGlobal); - size += (unsigned long)ret; + size += (ULONG)ret; } } return size; } -unsigned char * __RPC_USER HGLOBAL_UserMarshal(unsigned long *pFlags, unsigned char *pBuffer, HGLOBAL *phGlobal) +/****************************************************************************** + * HGLOBAL_UserMarshal [OLE32.@] + * + * Marshals an HGLOBAL into a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format into. + * phGlobal [I] HGLOBAL to marshal. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HGLOBAL_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HGLOBAL *phGlobal) { - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, &%p\n", pBuffer, *phGlobal); + TRACE("(%s, %p, &%p\n", debugstr_user_flags(pFlags), pBuffer, *phGlobal); ALIGN_POINTER(pBuffer, 3); @@ -302,11 +437,30 @@ unsigned char * __RPC_USER HGLOBAL_UserMarshal(unsigned long *pFlags, unsigned c return pBuffer; } -unsigned char * __RPC_USER HGLOBAL_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, HGLOBAL *phGlobal) +/****************************************************************************** + * HGLOBAL_UserUnmarshal [OLE32.@] + * + * Unmarshals an HGLOBAL from a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format from. + * phGlobal [O] Address that receive the unmarshaled HGLOBAL. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HGLOBAL_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HGLOBAL *phGlobal) { ULONG fContext; - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, &%p\n", pBuffer, *phGlobal); + TRACE("(%s, %p, &%p\n", debugstr_user_flags(pFlags), pBuffer, *phGlobal); ALIGN_POINTER(pBuffer, 3); @@ -367,89 +521,553 @@ unsigned char * __RPC_USER HGLOBAL_UserUnmarshal(unsigned long *pFlags, unsigned return pBuffer; } -void __RPC_USER HGLOBAL_UserFree(unsigned long *pFlags, HGLOBAL *phGlobal) +/****************************************************************************** + * HGLOBAL_UserFree [OLE32.@] + * + * Frees an unmarshaled HGLOBAL. + * + * PARAMS + * pFlags [I] Flags. See notes. + * phGlobal [I] HGLOBAL to free. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of + * which the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +void __RPC_USER HGLOBAL_UserFree(ULONG *pFlags, HGLOBAL *phGlobal) { - TRACE("("); dump_user_flags(pFlags); TRACE(", &%p\n", *phGlobal); + TRACE("(%s, &%p\n", debugstr_user_flags(pFlags), *phGlobal); if (LOWORD(*pFlags != MSHCTX_INPROC) && *phGlobal) GlobalFree(*phGlobal); } -unsigned long __RPC_USER HBITMAP_UserSize(unsigned long *pFlags, unsigned long StartingSize, HBITMAP *phBmp) +/****************************************************************************** + * HBITMAP_UserSize [OLE32.@] + * + * Calculates the buffer size required to marshal a bitmap. + * + * PARAMS + * pFlags [I] Flags. See notes. + * StartingSize [I] Starting size of the buffer. This value is added on to + * the buffer size required for the clip format. + * phBmp [I] Bitmap to size. + * + * RETURNS + * The buffer size required to marshal an bitmap plus the starting size. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +ULONG __RPC_USER HBITMAP_UserSize(ULONG *pFlags, ULONG StartingSize, HBITMAP *phBmp) { FIXME(":stub\n"); return StartingSize; } -unsigned char * __RPC_USER HBITMAP_UserMarshal(unsigned long *pFlags, unsigned char *pBuffer, HBITMAP *phBmp) +/****************************************************************************** +* HBITMAP_UserMarshal [OLE32.@] +* +* Marshals a bitmap into a buffer. +* +* PARAMS +* pFlags [I] Flags. See notes. +* pBuffer [I] Buffer to marshal the clip format into. +* phBmp [I] Bitmap to marshal. +* +* RETURNS +* The end of the marshaled data in the buffer. +* +* NOTES +* Even though the function is documented to take a pointer to a ULONG in +* pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which +* the first parameter is a ULONG. +* This function is only intended to be called by the RPC runtime. +*/ +unsigned char * __RPC_USER HBITMAP_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HBITMAP *phBmp) { FIXME(":stub\n"); return pBuffer; } -unsigned char * __RPC_USER HBITMAP_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, HBITMAP *phBmp) +/****************************************************************************** + * HBITMAP_UserUnmarshal [OLE32.@] + * + * Unmarshals a bitmap from a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format from. + * phBmp [O] Address that receive the unmarshaled bitmap. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HBITMAP_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HBITMAP *phBmp) { FIXME(":stub\n"); return pBuffer; } -void __RPC_USER HBITMAP_UserFree(unsigned long *pFlags, HBITMAP *phBmp) +/****************************************************************************** + * HBITMAP_UserFree [OLE32.@] + * + * Frees an unmarshaled bitmap. + * + * PARAMS + * pFlags [I] Flags. See notes. + * phBmp [I] Bitmap to free. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of + * which the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +void __RPC_USER HBITMAP_UserFree(ULONG *pFlags, HBITMAP *phBmp) { FIXME(":stub\n"); } -unsigned long __RPC_USER HDC_UserSize(unsigned long *pFlags, unsigned long StartingSize, HDC *phdc) +/****************************************************************************** + * HDC_UserSize [OLE32.@] + * + * Calculates the buffer size required to marshal an HDC. + * + * PARAMS + * pFlags [I] Flags. See notes. + * StartingSize [I] Starting size of the buffer. This value is added on to + * the buffer size required for the clip format. + * phGlobal [I] HDC to size. + * + * RETURNS + * The buffer size required to marshal an HDC plus the starting size. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +ULONG __RPC_USER HDC_UserSize(ULONG *pFlags, ULONG StartingSize, HDC *phdc) { FIXME(":stub\n"); return StartingSize; } -unsigned char * __RPC_USER HDC_UserMarshal(unsigned long *pFlags, unsigned char *pBuffer, HDC *phdc) +/****************************************************************************** + * HDC_UserMarshal [OLE32.@] + * + * Marshals an HDC into a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format into. + * phdc [I] HDC to marshal. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HDC_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HDC *phdc) { FIXME(":stub\n"); return pBuffer; } -unsigned char * __RPC_USER HDC_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, HDC *phdc) +/****************************************************************************** + * HDC_UserUnmarshal [OLE32.@] + * + * Unmarshals an HDC from a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format from. + * phdc [O] Address that receive the unmarshaled HDC. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HDC_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HDC *phdc) { FIXME(":stub\n"); return pBuffer; } -void __RPC_USER HDC_UserFree(unsigned long *pFlags, HDC *phdc) +/****************************************************************************** + * HDC_UserFree [OLE32.@] + * + * Frees an unmarshaled HDC. + * + * PARAMS + * pFlags [I] Flags. See notes. + * phdc [I] HDC to free. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of + * which the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +void __RPC_USER HDC_UserFree(ULONG *pFlags, HDC *phdc) { FIXME(":stub\n"); } -unsigned long __RPC_USER HPALETTE_UserSize(unsigned long *pFlags, unsigned long StartingSize, HPALETTE *phPal) +/****************************************************************************** + * HPALETTE_UserSize [OLE32.@] + * + * Calculates the buffer size required to marshal a palette. + * + * PARAMS + * pFlags [I] Flags. See notes. + * StartingSize [I] Starting size of the buffer. This value is added on to + * the buffer size required for the clip format. + * phPal [I] Palette to size. + * + * RETURNS + * The buffer size required to marshal a palette plus the starting size. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +ULONG __RPC_USER HPALETTE_UserSize(ULONG *pFlags, ULONG StartingSize, HPALETTE *phPal) { FIXME(":stub\n"); return StartingSize; } -unsigned char * __RPC_USER HPALETTE_UserMarshal(unsigned long *pFlags, unsigned char *pBuffer, HPALETTE *phPal) +/****************************************************************************** + * HPALETTE_UserMarshal [OLE32.@] + * + * Marshals a palette into a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format into. + * phPal [I] Palette to marshal. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HPALETTE_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HPALETTE *phPal) { FIXME(":stub\n"); return pBuffer; } -unsigned char * __RPC_USER HPALETTE_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, HPALETTE *phPal) +/****************************************************************************** + * HPALETTE_UserUnmarshal [OLE32.@] + * + * Unmarshals a palette from a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format from. + * phPal [O] Address that receive the unmarshaled palette. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HPALETTE_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HPALETTE *phPal) { FIXME(":stub\n"); return pBuffer; } -void __RPC_USER HPALETTE_UserFree(unsigned long *pFlags, HPALETTE *phPal) +/****************************************************************************** + * HPALETTE_UserFree [OLE32.@] + * + * Frees an unmarshaled palette. + * + * PARAMS + * pFlags [I] Flags. See notes. + * phPal [I] Palette to free. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of + * which the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +void __RPC_USER HPALETTE_UserFree(ULONG *pFlags, HPALETTE *phPal) { FIXME(":stub\n"); } -unsigned long __RPC_USER HENHMETAFILE_UserSize(unsigned long *pFlags, unsigned long StartingSize, HENHMETAFILE *phEmf) +/****************************************************************************** + * HMETAFILE_UserSize [OLE32.@] + * + * Calculates the buffer size required to marshal a metafile. + * + * PARAMS + * pFlags [I] Flags. See notes. + * StartingSize [I] Starting size of the buffer. This value is added on to + * the buffer size required for the clip format. + * phmf [I] Metafile to size. + * + * RETURNS + * The buffer size required to marshal a metafile plus the starting size. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +ULONG __RPC_USER HMETAFILE_UserSize(ULONG *pFlags, ULONG StartingSize, HMETAFILE *phmf) { - unsigned long size = StartingSize; + ULONG size = StartingSize; - TRACE("("); dump_user_flags(pFlags); TRACE(", %ld, %p\n", StartingSize, *phEmf); + TRACE("(%s, %d, &%p\n", debugstr_user_flags(pFlags), StartingSize, *phmf); + + ALIGN_LENGTH(size, 3); + + size += sizeof(ULONG); + if (LOWORD(*pFlags) == MSHCTX_INPROC) + size += sizeof(ULONG_PTR); + else + { + size += sizeof(ULONG); + + if (*phmf) + { + UINT mfsize; + + size += 2 * sizeof(ULONG); + mfsize = GetMetaFileBitsEx(*phmf, 0, NULL); + size += mfsize; + } + } + + return size; +} + +/****************************************************************************** + * HMETAFILE_UserMarshal [OLE32.@] + * + * Marshals a metafile into a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format into. + * phEmf [I] Metafile to marshal. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HMETAFILE_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HMETAFILE *phmf) +{ + TRACE("(%s, %p, &%p\n", debugstr_user_flags(pFlags), pBuffer, *phmf); + + ALIGN_POINTER(pBuffer, 3); + + if (LOWORD(*pFlags) == MSHCTX_INPROC) + { + if (sizeof(*phmf) == 8) + *(ULONG *)pBuffer = WDT_INPROC64_CALL; + else + *(ULONG *)pBuffer = WDT_INPROC_CALL; + pBuffer += sizeof(ULONG); + *(HMETAFILE *)pBuffer = *phmf; + pBuffer += sizeof(HMETAFILE); + } + else + { + *(ULONG *)pBuffer = WDT_REMOTE_CALL; + pBuffer += sizeof(ULONG); + *(ULONG *)pBuffer = (ULONG)(ULONG_PTR)*phmf; + pBuffer += sizeof(ULONG); + + if (*phmf) + { + UINT mfsize = GetMetaFileBitsEx(*phmf, 0, NULL); + + *(ULONG *)pBuffer = mfsize; + pBuffer += sizeof(ULONG); + *(ULONG *)pBuffer = mfsize; + pBuffer += sizeof(ULONG); + GetMetaFileBitsEx(*phmf, mfsize, pBuffer); + pBuffer += mfsize; + } + } + + return pBuffer; +} + +/****************************************************************************** + * HMETAFILE_UserUnmarshal [OLE32.@] + * + * Unmarshals a metafile from a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format from. + * phmf [O] Address that receive the unmarshaled metafile. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HMETAFILE_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HMETAFILE *phmf) +{ + ULONG fContext; + + TRACE("(%s, %p, %p\n", debugstr_user_flags(pFlags), pBuffer, phmf); + + ALIGN_POINTER(pBuffer, 3); + + fContext = *(ULONG *)pBuffer; + pBuffer += sizeof(ULONG); + + if (((fContext == WDT_INPROC_CALL) && (sizeof(*phmf) < 8)) || + ((fContext == WDT_INPROC64_CALL) && (sizeof(*phmf) == 8))) + { + *phmf = *(HMETAFILE *)pBuffer; + pBuffer += sizeof(*phmf); + } + else if (fContext == WDT_REMOTE_CALL) + { + ULONG handle; + + handle = *(ULONG *)pBuffer; + pBuffer += sizeof(ULONG); + + if (handle) + { + ULONG size; + size = *(ULONG *)pBuffer; + pBuffer += sizeof(ULONG); + if (size != *(ULONG *)pBuffer) + { + RaiseException(RPC_X_BAD_STUB_DATA, 0, 0, NULL); + return pBuffer; + } + pBuffer += sizeof(ULONG); + *phmf = SetMetaFileBitsEx(size, pBuffer); + pBuffer += size; + } + else + *phmf = NULL; + } + else + RaiseException(RPC_S_INVALID_TAG, 0, 0, NULL); + + return pBuffer; +} + +/****************************************************************************** + * HMETAFILE_UserFree [OLE32.@] + * + * Frees an unmarshaled metafile. + * + * PARAMS + * pFlags [I] Flags. See notes. + * phmf [I] Metafile to free. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of + * which the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +void __RPC_USER HMETAFILE_UserFree(ULONG *pFlags, HMETAFILE *phmf) +{ + TRACE("(%s, &%p\n", debugstr_user_flags(pFlags), *phmf); + + if (LOWORD(*pFlags) != MSHCTX_INPROC) + DeleteMetaFile(*phmf); +} + +/****************************************************************************** +* HENHMETAFILE_UserSize [OLE32.@] +* +* Calculates the buffer size required to marshal an enhanced metafile. +* +* PARAMS +* pFlags [I] Flags. See notes. +* StartingSize [I] Starting size of the buffer. This value is added on to +* the buffer size required for the clip format. +* phEmf [I] Enhanced metafile to size. +* +* RETURNS +* The buffer size required to marshal an enhanced metafile plus the starting size. +* +* NOTES +* Even though the function is documented to take a pointer to a ULONG in +* pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which +* the first parameter is a ULONG. +* This function is only intended to be called by the RPC runtime. +*/ +ULONG __RPC_USER HENHMETAFILE_UserSize(ULONG *pFlags, ULONG StartingSize, HENHMETAFILE *phEmf) +{ + ULONG size = StartingSize; + + TRACE("(%s, %d, %p\n", debugstr_user_flags(pFlags), StartingSize, *phEmf); size += sizeof(ULONG); if (LOWORD(*pFlags) == MSHCTX_INPROC) @@ -471,9 +1089,28 @@ unsigned long __RPC_USER HENHMETAFILE_UserSize(unsigned long *pFlags, unsigned l return size; } -unsigned char * __RPC_USER HENHMETAFILE_UserMarshal(unsigned long *pFlags, unsigned char *pBuffer, HENHMETAFILE *phEmf) +/****************************************************************************** + * HENHMETAFILE_UserMarshal [OLE32.@] + * + * Marshals an enhance metafile into a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format into. + * phEmf [I] Enhanced metafile to marshal. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HENHMETAFILE_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HENHMETAFILE *phEmf) { - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, &%p\n", pBuffer, *phEmf); + TRACE("(%s, %p, &%p\n", debugstr_user_flags(pFlags), pBuffer, *phEmf); if (LOWORD(*pFlags) == MSHCTX_INPROC) { @@ -508,11 +1145,30 @@ unsigned char * __RPC_USER HENHMETAFILE_UserMarshal(unsigned long *pFlags, unsig return pBuffer; } -unsigned char * __RPC_USER HENHMETAFILE_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, HENHMETAFILE *phEmf) +/****************************************************************************** + * HENHMETAFILE_UserUnmarshal [OLE32.@] + * + * Unmarshals an enhanced metafile from a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format from. + * phEmf [O] Address that receive the unmarshaled enhanced metafile. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HENHMETAFILE_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HENHMETAFILE *phEmf) { ULONG fContext; - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, %p\n", pBuffer, phEmf); + TRACE("(%s, %p, %p\n", debugstr_user_flags(pFlags), pBuffer, phEmf); fContext = *(ULONG *)pBuffer; pBuffer += sizeof(ULONG); @@ -553,19 +1209,253 @@ unsigned char * __RPC_USER HENHMETAFILE_UserUnmarshal(unsigned long *pFlags, uns return pBuffer; } -void __RPC_USER HENHMETAFILE_UserFree(unsigned long *pFlags, HENHMETAFILE *phEmf) +/****************************************************************************** + * HENHMETAFILE_UserFree [OLE32.@] + * + * Frees an unmarshaled enhanced metafile. + * + * PARAMS + * pFlags [I] Flags. See notes. + * phEmf [I] Enhanced metafile to free. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of + * which the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +void __RPC_USER HENHMETAFILE_UserFree(ULONG *pFlags, HENHMETAFILE *phEmf) { - TRACE("("); dump_user_flags(pFlags); TRACE(", &%p\n", *phEmf); + TRACE("(%s, &%p\n", debugstr_user_flags(pFlags), *phEmf); if (LOWORD(*pFlags) != MSHCTX_INPROC) DeleteEnhMetaFile(*phEmf); } -unsigned long __RPC_USER STGMEDIUM_UserSize(unsigned long *pFlags, unsigned long StartingSize, STGMEDIUM *pStgMedium) +/****************************************************************************** + * HMETAFILEPICT_UserSize [OLE32.@] + * + * Calculates the buffer size required to marshal an metafile pict. + * + * PARAMS + * pFlags [I] Flags. See notes. + * StartingSize [I] Starting size of the buffer. This value is added on to + * the buffer size required for the clip format. + * phMfp [I] Metafile pict to size. + * + * RETURNS + * The buffer size required to marshal a metafile pict plus the starting size. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +ULONG __RPC_USER HMETAFILEPICT_UserSize(ULONG *pFlags, ULONG StartingSize, HMETAFILEPICT *phMfp) { - unsigned long size = StartingSize; + ULONG size = StartingSize; - TRACE("("); dump_user_flags(pFlags); TRACE(", %ld, %p\n", StartingSize, pStgMedium); + TRACE("(%s, %d, &%p)\n", debugstr_user_flags(pFlags), StartingSize, *phMfp); + + size += sizeof(ULONG); + size += sizeof(HMETAFILEPICT); + + if ((LOWORD(*pFlags) != MSHCTX_INPROC) && *phMfp) + { + METAFILEPICT *mfpict = GlobalLock(*phMfp); + + /* FIXME: raise an exception if mfpict is NULL? */ + size += FIELD_OFFSET(remoteMETAFILEPICT, hMF); + size += sizeof(ULONG); + + size = HMETAFILE_UserSize(pFlags, size, &mfpict->hMF); + + GlobalUnlock(*phMfp); + } + + return size; +} + +/****************************************************************************** + * HMETAFILEPICT_UserMarshal [OLE32.@] + * + * Marshals a metafile pict into a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format into. + * phMfp [I] Metafile pict to marshal. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HMETAFILEPICT_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HMETAFILEPICT *phMfp) +{ + TRACE("(%s, %p, &%p)\n", debugstr_user_flags(pFlags), pBuffer, *phMfp); + + if (LOWORD(*pFlags) == MSHCTX_INPROC) + *(ULONG *)pBuffer = WDT_INPROC_CALL; + else + *(ULONG *)pBuffer = WDT_REMOTE_CALL; + pBuffer += sizeof(ULONG); + + *(HMETAFILEPICT *)pBuffer = *phMfp; + pBuffer += sizeof(HMETAFILEPICT); + + if ((LOWORD(*pFlags) != MSHCTX_INPROC) && *phMfp) + { + METAFILEPICT *mfpict = GlobalLock(*phMfp); + remoteMETAFILEPICT * remmfpict = (remoteMETAFILEPICT *)pBuffer; + + /* FIXME: raise an exception if mfpict is NULL? */ + remmfpict->mm = mfpict->mm; + remmfpict->xExt = mfpict->xExt; + remmfpict->yExt = mfpict->yExt; + pBuffer += FIELD_OFFSET(remoteMETAFILEPICT, hMF); + *(ULONG *)pBuffer = USER_MARSHAL_PTR_PREFIX; + pBuffer += sizeof(ULONG); + + pBuffer = HMETAFILE_UserMarshal(pFlags, pBuffer, &mfpict->hMF); + + GlobalUnlock(*phMfp); + } + + return pBuffer; +} + +/****************************************************************************** + * HMETAFILEPICT_UserUnmarshal [OLE32.@] + * + * Unmarshals an metafile pict from a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format from. + * phMfp [O] Address that receive the unmarshaled metafile pict. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER HMETAFILEPICT_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HMETAFILEPICT *phMfp) +{ + ULONG fContext; + + TRACE("(%s, %p, %p)\n", debugstr_user_flags(pFlags), pBuffer, phMfp); + + fContext = *(ULONG *)pBuffer; + pBuffer += sizeof(ULONG); + + if ((fContext == WDT_INPROC_CALL) || !*(HMETAFILEPICT *)pBuffer) + { + *phMfp = *(HMETAFILEPICT *)pBuffer; + pBuffer += sizeof(HMETAFILEPICT); + } + else + { + METAFILEPICT *mfpict; + const remoteMETAFILEPICT *remmfpict; + ULONG user_marshal_prefix; + + pBuffer += sizeof(HMETAFILEPICT); + remmfpict = (const remoteMETAFILEPICT *)pBuffer; + + *phMfp = GlobalAlloc(GMEM_MOVEABLE, sizeof(METAFILEPICT)); + if (!*phMfp) + RpcRaiseException(E_OUTOFMEMORY); + + mfpict = GlobalLock(*phMfp); + mfpict->mm = remmfpict->mm; + mfpict->xExt = remmfpict->xExt; + mfpict->yExt = remmfpict->yExt; + pBuffer += FIELD_OFFSET(remoteMETAFILEPICT, hMF); + user_marshal_prefix = *(ULONG *)pBuffer; + pBuffer += sizeof(ULONG); + + if (user_marshal_prefix != USER_MARSHAL_PTR_PREFIX) + RpcRaiseException(RPC_X_INVALID_TAG); + + pBuffer = HMETAFILE_UserUnmarshal(pFlags, pBuffer, &mfpict->hMF); + + GlobalUnlock(*phMfp); + } + + return pBuffer; +} + +/****************************************************************************** + * HMETAFILEPICT_UserFree [OLE32.@] + * + * Frees an unmarshaled metafile pict. + * + * PARAMS + * pFlags [I] Flags. See notes. + * phMfp [I] Metafile pict to free. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of + * which the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +void __RPC_USER HMETAFILEPICT_UserFree(ULONG *pFlags, HMETAFILEPICT *phMfp) +{ + TRACE("(%s, &%p)\n", debugstr_user_flags(pFlags), *phMfp); + + if ((LOWORD(*pFlags) == MSHCTX_INPROC) && *phMfp) + { + METAFILEPICT *mfpict; + + mfpict = GlobalLock(*phMfp); + /* FIXME: raise an exception if mfpict is NULL? */ + + GlobalUnlock(*phMfp); + } +} + +/****************************************************************************** +* STGMEDIUM_UserSize [OLE32.@] +* +* Calculates the buffer size required to marshal an STGMEDIUM. +* +* PARAMS +* pFlags [I] Flags. See notes. +* StartingSize [I] Starting size of the buffer. This value is added on to +* the buffer size required for the clip format. +* pStgMedium [I] STGMEDIUM to size. +* +* RETURNS +* The buffer size required to marshal an STGMEDIUM plus the starting size. +* +* NOTES +* Even though the function is documented to take a pointer to a ULONG in +* pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which +* the first parameter is a ULONG. +* This function is only intended to be called by the RPC runtime. +*/ +ULONG __RPC_USER STGMEDIUM_UserSize(ULONG *pFlags, ULONG StartingSize, STGMEDIUM *pStgMedium) +{ + ULONG size = StartingSize; + + TRACE("(%s, %d, %p\n", debugstr_user_flags(pFlags), StartingSize, pStgMedium); ALIGN_LENGTH(size, 3); @@ -580,26 +1470,48 @@ unsigned long __RPC_USER STGMEDIUM_UserSize(unsigned long *pFlags, unsigned long break; case TYMED_HGLOBAL: TRACE("TYMED_HGLOBAL\n"); - size = HGLOBAL_UserSize(pFlags, size, &pStgMedium->u.hGlobal); + if (pStgMedium->u.hGlobal) + size = HGLOBAL_UserSize(pFlags, size, &pStgMedium->u.hGlobal); break; case TYMED_FILE: - FIXME("TYMED_FILE\n"); + TRACE("TYMED_FILE\n"); + if (pStgMedium->u.lpszFileName) + { + TRACE("file name is %s\n", debugstr_w(pStgMedium->u.lpszFileName)); + size += 3 * sizeof(DWORD) + + (strlenW(pStgMedium->u.lpszFileName) + 1) * sizeof(WCHAR); + } break; case TYMED_ISTREAM: - FIXME("TYMED_ISTREAM\n"); + TRACE("TYMED_ISTREAM\n"); + if (pStgMedium->u.pstm) + { + FIXME("not implemented for IStream %p\n", pStgMedium->u.pstm); + } break; case TYMED_ISTORAGE: - FIXME("TYMED_ISTORAGE\n"); + TRACE("TYMED_ISTORAGE\n"); + if (pStgMedium->u.pstg) + { + FIXME("not implemented for IStorage %p\n", pStgMedium->u.pstg); + } break; case TYMED_GDI: - FIXME("TYMED_GDI\n"); + TRACE("TYMED_GDI\n"); + if (pStgMedium->u.hBitmap) + { + FIXME("not implemented for GDI object %p\n", pStgMedium->u.hBitmap); + } break; case TYMED_MFPICT: - FIXME("TYMED_MFPICT\n"); + TRACE("TYMED_MFPICT\n"); + if (pStgMedium->u.hMetaFilePict) + size = HMETAFILEPICT_UserSize(pFlags, size, &pStgMedium->u.hMetaFilePict); break; case TYMED_ENHMF: TRACE("TYMED_ENHMF\n"); - size = HENHMETAFILE_UserSize(pFlags, size, &pStgMedium->u.hEnhMetaFile); + if (pStgMedium->u.hEnhMetaFile) + size = HENHMETAFILE_UserSize(pFlags, size, &pStgMedium->u.hEnhMetaFile); break; default: RaiseException(DV_E_TYMED, 0, 0, NULL); @@ -611,9 +1523,28 @@ unsigned long __RPC_USER STGMEDIUM_UserSize(unsigned long *pFlags, unsigned long return size; } -unsigned char * __RPC_USER STGMEDIUM_UserMarshal(unsigned long *pFlags, unsigned char *pBuffer, STGMEDIUM *pStgMedium) +/****************************************************************************** + * STGMEDIUM_UserMarshal [OLE32.@] + * + * Marshals a STGMEDIUM into a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format into. + * pCF [I] STGMEDIUM to marshal. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER STGMEDIUM_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, STGMEDIUM *pStgMedium) { - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, %p\n", pBuffer, pStgMedium); + TRACE("(%s, %p, %p\n", debugstr_user_flags(pFlags), pBuffer, pStgMedium); ALIGN_POINTER(pBuffer, 3); @@ -634,26 +1565,59 @@ unsigned char * __RPC_USER STGMEDIUM_UserMarshal(unsigned long *pFlags, unsigned break; case TYMED_HGLOBAL: TRACE("TYMED_HGLOBAL\n"); - pBuffer = HGLOBAL_UserMarshal(pFlags, pBuffer, &pStgMedium->u.hGlobal); + if (pStgMedium->u.hGlobal) + pBuffer = HGLOBAL_UserMarshal(pFlags, pBuffer, &pStgMedium->u.hGlobal); break; case TYMED_FILE: - FIXME("TYMED_FILE\n"); + TRACE("TYMED_FILE\n"); + if (pStgMedium->u.lpszFileName) + { + DWORD len; + len = strlenW(pStgMedium->u.lpszFileName); + /* conformance */ + *(DWORD *)pBuffer = len + 1; + pBuffer += sizeof(DWORD); + /* offset */ + *(DWORD *)pBuffer = 0; + pBuffer += sizeof(DWORD); + /* variance */ + *(DWORD *)pBuffer = len + 1; + pBuffer += sizeof(DWORD); + + TRACE("file name is %s\n", debugstr_w(pStgMedium->u.lpszFileName)); + memcpy(pBuffer, pStgMedium->u.lpszFileName, (len + 1) * sizeof(WCHAR)); + } break; case TYMED_ISTREAM: - FIXME("TYMED_ISTREAM\n"); + TRACE("TYMED_ISTREAM\n"); + if (pStgMedium->u.pstm) + { + FIXME("not implemented for IStream %p\n", pStgMedium->u.pstm); + } break; case TYMED_ISTORAGE: - FIXME("TYMED_ISTORAGE\n"); + TRACE("TYMED_ISTORAGE\n"); + if (pStgMedium->u.pstg) + { + FIXME("not implemented for IStorage %p\n", pStgMedium->u.pstg); + } break; case TYMED_GDI: - FIXME("TYMED_GDI\n"); + TRACE("TYMED_GDI\n"); + if (pStgMedium->u.hBitmap) + { + FIXME("not implemented for GDI object %p\n", pStgMedium->u.hBitmap); + } break; case TYMED_MFPICT: - FIXME("TYMED_MFPICT\n"); + TRACE("TYMED_MFPICT\n"); + if (pStgMedium->u.hMetaFilePict) + pBuffer = HMETAFILEPICT_UserMarshal(pFlags, pBuffer, &pStgMedium->u.hMetaFilePict); break; case TYMED_ENHMF: TRACE("TYMED_ENHMF\n"); - pBuffer = HENHMETAFILE_UserMarshal(pFlags, pBuffer, &pStgMedium->u.hEnhMetaFile); + if (pStgMedium->u.hEnhMetaFile) + pBuffer = HENHMETAFILE_UserMarshal(pFlags, pBuffer, &pStgMedium->u.hEnhMetaFile); break; default: RaiseException(DV_E_TYMED, 0, 0, NULL); @@ -665,14 +1629,33 @@ unsigned char * __RPC_USER STGMEDIUM_UserMarshal(unsigned long *pFlags, unsigned return pBuffer; } -unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, STGMEDIUM *pStgMedium) +/****************************************************************************** + * STGMEDIUM_UserUnmarshal [OLE32.@] + * + * Unmarshals a STGMEDIUM from a buffer. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pBuffer [I] Buffer to marshal the clip format from. + * pStgMedium [O] Address that receive the unmarshaled STGMEDIUM. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to an ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of which + * the first parameter is an ULONG. + * This function is only intended to be called by the RPC runtime. + */ +unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, STGMEDIUM *pStgMedium) { - DWORD content; + DWORD content = 0; DWORD releaseunk; ALIGN_POINTER(pBuffer, 3); - TRACE("("); dump_user_flags(pFlags); TRACE(", %p, %p\n", pBuffer, pStgMedium); + TRACE("(%s, %p, %p\n", debugstr_user_flags(pFlags), pBuffer, pStgMedium); pStgMedium->tymed = *(DWORD *)pBuffer; pBuffer += sizeof(DWORD); @@ -691,26 +1674,88 @@ unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long *pFlags, unsign break; case TYMED_HGLOBAL: TRACE("TYMED_HGLOBAL\n"); - pBuffer = HGLOBAL_UserUnmarshal(pFlags, pBuffer, &pStgMedium->u.hGlobal); + if (content) + pBuffer = HGLOBAL_UserUnmarshal(pFlags, pBuffer, &pStgMedium->u.hGlobal); break; case TYMED_FILE: - FIXME("TYMED_FILE\n"); + TRACE("TYMED_FILE\n"); + if (content) + { + DWORD conformance; + DWORD variance; + conformance = *(DWORD *)pBuffer; + pBuffer += sizeof(DWORD); + if (*(DWORD *)pBuffer != 0) + { + ERR("invalid offset %d\n", *(DWORD *)pBuffer); + RpcRaiseException(RPC_S_INVALID_BOUND); + return NULL; + } + pBuffer += sizeof(DWORD); + variance = *(DWORD *)pBuffer; + pBuffer += sizeof(DWORD); + if (conformance != variance) + { + ERR("conformance (%d) and variance (%d) should be equal\n", + conformance, variance); + RpcRaiseException(RPC_S_INVALID_BOUND); + return NULL; + } + if (conformance > 0x7fffffff) + { + ERR("conformance 0x%x too large\n", conformance); + RpcRaiseException(RPC_S_INVALID_BOUND); + return NULL; + } + pStgMedium->u.lpszFileName = CoTaskMemAlloc(conformance * sizeof(WCHAR)); + if (!pStgMedium->u.lpszFileName) RpcRaiseException(ERROR_OUTOFMEMORY); + TRACE("unmarshalled file name is %s\n", debugstr_wn((const WCHAR *)pBuffer, variance)); + memcpy(pStgMedium->u.lpszFileName, pBuffer, variance * sizeof(WCHAR)); + pBuffer += variance * sizeof(WCHAR); + } + else + pStgMedium->u.lpszFileName = NULL; break; case TYMED_ISTREAM: - FIXME("TYMED_ISTREAM\n"); + TRACE("TYMED_ISTREAM\n"); + if (content) + { + FIXME("not implemented for IStream\n"); + } + else + pStgMedium->u.pstm = NULL; break; case TYMED_ISTORAGE: - FIXME("TYMED_ISTORAGE\n"); + TRACE("TYMED_ISTORAGE\n"); + if (content) + { + FIXME("not implemented for IStorage\n"); + } + else + pStgMedium->u.pstg = NULL; break; case TYMED_GDI: - FIXME("TYMED_GDI\n"); + TRACE("TYMED_GDI\n"); + if (content) + { + FIXME("not implemented for GDI object\n"); + } + else + pStgMedium->u.hBitmap = NULL; break; case TYMED_MFPICT: - FIXME("TYMED_MFPICT\n"); + TRACE("TYMED_MFPICT\n"); + if (content) + pBuffer = HMETAFILEPICT_UserUnmarshal(pFlags, pBuffer, &pStgMedium->u.hMetaFilePict); + else + pStgMedium->u.hMetaFilePict = NULL; break; case TYMED_ENHMF: TRACE("TYMED_ENHMF\n"); - pBuffer = HENHMETAFILE_UserUnmarshal(pFlags, pBuffer, &pStgMedium->u.hEnhMetaFile); + if (content) + pBuffer = HENHMETAFILE_UserUnmarshal(pFlags, pBuffer, &pStgMedium->u.hEnhMetaFile); + else + pStgMedium->u.hEnhMetaFile = NULL; break; default: RaiseException(DV_E_TYMED, 0, 0, NULL); @@ -723,78 +1768,96 @@ unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long *pFlags, unsign return pBuffer; } -void __RPC_USER STGMEDIUM_UserFree(unsigned long *pFlags, STGMEDIUM *pStgMedium) +/****************************************************************************** + * STGMEDIUM_UserFree [OLE32.@] + * + * Frees an unmarshaled STGMEDIUM. + * + * PARAMS + * pFlags [I] Flags. See notes. + * pStgmedium [I] STGMEDIUM to free. + * + * RETURNS + * The end of the marshaled data in the buffer. + * + * NOTES + * Even though the function is documented to take a pointer to a ULONG in + * pFlags, it actually takes a pointer to a USER_MARSHAL_CB structure, of + * which the first parameter is a ULONG. + * This function is only intended to be called by the RPC runtime. + */ +void __RPC_USER STGMEDIUM_UserFree(ULONG *pFlags, STGMEDIUM *pStgMedium) { - TRACE("("); dump_user_flags(pFlags); TRACE(", %p\n", pStgMedium); + TRACE("(%s, %p\n", debugstr_user_flags(pFlags), pStgMedium); ReleaseStgMedium(pStgMedium); } -unsigned long __RPC_USER ASYNC_STGMEDIUM_UserSize(unsigned long *pFlags, unsigned long StartingSize, ASYNC_STGMEDIUM *pStgMedium) +ULONG __RPC_USER ASYNC_STGMEDIUM_UserSize(ULONG *pFlags, ULONG StartingSize, ASYNC_STGMEDIUM *pStgMedium) { FIXME(":stub\n"); return StartingSize; } -unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserMarshal( unsigned long *pFlags, unsigned char *pBuffer, ASYNC_STGMEDIUM *pStgMedium) +unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserMarshal( ULONG *pFlags, unsigned char *pBuffer, ASYNC_STGMEDIUM *pStgMedium) { FIXME(":stub\n"); return pBuffer; } -unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, ASYNC_STGMEDIUM *pStgMedium) +unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, ASYNC_STGMEDIUM *pStgMedium) { FIXME(":stub\n"); return pBuffer; } -void __RPC_USER ASYNC_STGMEDIUM_UserFree(unsigned long *pFlags, ASYNC_STGMEDIUM *pStgMedium) +void __RPC_USER ASYNC_STGMEDIUM_UserFree(ULONG *pFlags, ASYNC_STGMEDIUM *pStgMedium) { FIXME(":stub\n"); } -unsigned long __RPC_USER FLAG_STGMEDIUM_UserSize(unsigned long *pFlags, unsigned long StartingSize, FLAG_STGMEDIUM *pStgMedium) +ULONG __RPC_USER FLAG_STGMEDIUM_UserSize(ULONG *pFlags, ULONG StartingSize, FLAG_STGMEDIUM *pStgMedium) { FIXME(":stub\n"); return StartingSize; } -unsigned char * __RPC_USER FLAG_STGMEDIUM_UserMarshal( unsigned long *pFlags, unsigned char *pBuffer, FLAG_STGMEDIUM *pStgMedium) +unsigned char * __RPC_USER FLAG_STGMEDIUM_UserMarshal( ULONG *pFlags, unsigned char *pBuffer, FLAG_STGMEDIUM *pStgMedium) { FIXME(":stub\n"); return pBuffer; } -unsigned char * __RPC_USER FLAG_STGMEDIUM_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, FLAG_STGMEDIUM *pStgMedium) +unsigned char * __RPC_USER FLAG_STGMEDIUM_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, FLAG_STGMEDIUM *pStgMedium) { FIXME(":stub\n"); return pBuffer; } -void __RPC_USER FLAG_STGMEDIUM_UserFree(unsigned long *pFlags, FLAG_STGMEDIUM *pStgMedium) +void __RPC_USER FLAG_STGMEDIUM_UserFree(ULONG *pFlags, FLAG_STGMEDIUM *pStgMedium) { FIXME(":stub\n"); } -unsigned long __RPC_USER SNB_UserSize(unsigned long *pFlags, unsigned long StartingSize, SNB *pSnb) +ULONG __RPC_USER SNB_UserSize(ULONG *pFlags, ULONG StartingSize, SNB *pSnb) { FIXME(":stub\n"); return StartingSize; } -unsigned char * __RPC_USER SNB_UserMarshal( unsigned long *pFlags, unsigned char *pBuffer, SNB *pSnb) +unsigned char * __RPC_USER SNB_UserMarshal( ULONG *pFlags, unsigned char *pBuffer, SNB *pSnb) { FIXME(":stub\n"); return pBuffer; } -unsigned char * __RPC_USER SNB_UserUnmarshal(unsigned long *pFlags, unsigned char *pBuffer, SNB *pSnb) +unsigned char * __RPC_USER SNB_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, SNB *pSnb) { FIXME(":stub\n"); return pBuffer; } -void __RPC_USER SNB_UserFree(unsigned long *pFlags, SNB *pSnb) +void __RPC_USER SNB_UserFree(ULONG *pFlags, SNB *pSnb) { FIXME(":stub\n"); } diff --git a/reactos/dll/win32/ole32/version.rc b/reactos/dll/win32/ole32/version.rc index e498134858e..fb85adeba05 100644 --- a/reactos/dll/win32/ole32/version.rc +++ b/reactos/dll/win32/ole32/version.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #define WINE_OLESELFREGISTER diff --git a/reactos/dll/win32/oleaut32/Makefile.in b/reactos/dll/win32/oleaut32/Makefile.in index ce81e8e799b..0d2f99d092a 100644 --- a/reactos/dll/win32/oleaut32/Makefile.in +++ b/reactos/dll/win32/oleaut32/Makefile.in @@ -7,7 +7,7 @@ MODULE = oleaut32.dll IMPORTLIB = liboleaut32.$(IMPLIBEXT) IMPORTS = ole32 rpcrt4 user32 gdi32 advapi32 kernel32 ntdll DELAYIMPORTS = comctl32 urlmon -EXTRALIBS = $(LIBUNICODE) -luuid +EXTRALIBS = -luuid C_SRCS = \ connpt.c \ @@ -24,6 +24,7 @@ C_SRCS = \ tmarshal.c \ typelib.c \ typelib2.c \ + ungif.c \ usrmarshal.c \ varformat.c \ variant.c \ @@ -39,8 +40,6 @@ SPEC_SRCS16 = \ RC_SRCS = oleaut32.rc -SUBDIRS = tests - @MAKE_DLL_RULES@ -### Dependencies: +@DEPENDENCIES@ # everything below this line is overwritten by make depend diff --git a/reactos/dll/win32/oleaut32/connpt.c b/reactos/dll/win32/oleaut32/connpt.c index 78f4117453f..63e3b2cecb7 100644 --- a/reactos/dll/win32/oleaut32/connpt.c +++ b/reactos/dll/win32/oleaut32/connpt.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES: * See one exported function here is CreateConnectionPoint, see @@ -194,7 +194,7 @@ static ULONG WINAPI ConnectionPointImpl_AddRef(IConnectionPoint* iface) ConnectionPointImpl *This = (ConnectionPointImpl *)iface; ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(ref before=%ld)\n", This, refCount - 1); + TRACE("(%p)->(ref before=%d)\n", This, refCount - 1); return refCount; } @@ -210,7 +210,7 @@ static ULONG WINAPI ConnectionPointImpl_Release( ConnectionPointImpl *This = (ConnectionPointImpl *)iface; ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(ref before=%ld)\n", This, refCount + 1); + TRACE("(%p)->(ref before=%d)\n", This, refCount + 1); /* * If the reference count goes down to 0, perform suicide. @@ -291,7 +291,7 @@ static HRESULT WINAPI ConnectionPointImpl_Unadvise(IConnectionPoint *iface, DWORD dwCookie) { ConnectionPointImpl *This = (ConnectionPointImpl *)iface; - TRACE("(%p)->(%ld)\n", This, dwCookie); + TRACE("(%p)->(%d)\n", This, dwCookie); if(dwCookie == 0 || dwCookie > This->maxSinks) return E_INVALIDARG; @@ -463,7 +463,7 @@ static ULONG WINAPI EnumConnectionsImpl_AddRef(IEnumConnections* iface) EnumConnectionsImpl *This = (EnumConnectionsImpl *)iface; ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(ref before=%ld)\n", This, refCount - 1); + TRACE("(%p)->(ref before=%d)\n", This, refCount - 1); IUnknown_AddRef(This->pUnk); return refCount; @@ -479,7 +479,7 @@ static ULONG WINAPI EnumConnectionsImpl_Release(IEnumConnections* iface) EnumConnectionsImpl *This = (EnumConnectionsImpl *)iface; ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(ref before=%ld)\n", This, refCount + 1); + TRACE("(%p)->(ref before=%d)\n", This, refCount + 1); IUnknown_Release(This->pUnk); @@ -501,7 +501,7 @@ static HRESULT WINAPI EnumConnectionsImpl_Next(IEnumConnections* iface, { EnumConnectionsImpl *This = (EnumConnectionsImpl *)iface; DWORD nRet = 0; - TRACE("(%p)->(%ld, %p, %p)\n", This, cConn, pCD, pEnum); + TRACE("(%p)->(%d, %p, %p)\n", This, cConn, pCD, pEnum); if(pEnum == NULL) { if(cConn != 1) @@ -535,7 +535,7 @@ static HRESULT WINAPI EnumConnectionsImpl_Skip(IEnumConnections* iface, ULONG cSkip) { EnumConnectionsImpl *This = (EnumConnectionsImpl *)iface; - TRACE("(%p)->(%ld)\n", This, cSkip); + TRACE("(%p)->(%d)\n", This, cSkip); if(This->nCur + cSkip >= This->nConns) return S_FALSE; diff --git a/reactos/dll/win32/oleaut32/connpt.h b/reactos/dll/win32/oleaut32/connpt.h index b8fbb3a46d9..cac3ae62fa8 100644 --- a/reactos/dll/win32/oleaut32/connpt.h +++ b/reactos/dll/win32/oleaut32/connpt.h @@ -13,7 +13,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef _CONNPT_H diff --git a/reactos/dll/win32/oleaut32/dispatch.c b/reactos/dll/win32/oleaut32/dispatch.c index 73179e5b7bc..707428f73c5 100644 --- a/reactos/dll/win32/oleaut32/dispatch.c +++ b/reactos/dll/win32/oleaut32/dispatch.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * */ @@ -85,7 +85,7 @@ HRESULT WINAPI DispInvoke( /****************************************************************************** * DispGetIDsOfNames (OLEAUT32.29) * - * Convert a set of parameter names to DISPID's for DispInvoke(). + * Convert a set of parameter names to DISPIDs for DispInvoke(). * * RETURNS * Success: S_OK. @@ -93,13 +93,13 @@ HRESULT WINAPI DispInvoke( * * NOTES * This call defers to ITypeInfo_GetIDsOfNames(). The ITypeInfo interface passed - * as ptinfo contains the information to map names to DISPID's. + * as ptinfo contains the information to map names to DISPIDs. */ HRESULT WINAPI DispGetIDsOfNames( ITypeInfo *ptinfo, /* [in] Object's type info */ - OLECHAR **rgszNames, /* [in] Array of names to get DISPID's for */ + OLECHAR **rgszNames, /* [in] Array of names to get DISPIDs for */ UINT cNames, /* [in] Number of names in rgszNames */ - DISPID *rgdispid) /* [out] Destination for converted DISPID's */ + DISPID *rgdispid) /* [out] Destination for converted DISPIDs */ { return ITypeInfo_GetIDsOfNames(ptinfo, rgszNames, cNames, rgdispid); } @@ -107,7 +107,7 @@ HRESULT WINAPI DispGetIDsOfNames( /****************************************************************************** * DispGetParam (OLEAUT32.28) * - * Retrive a parameter from a DISPPARAMS structure and coerce it to the + * Retrieve a parameter from a DISPPARAMS structure and coerce it to the * specified variant type. * * NOTES @@ -203,10 +203,10 @@ HRESULT WINAPI CreateStdDispatch( * to simplify the process of calling an objects methods through IDispatch. * * A standard implementation of an IDispatch object is created by calling - * CreateStdDispatch(). Numeric Id values for the parameters and methods (DISPID's) + * CreateStdDispatch(). Numeric Id values for the parameters and methods (DISPIDs) * of an object of interest are retrieved by calling DispGetIDsOfNames(). DispGetParam() * retrieves information about a particular parameter. Finally the DispInvoke() - * function is responsable for actually calling methods on an object. + * function is responsible for actually calling methods on an object. * * METHODS */ @@ -252,7 +252,7 @@ static ULONG WINAPI StdDispatch_AddRef(LPDISPATCH iface) StdDispatch *This = (StdDispatch *)iface; ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); + TRACE("(%p)->(ref before=%u)\n",This, refCount - 1); return refCount; } @@ -267,7 +267,7 @@ static ULONG WINAPI StdDispatch_Release(LPDISPATCH iface) StdDispatch *This = (StdDispatch *)iface; ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(ref before=%lu)\n", This, refCount + 1); + TRACE("(%p)->(ref before=%u)\n", This, refCount + 1); if (!refCount) { @@ -325,7 +325,7 @@ static HRESULT WINAPI StdDispatch_GetTypeInfoCount(LPDISPATCH iface, UINT * pcti static HRESULT WINAPI StdDispatch_GetTypeInfo(LPDISPATCH iface, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) { StdDispatch *This = (StdDispatch *)iface; - TRACE("(%d, %lx, %p)\n", iTInfo, lcid, ppTInfo); + TRACE("(%d, %x, %p)\n", iTInfo, lcid, ppTInfo); *ppTInfo = NULL; if (iTInfo != 0) @@ -342,7 +342,7 @@ static HRESULT WINAPI StdDispatch_GetTypeInfo(LPDISPATCH iface, UINT iTInfo, LCI /****************************************************************************** * IDispatch_GetIDsOfNames {OLEAUT32} * - * Convert a methods name and an optional set of parameter names into DISPID's + * Convert a methods name and an optional set of parameter names into DISPIDs * for passing to IDispatch_Invoke(). * * PARAMS @@ -351,13 +351,13 @@ static HRESULT WINAPI StdDispatch_GetTypeInfo(LPDISPATCH iface, UINT iTInfo, LCI * rgszNames [I] Name to convert * cNames [I] Number of names in rgszNames * lcid [I] Locale of the type information to convert from - * rgDispId [O] Destination for converted DISPID's. + * rgDispId [O] Destination for converted DISPIDs. * * RETURNS * Success: S_OK. * Failure: DISP_E_UNKNOWNNAME, if any of the names is invalid. * DISP_E_UNKNOWNLCID if lcid is invalid. - * Otherwise, an An HRESULT error code. + * Otherwise, an HRESULT error code. * * NOTES * This call defers to ITypeInfo_GetIDsOfNames(), using the ITypeInfo object @@ -368,7 +368,7 @@ static HRESULT WINAPI StdDispatch_GetTypeInfo(LPDISPATCH iface, UINT iTInfo, LCI static HRESULT WINAPI StdDispatch_GetIDsOfNames(LPDISPATCH iface, REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) { StdDispatch *This = (StdDispatch *)iface; - TRACE("(%s, %p, %d, 0x%lx, %p)\n", debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); + TRACE("(%s, %p, %d, 0x%x, %p)\n", debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); if (!IsEqualGUID(riid, &IID_NULL)) { @@ -406,7 +406,7 @@ static HRESULT WINAPI StdDispatch_Invoke(LPDISPATCH iface, DISPID dispIdMember, EXCEPINFO * pExcepInfo, UINT * puArgErr) { StdDispatch *This = (StdDispatch *)iface; - TRACE("(%ld, %s, 0x%lx, 0x%x, %p, %p, %p, %p)\n", dispIdMember, debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + TRACE("(%d, %s, 0x%x, 0x%x, %p, %p, %p, %p)\n", dispIdMember, debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); if (!IsEqualGUID(riid, &IID_NULL)) { diff --git a/reactos/dll/win32/oleaut32/hash.c b/reactos/dll/win32/oleaut32/hash.c index 3c752057b69..b3929f31c04 100644 --- a/reactos/dll/win32/oleaut32/hash.c +++ b/reactos/dll/win32/oleaut32/hash.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -517,7 +517,7 @@ ULONG WINAPI LHashValOfNameSysA( SYSKIND skind, LCID lcid, LPCSTR lpStr) switch (PRIMARYLANGID(LANGIDFROMLCID(lcid))) { default: - ERR("Unknown lcid %lx, treating as latin-based, please report\n", lcid); + ERR("Unknown lcid %x, treating as latin-based, please report\n", lcid); /* .. Fall Through .. */ case LANG_AFRIKAANS: case LANG_ALBANIAN: case LANG_ARMENIAN: case LANG_ASSAMESE: case LANG_AZERI: case LANG_BASQUE: @@ -608,13 +608,7 @@ ULONG WINAPI LHashValOfNameSysA( SYSKIND skind, LCID lcid, LPCSTR lpStr) while (*str) { - ULONG newLoWord = 0, i; - - /* Cumulative prime multiplication (*37) with modulo 2^32 wrap-around */ - for (i = 0; i < 37; i++) - newLoWord += nLoWord; - - nLoWord = newLoWord + pnLookup[*str > 0x7f && nMask ? *str + 0x80 : *str]; + nLoWord = 37 * nLoWord + pnLookup[*str > 0x7f && nMask ? *str + 0x80 : *str]; str++; } /* Constrain to a prime modulo and sizeof(WORD) */ diff --git a/reactos/dll/win32/oleaut32/oaidl_p.c b/reactos/dll/win32/oleaut32/oaidl_p.c index 1102e1cfcdf..c4419d7483d 100644 --- a/reactos/dll/win32/oleaut32/oaidl_p.c +++ b/reactos/dll/win32/oleaut32/oaidl_p.c @@ -13702,7 +13702,7 @@ static const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString = } }; -static const CInterfaceProxyVtbl * _oaidl_ProxyVtblList[] = +static const CInterfaceProxyVtbl * const _oaidl_ProxyVtblList[] = { ( const CInterfaceProxyVtbl *) &_IDispatchProxyVtbl, ( const CInterfaceProxyVtbl *) &_ITypeInfoProxyVtbl, @@ -13718,7 +13718,7 @@ static const CInterfaceProxyVtbl * _oaidl_ProxyVtblList[] = 0 }; -static const CInterfaceStubVtbl * _oaidl_StubVtblList[] = +static const CInterfaceStubVtbl * const _oaidl_StubVtblList[] = { ( const CInterfaceStubVtbl *) &_IDispatchStubVtbl, ( const CInterfaceStubVtbl *) &_ITypeInfoStubVtbl, diff --git a/reactos/dll/win32/oleaut32/ole2disp.c b/reactos/dll/win32/oleaut32/ole2disp.c index 1d8104921eb..a09ef7c62f7 100644 --- a/reactos/dll/win32/oleaut32/ole2disp.c +++ b/reactos/dll/win32/oleaut32/ole2disp.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -220,7 +220,7 @@ HRESULT WINAPI CreateDispTypeInfo16( LCID lcid, ITypeInfo **pptinfo) { - FIXME("(%p,%ld,%p),stub\n",pidata,lcid,pptinfo); + FIXME("(%p,%d,%p),stub\n",pidata,lcid,pptinfo); return E_NOTIMPL; } @@ -244,6 +244,6 @@ HRESULT WINAPI CreateStdDispatch16( HRESULT WINAPI RegisterActiveObject16( IUnknown *punk, REFCLSID rclsid, DWORD dwFlags, unsigned long *pdwRegister ) { - FIXME("(%p,%s,0x%08lx,%p):stub\n",punk,debugstr_guid(rclsid),dwFlags,pdwRegister); + FIXME("(%p,%s,0x%08x,%p):stub\n",punk,debugstr_guid(rclsid),dwFlags,pdwRegister); return E_NOTIMPL; } diff --git a/reactos/dll/win32/oleaut32/ole2disp.h b/reactos/dll/win32/oleaut32/ole2disp.h index ec7c1c74e3c..7804c829128 100644 --- a/reactos/dll/win32/oleaut32/ole2disp.h +++ b/reactos/dll/win32/oleaut32/ole2disp.h @@ -13,7 +13,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __WINE_OLEAUT32_OLE2DISP_H diff --git a/reactos/dll/win32/oleaut32/oleaut.c b/reactos/dll/win32/oleaut32/oleaut.c index 22f87a7e205..1fe68b8d635 100644 --- a/reactos/dll/win32/oleaut32/oleaut.c +++ b/reactos/dll/win32/oleaut32/oleaut.c @@ -15,11 +15,12 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include #include +#include #define COBJMACROS @@ -38,15 +39,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); -/* The OLE Automation ProxyStub Interface Class (aka Typelib Marshaler) */ -extern const GUID CLSID_PSOAInterface; - -extern const GUID CLSID_PSDispatch; -extern const GUID CLSID_PSEnumVariant; -extern const GUID CLSID_PSTypeInfo; -extern const GUID CLSID_PSTypeLib; -extern const GUID CLSID_PSTypeComp; - static BOOL BSTR_bCache = TRUE; /* Cache allocations to minimise alloc calls? */ HMODULE OLEAUT32_hModule = NULL; @@ -226,8 +218,11 @@ BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len) DWORD* newBuffer; WCHAR* stringBuffer; + /* Detect integer overflow. */ + if (len >= ((UINT_MAX-sizeof(WCHAR)-sizeof(DWORD))/sizeof(WCHAR))) + return NULL; /* - * Find the length of the buffer passed-in in bytes. + * Find the length of the buffer passed-in, in bytes. */ bufferSize = len * sizeof (WCHAR); @@ -243,8 +238,8 @@ BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len) /* * If the memory allocation failed, return a null pointer. */ - if (newBuffer==0) - return 0; + if (!newBuffer) + return NULL; /* * Copy the length of the string in the placeholder. @@ -629,7 +624,7 @@ HRESULT WINAPI OleTranslateColor( COLORREF colorref; BYTE b = HIBYTE(HIWORD(clr)); - TRACE("(%08lx, %p, %p)\n", clr, hpal, pColorRef); + TRACE("(%08x, %p, %p)\n", clr, hpal, pColorRef); /* * In case pColorRef is NULL, provide our own to simplify the code. @@ -829,7 +824,7 @@ HRESULT WINAPI DllCanUnloadNow(void) */ BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved) { - TRACE("(%p,%ld,%p)\n", hInstDll, fdwReason, lpvReserved); + TRACE("(%p,%d,%p)\n", hInstDll, fdwReason, lpvReserved); switch (fdwReason) { case DLL_PROCESS_ATTACH: @@ -842,3 +837,13 @@ BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved) return TRUE; } + +/*********************************************************************** + * OleIconToCursor (OLEAUT32.415) + */ +HCURSOR WINAPI OleIconToCursor( HINSTANCE hinstExe, HICON hIcon) +{ + FIXME("(%p,%p), partially implemented.\n",hinstExe,hIcon); + /* FIXME: make a extended conversation from HICON to HCURSOR */ + return CopyCursor(hIcon); +} diff --git a/reactos/dll/win32/oleaut32/oleaut32.rbuild b/reactos/dll/win32/oleaut32/oleaut32.rbuild index 73ca764be8b..7d69ad7643c 100644 --- a/reactos/dll/win32/oleaut32/oleaut32.rbuild +++ b/reactos/dll/win32/oleaut32/oleaut32.rbuild @@ -39,6 +39,7 @@ usrmarshal.c varformat.c variant.c + ungif.c vartype.c oleaut32.spec diff --git a/reactos/dll/win32/oleaut32/oleaut32.rc b/reactos/dll/win32/oleaut32/oleaut32.rc index 20f74e7680c..565076d4e75 100644 --- a/reactos/dll/win32/oleaut32/oleaut32.rc +++ b/reactos/dll/win32/oleaut32/oleaut32.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "windef.h" @@ -28,13 +28,12 @@ #include "oleaut32_De.rc" #include "oleaut32_Dk.rc" #include "oleaut32_En.rc" +#include "oleaut32_Eo.rc" #include "oleaut32_Es.rc" #include "oleaut32_Cz.rc" #include "oleaut32_Fr.rc" -#include "oleaut32_Gr.rc" #include "oleaut32_Hu.rc" #include "oleaut32_It.rc" -#include "oleaut32_Ja.rc" #include "oleaut32_Ko.rc" #include "oleaut32_Nl.rc" #include "oleaut32_No.rc" @@ -44,7 +43,6 @@ #include "oleaut32_Sv.rc" #include "oleaut32_Th.rc" #include "oleaut32_Tr.rc" -#include "oleaut32_Uk.rc" /* * FIXME: diff --git a/reactos/dll/win32/oleaut32/oleaut32.spec b/reactos/dll/win32/oleaut32/oleaut32.spec index ad110c7274c..abffbd26e52 100644 --- a/reactos/dll/win32/oleaut32/oleaut32.spec +++ b/reactos/dll/win32/oleaut32/oleaut32.spec @@ -148,7 +148,7 @@ 150 stdcall SysAllocStringByteLen(ptr long) 152 stdcall VarEqv(ptr ptr ptr) 153 stdcall VarIdiv(ptr ptr ptr) -154 stub VarImp # stdcall (ptr ptr ptr) +154 stdcall VarImp(ptr ptr ptr) 155 stdcall VarMod(ptr ptr ptr) 156 stdcall VarMul(ptr ptr ptr) 157 stdcall VarOr(ptr ptr ptr) diff --git a/reactos/dll/win32/oleaut32/oleaut32_Bg.rc b/reactos/dll/win32/oleaut32/oleaut32_Bg.rc index eca2633d6be..7e930f41020 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Bg.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Bg.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT diff --git a/reactos/dll/win32/oleaut32/oleaut32_Cz.rc b/reactos/dll/win32/oleaut32/oleaut32_Cz.rc index 771aff80f31..7075b43cc0e 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Cz.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Cz.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT diff --git a/reactos/dll/win32/oleaut32/oleaut32_De.rc b/reactos/dll/win32/oleaut32/oleaut32_De.rc index 711a310213d..9fb786cfca0 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_De.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_De.rc @@ -15,10 +15,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE { diff --git a/reactos/dll/win32/oleaut32/oleaut32_Dk.rc b/reactos/dll/win32/oleaut32/oleaut32_Dk.rc index e250339bb4c..6f1dcbcad91 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Dk.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Dk.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_DANISH, SUBLANG_DEFAULT diff --git a/reactos/dll/win32/oleaut32/oleaut32_En.rc b/reactos/dll/win32/oleaut32/oleaut32_En.rc index 7be7b0cf49a..e56eb11d6e3 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_En.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_En.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT diff --git a/reactos/include/reactos/wine/ole2.h b/reactos/dll/win32/oleaut32/oleaut32_Eo.rc similarity index 59% rename from reactos/include/reactos/wine/ole2.h rename to reactos/dll/win32/oleaut32/oleaut32_Eo.rc index 21c6bdeeae0..c00e2fd4f44 100644 --- a/reactos/include/reactos/wine/ole2.h +++ b/reactos/dll/win32/oleaut32/oleaut32_Eo.rc @@ -1,7 +1,7 @@ /* - * Declarations for OLE2 + * Oleaut32 - Esperanto Language Support * - * Copyright (C) the Wine project + * Copyright 2006 Antonio Codazzi * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,23 +15,17 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include_next -#include /* for LPUNKNOWN */ +LANGUAGE LANG_ESPERANTO, SUBLANG_DEFAULT -#ifndef __WINE_OLE2_H -#define __WINE_OLE2_H - -#ifdef __cplusplus -extern "C" { -#endif /* defined(__cplusplus) */ - -BOOL WINAPI IsValidInterface(LPUNKNOWN punk); - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* defined(__cplusplus) */ - -#endif /* __WINE_OLE2_H */ +STRINGTABLE DISCARDABLE +{ + IDS_TRUE "Vere" + IDS_FALSE "False" + IDS_YES "Jes" + IDS_NO "Ne" + IDS_ON "Kondukta" + IDS_OFF "Elkluda" +} diff --git a/reactos/dll/win32/oleaut32/oleaut32_Es.rc b/reactos/dll/win32/oleaut32/oleaut32_Es.rc index 19ed1a3d740..5cc25ca49d5 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Es.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Es.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL diff --git a/reactos/dll/win32/oleaut32/oleaut32_Fr.rc b/reactos/dll/win32/oleaut32/oleaut32_Fr.rc index 44310bc130c..40e392ee162 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Fr.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Fr.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL diff --git a/reactos/dll/win32/oleaut32/oleaut32_Hu.rc b/reactos/dll/win32/oleaut32/oleaut32_Hu.rc index cb7c90d00db..35283c8314a 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Hu.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Hu.rc @@ -2,7 +2,6 @@ * Hungarian resources for oleaut32 * * Copyright 2003 Jon Griffiths - * Hungarian translation by ??? * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -16,10 +15,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT STRINGTABLE DISCARDABLE { diff --git a/reactos/dll/win32/oleaut32/oleaut32_It.rc b/reactos/dll/win32/oleaut32/oleaut32_It.rc index a6dc0315a6c..0dee161a217 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_It.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_It.rc @@ -15,10 +15,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE { diff --git a/reactos/dll/win32/oleaut32/oleaut32_Ko.rc b/reactos/dll/win32/oleaut32/oleaut32_Ko.rc index cfd2f777f78..b3b5296df7f 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Ko.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Ko.rc @@ -15,10 +15,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT +LANGUAGE LANG_KOREAN, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE { diff --git a/reactos/dll/win32/oleaut32/oleaut32_Nl.rc b/reactos/dll/win32/oleaut32/oleaut32_Nl.rc index 8c27a3134c3..6affb2d638c 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Nl.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Nl.rc @@ -15,10 +15,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT +LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE { diff --git a/reactos/dll/win32/oleaut32/oleaut32_No.rc b/reactos/dll/win32/oleaut32/oleaut32_No.rc index b617230baba..7ca883c350d 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_No.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_No.rc @@ -15,10 +15,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -LANGUAGE LANG_NORWEGIAN, SUBLANG_DEFAULT +LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL STRINGTABLE DISCARDABLE { diff --git a/reactos/dll/win32/oleaut32/oleaut32_Pl.rc b/reactos/dll/win32/oleaut32/oleaut32_Pl.rc index 92b453c5b14..8c250cbbb9f 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Pl.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Pl.rc @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT diff --git a/reactos/dll/win32/oleaut32/oleaut32_Pt.rc b/reactos/dll/win32/oleaut32/oleaut32_Pt.rc index 4fcfeffab76..9a4953b25b9 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Pt.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Pt.rc @@ -15,10 +15,10 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN STRINGTABLE DISCARDABLE { diff --git a/reactos/dll/win32/oleaut32/oleaut32_Ru.rc b/reactos/dll/win32/oleaut32/oleaut32_Ru.rc index 473c84b26cd..194ca9e1a8e 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Ru.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Ru.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT diff --git a/reactos/dll/win32/oleaut32/oleaut32_Sv.rc b/reactos/dll/win32/oleaut32/oleaut32_Sv.rc index 14fa7f49710..f8e2fc43d20 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Sv.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Sv.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT @@ -26,6 +26,6 @@ STRINGTABLE DISCARDABLE IDS_FALSE "Falskt" IDS_YES "Ja" IDS_NO "Nej" - IDS_ON "På" + IDS_ON "PÕ" IDS_OFF "Av" } diff --git a/reactos/dll/win32/oleaut32/oleaut32_Th.rc b/reactos/dll/win32/oleaut32/oleaut32_Th.rc index 53315ff0842..22f01f74ee3 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Th.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Th.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_THAI, SUBLANG_DEFAULT diff --git a/reactos/dll/win32/oleaut32/oleaut32_Tr.rc b/reactos/dll/win32/oleaut32/oleaut32_Tr.rc index e60a51c1c99..cc2f3e6f878 100644 --- a/reactos/dll/win32/oleaut32/oleaut32_Tr.rc +++ b/reactos/dll/win32/oleaut32/oleaut32_Tr.rc @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT diff --git a/reactos/dll/win32/oleaut32/olefont.c b/reactos/dll/win32/oleaut32/olefont.c index a9110e787ad..5aba82e68fc 100644 --- a/reactos/dll/win32/oleaut32/olefont.c +++ b/reactos/dll/win32/oleaut32/olefont.c @@ -5,6 +5,7 @@ * interface and the OleCreateFontIndirect API call. * * Copyright 1999 Francis Beaudet + * Copyright 2006 (Google) Benjamin Arai * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -18,7 +19,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include #include @@ -33,6 +34,7 @@ #include "winbase.h" #include "wingdi.h" #include "winuser.h" +#include "wine/list.h" #include "wine/unicode.h" #include "objbase.h" #include "oleauto.h" /* for SysAllocString(....) */ @@ -51,6 +53,48 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); #define FONTPERSIST_UNDERLINE 0x04 #define FONTPERSIST_STRIKETHROUGH 0x08 + +/*********************************************************************** + * List of the HFONTs it has given out, with each one having a separate + * ref count. + */ +typedef struct _HFONTItem +{ + struct list entry; + + /* Reference count for that instance of the class. */ + LONG ref; + + /* Contain the font associated with this object. */ + HFONT gdiFont; + +} HFONTItem, *PHFONTItem; + +static struct list OLEFontImpl_hFontList = LIST_INIT(OLEFontImpl_hFontList); + +/* Counts how many fonts contain at least one lock */ +static LONG ifont_cnt = 0; + +/*********************************************************************** + * Critical section for OLEFontImpl_hFontList + */ +static CRITICAL_SECTION OLEFontImpl_csHFONTLIST; +static CRITICAL_SECTION_DEBUG OLEFontImpl_csHFONTLIST_debug = +{ + 0, 0, &OLEFontImpl_csHFONTLIST, + { &OLEFontImpl_csHFONTLIST_debug.ProcessLocksList, + &OLEFontImpl_csHFONTLIST_debug.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": OLEFontImpl_csHFONTLIST") } +}; +static CRITICAL_SECTION OLEFontImpl_csHFONTLIST = { &OLEFontImpl_csHFONTLIST_debug, -1, 0, 0, 0, 0 }; + +static void HFONTItem_Delete(PHFONTItem item) +{ + DeleteObject(item->gdiFont); + list_remove(&item->entry); + HeapFree(GetProcessHeap(), 0, item); +} + /*********************************************************************** * Declaration of the implementation class for the IFont interface */ @@ -85,11 +129,6 @@ struct OLEFontImpl */ HFONT gdiFont; - /* - * Font lock count. - */ - DWORD fontLock; - /* * Size ratio */ @@ -139,174 +178,7 @@ static inline OLEFontImpl *impl_from_IPersistStreamInit( IPersistStreamInit *ifa */ static OLEFontImpl* OLEFontImpl_Construct(LPFONTDESC fontDesc); static void OLEFontImpl_Destroy(OLEFontImpl* fontDesc); -static HRESULT WINAPI OLEFontImpl_QueryInterface(IFont* iface, REFIID riid, VOID** ppvoid); static ULONG WINAPI OLEFontImpl_AddRef(IFont* iface); -static ULONG WINAPI OLEFontImpl_Release(IFont* iface); -static HRESULT WINAPI OLEFontImpl_get_Name(IFont* iface, BSTR* pname); -static HRESULT WINAPI OLEFontImpl_put_Name(IFont* iface, BSTR name); -static HRESULT WINAPI OLEFontImpl_get_Size(IFont* iface, CY* psize); -static HRESULT WINAPI OLEFontImpl_put_Size(IFont* iface, CY size); -static HRESULT WINAPI OLEFontImpl_get_Bold(IFont* iface, BOOL* pbold); -static HRESULT WINAPI OLEFontImpl_put_Bold(IFont* iface, BOOL bold); -static HRESULT WINAPI OLEFontImpl_get_Italic(IFont* iface, BOOL* pitalic); -static HRESULT WINAPI OLEFontImpl_put_Italic(IFont* iface, BOOL italic); -static HRESULT WINAPI OLEFontImpl_get_Underline(IFont* iface, BOOL* punderline); -static HRESULT WINAPI OLEFontImpl_put_Underline(IFont* iface, BOOL underline); -static HRESULT WINAPI OLEFontImpl_get_Strikethrough(IFont* iface, BOOL* pstrikethrough); -static HRESULT WINAPI OLEFontImpl_put_Strikethrough(IFont* iface, BOOL strikethrough); -static HRESULT WINAPI OLEFontImpl_get_Weight(IFont* iface, short* pweight); -static HRESULT WINAPI OLEFontImpl_put_Weight(IFont* iface, short weight); -static HRESULT WINAPI OLEFontImpl_get_Charset(IFont* iface, short* pcharset); -static HRESULT WINAPI OLEFontImpl_put_Charset(IFont* iface, short charset); -static HRESULT WINAPI OLEFontImpl_get_hFont(IFont* iface, HFONT* phfont); -static HRESULT WINAPI OLEFontImpl_Clone(IFont* iface, IFont** ppfont); -static HRESULT WINAPI OLEFontImpl_IsEqual(IFont* iface, IFont* pFontOther); -static HRESULT WINAPI OLEFontImpl_SetRatio(IFont* iface, LONG cyLogical, LONG cyHimetric); -static HRESULT WINAPI OLEFontImpl_QueryTextMetrics(IFont* iface, TEXTMETRICOLE* ptm); -static HRESULT WINAPI OLEFontImpl_AddRefHfont(IFont* iface, HFONT hfont); -static HRESULT WINAPI OLEFontImpl_ReleaseHfont(IFont* iface, HFONT hfont); -static HRESULT WINAPI OLEFontImpl_SetHdc(IFont* iface, HDC hdc); - -/*********************************************************************** - * Prototypes for the implementation functions for the IDispatch - * interface - */ -static HRESULT WINAPI OLEFontImpl_IDispatch_QueryInterface(IDispatch* iface, - REFIID riid, - VOID** ppvoid); -static ULONG WINAPI OLEFontImpl_IDispatch_AddRef(IDispatch* iface); -static ULONG WINAPI OLEFontImpl_IDispatch_Release(IDispatch* iface); -static HRESULT WINAPI OLEFontImpl_GetTypeInfoCount(IDispatch* iface, - unsigned int* pctinfo); -static HRESULT WINAPI OLEFontImpl_GetTypeInfo(IDispatch* iface, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); -static HRESULT WINAPI OLEFontImpl_GetIDsOfNames(IDispatch* iface, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); -static HRESULT WINAPI OLEFontImpl_Invoke(IDispatch* iface, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExepInfo, - UINT* puArgErr); - -/*********************************************************************** - * Prototypes for the implementation functions for the IPersistStream - * interface - */ -static HRESULT WINAPI OLEFontImpl_IPersistStream_QueryInterface(IPersistStream* iface, - REFIID riid, - VOID** ppvoid); -static ULONG WINAPI OLEFontImpl_IPersistStream_AddRef(IPersistStream* iface); -static ULONG WINAPI OLEFontImpl_IPersistStream_Release(IPersistStream* iface); -static HRESULT WINAPI OLEFontImpl_GetClassID(IPersistStream* iface, - CLSID* pClassID); -static HRESULT WINAPI OLEFontImpl_IsDirty(IPersistStream* iface); -static HRESULT WINAPI OLEFontImpl_Load(IPersistStream* iface, - IStream* pLoadStream); -static HRESULT WINAPI OLEFontImpl_Save(IPersistStream* iface, - IStream* pOutStream, - BOOL fClearDirty); -static HRESULT WINAPI OLEFontImpl_GetSizeMax(IPersistStream* iface, - ULARGE_INTEGER* pcbSize); - -/*********************************************************************** - * Prototypes for the implementation functions for the - * IConnectionPointContainer interface - */ -static HRESULT WINAPI OLEFontImpl_IConnectionPointContainer_QueryInterface( - IConnectionPointContainer* iface, - REFIID riid, - VOID** ppvoid); -static ULONG WINAPI OLEFontImpl_IConnectionPointContainer_AddRef( - IConnectionPointContainer* iface); -static ULONG WINAPI OLEFontImpl_IConnectionPointContainer_Release( - IConnectionPointContainer* iface); -static HRESULT WINAPI OLEFontImpl_EnumConnectionPoints( - IConnectionPointContainer* iface, - IEnumConnectionPoints **ppEnum); -static HRESULT WINAPI OLEFontImpl_FindConnectionPoint( - IConnectionPointContainer* iface, - REFIID riid, - IConnectionPoint **ppCp); - -/* - * Virtual function tables for the OLEFontImpl class. - */ -static const IFontVtbl OLEFontImpl_VTable = -{ - OLEFontImpl_QueryInterface, - OLEFontImpl_AddRef, - OLEFontImpl_Release, - OLEFontImpl_get_Name, - OLEFontImpl_put_Name, - OLEFontImpl_get_Size, - OLEFontImpl_put_Size, - OLEFontImpl_get_Bold, - OLEFontImpl_put_Bold, - OLEFontImpl_get_Italic, - OLEFontImpl_put_Italic, - OLEFontImpl_get_Underline, - OLEFontImpl_put_Underline, - OLEFontImpl_get_Strikethrough, - OLEFontImpl_put_Strikethrough, - OLEFontImpl_get_Weight, - OLEFontImpl_put_Weight, - OLEFontImpl_get_Charset, - OLEFontImpl_put_Charset, - OLEFontImpl_get_hFont, - OLEFontImpl_Clone, - OLEFontImpl_IsEqual, - OLEFontImpl_SetRatio, - OLEFontImpl_QueryTextMetrics, - OLEFontImpl_AddRefHfont, - OLEFontImpl_ReleaseHfont, - OLEFontImpl_SetHdc -}; - -static const IDispatchVtbl OLEFontImpl_IDispatch_VTable = -{ - OLEFontImpl_IDispatch_QueryInterface, - OLEFontImpl_IDispatch_AddRef, - OLEFontImpl_IDispatch_Release, - OLEFontImpl_GetTypeInfoCount, - OLEFontImpl_GetTypeInfo, - OLEFontImpl_GetIDsOfNames, - OLEFontImpl_Invoke -}; - -static const IPersistStreamVtbl OLEFontImpl_IPersistStream_VTable = -{ - OLEFontImpl_IPersistStream_QueryInterface, - OLEFontImpl_IPersistStream_AddRef, - OLEFontImpl_IPersistStream_Release, - OLEFontImpl_GetClassID, - OLEFontImpl_IsDirty, - OLEFontImpl_Load, - OLEFontImpl_Save, - OLEFontImpl_GetSizeMax -}; - -static const IConnectionPointContainerVtbl - OLEFontImpl_IConnectionPointContainer_VTable = -{ - OLEFontImpl_IConnectionPointContainer_QueryInterface, - OLEFontImpl_IConnectionPointContainer_AddRef, - OLEFontImpl_IConnectionPointContainer_Release, - OLEFontImpl_EnumConnectionPoints, - OLEFontImpl_FindConnectionPoint -}; - -static const IPersistPropertyBagVtbl OLEFontImpl_IPersistPropertyBag_VTable; -static const IPersistStreamInitVtbl OLEFontImpl_IPersistStreamInit_VTable; /****************************************************************************** * OleCreateFontIndirect [OLEAUT32.420] @@ -331,10 +203,10 @@ HRESULT WINAPI OleCreateFontIndirect( if (!lpFontDesc) { FONTDESC fd; - static const WCHAR fname[] = { 'S','y','s','t','e','m',0 }; + static WCHAR fname[] = { 'S','y','s','t','e','m',0 }; fd.cbSizeofstruct = sizeof(fd); - fd.lpstrName = (WCHAR*)fname; + fd.lpstrName = fname; fd.cySize.s.Lo = 80000; fd.cySize.s.Hi = 0; fd.sWeight = 0; @@ -405,6 +277,7 @@ static void OLEFont_SendNotify(OLEFontImpl* this, DISPID dispID) CONNECTDATA CD; HRESULT hres; + this->gdiFont = 0; hres = IConnectionPoint_EnumConnections(this->pPropertyNotifyCP, &pEnum); if (SUCCEEDED(hres)) { @@ -450,107 +323,6 @@ static void OLEFont_SendNotify(OLEFontImpl* this, DISPID dispID) } } -/************************************************************************ - * OLEFontImpl_Construct - * - * This method will construct a new instance of the OLEFontImpl - * class. - * - * The caller of this method must release the object when it's - * done with it. - */ -static OLEFontImpl* OLEFontImpl_Construct(LPFONTDESC fontDesc) -{ - OLEFontImpl* newObject = 0; - - /* - * Allocate space for the object. - */ - newObject = HeapAlloc(GetProcessHeap(), 0, sizeof(OLEFontImpl)); - - if (newObject==0) - return newObject; - - /* - * Initialize the virtual function table. - */ - newObject->lpVtbl = &OLEFontImpl_VTable; - newObject->lpvtblIDispatch = &OLEFontImpl_IDispatch_VTable; - newObject->lpvtblIPersistStream = &OLEFontImpl_IPersistStream_VTable; - newObject->lpvtblIConnectionPointContainer = &OLEFontImpl_IConnectionPointContainer_VTable; - newObject->lpvtblIPersistPropertyBag = &OLEFontImpl_IPersistPropertyBag_VTable; - newObject->lpvtblIPersistStreamInit = &OLEFontImpl_IPersistStreamInit_VTable; - - /* - * Start with one reference count. The caller of this function - * must release the interface pointer when it is done. - */ - newObject->ref = 1; - - /* - * Copy the description of the font in the object. - */ - assert(fontDesc->cbSizeofstruct >= sizeof(FONTDESC)); - - newObject->description.cbSizeofstruct = sizeof(FONTDESC); - newObject->description.lpstrName = HeapAlloc(GetProcessHeap(), - 0, - (lstrlenW(fontDesc->lpstrName)+1) * sizeof(WCHAR)); - strcpyW(newObject->description.lpstrName, fontDesc->lpstrName); - newObject->description.cySize = fontDesc->cySize; - newObject->description.sWeight = fontDesc->sWeight; - newObject->description.sCharset = fontDesc->sCharset; - newObject->description.fItalic = fontDesc->fItalic; - newObject->description.fUnderline = fontDesc->fUnderline; - newObject->description.fStrikethrough = fontDesc->fStrikethrough; - - /* - * Initializing all the other members. - */ - newObject->gdiFont = 0; - newObject->fontLock = 0; - newObject->cyLogical = 72L; - newObject->cyHimetric = 2540L; - newObject->pPropertyNotifyCP = NULL; - newObject->pFontEventsCP = NULL; - - CreateConnectionPoint((IUnknown*)newObject, &IID_IPropertyNotifySink, &newObject->pPropertyNotifyCP); - CreateConnectionPoint((IUnknown*)newObject, &IID_IFontEventsDisp, &newObject->pFontEventsCP); - - if (!newObject->pPropertyNotifyCP || !newObject->pFontEventsCP) - { - OLEFontImpl_Destroy(newObject); - return NULL; - } - - TRACE("returning %p\n", newObject); - return newObject; -} - -/************************************************************************ - * OLEFontImpl_Destroy - * - * This method is called by the Release method when the reference - * count goes down to 0. It will free all resources used by - * this object. - */ -static void OLEFontImpl_Destroy(OLEFontImpl* fontDesc) -{ - TRACE("(%p)\n", fontDesc); - - HeapFree(GetProcessHeap(), 0, fontDesc->description.lpstrName); - - if (fontDesc->gdiFont!=0) - DeleteObject(fontDesc->gdiFont); - - if (fontDesc->pPropertyNotifyCP) - IConnectionPoint_Release(fontDesc->pPropertyNotifyCP); - if (fontDesc->pFontEventsCP) - IConnectionPoint_Release(fontDesc->pFontEventsCP); - - HeapFree(GetProcessHeap(), 0, fontDesc); -} - /************************************************************************ * OLEFontImpl_QueryInterface (IUnknown) * @@ -586,7 +358,7 @@ HRESULT WINAPI OLEFontImpl_QueryInterface( *ppvObject = (IDispatch*)&(this->lpvtblIDispatch); if (IsEqualGUID(&IID_IFontDisp, riid)) *ppvObject = (IDispatch*)&(this->lpvtblIDispatch); - if (IsEqualGUID(&IID_IPersistStream, riid)) + if (IsEqualIID(&IID_IPersist, riid) || IsEqualGUID(&IID_IPersistStream, riid)) *ppvObject = (IPersistStream*)&(this->lpvtblIPersistStream); if (IsEqualGUID(&IID_IConnectionPointContainer, riid)) *ppvObject = (IConnectionPointContainer*)&(this->lpvtblIConnectionPointContainer); @@ -616,7 +388,7 @@ ULONG WINAPI OLEFontImpl_AddRef( IFont* iface) { OLEFontImpl *this = (OLEFontImpl *)iface; - TRACE("(%p)->(ref=%ld)\n", this, this->ref); + TRACE("(%p)->(ref=%d)\n", this, this->ref); return InterlockedIncrement(&this->ref); } @@ -630,17 +402,26 @@ ULONG WINAPI OLEFontImpl_Release( { OLEFontImpl *this = (OLEFontImpl *)iface; ULONG ret; - TRACE("(%p)->(ref=%ld)\n", this, this->ref); + PHFONTItem ptr, next; + TRACE("(%p)->(ref=%d)\n", this, this->ref); - /* - * Decrease the reference count on this object. - */ + /* Decrease the reference count for current interface */ ret = InterlockedDecrement(&this->ref); - /* - * If the reference count goes down to 0, perform suicide. - */ - if (ret==0) OLEFontImpl_Destroy(this); + /* If the reference count goes down to 0, destroy. */ + if (ret == 0) + { + ULONG fontlist_refs = InterlockedDecrement(&ifont_cnt); + /* Check if all HFONT list refs are zero */ + if (fontlist_refs == 0) + { + EnterCriticalSection(&OLEFontImpl_csHFONTLIST); + LIST_FOR_EACH_ENTRY_SAFE(ptr, next, &OLEFontImpl_hFontList, HFONTItem, entry) + HFONTItem_Delete(ptr); + LeaveCriticalSection(&OLEFontImpl_csHFONTLIST); + } + OLEFontImpl_Destroy(this); + } return ret; } @@ -739,7 +520,7 @@ static HRESULT WINAPI OLEFontImpl_put_Size( CY size) { OLEFontImpl *this = (OLEFontImpl *)iface; - TRACE("(%p)->(%ld)\n", this, size.s.Lo); + TRACE("(%p)->(%d)\n", this, size.s.Lo); this->description.cySize.s.Hi = 0; this->description.cySize.s.Lo = size.s.Lo; OLEFont_SendNotify(this, DISPID_FONT_SIZE); @@ -1012,6 +793,7 @@ static HRESULT WINAPI OLEFontImpl_get_hFont( LOGFONTW logFont; INT fontHeight; CY cySize; + PHFONTItem newEntry; /* * The height of the font returned by the get_Size property is the @@ -1041,6 +823,14 @@ static HRESULT WINAPI OLEFontImpl_get_hFont( strcpyW(logFont.lfFaceName,this->description.lpstrName); this->gdiFont = CreateFontIndirectW(&logFont); + + /* Add font to the cache */ + newEntry = HeapAlloc(GetProcessHeap(), 0, sizeof(HFONTItem)); + newEntry->ref = 1; + newEntry->gdiFont = this->gdiFont; + EnterCriticalSection(&OLEFontImpl_csHFONTLIST); + list_add_tail(&OLEFontImpl_hFontList,&newEntry->entry); + LeaveCriticalSection(&OLEFontImpl_csHFONTLIST); } *phfont = this->gdiFont; @@ -1061,6 +851,8 @@ static HRESULT WINAPI OLEFontImpl_Clone( LOGFONTW logFont; INT fontHeight; CY cySize; + PHFONTItem newEntry; + OLEFontImpl *this = (OLEFontImpl *)iface; TRACE("(%p)->(%p)\n", this, ppfont); @@ -1109,6 +901,15 @@ static HRESULT WINAPI OLEFontImpl_Clone( newObject->gdiFont = CreateFontIndirectW(&logFont); + /* Add font to the cache */ + InterlockedIncrement(&ifont_cnt); + newEntry = HeapAlloc(GetProcessHeap(), 0, sizeof(HFONTItem)); + newEntry->ref = 1; + newEntry->gdiFont = newObject->gdiFont; + EnterCriticalSection(&OLEFontImpl_csHFONTLIST); + list_add_tail(&OLEFontImpl_hFontList,&newEntry->entry); + LeaveCriticalSection(&OLEFontImpl_csHFONTLIST); + /* create new connection points */ newObject->pPropertyNotifyCP = NULL; newObject->pFontEventsCP = NULL; @@ -1138,8 +939,37 @@ static HRESULT WINAPI OLEFontImpl_IsEqual( IFont* iface, IFont* pFontOther) { - FIXME("(%p, %p), stub!\n",iface,pFontOther); - return E_NOTIMPL; + OLEFontImpl *left = (OLEFontImpl *)iface; + OLEFontImpl *right = (OLEFontImpl *)pFontOther; + HRESULT hres; + INT left_len,right_len; + + if((iface == NULL) || (pFontOther == NULL)) + return E_POINTER; + else if (left->description.cySize.s.Lo != right->description.cySize.s.Lo) + return S_FALSE; + else if (left->description.cySize.s.Hi != right->description.cySize.s.Hi) + return S_FALSE; + else if (left->description.sWeight != right->description.sWeight) + return S_FALSE; + else if (left->description.sCharset != right->description.sCharset) + return S_FALSE; + else if (left->description.fItalic != right->description.fItalic) + return S_FALSE; + else if (left->description.fUnderline != right->description.fUnderline) + return S_FALSE; + else if (left->description.fStrikethrough != right->description.fStrikethrough) + return S_FALSE; + + /* Check from string */ + left_len = strlenW(left->description.lpstrName); + right_len = strlenW(right->description.lpstrName); + hres = CompareStringW(0,0,left->description.lpstrName, left_len, + right->description.lpstrName, right_len); + if (hres != CSTR_EQUAL) + return S_FALSE; + + return S_OK; } /************************************************************************ @@ -1153,7 +983,7 @@ static HRESULT WINAPI OLEFontImpl_SetRatio( LONG cyHimetric) { OLEFontImpl *this = (OLEFontImpl *)iface; - TRACE("(%p)->(%ld, %ld)\n", this, cyLogical, cyHimetric); + TRACE("(%p)->(%d, %d)\n", this, cyLogical, cyHimetric); this->cyLogical = cyLogical; this->cyHimetric = cyHimetric; @@ -1192,15 +1022,28 @@ static HRESULT WINAPI OLEFontImpl_AddRefHfont( HFONT hfont) { OLEFontImpl *this = (OLEFontImpl *)iface; - TRACE("(%p)->(%p) (lock=%ld)\n", this, hfont, this->fontLock); + PHFONTItem ptr, next; + HRESULT hres = S_FALSE; /* assume not present */ - if ( (hfont == 0) || - (hfont != this->gdiFont) ) + TRACE("(%p)->(%p)\n", this, hfont); + + if (!hfont) return E_INVALIDARG; - this->fontLock++; + /* Check of the hFont is already in the list */ + EnterCriticalSection(&OLEFontImpl_csHFONTLIST); + LIST_FOR_EACH_ENTRY_SAFE(ptr, next, &OLEFontImpl_hFontList, HFONTItem, entry) + { + if (ptr->gdiFont == hfont) + { + ptr->ref++; + hres = S_OK; + break; + } + } + LeaveCriticalSection(&OLEFontImpl_csHFONTLIST); - return S_OK; + return hres; } /************************************************************************ @@ -1213,24 +1056,33 @@ static HRESULT WINAPI OLEFontImpl_ReleaseHfont( HFONT hfont) { OLEFontImpl *this = (OLEFontImpl *)iface; - TRACE("(%p)->(%p) (lock=%ld)\n", this, hfont, this->fontLock); + PHFONTItem ptr, next; + HRESULT hres = S_FALSE; /* assume not present */ - if ( (hfont == 0) || - (hfont != this->gdiFont) ) + TRACE("(%p)->(%p)\n", this, hfont); + + if (!hfont) return E_INVALIDARG; - this->fontLock--; - - /* - * If we just released our last font reference, destroy it. - */ - if (this->fontLock==0) + /* Check of the hFont is already in the list */ + EnterCriticalSection(&OLEFontImpl_csHFONTLIST); + LIST_FOR_EACH_ENTRY_SAFE(ptr, next, &OLEFontImpl_hFontList, HFONTItem, entry) { - DeleteObject(this->gdiFont); - this->gdiFont = 0; + if ((ptr->gdiFont == hfont) && ptr->ref) + { + /* Remove from cache and delete object if not referenced */ + if (!--ptr->ref) + { + if (ptr->gdiFont == this->gdiFont) + this->gdiFont = NULL; + } + hres = S_OK; + break; + } } + LeaveCriticalSection(&OLEFontImpl_csHFONTLIST); - return S_OK; + return hres; } /************************************************************************ @@ -1247,6 +1099,40 @@ static HRESULT WINAPI OLEFontImpl_SetHdc( return E_NOTIMPL; } +/* + * Virtual function tables for the OLEFontImpl class. + */ +static const IFontVtbl OLEFontImpl_VTable = +{ + OLEFontImpl_QueryInterface, + OLEFontImpl_AddRef, + OLEFontImpl_Release, + OLEFontImpl_get_Name, + OLEFontImpl_put_Name, + OLEFontImpl_get_Size, + OLEFontImpl_put_Size, + OLEFontImpl_get_Bold, + OLEFontImpl_put_Bold, + OLEFontImpl_get_Italic, + OLEFontImpl_put_Italic, + OLEFontImpl_get_Underline, + OLEFontImpl_put_Underline, + OLEFontImpl_get_Strikethrough, + OLEFontImpl_put_Strikethrough, + OLEFontImpl_get_Weight, + OLEFontImpl_put_Weight, + OLEFontImpl_get_Charset, + OLEFontImpl_put_Charset, + OLEFontImpl_get_hFont, + OLEFontImpl_Clone, + OLEFontImpl_IsEqual, + OLEFontImpl_SetRatio, + OLEFontImpl_QueryTextMetrics, + OLEFontImpl_AddRefHfont, + OLEFontImpl_ReleaseHfont, + OLEFontImpl_SetHdc +}; + /************************************************************************ * OLEFontImpl_IDispatch_QueryInterface (IUnknown) * @@ -1298,9 +1184,10 @@ static HRESULT WINAPI OLEFontImpl_GetTypeInfoCount( unsigned int* pctinfo) { OLEFontImpl *this = impl_from_IDispatch(iface); - FIXME("(%p)->(%p): Stub\n", this, pctinfo); + TRACE("(%p)->(%p)\n", this, pctinfo); + *pctinfo = 1; - return E_NOTIMPL; + return S_OK; } /************************************************************************ @@ -1329,7 +1216,7 @@ static HRESULT WINAPI OLEFontImpl_GetTypeInfo( } hres = ITypeLib_GetTypeInfoOfGuid(tl, &IID_IFontDisp, ppTInfo); if (FAILED(hres)) { - FIXME("Did not IDispatch typeinfo from typelib, hres %lx\n",hres); + FIXME("Did not IDispatch typeinfo from typelib, hres %x\n",hres); } return hres; } @@ -1347,11 +1234,35 @@ static HRESULT WINAPI OLEFontImpl_GetIDsOfNames( LCID lcid, DISPID* rgDispId) { + ITypeInfo * pTInfo; + HRESULT hres; + OLEFontImpl *this = impl_from_IDispatch(iface); - FIXME("(%p,%s,%p,%d,%04x,%p), stub!\n", this, debugstr_guid(riid), rgszNames, - cNames, (int)lcid, rgDispId - ); - return E_NOTIMPL; + + TRACE("(%p,%s,%p,cNames=%d,lcid=%04x,%p)\n", this, debugstr_guid(riid), + rgszNames, cNames, (int)lcid, rgDispId); + + if (cNames == 0) + { + return E_INVALIDARG; + } + else + { + /* retrieve type information */ + hres = OLEFontImpl_GetTypeInfo(iface, 0, lcid, &pTInfo); + + if (FAILED(hres)) + { + ERR("GetTypeInfo failed.\n"); + return hres; + } + + /* convert names to DISPIDs */ + hres = DispGetIDsOfNames (pTInfo, rgszNames, cNames, rgDispId); + ITypeInfo_Release(pTInfo); + + return hres; + } } /************************************************************************ @@ -1375,169 +1286,227 @@ static HRESULT WINAPI OLEFontImpl_Invoke( UINT* puArgErr) { OLEFontImpl *this = impl_from_IDispatch(iface); - OLEFontImpl *xthis = (OLEFontImpl*)this; + HRESULT hr; + + TRACE("%p->(%d,%s,0x%x,0x%x,%p,%p,%p,%p)\n", this, dispIdMember, + debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExepInfo, + puArgErr); + + /* validate parameters */ + + if (!IsEqualIID(riid, &IID_NULL)) + { + ERR("riid was %s instead of IID_NULL\n", debugstr_guid(riid)); + return DISP_E_UNKNOWNINTERFACE; + } + + if (wFlags & DISPATCH_PROPERTYGET) + { + if (!pVarResult) + { + ERR("null pVarResult not allowed when DISPATCH_PROPERTYGET specified\n"); + return DISP_E_PARAMNOTOPTIONAL; + } + } + else if (wFlags & DISPATCH_PROPERTYPUT) + { + if (!pDispParams) + { + ERR("null pDispParams not allowed when DISPATCH_PROPERTYPUT specified\n"); + return DISP_E_PARAMNOTOPTIONAL; + } + if (pDispParams->cArgs != 1) + { + ERR("param count for DISPATCH_PROPERTYPUT was %d instead of 1\n", pDispParams->cArgs); + return DISP_E_BADPARAMCOUNT; + } + } + else + { + ERR("one of DISPATCH_PROPERTYGET or DISPATCH_PROPERTYPUT must be specified\n"); + return DISP_E_MEMBERNOTFOUND; + } switch (dispIdMember) { case DISPID_FONT_NAME: - switch (wFlags) { - case DISPATCH_PROPERTYGET: - case DISPATCH_PROPERTYGET|DISPATCH_METHOD: + if (wFlags & DISPATCH_PROPERTYGET) { V_VT(pVarResult) = VT_BSTR; - return OLEFontImpl_get_Name((IFont *)this, &V_BSTR(pVarResult)); - case DISPATCH_PROPERTYPUT: { - BSTR name; - BOOL freename; - - if (V_VT(&pDispParams->rgvarg[0]) == VT_DISPATCH) { - IFont *font; - HRESULT hr = S_OK; - - hr = IUnknown_QueryInterface(V_DISPATCH(&pDispParams->rgvarg[0]), &IID_IFont, (void **) &font); - if (FAILED(hr)) - { - FIXME("dispatch value for name property is not an OleFont, returning hr=0x%lx\n", hr); - return hr; - } + return IFont_get_Name((IFont *)this, &V_BSTR(pVarResult)); + } else { + VARIANTARG vararg; - hr = IFont_get_Name(font, &name); /* this allocates a new BSTR so free it later */ - if (FAILED(hr)) return hr; + VariantInit(&vararg); + hr = VariantChangeTypeEx(&vararg, &pDispParams->rgvarg[0], lcid, 0, VT_BSTR); + if (FAILED(hr)) + return hr; - IUnknown_Release(font); - - freename = TRUE; - } else if (V_VT(&pDispParams->rgvarg[0]) == VT_BSTR) { - name = V_BSTR(&pDispParams->rgvarg[0]); - freename = FALSE; - } else { - FIXME("app is trying to set name property with a non BSTR, non dispatch value. returning E_FAIL\n"); - return E_FAIL; - } + hr = IFont_put_Name((IFont *)this, V_BSTR(&vararg)); - TRACE("name is %s\n", debugstr_w(name)); - - if (!xthis->description.lpstrName) - xthis->description.lpstrName = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(name)+1) * sizeof(WCHAR)); - else - xthis->description.lpstrName = HeapReAlloc(GetProcessHeap(), 0, xthis->description.lpstrName, (lstrlenW(name)+1) * sizeof(WCHAR)); - - if (xthis->description.lpstrName==0) - return E_OUTOFMEMORY; - strcpyW(xthis->description.lpstrName, name); - - if (freename) SysFreeString(name); - - return S_OK; - } + VariantClear(&vararg); + return hr; } break; case DISPID_FONT_BOLD: - switch (wFlags) { - case DISPATCH_PROPERTYGET: - case DISPATCH_PROPERTYGET|DISPATCH_METHOD: + if (wFlags & DISPATCH_PROPERTYGET) { + BOOL value; + hr = IFont_get_Bold((IFont *)this, &value); V_VT(pVarResult) = VT_BOOL; - return OLEFontImpl_get_Bold((IFont *)this, (BOOL*)&V_BOOL(pVarResult)); - case DISPATCH_PROPERTYPUT: - if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) { - FIXME("DISPID_FONT_BOLD/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0])); - return E_FAIL; - } else { - xthis->description.sWeight = V_BOOL(&pDispParams->rgvarg[0]) ? FW_BOLD : FW_NORMAL; - return S_OK; - } + V_BOOL(pVarResult) = value ? VARIANT_TRUE : VARIANT_FALSE; + return hr; + } else { + VARIANTARG vararg; + + VariantInit(&vararg); + hr = VariantChangeTypeEx(&vararg, &pDispParams->rgvarg[0], lcid, 0, VT_BOOL); + if (FAILED(hr)) + return hr; + + hr = IFont_put_Bold((IFont *)this, V_BOOL(&vararg)); + + VariantClear(&vararg); + return hr; } break; case DISPID_FONT_ITALIC: - switch (wFlags) { - case DISPATCH_PROPERTYGET: - case DISPATCH_PROPERTYGET|DISPATCH_METHOD: + if (wFlags & DISPATCH_PROPERTYGET) { + BOOL value; + hr = IFont_get_Italic((IFont *)this, &value); V_VT(pVarResult) = VT_BOOL; - return OLEFontImpl_get_Italic((IFont *)this, (BOOL*)&V_BOOL(pVarResult)); - case DISPATCH_PROPERTYPUT: - if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) { - FIXME("DISPID_FONT_ITALIC/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0])); - return E_FAIL; - } else { - xthis->description.fItalic = V_BOOL(&pDispParams->rgvarg[0]); - return S_OK; - } + V_BOOL(pVarResult) = value ? VARIANT_TRUE : VARIANT_FALSE; + return hr; + } else { + VARIANTARG vararg; + HRESULT hr; + + VariantInit(&vararg); + hr = VariantChangeTypeEx(&vararg, &pDispParams->rgvarg[0], lcid, 0, VT_BOOL); + if (FAILED(hr)) + return hr; + + hr = IFont_put_Italic((IFont *)this, V_BOOL(&vararg)); + + VariantClear(&vararg); + return hr; } break; case DISPID_FONT_UNDER: - switch (wFlags) { - case DISPATCH_PROPERTYGET: - case DISPATCH_PROPERTYGET|DISPATCH_METHOD: + if (wFlags & DISPATCH_PROPERTYGET) { + BOOL value; + hr = IFont_get_Underline((IFont *)this, &value); V_VT(pVarResult) = VT_BOOL; - return OLEFontImpl_get_Underline((IFont *)this, (BOOL*)&V_BOOL(pVarResult)); - case DISPATCH_PROPERTYPUT: - if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) { - FIXME("DISPID_FONT_UNDER/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0])); - return E_FAIL; - } else { - xthis->description.fUnderline = V_BOOL(&pDispParams->rgvarg[0]); - return S_OK; - } + V_BOOL(pVarResult) = value ? VARIANT_TRUE : VARIANT_FALSE; + return hr; + } else { + VARIANTARG vararg; + HRESULT hr; + + VariantInit(&vararg); + hr = VariantChangeTypeEx(&vararg, &pDispParams->rgvarg[0], lcid, 0, VT_BOOL); + if (FAILED(hr)) + return hr; + + hr = IFont_put_Underline((IFont *)this, V_BOOL(&vararg)); + + VariantClear(&vararg); + return hr; } break; case DISPID_FONT_STRIKE: - switch (wFlags) { - case DISPATCH_PROPERTYGET: - case DISPATCH_PROPERTYGET|DISPATCH_METHOD: + if (wFlags & DISPATCH_PROPERTYGET) { + BOOL value; + hr = IFont_get_Strikethrough((IFont *)this, &value); V_VT(pVarResult) = VT_BOOL; - return OLEFontImpl_get_Strikethrough((IFont *)this, (BOOL*)&V_BOOL(pVarResult)); - case DISPATCH_PROPERTYPUT: - if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) { - FIXME("DISPID_FONT_STRIKE/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0])); - return E_FAIL; - } else { - xthis->description.fStrikethrough = V_BOOL(&pDispParams->rgvarg[0]); - return S_OK; - } + V_BOOL(pVarResult) = value ? VARIANT_TRUE : VARIANT_FALSE; + return hr; + } else { + VARIANTARG vararg; + HRESULT hr; + + VariantInit(&vararg); + hr = VariantChangeTypeEx(&vararg, &pDispParams->rgvarg[0], lcid, 0, VT_BOOL); + if (FAILED(hr)) + return hr; + + hr = IFont_put_Strikethrough((IFont *)this, V_BOOL(&vararg)); + + VariantClear(&vararg); + return hr; } break; case DISPID_FONT_SIZE: - switch (wFlags) { - case DISPATCH_PROPERTYPUT: { - assert (pDispParams->cArgs == 1); - xthis->description.cySize.s.Hi = 0; - if (V_VT(&pDispParams->rgvarg[0]) != VT_CY) { - if (V_VT(&pDispParams->rgvarg[0]) == VT_I2) { - xthis->description.cySize.s.Lo = V_I2(&pDispParams->rgvarg[0]) * 10000; - } else { - FIXME("property put for Size with vt %d unsupported!\n",V_VT(&pDispParams->rgvarg[0])); - } - } else { - xthis->description.cySize.s.Lo = V_CY(&pDispParams->rgvarg[0]).s.Lo; - } - return S_OK; - } - case DISPATCH_PROPERTYGET: - case DISPATCH_PROPERTYGET|DISPATCH_METHOD: + if (wFlags & DISPATCH_PROPERTYGET) { V_VT(pVarResult) = VT_CY; return OLEFontImpl_get_Size((IFont *)this, &V_CY(pVarResult)); + } else { + VARIANTARG vararg; + HRESULT hr; + + VariantInit(&vararg); + hr = VariantChangeTypeEx(&vararg, &pDispParams->rgvarg[0], lcid, 0, VT_CY); + if (FAILED(hr)) + return hr; + + hr = IFont_put_Size((IFont *)this, V_CY(&vararg)); + + VariantClear(&vararg); + return hr; + } + break; + case DISPID_FONT_WEIGHT: + if (wFlags & DISPATCH_PROPERTYGET) { + V_VT(pVarResult) = VT_I2; + return OLEFontImpl_get_Weight((IFont *)this, &V_I2(pVarResult)); + } else { + VARIANTARG vararg; + HRESULT hr; + + VariantInit(&vararg); + hr = VariantChangeTypeEx(&vararg, &pDispParams->rgvarg[0], lcid, 0, VT_I2); + if (FAILED(hr)) + return hr; + + hr = IFont_put_Weight((IFont *)this, V_I2(&vararg)); + + VariantClear(&vararg); + return hr; } break; case DISPID_FONT_CHARSET: - switch (wFlags) { - case DISPATCH_PROPERTYPUT: - assert (pDispParams->cArgs == 1); - if (V_VT(&pDispParams->rgvarg[0]) != VT_I2) - FIXME("varg of first disparg is not VT_I2, but %d\n",V_VT(&pDispParams->rgvarg[0])); - xthis->description.sCharset = V_I2(&pDispParams->rgvarg[0]); - return S_OK; - case DISPATCH_PROPERTYGET: - case DISPATCH_PROPERTYGET|DISPATCH_METHOD: + if (wFlags & DISPATCH_PROPERTYGET) { V_VT(pVarResult) = VT_I2; return OLEFontImpl_get_Charset((IFont *)this, &V_I2(pVarResult)); + } else { + VARIANTARG vararg; + HRESULT hr; + + VariantInit(&vararg); + hr = VariantChangeTypeEx(&vararg, &pDispParams->rgvarg[0], lcid, 0, VT_I2); + if (FAILED(hr)) + return hr; + + hr = IFont_put_Charset((IFont *)this, V_I2(&vararg)); + + VariantClear(&vararg); + return hr; } break; + default: + ERR("member not found for dispid 0x%x\n", dispIdMember); + return DISP_E_MEMBERNOTFOUND; } - FIXME("%p->(%ld,%s,%lx,%x,%p,%p,%p,%p), unhandled dispid/flag!\n", - this,dispIdMember,debugstr_guid(riid),lcid, - wFlags,pDispParams,pVarResult,pExepInfo,puArgErr - ); - return S_OK; } +static const IDispatchVtbl OLEFontImpl_IDispatch_VTable = +{ + OLEFontImpl_IDispatch_QueryInterface, + OLEFontImpl_IDispatch_AddRef, + OLEFontImpl_IDispatch_Release, + OLEFontImpl_GetTypeInfoCount, + OLEFontImpl_GetTypeInfo, + OLEFontImpl_GetIDsOfNames, + OLEFontImpl_Invoke +}; + /************************************************************************ * OLEFontImpl_IPersistStream_QueryInterface (IUnknown) * @@ -1847,6 +1816,18 @@ static HRESULT WINAPI OLEFontImpl_GetSizeMax( return S_OK; } +static const IPersistStreamVtbl OLEFontImpl_IPersistStream_VTable = +{ + OLEFontImpl_IPersistStream_QueryInterface, + OLEFontImpl_IPersistStream_AddRef, + OLEFontImpl_IPersistStream_Release, + OLEFontImpl_GetClassID, + OLEFontImpl_IsDirty, + OLEFontImpl_Load, + OLEFontImpl_Save, + OLEFontImpl_GetSizeMax +}; + /************************************************************************ * OLEFontImpl_IConnectionPointContainer_QueryInterface (IUnknown) * @@ -1916,7 +1897,7 @@ static HRESULT WINAPI OLEFontImpl_FindConnectionPoint( IConnectionPoint **ppCp) { OLEFontImpl *this = impl_from_IConnectionPointContainer(iface); - TRACE("(%p)->(%s, %p): stub\n", this, debugstr_guid(riid), ppCp); + TRACE("(%p)->(%s, %p)\n", this, debugstr_guid(riid), ppCp); if(IsEqualIID(riid, &IID_IPropertyNotifySink)) { return IConnectionPoint_QueryInterface(this->pPropertyNotifyCP, @@ -1932,6 +1913,16 @@ static HRESULT WINAPI OLEFontImpl_FindConnectionPoint( } } +static const IConnectionPointContainerVtbl + OLEFontImpl_IConnectionPointContainer_VTable = +{ + OLEFontImpl_IConnectionPointContainer_QueryInterface, + OLEFontImpl_IConnectionPointContainer_AddRef, + OLEFontImpl_IConnectionPointContainer_Release, + OLEFontImpl_EnumConnectionPoints, + OLEFontImpl_FindConnectionPoint +}; + /************************************************************************ * OLEFontImpl implementation of IPersistPropertyBag. */ @@ -2097,7 +2088,7 @@ static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_Load( } if (FAILED(iRes)) - WARN("-- 0x%08lx\n", iRes); + WARN("-- 0x%08x\n", iRes); return iRes; } @@ -2201,6 +2192,108 @@ static const IPersistStreamInitVtbl OLEFontImpl_IPersistStreamInit_VTable = OLEFontImpl_IPersistStreamInit_InitNew }; +/************************************************************************ + * OLEFontImpl_Construct + * + * This method will construct a new instance of the OLEFontImpl + * class. + * + * The caller of this method must release the object when it's + * done with it. + */ +static OLEFontImpl* OLEFontImpl_Construct(LPFONTDESC fontDesc) +{ + OLEFontImpl* newObject = 0; + + /* + * Allocate space for the object. + */ + newObject = HeapAlloc(GetProcessHeap(), 0, sizeof(OLEFontImpl)); + + if (newObject==0) + return newObject; + + /* + * Initialize the virtual function table. + */ + newObject->lpVtbl = &OLEFontImpl_VTable; + newObject->lpvtblIDispatch = &OLEFontImpl_IDispatch_VTable; + newObject->lpvtblIPersistStream = &OLEFontImpl_IPersistStream_VTable; + newObject->lpvtblIConnectionPointContainer = &OLEFontImpl_IConnectionPointContainer_VTable; + newObject->lpvtblIPersistPropertyBag = &OLEFontImpl_IPersistPropertyBag_VTable; + newObject->lpvtblIPersistStreamInit = &OLEFontImpl_IPersistStreamInit_VTable; + + /* + * Start with one reference count. The caller of this function + * must release the interface pointer when it is done. + */ + newObject->ref = 1; + + /* + * Copy the description of the font in the object. + */ + assert(fontDesc->cbSizeofstruct >= sizeof(FONTDESC)); + + newObject->description.cbSizeofstruct = sizeof(FONTDESC); + newObject->description.lpstrName = HeapAlloc(GetProcessHeap(), + 0, + (lstrlenW(fontDesc->lpstrName)+1) * sizeof(WCHAR)); + strcpyW(newObject->description.lpstrName, fontDesc->lpstrName); + newObject->description.cySize = fontDesc->cySize; + newObject->description.sWeight = fontDesc->sWeight; + newObject->description.sCharset = fontDesc->sCharset; + newObject->description.fItalic = fontDesc->fItalic; + newObject->description.fUnderline = fontDesc->fUnderline; + newObject->description.fStrikethrough = fontDesc->fStrikethrough; + + /* + * Initializing all the other members. + */ + newObject->gdiFont = 0; + newObject->cyLogical = 72L; + newObject->cyHimetric = 2540L; + newObject->pPropertyNotifyCP = NULL; + newObject->pFontEventsCP = NULL; + + CreateConnectionPoint((IUnknown*)newObject, &IID_IPropertyNotifySink, &newObject->pPropertyNotifyCP); + CreateConnectionPoint((IUnknown*)newObject, &IID_IFontEventsDisp, &newObject->pFontEventsCP); + + if (!newObject->pPropertyNotifyCP || !newObject->pFontEventsCP) + { + OLEFontImpl_Destroy(newObject); + return NULL; + } + + InterlockedIncrement(&ifont_cnt); + + TRACE("returning %p\n", newObject); + return newObject; +} + +/************************************************************************ + * OLEFontImpl_Destroy + * + * This method is called by the Release method when the reference + * count goes down to 0. It will free all resources used by + * this object. + */ +static void OLEFontImpl_Destroy(OLEFontImpl* fontDesc) +{ + TRACE("(%p)\n", fontDesc); + + HeapFree(GetProcessHeap(), 0, fontDesc->description.lpstrName); + + if (fontDesc->gdiFont!=0) + DeleteObject(fontDesc->gdiFont); + + if (fontDesc->pPropertyNotifyCP) + IConnectionPoint_Release(fontDesc->pPropertyNotifyCP); + if (fontDesc->pFontEventsCP) + IConnectionPoint_Release(fontDesc->pFontEventsCP); + + HeapFree(GetProcessHeap(), 0, fontDesc); +} + /******************************************************************************* * StdFont ClassFactory */ diff --git a/reactos/dll/win32/oleaut32/olepicture.c b/reactos/dll/win32/oleaut32/olepicture.c index 04412352b71..6485c7d1007 100644 --- a/reactos/dll/win32/oleaut32/olepicture.c +++ b/reactos/dll/win32/oleaut32/olepicture.c @@ -18,7 +18,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * BUGS * @@ -48,16 +48,6 @@ /* Must be before wine includes, the header has things conflicting with * WINE headers. */ -#ifdef HAVE_GIF_LIB_H -# include -# ifndef SONAME_LIBUNGIF -# define SONAME_LIBUNGIF "libungif.so" -# endif -# ifndef SONAME_LIBGIF -# define SONAME_LIBGIF "libgif.so" -# endif -#endif - #define COBJMACROS #define NONAMELESSUNION #define NONAMELESSSTRUCT @@ -83,13 +73,17 @@ #define UINT8 JPEG_UINT8 #define UINT16 JPEG_UINT16 #undef FAR +#define boolean jpeg_boolean # include +#undef jpeg_boolean #undef UINT16 #ifndef SONAME_LIBJPEG #define SONAME_LIBJPEG "libjpeg.so" #endif #endif +#include "ungif.h" + WINE_DEFAULT_DEBUG_CHANNEL(ole); #include "pshpack1.h" @@ -306,12 +300,8 @@ static OLEPictureImpl* OLEPictureImpl_Construct(LPPICTDESC pictDesc, BOOL fOwn) newObject->bIsDirty = FALSE; if (pictDesc) { - if(pictDesc->cbSizeofstruct != sizeof(PICTDESC)) { - FIXME("struct size = %d\n", pictDesc->cbSizeofstruct); - } memcpy(&newObject->desc, pictDesc, sizeof(PICTDESC)); - switch(pictDesc->picType) { case PICTYPE_BITMAP: OLEPictureImpl_SetBitmap(newObject); @@ -398,7 +388,7 @@ static ULONG WINAPI OLEPictureImpl_AddRef( OLEPictureImpl *This = (OLEPictureImpl *)iface; ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(ref before=%ld)\n", This, refCount - 1); + TRACE("(%p)->(ref before=%d)\n", This, refCount - 1); return refCount; } @@ -414,7 +404,7 @@ static ULONG WINAPI OLEPictureImpl_Release( OLEPictureImpl *This = (OLEPictureImpl *)iface; ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(ref before=%ld)\n", This, refCount + 1); + TRACE("(%p)->(ref before=%d)\n", This, refCount + 1); /* * If the reference count goes down to 0, perform suicide. @@ -451,30 +441,17 @@ static HRESULT WINAPI OLEPictureImpl_QueryInterface( /* * Compare the riid with the interface IDs implemented by this object. */ - if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0) - { + if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IPicture, riid)) *ppvObject = (IPicture*)This; - } - else if (memcmp(&IID_IPicture, riid, sizeof(IID_IPicture)) == 0) - { - *ppvObject = (IPicture*)This; - } - else if (memcmp(&IID_IDispatch, riid, sizeof(IID_IDispatch)) == 0) - { + else if (IsEqualIID(&IID_IDispatch, riid)) *ppvObject = (IDispatch*)&(This->lpvtblIDispatch); - } - else if (memcmp(&IID_IPictureDisp, riid, sizeof(IID_IPictureDisp)) == 0) - { + else if (IsEqualIID(&IID_IPictureDisp, riid)) *ppvObject = (IDispatch*)&(This->lpvtblIDispatch); - } - else if (memcmp(&IID_IPersistStream, riid, sizeof(IID_IPersistStream)) == 0) - { - *ppvObject = (IPersistStream*)&(This->lpvtblIPersistStream); - } - else if (memcmp(&IID_IConnectionPointContainer, riid, sizeof(IID_IConnectionPointContainer)) == 0) - { - *ppvObject = (IConnectionPointContainer*)&(This->lpvtblIConnectionPointContainer); - } + else if (IsEqualIID(&IID_IPersist, riid) || IsEqualIID(&IID_IPersistStream, riid)) + *ppvObject = (IPersistStream*)&(This->lpvtblIPersistStream); + else if (IsEqualIID(&IID_IConnectionPointContainer, riid)) + *ppvObject = (IConnectionPointContainer*)&(This->lpvtblIConnectionPointContainer); + /* * Check that we obtained an interface. */ @@ -583,7 +560,7 @@ static HRESULT WINAPI OLEPictureImpl_get_hPal(IPicture *iface, hres = S_OK; } - TRACE("returning 0x%08lx, palette handle %08x\n", hres, *phandle); + TRACE("returning 0x%08x, palette handle %08x\n", hres, *phandle); return hres; } @@ -606,7 +583,7 @@ static HRESULT WINAPI OLEPictureImpl_get_Width(IPicture *iface, OLE_XSIZE_HIMETRIC *pwidth) { OLEPictureImpl *This = (OLEPictureImpl *)iface; - TRACE("(%p)->(%p): width is %ld\n", This, pwidth, This->himetricWidth); + TRACE("(%p)->(%p): width is %d\n", This, pwidth, This->himetricWidth); *pwidth = This->himetricWidth; return S_OK; } @@ -618,7 +595,7 @@ static HRESULT WINAPI OLEPictureImpl_get_Height(IPicture *iface, OLE_YSIZE_HIMETRIC *pheight) { OLEPictureImpl *This = (OLEPictureImpl *)iface; - TRACE("(%p)->(%p): height is %ld\n", This, pheight, This->himetricHeight); + TRACE("(%p)->(%p): height is %d\n", This, pheight, This->himetricHeight); *pheight = This->himetricHeight; return S_OK; } @@ -635,10 +612,10 @@ static HRESULT WINAPI OLEPictureImpl_Render(IPicture *iface, HDC hdc, LPCRECT prcWBounds) { OLEPictureImpl *This = (OLEPictureImpl *)iface; - TRACE("(%p)->(%p, (%ld,%ld), (%ld,%ld) <- (%ld,%ld), (%ld,%ld), %p)\n", + TRACE("(%p)->(%p, (%d,%d), (%d,%d) <- (%d,%d), (%d,%d), %p)\n", This, hdc, x, y, cx, cy, xSrc, ySrc, cxSrc, cySrc, prcWBounds); if(prcWBounds) - TRACE("prcWBounds (%ld,%ld) - (%ld,%ld)\n", prcWBounds->left, prcWBounds->top, + TRACE("prcWBounds (%d,%d) - (%d,%d)\n", prcWBounds->left, prcWBounds->top, prcWBounds->right, prcWBounds->bottom); /* @@ -932,9 +909,9 @@ static ULONG WINAPI OLEPictureImpl_IPersistStream_Release( static HRESULT WINAPI OLEPictureImpl_GetClassID( IPersistStream* iface,CLSID* pClassID) { - OLEPictureImpl *This = impl_from_IPersistStream(iface); - FIXME("(%p),stub!\n",This); - return E_FAIL; + TRACE("(%p)\n", pClassID); + memcpy(pClassID, &CLSID_StdPicture, sizeof(*pClassID)); + return S_OK; } /************************************************************************ @@ -1004,41 +981,12 @@ static boolean _jpeg_resync_to_restart(j_decompress_ptr cinfo, int desired) { static void _jpeg_term_source(j_decompress_ptr cinfo) { } #endif /* HAVE_JPEGLIB_H */ -#ifdef HAVE_GIF_LIB_H - -static void *libungif_handle; -#define MAKE_FUNCPTR(f) static typeof(f) * p##f -MAKE_FUNCPTR(DGifOpen); -MAKE_FUNCPTR(DGifSlurp); -MAKE_FUNCPTR(DGifCloseFile); -#undef MAKE_FUNCPTR - struct gifdata { unsigned char *data; unsigned int curoff; unsigned int len; }; -static void *load_libungif(void) -{ - if(((libungif_handle = wine_dlopen(SONAME_LIBUNGIF, RTLD_NOW, NULL, 0)) != NULL) || - ((libungif_handle = wine_dlopen(SONAME_LIBGIF , RTLD_NOW, NULL, 0)) != NULL) - ) { - -#define LOAD_FUNCPTR(f) \ - if((p##f = wine_dlsym(libungif_handle, #f, NULL, 0)) == NULL) { \ - libungif_handle = NULL; \ - return NULL; \ - } - - LOAD_FUNCPTR(DGifOpen); - LOAD_FUNCPTR(DGifSlurp); - LOAD_FUNCPTR(DGifCloseFile); -#undef LOAD_FUNCPTR - } - return libungif_handle; -} - static int _gif_inputfunc(GifFileType *gif, GifByteType *data, int len) { struct gifdata *gd = (struct gifdata*)gif->UserData; @@ -1051,12 +999,9 @@ static int _gif_inputfunc(GifFileType *gif, GifByteType *data, int len) { return len; } -#endif /* HAVE_GIF_LIB_H */ - static HRESULT OLEPictureImpl_LoadGif(OLEPictureImpl *This, BYTE *xbuf, ULONG xread) { -#ifdef HAVE_GIF_LIB_H struct gifdata gd; GifFileType *gif; BITMAPINFO *bmi; @@ -1070,18 +1015,11 @@ static HRESULT OLEPictureImpl_LoadGif(OLEPictureImpl *This, BYTE *xbuf, ULONG xr ExtensionBlock *eb; int padding; - if(!libungif_handle) { - if(!load_libungif()) { - FIXME("Failed reading GIF because unable to find %s/%s\n", SONAME_LIBUNGIF, SONAME_LIBGIF); - return E_FAIL; - } - } - gd.data = xbuf; gd.curoff = 0; gd.len = xread; - gif = pDGifOpen((void*)&gd, _gif_inputfunc); - ret = pDGifSlurp(gif); + gif = DGifOpen((void*)&gd, _gif_inputfunc); + ret = DGifSlurp(gif); if (ret == GIF_ERROR) { FIXME("Failed reading GIF using libgif.\n"); return E_FAIL; @@ -1253,13 +1191,9 @@ static HRESULT OLEPictureImpl_LoadGif(OLEPictureImpl *This, BYTE *xbuf, ULONG xr DeleteDC(hdcref); This->desc.picType = PICTYPE_BITMAP; OLEPictureImpl_SetBitmap(This); - pDGifCloseFile(gif); + DGifCloseFile(gif); HeapFree(GetProcessHeap(),0,bytes); return S_OK; -#else - FIXME("Trying to load GIF, but no support for libgif/libungif compiled in.\n"); - return E_FAIL; -#endif } static HRESULT OLEPictureImpl_LoadJpeg(OLEPictureImpl *This, BYTE *xbuf, ULONG xread) @@ -1466,6 +1400,7 @@ static HRESULT WINAPI OLEPictureImpl_Load(IPersistStream* iface,IStream*pStm) { BOOL headerisdata = FALSE; BOOL statfailed = FALSE; ULONG xread, toread; + ULONG headerread; BYTE *xbuf; DWORD header[2]; WORD magic; @@ -1492,36 +1427,48 @@ static HRESULT WINAPI OLEPictureImpl_Load(IPersistStream* iface,IStream*pStm) { */ hr=IStream_Stat(pStm,&statstg,STATFLAG_NONAME); if (hr) { - TRACE("stat failed with hres %lx, proceeding to read all data.\n",hr); + TRACE("stat failed with hres %x, proceeding to read all data.\n",hr); statfailed = TRUE; /* we will read at least 8 byte ... just right below */ statstg.cbSize.QuadPart = 8; } - hr=IStream_Read(pStm,header,8,&xread); - if (hr || xread!=8) { - FIXME("Failure while reading picture header (hr is %lx, nread is %ld).\n",hr,xread); - return hr; - } + toread = 0; + headerread = 0; headerisdata = FALSE; - xread = 0; - if (!memcmp(&(header[0]),"lt\0\0", 4) && (header[1] <= statstg.cbSize.QuadPart-8)) { - toread = header[1]; - } else { - if (!memcmp(&(header[0]), "GIF8", 4) || /* GIF header */ - !memcmp(&(header[0]), "BM", 2) || /* BMP header */ - !memcmp(&(header[0]), "\xff\xd8", 2) || /* JPEG header */ - (header[1] > statstg.cbSize.QuadPart)|| /* invalid size */ - (header[1]==0) - ) {/* Incorrect header, assume none. */ - headerisdata = TRUE; - toread = statstg.cbSize.QuadPart-8; - xread = 8; - } else { - FIXME("Unknown stream header magic: %08lx\n", header[0]); - toread = header[1]; + do { + hr=IStream_Read(pStm,header,8,&xread); + if (hr || xread!=8) { + FIXME("Failure while reading picture header (hr is %x, nread is %d).\n",hr,xread); + return hr; } - } + headerread += xread; + xread = 0; + + if (!memcmp(&(header[0]),"lt\0\0", 4) && (statfailed || (header[1] + headerread <= statstg.cbSize.QuadPart))) { + if (toread != 0 && toread != header[1]) + FIXME("varying lengths of image data (prev=%u curr=%u), only last one will be used\n", + toread, header[1]); + toread = header[1]; + if (toread == 0) break; + } else { + if (!memcmp(&(header[0]), "GIF8", 4) || /* GIF header */ + !memcmp(&(header[0]), "BM", 2) || /* BMP header */ + !memcmp(&(header[0]), "\xff\xd8", 2) || /* JPEG header */ + (header[1] > statstg.cbSize.QuadPart)|| /* invalid size */ + (header[1]==0) + ) {/* Found start of bitmap data */ + headerisdata = TRUE; + if (toread == 0) + toread = statstg.cbSize.QuadPart-8; + else toread -= 8; + xread = 8; + } else { + FIXME("Unknown stream header magic: %08x\n", header[0]); + toread = header[1]; + } + } + } while (!headerisdata); if (statfailed) { /* we don't know the size ... read all we get */ int sizeinc = 4096; @@ -1548,8 +1495,8 @@ static HRESULT WINAPI OLEPictureImpl_Load(IPersistStream* iface,IStream*pStm) { } } if (hr) - TRACE("hr in no-stat loader case is %08lx\n", hr); - TRACE("loaded %ld bytes.\n", xread); + TRACE("hr in no-stat loader case is %08x\n", hr); + TRACE("loaded %d bytes.\n", xread); This->datalen = xread; This->data = xbuf; } else { @@ -1567,7 +1514,7 @@ static HRESULT WINAPI OLEPictureImpl_Load(IPersistStream* iface,IStream*pStm) { break; } if (xread != This->datalen) - FIXME("Could only read %ld of %d bytes out of stream?\n",xread,This->datalen); + FIXME("Could only read %d of %d bytes out of stream?\n",xread,This->datalen); } if (This->datalen == 0) { /* Marks the "NONE" picture */ This->desc.picType = PICTYPE_NONE; @@ -1597,7 +1544,7 @@ static HRESULT WINAPI OLEPictureImpl_Load(IPersistStream* iface,IStream*pStm) { default: { unsigned int i; - FIXME("Unknown magic %04x, %ld read bytes:\n",magic,xread); + FIXME("Unknown magic %04x, %d read bytes:\n",magic,xread); hr=E_FAIL; for (i=0;ibmiHeader.biBitCount); FIXME("DEBUG: bitmap nplanes is %d\n", pInfoBitmap->bmiHeader.biPlanes); - FIXME("DEBUG: bitmap biSizeImage is %lu\n", + FIXME("DEBUG: bitmap biSizeImage is %u\n", pInfoBitmap->bmiHeader.biSizeImage); */ /* Let's start with one CURSORICONFILEDIR and one CURSORICONFILEDIRENTRY */ @@ -1797,7 +1744,7 @@ static int serializeIcon(HICON hIcon, void ** ppBuffer, unsigned int * pLength) && GetDIBits(hDC, infoIcon.hbmMask, 0, pIconEntry->bHeight, pIconData + iOffsetMaskData, pInfoBitmap, DIB_RGB_COLORS))) { - printf("ERROR: unable to get bitmap mask (error %lu)\n", + printf("ERROR: unable to get bitmap mask (error %u)\n", GetLastError()); } @@ -1810,7 +1757,7 @@ static int serializeIcon(HICON hIcon, void ** ppBuffer, unsigned int * pLength) iSuccess = 1; } else { /* - printf("ERROR: unable to get bitmap information via GetDIBits() (error %lu)\n", + printf("ERROR: unable to get bitmap information via GetDIBits() (error %u)\n", GetLastError()); */ } @@ -1827,7 +1774,7 @@ static int serializeIcon(HICON hIcon, void ** ppBuffer, unsigned int * pLength) if (infoIcon.hbmColor) DeleteObject(infoIcon.hbmColor); HeapFree(GetProcessHeap(), 0, pInfoBitmap); } else { - printf("ERROR: Unable to get icon information (error %lu)\n", + printf("ERROR: Unable to get icon information (error %u)\n", GetLastError()); } return iSuccess; @@ -1841,41 +1788,32 @@ static HRESULT WINAPI OLEPictureImpl_Save( unsigned int iDataSize; ULONG dummy; int iSerializeResult = 0; + OLEPictureImpl *This = impl_from_IPersistStream(iface); - OLEPictureImpl *This = impl_from_IPersistStream(iface); + TRACE("%p %p %d\n", This, pStm, fClearDirty); switch (This->desc.picType) { case PICTYPE_ICON: - if (This->bIsDirty) { - if (serializeIcon(This->desc.u.icon.hicon, &pIconData, &iDataSize)) { - if (This->loadtime_magic != 0xdeadbeef) { - DWORD header[2]; - - header[0] = This->loadtime_magic; - header[1] = iDataSize; - IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy); - } - IStream_Write(pStm, pIconData, iDataSize, &dummy); - - HeapFree(GetProcessHeap(), 0, This->data); - This->data = pIconData; - This->datalen = iDataSize; - hResult = S_OK; - } else { - FIXME("(%p,%p,%d), unable to serializeIcon()!\n",This,pStm,fClearDirty); + if (This->bIsDirty || !This->data) { + if (!serializeIcon(This->desc.u.icon.hicon, &pIconData, &iDataSize)) { + ERR("(%p,%p,%d), serializeIcon() failed\n", This, pStm, fClearDirty); hResult = E_FAIL; + break; } - } else { - if (This->loadtime_magic != 0xdeadbeef) { - DWORD header[2]; - - header[0] = This->loadtime_magic; - header[1] = This->datalen; - IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy); - } - IStream_Write(pStm, This->data, This->datalen, &dummy); - hResult = S_OK; + HeapFree(GetProcessHeap(), 0, This->data); + This->data = pIconData; + This->datalen = iDataSize; } + if (This->loadtime_magic != 0xdeadbeef) { + DWORD header[2]; + + header[0] = This->loadtime_magic; + header[1] = This->datalen; + IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy); + } + IStream_Write(pStm, This->data, This->datalen, &dummy); + + hResult = S_OK; break; case PICTYPE_BITMAP: if (This->bIsDirty) { @@ -2003,9 +1941,11 @@ static HRESULT WINAPI OLEPictureImpl_GetTypeInfoCount( IDispatch* iface, unsigned int* pctinfo) { - FIXME("():Stub\n"); + TRACE("(%p)\n", pctinfo); - return E_NOTIMPL; + *pctinfo = 1; + + return S_OK; } /************************************************************************ @@ -2019,9 +1959,27 @@ static HRESULT WINAPI OLEPictureImpl_GetTypeInfo( LCID lcid, ITypeInfo** ppTInfo) { - FIXME("():Stub\n"); + static const WCHAR stdole2tlb[] = {'s','t','d','o','l','e','2','.','t','l','b',0}; + ITypeLib *tl; + HRESULT hres; - return E_NOTIMPL; + TRACE("(iTInfo=%d, lcid=%04x, %p)\n", iTInfo, (int)lcid, ppTInfo); + + if (iTInfo != 0) + return E_FAIL; + + hres = LoadTypeLib(stdole2tlb, &tl); + if (FAILED(hres)) + { + ERR("Could not load stdole2.tlb\n"); + return hres; + } + + hres = ITypeLib_GetTypeInfoOfGuid(tl, &IID_IPictureDisp, ppTInfo); + if (FAILED(hres)) + ERR("Did not get IPictureDisp typeinfo from typelib, hres %x\n", hres); + + return hres; } /************************************************************************ @@ -2059,30 +2017,105 @@ static HRESULT WINAPI OLEPictureImpl_Invoke( UINT* puArgErr) { OLEPictureImpl *This = impl_from_IDispatch(iface); - if (dispIdMember == DISPID_PICT_TYPE) - { - TRACE("DISPID_PICT_TYPE\n"); - if (!(wFlags & INVOKE_PROPERTYGET)) - return DISP_E_PARAMNOTFOUND; - if (pDispParams->cArgs != 0) - return DISP_E_BADPARAMCOUNT; - if (pVarResult) - { - VariantInit(pVarResult); - V_VT(pVarResult) = VT_I2; - return OLEPictureImpl_get_Type((IPicture *)&This->lpVtbl, &V_I2(pVarResult)); - } - return S_OK; - } - else - { - FIXME("(dispid: %ld):Stub\n",dispIdMember); - VariantInit(pVarResult); - V_VT(pVarResult) = VT_BOOL; - V_BOOL(pVarResult) = FALSE; - return S_OK; + /* validate parameters */ + + if (!IsEqualIID(riid, &IID_NULL)) + { + ERR("riid was %s instead of IID_NULL\n", debugstr_guid(riid)); + return DISP_E_UNKNOWNNAME; } + + if (!pDispParams) + { + ERR("null pDispParams not allowed\n"); + return DISP_E_PARAMNOTOPTIONAL; + } + + if (wFlags & DISPATCH_PROPERTYGET) + { + if (pDispParams->cArgs != 0) + { + ERR("param count for DISPATCH_PROPERTYGET was %d instead of 0\n", pDispParams->cArgs); + return DISP_E_BADPARAMCOUNT; + } + if (!pVarResult) + { + ERR("null pVarResult not allowed when DISPATCH_PROPERTYGET specified\n"); + return DISP_E_PARAMNOTOPTIONAL; + } + } + else if (wFlags & DISPATCH_PROPERTYPUT) + { + if (pDispParams->cArgs != 1) + { + ERR("param count for DISPATCH_PROPERTYPUT was %d instead of 1\n", pDispParams->cArgs); + return DISP_E_BADPARAMCOUNT; + } + } + + switch (dispIdMember) + { + case DISPID_PICT_HANDLE: + if (wFlags & DISPATCH_PROPERTYGET) + { + TRACE("DISPID_PICT_HANDLE\n"); + V_VT(pVarResult) = VT_I4; + return IPicture_get_Handle((IPicture *)&This->lpVtbl, &V_UINT(pVarResult)); + } + break; + case DISPID_PICT_HPAL: + if (wFlags & DISPATCH_PROPERTYGET) + { + TRACE("DISPID_PICT_HPAL\n"); + V_VT(pVarResult) = VT_I4; + return IPicture_get_hPal((IPicture *)&This->lpVtbl, &V_UINT(pVarResult)); + } + else if (wFlags & DISPATCH_PROPERTYPUT) + { + VARIANTARG vararg; + HRESULT hr; + TRACE("DISPID_PICT_HPAL\n"); + + VariantInit(&vararg); + hr = VariantChangeTypeEx(&vararg, &pDispParams->rgvarg[0], lcid, 0, VT_I4); + if (FAILED(hr)) + return hr; + + hr = IPicture_set_hPal((IPicture *)&This->lpVtbl, V_I4(&vararg)); + + VariantClear(&vararg); + return hr; + } + break; + case DISPID_PICT_TYPE: + if (wFlags & DISPATCH_PROPERTYGET) + { + TRACE("DISPID_PICT_TYPE\n"); + V_VT(pVarResult) = VT_I2; + return OLEPictureImpl_get_Type((IPicture *)&This->lpVtbl, &V_I2(pVarResult)); + } + break; + case DISPID_PICT_WIDTH: + if (wFlags & DISPATCH_PROPERTYGET) + { + TRACE("DISPID_PICT_WIDTH\n"); + V_VT(pVarResult) = VT_I4; + return IPicture_get_Width((IPicture *)&This->lpVtbl, &V_I4(pVarResult)); + } + break; + case DISPID_PICT_HEIGHT: + if (wFlags & DISPATCH_PROPERTYGET) + { + TRACE("DISPID_PICT_HEIGHT\n"); + V_VT(pVarResult) = VT_I4; + return IPicture_get_Height((IPicture *)&This->lpVtbl, &V_I4(pVarResult)); + } + break; + } + + ERR("invalid dispid 0x%x or wFlags 0x%x\n", dispIdMember, wFlags); + return DISP_E_MEMBERNOTFOUND; } @@ -2148,7 +2181,7 @@ HRESULT WINAPI OleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid, OLEPictureImpl* newPict = NULL; HRESULT hr = S_OK; - TRACE("(%p,%p,%d,%p)\n", lpPictDesc, riid, fOwn, ppvObj); + TRACE("(%p,%s,%d,%p)\n", lpPictDesc, debugstr_guid(riid), fOwn, ppvObj); /* * Sanity check @@ -2191,7 +2224,7 @@ HRESULT WINAPI OleLoadPicture( LPSTREAM lpstream, LONG lSize, BOOL fRunmode, IPicture *newpic; HRESULT hr; - TRACE("(%p,%ld,%d,%s,%p), partially implemented.\n", + TRACE("(%p,%d,%d,%s,%p), partially implemented.\n", lpstream, lSize, fRunmode, debugstr_guid(riid), ppvObj); hr = OleCreatePictureIndirect(NULL,riid,!fRunmode,(LPVOID*)&newpic); @@ -2223,7 +2256,7 @@ HRESULT WINAPI OleLoadPictureEx( LPSTREAM lpstream, LONG lSize, BOOL fRunmode, IPicture *newpic; HRESULT hr; - FIXME("(%p,%ld,%d,%s,x=%ld,y=%ld,f=%lx,%p), partially implemented.\n", + FIXME("(%p,%d,%d,%s,x=%d,y=%d,f=%x,%p), partially implemented.\n", lpstream, lSize, fRunmode, debugstr_guid(riid), xsiz, ysiz, flags, ppvObj); hr = OleCreatePictureIndirect(NULL,riid,!fRunmode,(LPVOID*)&newpic); @@ -2263,7 +2296,7 @@ HRESULT WINAPI OleLoadPicturePath( LPOLESTR szURLorPath, LPUNKNOWN punkCaller, IPersistStream *pStream; HRESULT hRes; - TRACE("(%s,%p,%ld,%08lx,%s,%p): stub\n", + TRACE("(%s,%p,%d,%08x,%s,%p): stub\n", debugstr_w(szURLorPath), punkCaller, dwReserved, clrReserved, debugstr_guid(riid), ppvRet); diff --git a/reactos/dll/win32/oleaut32/recinfo.c b/reactos/dll/win32/oleaut32/recinfo.c index 47c8bd734dc..97a9545b19c 100644 --- a/reactos/dll/win32/oleaut32/recinfo.c +++ b/reactos/dll/win32/oleaut32/recinfo.c @@ -13,7 +13,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -157,7 +157,7 @@ static ULONG WINAPI IRecordInfoImpl_AddRef(IRecordInfo *iface) { IRecordInfoImpl *This = (IRecordInfoImpl*)iface; ULONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) -> %ld\n", This, ref); + TRACE("(%p) -> %d\n", This, ref); return ref; } @@ -166,7 +166,7 @@ static ULONG WINAPI IRecordInfoImpl_Release(IRecordInfo *iface) IRecordInfoImpl *This = (IRecordInfoImpl*)iface; ULONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) -> %ld\n", This, ref); + TRACE("(%p) -> %d\n", This, ref); if(!ref) { int i; @@ -365,7 +365,7 @@ static HRESULT WINAPI IRecordInfoImpl_PutField(IRecordInfo *iface, ULONG wFlags, IRecordInfoImpl *This = (IRecordInfoImpl*)iface; int i; - TRACE("(%p)->(%08lx %p %s %p)\n", This, wFlags, pvData, debugstr_w(szFieldName), + TRACE("(%p)->(%08x %p %s %p)\n", This, wFlags, pvData, debugstr_w(szFieldName), pvarField); if(!pvData || !szFieldName || !pvarField @@ -393,7 +393,7 @@ static HRESULT WINAPI IRecordInfoImpl_PutFieldNoCopy(IRecordInfo *iface, ULONG w IRecordInfoImpl *This = (IRecordInfoImpl*)iface; int i; - FIXME("(%p)->(%08lx %p %s %p) stub\n", This, wFlags, pvData, debugstr_w(szFieldName), pvarField); + FIXME("(%p)->(%08x %p %s %p) stub\n", This, wFlags, pvData, debugstr_w(szFieldName), pvarField); if(!pvData || !szFieldName || !pvarField || (wFlags != INVOKE_PROPERTYPUTREF && wFlags != INVOKE_PROPERTYPUT)) @@ -512,7 +512,7 @@ HRESULT WINAPI GetRecordInfoFromGuids(REFGUID rGuidTypeLib, ULONG uVerMajor, ITypeLib *pTypeLib; HRESULT hres; - TRACE("(%p,%ld,%ld,%ld,%p,%p)\n", rGuidTypeLib, uVerMajor, uVerMinor, + TRACE("(%p,%d,%d,%d,%p,%p)\n", rGuidTypeLib, uVerMajor, uVerMinor, lcid, rGuidTypeInfo, ppRecInfo); hres = LoadRegTypeLib(rGuidTypeLib, uVerMajor, uVerMinor, lcid, &pTypeLib); @@ -551,7 +551,7 @@ HRESULT WINAPI GetRecordInfoFromTypeInfo(ITypeInfo* pTI, IRecordInfo** ppRecInfo hres = ITypeInfo_GetTypeAttr(pTI, &typeattr); if(FAILED(hres) || !typeattr) { - WARN("GetTypeAttr failed: %08lx\n", hres); + WARN("GetTypeAttr failed: %08x\n", hres); return hres; } @@ -560,7 +560,7 @@ HRESULT WINAPI GetRecordInfoFromTypeInfo(ITypeInfo* pTI, IRecordInfo** ppRecInfo memcpy(&guid, &typeattr->guid, sizeof(GUID)); ITypeInfo_ReleaseTypeAttr(pTI, typeattr); if(FAILED(hres)) { - WARN("GetRefTypeInfo failed: %08lx\n", hres); + WARN("GetRefTypeInfo failed: %08x\n", hres); return hres; } ITypeInfo_GetTypeAttr(pTypeInfo, &typeattr); @@ -611,7 +611,7 @@ HRESULT WINAPI GetRecordInfoFromTypeInfo(ITypeInfo* pTI, IRecordInfo** ppRecInfo hres = ITypeInfo_GetDocumentation(pTypeInfo, vardesc->memid, &ret->fields[i].name, NULL, NULL, NULL); if(FAILED(hres)) - WARN("GetDocumentation failed: %08lx\n", hres); + WARN("GetDocumentation failed: %08x\n", hres); ITypeInfo_ReleaseVarDesc(pTypeInfo, vardesc); } diff --git a/reactos/dll/win32/oleaut32/regsvr.c b/reactos/dll/win32/oleaut32/regsvr.c index fc92295c1f1..b1dd7140134 100644 --- a/reactos/dll/win32/oleaut32/regsvr.c +++ b/reactos/dll/win32/oleaut32/regsvr.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -30,6 +30,8 @@ #include "ole2.h" #include "olectl.h" #include "oleauto.h" +#include "initguid.h" +#include "typelib.h" #include "wine/debug.h" @@ -139,7 +141,7 @@ static HRESULT register_interfaces(struct regsvr_interface const *list) } if (list->base_iid) { - register_key_guid(iid_key, base_ifa_keyname, list->base_iid); + res = register_key_guid(iid_key, base_ifa_keyname, list->base_iid); if (res != ERROR_SUCCESS) goto error_close_iid_key; } @@ -161,12 +163,12 @@ static HRESULT register_interfaces(struct regsvr_interface const *list) } if (list->ps_clsid) { - register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid); + res = register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid); if (res != ERROR_SUCCESS) goto error_close_iid_key; } if (list->ps_clsid32) { - register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32); + res = register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32); if (res != ERROR_SUCCESS) goto error_close_iid_key; } @@ -443,22 +445,6 @@ static LONG recursive_delete_keyW(HKEY base, WCHAR const *name) static GUID const CLSID_RecordInfo = { 0x0000002F, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; -extern GUID const CLSID_PSDispatch; - -GUID const CLSID_PSEnumVariant = { - 0x00020421, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; - -GUID const CLSID_PSTypeInfo = { - 0x00020422, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; - -GUID const CLSID_PSTypeLib = { - 0x00020423, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; - -GUID const CLSID_PSTypeComp = { - 0x00020425, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; - -extern GUID const CLSID_PSOAInterface; - static GUID const CLSID_OldFont = { 0x46763EE0, 0xCAB2, 0x11CE, {0x8C,0x20,0x00,0xAA,0x00,0x51,0xE5,0xD4} }; @@ -556,28 +542,28 @@ static struct regsvr_interface const interface_list[] = { "ITypeInfo", NULL, 22, - NULL, + &CLSID_PSTypeInfo, &CLSID_PSTypeInfo }, { &IID_ITypeLib, "ITypeLib", NULL, 13, - NULL, + &CLSID_PSTypeLib, &CLSID_PSTypeLib }, { &IID_ITypeComp, "ITypeComp", NULL, 5, - NULL, + &CLSID_PSTypeComp, &CLSID_PSTypeComp }, { &IID_IEnumVARIANT, "IEnumVARIANT", NULL, 15, - NULL, + &CLSID_PSEnumVariant, &CLSID_PSEnumVariant }, { &IID_ICreateTypeInfo, diff --git a/reactos/dll/win32/oleaut32/resource.h b/reactos/dll/win32/oleaut32/resource.h index ab0ffc1c54f..5c72c7e0acb 100644 --- a/reactos/dll/win32/oleaut32/resource.h +++ b/reactos/dll/win32/oleaut32/resource.h @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef WINE_OLEAUT32_RESOURCE_H #define WINE_OLEAUT32_RESOURCE_H diff --git a/reactos/dll/win32/oleaut32/safearray.c b/reactos/dll/win32/oleaut32/safearray.c index 4ff056ab6a7..d0ca2638e78 100644 --- a/reactos/dll/win32/oleaut32/safearray.c +++ b/reactos/dll/win32/oleaut32/safearray.c @@ -19,7 +19,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ /* Memory Layout of a SafeArray: * @@ -169,25 +169,6 @@ static ULONG SAFEARRAY_GetCellCount(const SAFEARRAY *psa) return ulNumCells; } -/* Get the 0 based index of an index into a dimension */ -static inline ULONG SAFEARRAY_GetDimensionIndex(SAFEARRAYBOUND *psab, ULONG ulIndex) -{ - return ulIndex - psab->lLbound; -} - -/* Get the size of a dimension in cells */ -static inline ULONG SAFEARRAY_GetDimensionCells(SAFEARRAY *psa, ULONG ulDim) -{ - ULONG size = psa->rgsabound[0].cElements; - - while (ulDim) - { - size *= psa->rgsabound[ulDim].cElements; - ulDim--; - } - return size; -} - /* Allocate a descriptor for an array */ static HRESULT SAFEARRAY_AllocDescriptor(ULONG ulSize, SAFEARRAY **ppsaOut) { @@ -226,6 +207,7 @@ static void SAFEARRAY_SetFeatures(VARTYPE vt, SAFEARRAY *psa) static SAFEARRAY* SAFEARRAY_Create(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound, ULONG ulSize) { SAFEARRAY *psa = NULL; + int i; if (!rgsabound) return NULL; @@ -240,12 +222,13 @@ static SAFEARRAY* SAFEARRAY_Create(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsab case VT_VARIANT: psa->fFeatures |= FADF_VARIANT; break; } - memcpy(psa->rgsabound, rgsabound, cDims * sizeof(SAFEARRAYBOUND)); + for (i = 0; i < cDims; i++) + memcpy(psa->rgsabound + i, rgsabound + cDims - 1 - i, sizeof(SAFEARRAYBOUND)); if (ulSize) psa->cbElements = ulSize; - if (FAILED(SafeArrayAllocData(psa))) + if (!psa->cbElements || FAILED(SafeArrayAllocData(psa))) { SafeArrayDestroyDescriptor(psa); psa = NULL; @@ -293,7 +276,7 @@ static HRESULT SAFEARRAY_DestroyData(SAFEARRAY *psa, ULONG ulStartCell) ULONG ulCellCount = SAFEARRAY_GetCellCount(psa); if (ulStartCell > ulCellCount) { - FIXME("unexpted ulcellcount %ld, start %ld\n",ulCellCount,ulStartCell); + FIXME("unexpted ulcellcount %d, start %d\n",ulCellCount,ulStartCell); return E_UNEXPECTED; } @@ -301,7 +284,7 @@ static HRESULT SAFEARRAY_DestroyData(SAFEARRAY *psa, ULONG ulStartCell) if (psa->fFeatures & (FADF_UNKNOWN|FADF_DISPATCH)) { - LPUNKNOWN *lpUnknown = (LPUNKNOWN *)psa->pvData + ulStartCell * psa->cbElements; + LPUNKNOWN *lpUnknown = (LPUNKNOWN *)psa->pvData + ulStartCell; while(ulCellCount--) { @@ -327,7 +310,7 @@ static HRESULT SAFEARRAY_DestroyData(SAFEARRAY *psa, ULONG ulStartCell) } else if (psa->fFeatures & FADF_BSTR) { - BSTR* lpBstr = (BSTR*)psa->pvData + ulStartCell * psa->cbElements; + BSTR* lpBstr = (BSTR*)psa->pvData + ulStartCell; while(ulCellCount--) { @@ -338,7 +321,7 @@ static HRESULT SAFEARRAY_DestroyData(SAFEARRAY *psa, ULONG ulStartCell) } else if (psa->fFeatures & FADF_VARIANT) { - VARIANT* lpVariant = (VARIANT*)psa->pvData + ulStartCell * psa->cbElements; + VARIANT* lpVariant = (VARIANT*)psa->pvData + ulStartCell; while(ulCellCount--) { @@ -376,7 +359,7 @@ static HRESULT SAFEARRAY_CopyData(SAFEARRAY *psa, SAFEARRAY *dest) HRESULT hRet; hRet = VariantCopy(lpDest, lpVariant); - if (FAILED(hRet)) FIXME("VariantCopy failed with 0x%lx\n", hRet); + if (FAILED(hRet)) FIXME("VariantCopy failed with 0x%x\n", hRet); lpVariant++; lpDest++; } @@ -481,7 +464,7 @@ HRESULT WINAPI SafeArrayAllocDescriptor(UINT cDims, SAFEARRAY **ppsaOut) (*ppsaOut)->cDims = cDims; - TRACE("(%d): %lu bytes allocated for descriptor.\n", cDims, allocSize); + TRACE("(%d): %u bytes allocated for descriptor.\n", cDims, allocSize); return S_OK; } @@ -550,19 +533,16 @@ HRESULT WINAPI SafeArrayAllocData(SAFEARRAY *psa) { ULONG ulSize = SAFEARRAY_GetCellCount(psa); - hRet = E_OUTOFMEMORY; + psa->pvData = SAFEARRAY_Malloc(ulSize * psa->cbElements); - if (psa->cbElements) + if (psa->pvData) { - psa->pvData = SAFEARRAY_Malloc(ulSize * psa->cbElements); - - if (psa->pvData) - { - hRet = S_OK; - TRACE("%lu bytes allocated for data at %p (%lu objects).\n", - ulSize * psa->cbElements, psa->pvData, ulSize); - } + hRet = S_OK; + TRACE("%u bytes allocated for data at %p (%u objects).\n", + ulSize * psa->cbElements, psa->pvData, ulSize); } + else + hRet = E_OUTOFMEMORY; } return hRet; } @@ -665,7 +645,7 @@ SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsa */ SAFEARRAY* WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements) { - TRACE("(%d->%s,%ld,%ld\n", vt, debugstr_vt(vt), lLbound, cElements); + TRACE("(%d->%s,%d,%d\n", vt, debugstr_vt(vt), lLbound, cElements); if (vt == VT_RECORD) return NULL; @@ -697,7 +677,7 @@ SAFEARRAY* WINAPI SafeArrayCreateVectorEx(VARTYPE vt, LONG lLbound, ULONG cEleme IRecordInfo* iRecInfo = (IRecordInfo*)pvExtra; SAFEARRAY* psa; - TRACE("(%d->%s,%ld,%ld,%p\n", vt, debugstr_vt(vt), lLbound, cElements, pvExtra); + TRACE("(%d->%s,%d,%d,%p\n", vt, debugstr_vt(vt), lLbound, cElements, pvExtra); if (vt == VT_RECORD) { @@ -860,12 +840,6 @@ HRESULT WINAPI SafeArrayPutElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData if (!psa || !rgIndices) return E_INVALIDARG; - if (!pvData) - { - ERR("Invalid pvData would crash under Win32!\n"); - return E_INVALIDARG; - } - hRet = SafeArrayLock(psa); if (SUCCEEDED(hRet)) @@ -882,9 +856,9 @@ HRESULT WINAPI SafeArrayPutElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData VARIANT* lpDest = (VARIANT*)lpvDest; hRet = VariantClear(lpDest); - if (FAILED(hRet)) FIXME("VariantClear failed with 0x%lx\n", hRet); + if (FAILED(hRet)) FIXME("VariantClear failed with 0x%x\n", hRet); hRet = VariantCopy(lpDest, lpVariant); - if (FAILED(hRet)) FIXME("VariantCopy failed with 0x%lx\n", hRet); + if (FAILED(hRet)) FIXME("VariantCopy failed with 0x%x\n", hRet); } else if (psa->fFeatures & FADF_BSTR) { @@ -894,14 +868,9 @@ HRESULT WINAPI SafeArrayPutElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData if (*lpDest) SysFreeString(*lpDest); - if (lpBstr) - { - *lpDest = SysAllocStringByteLen((char*)lpBstr, SysStringByteLen(lpBstr)); - if (!*lpDest) - hRet = E_OUTOFMEMORY; - } - else - *lpDest = NULL; + *lpDest = SysAllocStringByteLen((char*)lpBstr, SysStringByteLen(lpBstr)); + if (!*lpDest) + hRet = E_OUTOFMEMORY; } else { @@ -971,7 +940,7 @@ HRESULT WINAPI SafeArrayGetElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData /* The original content of pvData is ignored. */ V_VT(lpDest) = VT_EMPTY; hRet = VariantCopy(lpDest, lpVariant); - if (FAILED(hRet)) FIXME("VariantCopy failed with 0x%lx\n", hRet); + if (FAILED(hRet)) FIXME("VariantCopy failed with 0x%x\n", hRet); } else if (psa->fFeatures & FADF_BSTR) { @@ -1032,8 +1001,8 @@ HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound) if(!nDim || nDim > psa->cDims) return DISP_E_BADINDEX; - *plUbound = psa->rgsabound[nDim - 1].lLbound + - psa->rgsabound[nDim - 1].cElements - 1; + *plUbound = psa->rgsabound[psa->cDims - nDim].lLbound + + psa->rgsabound[psa->cDims - nDim].cElements - 1; return S_OK; } @@ -1065,7 +1034,7 @@ HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound) if(!nDim || nDim > psa->cDims) return DISP_E_BADINDEX; - *plLbound = psa->rgsabound[nDim - 1].lLbound; + *plLbound = psa->rgsabound[psa->cDims - nDim].lLbound; return S_OK; } @@ -1085,7 +1054,7 @@ HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound) */ UINT WINAPI SafeArrayGetDim(SAFEARRAY *psa) { - TRACE("(%p) returning %ld\n", psa, psa ? psa->cDims : 0ul); + TRACE("(%p) returning %d\n", psa, psa ? psa->cDims : 0u); return psa ? psa->cDims : 0; } @@ -1105,7 +1074,7 @@ UINT WINAPI SafeArrayGetDim(SAFEARRAY *psa) */ UINT WINAPI SafeArrayGetElemsize(SAFEARRAY *psa) { - TRACE("(%p) returning %ld\n", psa, psa ? psa->cbElements : 0ul); + TRACE("(%p) returning %d\n", psa, psa ? psa->cbElements : 0u); return psa ? psa->cbElements : 0; } @@ -1204,7 +1173,7 @@ HRESULT WINAPI SafeArrayPtrOfIndex(SAFEARRAY *psa, LONG *rgIndices, void **ppvDa if (!psa || !rgIndices || !ppvData) return E_INVALIDARG; - psab = psa->rgsabound; + psab = psa->rgsabound + psa->cDims - 1; c1 = *rgIndices++; if (c1 < psab->lLbound || c1 >= psab->lLbound + (LONG)psab->cElements) @@ -1214,7 +1183,7 @@ HRESULT WINAPI SafeArrayPtrOfIndex(SAFEARRAY *psa, LONG *rgIndices, void **ppvDa { dimensionSize *= psab->cElements; - psab++; + psab--; if (!psab->cElements || *rgIndices < psab->lLbound || @@ -1225,7 +1194,7 @@ HRESULT WINAPI SafeArrayPtrOfIndex(SAFEARRAY *psa, LONG *rgIndices, void **ppvDa rgIndices++; } - cell += (c1 - psa->rgsabound[0].lLbound); + cell += (c1 - psa->rgsabound[psa->cDims - 1].lLbound); *ppvData = (char*)psa->pvData + cell * psa->cbElements; return S_OK; @@ -1256,13 +1225,17 @@ HRESULT WINAPI SafeArrayDestroyData(SAFEARRAY *psa) if (psa->cLocks) return DISP_E_ARRAYISLOCKED; /* Can't delete a locked array */ - /* If static, keep pvData and don't free */ - if (psa->pvData && !(psa->fFeatures & FADF_STATIC)) - { - /* Delete the actual item data */ - if (FAILED(SAFEARRAY_DestroyData(psa, 0))) - return E_UNEXPECTED; + /* Delete the actual item data */ + if (FAILED(SAFEARRAY_DestroyData(psa, 0))) + return E_UNEXPECTED; + if (psa->pvData) + { + if (psa->fFeatures & FADF_STATIC) + { + ZeroMemory(psa->pvData, SAFEARRAY_GetCellCount(psa) * psa->cbElements); + return S_OK; + } /* If this is not a vector, free the data memory block */ if (!(psa->fFeatures & FADF_CREATEVECTOR)) { @@ -1457,7 +1430,7 @@ HRESULT WINAPI SafeArrayRedim(SAFEARRAY *psa, SAFEARRAYBOUND *psabound) if (FAILED(SafeArrayLock(psa))) return E_UNEXPECTED; - oldBounds = &psa->rgsabound[psa->cDims - 1]; + oldBounds = psa->rgsabound; oldBounds->lLbound = psabound->lLbound; if (psabound->cElements != oldBounds->cElements) @@ -1465,9 +1438,8 @@ HRESULT WINAPI SafeArrayRedim(SAFEARRAY *psa, SAFEARRAYBOUND *psabound) if (psabound->cElements < oldBounds->cElements) { /* Shorten the final dimension. */ - ULONG ulStartCell = psa->cDims == 1 ? 0 : SAFEARRAY_GetDimensionCells(psa, psa->cDims - 1); - - ulStartCell += psabound->cElements; + ULONG ulStartCell = psabound->cElements * + (SAFEARRAY_GetCellCount(psa) / oldBounds->cElements); SAFEARRAY_DestroyData(psa, ulStartCell); } else diff --git a/reactos/dll/win32/oleaut32/stubs.c b/reactos/dll/win32/oleaut32/stubs.c index e1f8b709aa9..d87e76e2d13 100644 --- a/reactos/dll/win32/oleaut32/stubs.c +++ b/reactos/dll/win32/oleaut32/stubs.c @@ -17,7 +17,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -32,15 +32,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); -/*********************************************************************** - * OleIconToCursor (OLEAUT32.415) - */ -HCURSOR WINAPI OleIconToCursor( HINSTANCE hinstExe, HICON hicon) -{ - FIXME("(%p,%p), not implemented (olepro32.dll)\n",hinstExe,hicon); - return S_OK; -} - /*********************************************************************** * OleCreatePropertyFrameIndirect (OLEAUT32.416) */ @@ -58,9 +49,8 @@ HRESULT WINAPI OleCreatePropertyFrame( LPUNKNOWN* ppUnk, ULONG cPages, LPCLSID pPageClsID, LCID lcid, DWORD dwReserved, LPVOID pvReserved ) { - FIXME("(%p,%d,%d,%s,%ld,%p,%ld,%p,%x,%ld,%p), not implemented (olepro32.dll)\n", + FIXME("(%p,%d,%d,%s,%d,%p,%d,%p,%x,%d,%p), not implemented (olepro32.dll)\n", hwndOwner,x,y,debugstr_w(lpszCaption),cObjects,ppUnk,cPages, pPageClsID, (int)lcid,dwReserved,pvReserved); return S_OK; } - diff --git a/reactos/dll/win32/oleaut32/tmarshal.c b/reactos/dll/win32/oleaut32/tmarshal.c index de6e75b500e..8e3b0bc1d0f 100644 --- a/reactos/dll/win32/oleaut32/tmarshal.c +++ b/reactos/dll/win32/oleaut32/tmarshal.c @@ -18,7 +18,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -40,11 +40,14 @@ #include "winnls.h" #include "winreg.h" #include "winuser.h" +#include "excpt.h" #include "ole2.h" +#include "propidl.h" /* for LPSAFEARRAY_User* functions */ #include "typelib.h" #include "variant.h" #include "wine/debug.h" +#include "wine/exception.h" static const WCHAR IDispatchW[] = { 'I','D','i','s','p','a','t','c','h',0}; @@ -53,6 +56,10 @@ WINE_DECLARE_DEBUG_CHANNEL(olerelay); #define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field)) +static HRESULT TMarshalDispatchChannel_Create( + IRpcChannelBuffer *pDelegateChannel, REFIID tmarshal_riid, + IRpcChannelBuffer **ppChannel); + typedef struct _marshal_state { LPBYTE base; int size; @@ -68,19 +75,36 @@ static char *relaystr(WCHAR *in) { } static HRESULT -xbuf_add(marshal_state *buf, LPBYTE stuff, DWORD size) { - while (buf->size - buf->curoff < size) { - if (buf->base) { - buf->size += 100; - buf->base = HeapReAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,buf->base,buf->size); - if (!buf->base) - return E_OUTOFMEMORY; - } else { - buf->base = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,32); - buf->size = 32; - if (!buf->base) - return E_OUTOFMEMORY; - } +xbuf_resize(marshal_state *buf, DWORD newsize) +{ + if(buf->size >= newsize) + return S_FALSE; + + if(buf->base) + { + buf->base = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, buf->base, newsize); + if(!buf->base) + return E_OUTOFMEMORY; + } + else + { + buf->base = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, newsize); + if(!buf->base) + return E_OUTOFMEMORY; + } + buf->size = newsize; + return S_OK; +} + +static HRESULT +xbuf_add(marshal_state *buf, LPBYTE stuff, DWORD size) +{ + HRESULT hr; + + if(buf->size - buf->curoff < size) + { + hr = xbuf_resize(buf, buf->size + size + 100); + if(FAILED(hr)) return hr; } memcpy(buf->base+buf->curoff,stuff,size); buf->curoff += size; @@ -124,26 +148,26 @@ _unmarshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN *pUnk) { hres = CreateStreamOnHGlobal(0,TRUE,&pStm); if (hres) { - ERR("Stream create failed %lx\n",hres); + ERR("Stream create failed %x\n",hres); return hres; } hres = IStream_Write(pStm,buf->base+buf->curoff,xsize,&res); if (hres) { - ERR("stream write %lx\n",hres); + ERR("stream write %x\n",hres); return hres; } memset(&seekto,0,sizeof(seekto)); hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos); if (hres) { - ERR("Failed Seek %lx\n",hres); + ERR("Failed Seek %x\n",hres); return hres; } hres = CoUnmarshalInterface(pStm,riid,(LPVOID*)pUnk); if (hres) { - ERR("Unmarshalling interface %s failed with %lx\n",debugstr_guid(riid),hres); + ERR("Unmarshalling interface %s failed with %x\n",debugstr_guid(riid),hres); return hres; } @@ -179,13 +203,13 @@ _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) { hres = CreateStreamOnHGlobal(0,TRUE,&pStm); if (hres) { - ERR("Stream create failed %lx\n",hres); + ERR("Stream create failed %x\n",hres); goto fail; } hres = CoMarshalInterface(pStm,riid,pUnk,0,NULL,0); if (hres) { - ERR("Marshalling interface %s failed with %lx\n", debugstr_guid(riid), hres); + ERR("Marshalling interface %s failed with %x\n", debugstr_guid(riid), hres); goto fail; } @@ -199,13 +223,13 @@ _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) { memset(&seekto,0,sizeof(seekto)); hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos); if (hres) { - ERR("Failed Seek %lx\n",hres); + ERR("Failed Seek %x\n",hres); goto fail; } hres = IStream_Read(pStm,tempbuf,ststg.cbSize.u.LowPart,&res); if (hres) { - ERR("Failed Read %lx\n",hres); + ERR("Failed Read %x\n",hres); goto fail; } @@ -252,7 +276,7 @@ _get_typeinfo_for_iid(REFIID riid, ITypeInfo**ti) { LONG tlfnlen; ITypeLib *tl; - sprintf( interfacekey, "Interface\\{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\Typelib", + sprintf( interfacekey, "Interface\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\Typelib", riid->Data1, riid->Data2, riid->Data3, riid->Data4[0], riid->Data4[1], riid->Data4[2], riid->Data4[3], riid->Data4[4], riid->Data4[5], riid->Data4[6], riid->Data4[7] @@ -295,7 +319,7 @@ _get_typeinfo_for_iid(REFIID riid, ITypeInfo**ti) { ITypeLib_Release(tl); return hres; } - /* FIXME: do this? ITypeLib_Release(tl); */ + ITypeLib_Release(tl); return hres; } @@ -304,18 +328,42 @@ _get_typeinfo_for_iid(REFIID riid, ITypeInfo**ti) { * the inheritance tree I think. */ static int _nroffuncs(ITypeInfo *tinfo) { - int n, max = 0; + int n, i, j; const FUNCDESC *fdesc; HRESULT hres; + TYPEATTR *attr; + ITypeInfo *tinfo2; n=0; + hres = ITypeInfo_GetTypeAttr(tinfo, &attr); + if (hres) { + ERR("GetTypeAttr failed with %x\n",hres); + return hres; + } + /* look in inherited ifaces. */ + for (j=0;jcImplTypes;j++) { + HREFTYPE href; + hres = ITypeInfo_GetRefTypeOfImplType(tinfo, j, &href); + if (hres) { + ERR("Did not find a reftype for interface offset %d?\n",j); + break; + } + hres = ITypeInfo_GetRefTypeInfo(tinfo, href, &tinfo2); + if (hres) { + ERR("Did not find a typeinfo for reftype %d?\n",href); + continue; + } + n += _nroffuncs(tinfo2); + ITypeInfo_Release(tinfo2); + } + ITypeInfo_ReleaseTypeAttr(tinfo, attr); + i = 0; while (1) { - hres = ITypeInfoImpl_GetInternalFuncDesc(tinfo,n,&fdesc); + hres = ITypeInfoImpl_GetInternalFuncDesc(tinfo,i,&fdesc); if (hres) - return max+1; - if (fdesc->oVft/4 > max) - max = fdesc->oVft/4; + return n; n++; + i++; } /*NOTREACHED*/ } @@ -377,7 +425,7 @@ TMProxyImpl_AddRef(LPRPCPROXYBUFFER iface) ICOM_THIS_MULTI(TMProxyImpl,lpvtbl2,iface); ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); + TRACE("(%p)->(ref before=%u)\n",This, refCount - 1); return refCount; } @@ -388,14 +436,17 @@ TMProxyImpl_Release(LPRPCPROXYBUFFER iface) ICOM_THIS_MULTI(TMProxyImpl,lpvtbl2,iface); ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1); + TRACE("(%p)->(ref before=%u)\n",This, refCount + 1); if (!refCount) { if (This->dispatch_proxy) IRpcProxyBuffer_Release(This->dispatch_proxy); + This->crit.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&This->crit); if (This->chanbuf) IRpcChannelBuffer_Release(This->chanbuf); VirtualFree(This->asmstubs, 0, MEM_RELEASE); + HeapFree(GetProcessHeap(), 0, This->lpvtbl); + ITypeInfo_Release(This->tinfo); CoTaskMemFree(This); } return refCount; @@ -417,7 +468,13 @@ TMProxyImpl_Connect( LeaveCriticalSection(&This->crit); if (This->dispatch_proxy) - IRpcProxyBuffer_Connect(This->dispatch_proxy, pRpcChannelBuffer); + { + IRpcChannelBuffer *pDelegateChannel; + HRESULT hr = TMarshalDispatchChannel_Create(pRpcChannelBuffer, &This->iid, &pDelegateChannel); + if (FAILED(hr)) + return hr; + return IRpcProxyBuffer_Connect(This->dispatch_proxy, pDelegateChannel); + } return S_OK; } @@ -518,7 +575,7 @@ serialize_param( case VT_UI8: case VT_CY: hres = S_OK; - if (debugout) TRACE_(olerelay)("%lx%lx",arg[0],arg[1]); + if (debugout) TRACE_(olerelay)("%x%x\n",arg[0],arg[1]); if (writeit) hres = xbuf_add(buf,(LPBYTE)arg,8); return hres; @@ -530,27 +587,27 @@ serialize_param( case VT_R4: case VT_UI4: hres = S_OK; - if (debugout) TRACE_(olerelay)("%lx",*arg); + if (debugout) TRACE_(olerelay)("%x\n",*arg); if (writeit) hres = xbuf_add(buf,(LPBYTE)arg,sizeof(DWORD)); return hres; case VT_I2: case VT_UI2: hres = S_OK; - if (debugout) TRACE_(olerelay)("%04lx",*arg & 0xffff); + if (debugout) TRACE_(olerelay)("%04x\n",*arg & 0xffff); if (writeit) hres = xbuf_add(buf,(LPBYTE)arg,sizeof(DWORD)); return hres; case VT_I1: case VT_UI1: hres = S_OK; - if (debugout) TRACE_(olerelay)("%02lx",*arg & 0xff); + if (debugout) TRACE_(olerelay)("%02x\n",*arg & 0xff); if (writeit) hres = xbuf_add(buf,(LPBYTE)arg,sizeof(DWORD)); return hres; case VT_I4|VT_BYREF: hres = S_OK; - if (debugout) TRACE_(olerelay)("&0x%lx",*arg); + if (debugout) TRACE_(olerelay)("&0x%x\n",*arg); if (writeit) hres = xbuf_add(buf,(LPBYTE)(DWORD*)*arg,sizeof(DWORD)); /* do not dealloc at this time */ @@ -635,7 +692,7 @@ serialize_param( hres = ITypeInfo_GetRefTypeInfo(tinfo,tdesc->u.lptdesc->u.hreftype,&tinfo2); if (hres) { - ERR("Could not get typeinfo of hreftype %lx for VT_USERDEFINED.\n",tdesc->u.lptdesc->u.hreftype); + ERR("Could not get typeinfo of hreftype %x for VT_USERDEFINED.\n",tdesc->u.lptdesc->u.hreftype); return hres; } ITypeInfo_GetTypeAttr(tinfo2,&tattr); @@ -654,6 +711,7 @@ serialize_param( derefhere=FALSE; break; } + ITypeInfo_ReleaseTypeAttr(tinfo, tattr); ITypeInfo_Release(tinfo2); } @@ -673,14 +731,14 @@ serialize_param( return hres; } case VT_UNKNOWN: - if (debugout) TRACE_(olerelay)("unk(0x%lx)",*arg); + if (debugout) TRACE_(olerelay)("unk(0x%x)",*arg); if (writeit) hres = _marshal_interface(buf,&IID_IUnknown,(LPUNKNOWN)*arg); if (dealloc && *(IUnknown **)arg) IUnknown_Release((LPUNKNOWN)*arg); return hres; case VT_DISPATCH: - if (debugout) TRACE_(olerelay)("idisp(0x%lx)",*arg); + if (debugout) TRACE_(olerelay)("idisp(0x%x)",*arg); if (writeit) hres = _marshal_interface(buf,&IID_IDispatch,(LPUNKNOWN)*arg); if (dealloc && *(IUnknown **)arg) @@ -695,7 +753,7 @@ serialize_param( hres = ITypeInfo_GetRefTypeInfo(tinfo,tdesc->u.hreftype,&tinfo2); if (hres) { - ERR("Could not get typeinfo of hreftype %lx for VT_USERDEFINED.\n",tdesc->u.hreftype); + ERR("Could not get typeinfo of hreftype %x for VT_USERDEFINED.\n",tdesc->u.hreftype); return hres; } ITypeInfo_GetTypeAttr(tinfo2,&tattr); @@ -720,16 +778,6 @@ serialize_param( ERR("Could not get vardesc of %d\n",i); return hres; } - /* Need them for hack below */ - /* - memset(names,0,sizeof(names)); - hres = ITypeInfo_GetNames(tinfo2,vdesc->memid,names,sizeof(names)/sizeof(names[0]),&nrofnames); - if (nrofnames > sizeof(names)/sizeof(names[0])) { - ERR("Need more names!\n"); - } - if (!hres && debugout) - TRACE_(olerelay)("%s=",relaystr(names[0])); - */ elem2 = &vdesc->elemdescVar; tdesc2 = &elem2->tdesc; hres = serialize_param( @@ -751,18 +799,20 @@ serialize_param( break; } case TKIND_ALIAS: - return serialize_param(tinfo2,writeit,debugout,dealloc,&tattr->tdescAlias,arg,buf); + hres = serialize_param(tinfo2,writeit,debugout,dealloc,&tattr->tdescAlias,arg,buf); + break; case TKIND_ENUM: hres = S_OK; - if (debugout) TRACE_(olerelay)("%lx",*arg); + if (debugout) TRACE_(olerelay)("%x",*arg); if (writeit) hres = xbuf_add(buf,(LPBYTE)arg,sizeof(DWORD)); - return hres; + break; default: FIXME("Unhandled typekind %d\n",tattr->typekind); hres = E_FAIL; break; } + ITypeInfo_ReleaseTypeAttr(tinfo2, tattr); ITypeInfo_Release(tinfo2); return hres; } @@ -772,7 +822,7 @@ serialize_param( if (debugout) TRACE_(olerelay)("carr"); for (i=0;icDims;i++) { - if (debugout) TRACE_(olerelay)("[%ld]",adesc->rgbounds[i].cElements); + if (debugout) TRACE_(olerelay)("[%d]",adesc->rgbounds[i].cElements); arrsize *= adesc->rgbounds[i].cElements; } if (debugout) TRACE_(olerelay)("(vt %s)",debugstr_vt(adesc->tdescElem.vt)); @@ -786,6 +836,17 @@ serialize_param( if (debugout) TRACE_(olerelay)("]"); return S_OK; } + case VT_SAFEARRAY: { + if (writeit) + { + ULONG flags = MAKELONG(MSHCTX_DIFFERENTMACHINE, NDR_LOCAL_DATA_REPRESENTATION); + ULONG size = LPSAFEARRAY_UserSize(&flags, buf->curoff, (LPSAFEARRAY *)arg); + xbuf_resize(buf, size); + LPSAFEARRAY_UserMarshal(&flags, buf->base + buf->curoff, (LPSAFEARRAY *)arg); + buf->curoff = size; + } + return S_OK; + } default: ERR("Unhandled marshal type %d.\n",tdesc->vt); return S_OK; @@ -809,10 +870,10 @@ deserialize_param( while (1) { switch (tdesc->vt) { case VT_EMPTY: - if (debugout) TRACE_(olerelay)(""); + if (debugout) TRACE_(olerelay)("\n"); return S_OK; case VT_NULL: - if (debugout) TRACE_(olerelay)(""); + if (debugout) TRACE_(olerelay)("\n"); return S_OK; case VT_VARIANT: { VARIANT *vt = (VARIANT*)arg; @@ -844,7 +905,7 @@ deserialize_param( hres = xbuf_get(buf,(LPBYTE)arg,8); if (hres) ERR("Failed to read integer 8 byte\n"); } - if (debugout) TRACE_(olerelay)("%lx%lx",arg[0],arg[1]); + if (debugout) TRACE_(olerelay)("%x%x",arg[0],arg[1]); return hres; case VT_ERROR: case VT_BOOL: @@ -857,7 +918,7 @@ deserialize_param( hres = xbuf_get(buf,(LPBYTE)arg,sizeof(DWORD)); if (hres) ERR("Failed to read integer 4 byte\n"); } - if (debugout) TRACE_(olerelay)("%lx",*arg); + if (debugout) TRACE_(olerelay)("%x",*arg); return hres; case VT_I2: case VT_UI2: @@ -867,7 +928,7 @@ deserialize_param( if (hres) ERR("Failed to read integer 4 byte\n"); memcpy(arg,&x,2); } - if (debugout) TRACE_(olerelay)("%04lx",*arg & 0xffff); + if (debugout) TRACE_(olerelay)("%04x",*arg & 0xffff); return hres; case VT_I1: case VT_UI1: @@ -877,7 +938,7 @@ deserialize_param( if (hres) ERR("Failed to read integer 4 byte\n"); memcpy(arg,&x,1); } - if (debugout) TRACE_(olerelay)("%02lx",*arg & 0xff); + if (debugout) TRACE_(olerelay)("%02x",*arg & 0xff); return hres; case VT_I4|VT_BYREF: hres = S_OK; @@ -887,7 +948,7 @@ deserialize_param( hres = xbuf_get(buf,(LPBYTE)*arg,sizeof(DWORD)); if (hres) ERR("Failed to read integer 4 byte\n"); } - if (debugout) TRACE_(olerelay)("&0x%lx",*(DWORD*)*arg); + if (debugout) TRACE_(olerelay)("&0x%x",*(DWORD*)*arg); return hres; case VT_BSTR|VT_BYREF: { BSTR **bstr = (BSTR **)arg; @@ -960,7 +1021,7 @@ deserialize_param( hres = ITypeInfo_GetRefTypeInfo(tinfo,tdesc->u.lptdesc->u.hreftype,&tinfo2); if (hres) { - ERR("Could not get typeinfo of hreftype %lx for VT_USERDEFINED.\n",tdesc->u.lptdesc->u.hreftype); + ERR("Could not get typeinfo of hreftype %x for VT_USERDEFINED.\n",tdesc->u.lptdesc->u.hreftype); return hres; } ITypeInfo_GetTypeAttr(tinfo2,&tattr); @@ -979,6 +1040,7 @@ deserialize_param( derefhere=FALSE; break; } + ITypeInfo_ReleaseTypeAttr(tinfo2, tattr); ITypeInfo_Release(tinfo2); } /* read it in all cases, we need to know if we have @@ -1032,7 +1094,7 @@ deserialize_param( hres = ITypeInfo_GetRefTypeInfo(tinfo,tdesc->u.hreftype,&tinfo2); if (hres) { - ERR("Could not get typeinfo of hreftype %lx for VT_USERDEFINED.\n",tdesc->u.hreftype); + ERR("Could not get typeinfo of hreftype %x for VT_USERDEFINED.\n",tdesc->u.hreftype); return hres; } hres = ITypeInfo_GetTypeAttr(tinfo2,&tattr); @@ -1058,6 +1120,8 @@ deserialize_param( hres = ITypeInfo2_GetVarDesc(tinfo2, i, &vdesc); if (hres) { ERR("Could not get vardesc of %d\n",i); + ITypeInfo_ReleaseTypeAttr(tinfo2, tattr); + ITypeInfo_Release(tinfo2); return hres; } hres = deserialize_param( @@ -1076,19 +1140,21 @@ deserialize_param( break; } case TKIND_ALIAS: - return deserialize_param(tinfo2,readit,debugout,alloc,&tattr->tdescAlias,arg,buf); + hres = deserialize_param(tinfo2,readit,debugout,alloc,&tattr->tdescAlias,arg,buf); + break; case TKIND_ENUM: if (readit) { hres = xbuf_get(buf,(LPBYTE)arg,sizeof(DWORD)); if (hres) ERR("Failed to read enum (4 byte)\n"); } - if (debugout) TRACE_(olerelay)("%lx",*arg); - return hres; + if (debugout) TRACE_(olerelay)("%x",*arg); + break; default: ERR("Unhandled typekind %d\n",tattr->typekind); hres = E_FAIL; break; } + ITypeInfo_ReleaseTypeAttr(tinfo2, tattr); } if (hres) ERR("failed to stuballoc in TKIND_RECORD.\n"); @@ -1115,6 +1181,16 @@ deserialize_param( ); return S_OK; } + case VT_SAFEARRAY: { + if (readit) + { + ULONG flags = MAKELONG(MSHCTX_DIFFERENTMACHINE, NDR_LOCAL_DATA_REPRESENTATION); + unsigned char *buffer; + buffer = LPSAFEARRAY_UserUnmarshal(&flags, buf->base + buf->curoff, (LPSAFEARRAY *)arg); + buf->curoff = buffer - buf->base; + } + return S_OK; + } default: ERR("No handler for VT type %d!\n",tdesc->vt); return S_OK; @@ -1133,9 +1209,6 @@ _get_funcdesc( if (fname) *fname = NULL; if (iname) *iname = NULL; - *tactual = tinfo; - ITypeInfo_AddRef(*tactual); - while (1) { hres = ITypeInfoImpl_GetInternalFuncDesc(tinfo, i, fdesc); @@ -1146,7 +1219,7 @@ _get_funcdesc( hres = ITypeInfo_GetTypeAttr(tinfo, &attr); if (hres) { - ERR("GetTypeAttr failed with %lx\n",hres); + ERR("GetTypeAttr failed with %x\n",hres); return hres; } /* Not found, so look in inherited ifaces. */ @@ -1158,13 +1231,17 @@ _get_funcdesc( } hres = ITypeInfo_GetRefTypeInfo(tinfo, href, &tinfo2); if (hres) { - ERR("Did not find a typeinfo for reftype %ld?\n",href); + ERR("Did not find a typeinfo for reftype %d?\n",href); continue; } hres = _get_funcdesc(tinfo2,iMethod,tactual,fdesc,iname,fname); ITypeInfo_Release(tinfo2); - if (!hres) return S_OK; + if (!hres) { + ITypeInfo_ReleaseTypeAttr(tinfo, attr); + return S_OK; + } } + ITypeInfo_ReleaseTypeAttr(tinfo, attr); return hres; } if (((*fdesc)->oVft/4) == iMethod) { @@ -1172,12 +1249,24 @@ _get_funcdesc( ITypeInfo_GetDocumentation(tinfo,(*fdesc)->memid,fname,NULL,NULL,NULL); if (iname) ITypeInfo_GetDocumentation(tinfo,-1,iname,NULL,NULL,NULL); + *tactual = tinfo; + ITypeInfo_AddRef(*tactual); return S_OK; } i++; } } +static inline BOOL is_in_elem(const ELEMDESC *elem) +{ + return (elem->u.paramdesc.wParamFlags & PARAMFLAG_FIN || !elem->u.paramdesc.wParamFlags); +} + +static inline BOOL is_out_elem(const ELEMDESC *elem) +{ + return (elem->u.paramdesc.wParamFlags & PARAMFLAG_FOUT || !elem->u.paramdesc.wParamFlags); +} + static DWORD xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) { @@ -1251,14 +1340,14 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) TRACE_(olerelay)("%s=",relaystr(names[i+1])); } /* No need to marshal other data than FIN and any VT_PTR. */ - if (!(elem->u.paramdesc.wParamFlags & PARAMFLAG_FIN || !elem->u.paramdesc.wParamFlags) && (elem->tdesc.vt != VT_PTR)) { + if (!is_in_elem(elem) && (elem->tdesc.vt != VT_PTR)) { xargs+=_argsize(elem->tdesc.vt); if (relaydeb) TRACE_(olerelay)("[out]"); continue; } hres = serialize_param( tinfo, - elem->u.paramdesc.wParamFlags & PARAMFLAG_FIN || !elem->u.paramdesc.wParamFlags, + is_in_elem(elem), relaydeb, FALSE, &elem->tdesc, @@ -1267,7 +1356,7 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) ); if (hres) { - ERR("Failed to serialize param, hres %lx\n",hres); + ERR("Failed to serialize param, hres %x\n",hres); break; } xargs+=_argsize(elem->tdesc.vt); @@ -1279,18 +1368,18 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) msg.iMethod = method; hres = IRpcChannelBuffer_GetBuffer(chanbuf,&msg,&(tpinfo->iid)); if (hres) { - ERR("RpcChannelBuffer GetBuffer failed, %lx\n",hres); + ERR("RpcChannelBuffer GetBuffer failed, %x\n",hres); goto exit; } memcpy(msg.Buffer,buf.base,buf.curoff); if (relaydeb) TRACE_(olerelay)("\n"); hres = IRpcChannelBuffer_SendReceive(chanbuf,&msg,&status); if (hres) { - ERR("RpcChannelBuffer SendReceive failed, %lx\n",hres); + ERR("RpcChannelBuffer SendReceive failed, %x\n",hres); goto exit; } - if (relaydeb) TRACE_(olerelay)(" status = %08lx (",status); + if (relaydeb) TRACE_(olerelay)(" status = %08x (",status); if (buf.base) buf.base = HeapReAlloc(GetProcessHeap(),0,buf.base,msg.cbBuffer); else @@ -1310,14 +1399,14 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) if (i+1u.paramdesc.wParamFlags & PARAMFLAG_FOUT, + is_out_elem(elem), relaydeb, FALSE, &(elem->tdesc), @@ -1325,7 +1414,7 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) &buf ); if (hres) { - ERR("Failed to unmarshall param, hres %lx\n",hres); + ERR("Failed to unmarshall param, hres %x\n",hres); status = hres; break; } @@ -1335,19 +1424,21 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) hres = xbuf_get(&buf, (LPBYTE)&remoteresult, sizeof(DWORD)); if (hres != S_OK) goto exit; - if (relaydeb) TRACE_(olerelay)(") = %08lx\n", remoteresult); + if (relaydeb) TRACE_(olerelay)(") = %08x\n", remoteresult); hres = remoteresult; exit: + for (i = 0; i < nrofnames; i++) + SysFreeString(names[i]); HeapFree(GetProcessHeap(),0,buf.base); IRpcChannelBuffer_Release(chanbuf); ITypeInfo_Release(tinfo); - TRACE("-- 0x%08lx\n", hres); + TRACE("-- 0x%08x\n", hres); return hres; } -HRESULT WINAPI ProxyIUnknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) +static HRESULT WINAPI ProxyIUnknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) { TMProxyImpl *proxy = (TMProxyImpl *)iface; @@ -1360,7 +1451,7 @@ HRESULT WINAPI ProxyIUnknown_QueryInterface(IUnknown *iface, REFIID riid, void * return E_NOINTERFACE; } -ULONG WINAPI ProxyIUnknown_AddRef(IUnknown *iface) +static ULONG WINAPI ProxyIUnknown_AddRef(IUnknown *iface) { TMProxyImpl *proxy = (TMProxyImpl *)iface; @@ -1372,7 +1463,7 @@ ULONG WINAPI ProxyIUnknown_AddRef(IUnknown *iface) return 2; /* FIXME */ } -ULONG WINAPI ProxyIUnknown_Release(IUnknown *iface) +static ULONG WINAPI ProxyIUnknown_Release(IUnknown *iface) { TMProxyImpl *proxy = (TMProxyImpl *)iface; @@ -1397,7 +1488,7 @@ static HRESULT WINAPI ProxyIDispatch_GetTypeInfo(LPDISPATCH iface, UINT iTInfo, { TMProxyImpl *This = (TMProxyImpl *)iface; - TRACE("(%d, %lx, %p)\n", iTInfo, lcid, ppTInfo); + TRACE("(%d, %x, %p)\n", iTInfo, lcid, ppTInfo); return IDispatch_GetTypeInfo(This->dispatch, iTInfo, lcid, ppTInfo); } @@ -1406,7 +1497,7 @@ static HRESULT WINAPI ProxyIDispatch_GetIDsOfNames(LPDISPATCH iface, REFIID riid { TMProxyImpl *This = (TMProxyImpl *)iface; - TRACE("(%s, %p, %d, 0x%lx, %p)\n", debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); + TRACE("(%s, %p, %d, 0x%x, %p)\n", debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); return IDispatch_GetIDsOfNames(This->dispatch, riid, rgszNames, cNames, lcid, rgDispId); @@ -1418,7 +1509,7 @@ static HRESULT WINAPI ProxyIDispatch_Invoke(LPDISPATCH iface, DISPID dispIdMembe { TMProxyImpl *This = (TMProxyImpl *)iface; - TRACE("(%ld, %s, 0x%lx, 0x%x, %p, %p, %p, %p)\n", dispIdMember, + TRACE("(%d, %s, 0x%x, 0x%x, %p, %p, %p, %p)\n", dispIdMember, debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); @@ -1427,6 +1518,116 @@ static HRESULT WINAPI ProxyIDispatch_Invoke(LPDISPATCH iface, DISPID dispIdMembe puArgErr); } +typedef struct +{ + const IRpcChannelBufferVtbl *lpVtbl; + LONG refs; + /* the IDispatch-derived interface we are handling */ + IID tmarshal_iid; + IRpcChannelBuffer *pDelegateChannel; +} TMarshalDispatchChannel; + +static HRESULT WINAPI TMarshalDispatchChannel_QueryInterface(LPRPCCHANNELBUFFER iface, REFIID riid, LPVOID *ppv) +{ + *ppv = NULL; + if (IsEqualIID(riid,&IID_IRpcChannelBuffer) || IsEqualIID(riid,&IID_IUnknown)) + { + *ppv = (LPVOID)iface; + IUnknown_AddRef(iface); + return S_OK; + } + return E_NOINTERFACE; +} + +static ULONG WINAPI TMarshalDispatchChannel_AddRef(LPRPCCHANNELBUFFER iface) +{ + TMarshalDispatchChannel *This = (TMarshalDispatchChannel *)iface; + return InterlockedIncrement(&This->refs); +} + +static ULONG WINAPI TMarshalDispatchChannel_Release(LPRPCCHANNELBUFFER iface) +{ + TMarshalDispatchChannel *This = (TMarshalDispatchChannel *)iface; + ULONG ref; + + ref = InterlockedDecrement(&This->refs); + if (ref) + return ref; + + IRpcChannelBuffer_Release(This->pDelegateChannel); + HeapFree(GetProcessHeap(), 0, This); + return 0; +} + +static HRESULT WINAPI TMarshalDispatchChannel_GetBuffer(LPRPCCHANNELBUFFER iface, RPCOLEMESSAGE* olemsg, REFIID riid) +{ + TMarshalDispatchChannel *This = (TMarshalDispatchChannel *)iface; + TRACE("(%p, %s)\n", olemsg, debugstr_guid(riid)); + /* Note: we are pretending to invoke a method on the interface identified + * by tmarshal_iid so that we can re-use the IDispatch proxy/stub code + * without the RPC runtime getting confused by not exporting an IDispatch interface */ + return IRpcChannelBuffer_GetBuffer(This->pDelegateChannel, olemsg, &This->tmarshal_iid); +} + +static HRESULT WINAPI TMarshalDispatchChannel_SendReceive(LPRPCCHANNELBUFFER iface, RPCOLEMESSAGE *olemsg, ULONG *pstatus) +{ + TMarshalDispatchChannel *This = (TMarshalDispatchChannel *)iface; + TRACE("(%p, %p)\n", olemsg, pstatus); + return IRpcChannelBuffer_SendReceive(This->pDelegateChannel, olemsg, pstatus); +} + +static HRESULT WINAPI TMarshalDispatchChannel_FreeBuffer(LPRPCCHANNELBUFFER iface, RPCOLEMESSAGE* olemsg) +{ + TMarshalDispatchChannel *This = (TMarshalDispatchChannel *)iface; + TRACE("(%p)\n", olemsg); + return IRpcChannelBuffer_FreeBuffer(This->pDelegateChannel, olemsg); +} + +static HRESULT WINAPI TMarshalDispatchChannel_GetDestCtx(LPRPCCHANNELBUFFER iface, DWORD* pdwDestContext, void** ppvDestContext) +{ + TMarshalDispatchChannel *This = (TMarshalDispatchChannel *)iface; + TRACE("(%p,%p)\n", pdwDestContext, ppvDestContext); + return IRpcChannelBuffer_GetDestCtx(This->pDelegateChannel, pdwDestContext, ppvDestContext); +} + +static HRESULT WINAPI TMarshalDispatchChannel_IsConnected(LPRPCCHANNELBUFFER iface) +{ + TMarshalDispatchChannel *This = (TMarshalDispatchChannel *)iface; + TRACE("()\n"); + return IRpcChannelBuffer_IsConnected(This->pDelegateChannel); +} + +static const IRpcChannelBufferVtbl TMarshalDispatchChannelVtbl = +{ + TMarshalDispatchChannel_QueryInterface, + TMarshalDispatchChannel_AddRef, + TMarshalDispatchChannel_Release, + TMarshalDispatchChannel_GetBuffer, + TMarshalDispatchChannel_SendReceive, + TMarshalDispatchChannel_FreeBuffer, + TMarshalDispatchChannel_GetDestCtx, + TMarshalDispatchChannel_IsConnected +}; + +static HRESULT TMarshalDispatchChannel_Create( + IRpcChannelBuffer *pDelegateChannel, REFIID tmarshal_riid, + IRpcChannelBuffer **ppChannel) +{ + TMarshalDispatchChannel *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); + if (!This) + return E_OUTOFMEMORY; + + This->lpVtbl = &TMarshalDispatchChannelVtbl; + This->refs = 1; + IRpcChannelBuffer_AddRef(pDelegateChannel); + This->pDelegateChannel = pDelegateChannel; + This->tmarshal_iid = *tmarshal_riid; + + *ppChannel = (IRpcChannelBuffer *)&This->lpVtbl; + return S_OK; +} + + static inline HRESULT get_facbuf_for_iid(REFIID riid, IPSFactoryBuffer **facbuf) { HRESULT hr; @@ -1471,8 +1672,15 @@ PSFacBuf_CreateProxy( CoTaskMemFree(proxy); return E_OUTOFMEMORY; } + proxy->lpvtbl2 = &tmproxyvtable; + /* one reference for the proxy */ + proxy->ref = 1; + proxy->tinfo = tinfo; + memcpy(&proxy->iid,riid,sizeof(*riid)); + proxy->chanbuf = 0; InitializeCriticalSection(&proxy->crit); + proxy->crit.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": TMProxyImpl.crit"); proxy->lpvtbl = HeapAlloc(GetProcessHeap(),0,sizeof(LPBYTE)*nroffuncs); for (i=0;idispatch); IPSFactoryBuffer_Release(factory_buffer); } + if ((hres == S_OK) && (nroffuncs < 7)) + { + ERR("nroffuncs calculated incorrectly (%d)\n", nroffuncs); + hres = E_UNEXPECTED; + } if (hres == S_OK) { proxy->lpvtbl[3] = ProxyIDispatch_GetTypeInfoCount; @@ -1563,12 +1776,6 @@ PSFacBuf_CreateProxy( ITypeInfo_ReleaseTypeAttr(tinfo, typeattr); } - proxy->lpvtbl2 = &tmproxyvtable; - /* one reference for the proxy */ - proxy->ref = 1; - proxy->tinfo = tinfo; - memcpy(&proxy->iid,riid,sizeof(*riid)); - proxy->chanbuf = 0; if (hres == S_OK) { *ppv = (LPVOID)proxy; @@ -1589,6 +1796,7 @@ typedef struct _TMStubImpl { ITypeInfo *tinfo; IID iid; IRpcStubBuffer *dispatch_stub; + BOOL dispatch_derivative; } TMStubImpl; static HRESULT WINAPI @@ -1609,7 +1817,7 @@ TMStubImpl_AddRef(LPRPCSTUBBUFFER iface) TMStubImpl *This = (TMStubImpl *)iface; ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(ref before=%lu)\n", This, refCount - 1); + TRACE("(%p)->(ref before=%u)\n", This, refCount - 1); return refCount; } @@ -1620,12 +1828,14 @@ TMStubImpl_Release(LPRPCSTUBBUFFER iface) TMStubImpl *This = (TMStubImpl *)iface; ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(ref before=%lu)\n", This, refCount + 1); + TRACE("(%p)->(ref before=%u)\n", This, refCount + 1); if (!refCount) { IRpcStubBuffer_Disconnect(iface); ITypeInfo_Release(This->tinfo); + if (This->dispatch_stub) + IRpcStubBuffer_Release(This->dispatch_stub); CoTaskMemFree(This); } return refCount; @@ -1672,12 +1882,12 @@ TMStubImpl_Invoke( const FUNCDESC *fdesc; TMStubImpl *This = (TMStubImpl *)iface; HRESULT hres; - DWORD *args, res, *xargs, nrofargs; + DWORD *args = NULL, res, *xargs, nrofargs; marshal_state buf; - UINT nrofnames; + UINT nrofnames = 0; BSTR names[10]; BSTR iname = NULL; - ITypeInfo *tinfo; + ITypeInfo *tinfo = NULL; TRACE("...\n"); @@ -1686,8 +1896,20 @@ TMStubImpl_Invoke( return E_UNEXPECTED; } - if (This->dispatch_stub && xmsg->iMethod < sizeof(IDispatchVtbl)/sizeof(void *)) + if (This->dispatch_derivative && xmsg->iMethod < sizeof(IDispatchVtbl)/sizeof(void *)) + { + IPSFactoryBuffer *factory_buffer; + hres = get_facbuf_for_iid(&IID_IDispatch, &factory_buffer); + if (hres == S_OK) + { + hres = IPSFactoryBuffer_CreateStub(factory_buffer, &IID_IDispatch, + This->pUnk, &This->dispatch_stub); + IPSFactoryBuffer_Release(factory_buffer); + } + if (hres != S_OK) + return hres; return IRpcStubBuffer_Invoke(This->dispatch_stub, xmsg, rpcchanbuf); + } memset(&buf,0,sizeof(buf)); buf.size = xmsg->cbBuffer; @@ -1697,15 +1919,16 @@ TMStubImpl_Invoke( hres = _get_funcdesc(This->tinfo,xmsg->iMethod,&tinfo,&fdesc,&iname,NULL); if (hres) { - ERR("GetFuncDesc on method %ld failed with %lx\n",xmsg->iMethod,hres); + ERR("GetFuncDesc on method %d failed with %x\n",xmsg->iMethod,hres); return hres; } if (iname && !lstrcmpW(iname, IDispatchW)) { ERR("IDispatch cannot be marshaled by the typelib marshaler\n"); - ITypeInfo_Release(tinfo); - return E_UNEXPECTED; + hres = E_UNEXPECTED; + SysFreeString (iname); + goto exit; } if (iname) SysFreeString (iname); @@ -1722,7 +1945,11 @@ TMStubImpl_Invoke( for (i=0;icParams;i++) nrofargs += _argsize(fdesc->lprgelemdescParam[i].tdesc.vt); args = HeapAlloc(GetProcessHeap(),0,(nrofargs+1)*sizeof(DWORD)); - if (!args) return E_OUTOFMEMORY; + if (!args) + { + hres = E_OUTOFMEMORY; + goto exit; + } /* Allocate all stuff used by call. */ xargs = args+1; @@ -1731,7 +1958,7 @@ TMStubImpl_Invoke( hres = deserialize_param( tinfo, - elem->u.paramdesc.wParamFlags & PARAMFLAG_FIN || !elem->u.paramdesc.wParamFlags, + is_in_elem(elem), FALSE, TRUE, &(elem->tdesc), @@ -1740,18 +1967,36 @@ TMStubImpl_Invoke( ); xargs += _argsize(elem->tdesc.vt); if (hres) { - ERR("Failed to deserialize param %s, hres %lx\n",relaystr(names[i+1]),hres); + ERR("Failed to deserialize param %s, hres %x\n",relaystr(names[i+1]),hres); break; } } args[0] = (DWORD)This->pUnk; - res = _invoke( - (*((FARPROC**)args[0]))[fdesc->oVft/4], - fdesc->callconv, - (xargs-args), - args - ); + + __TRY + { + res = _invoke( + (*((FARPROC**)args[0]))[fdesc->oVft/4], + fdesc->callconv, + (xargs-args), + args + ); + } + __EXCEPT(NULL) + { + DWORD dwExceptionCode = GetExceptionCode(); + ERR("invoke call failed with exception 0x%08x (%d)\n", dwExceptionCode, dwExceptionCode); + if (FAILED(dwExceptionCode)) + hres = dwExceptionCode; + else + hres = HRESULT_FROM_WIN32(dwExceptionCode); + } + __ENDTRY + + if (hres != S_OK) + goto exit; + buf.curoff = 0; xargs = args+1; @@ -1759,7 +2004,7 @@ TMStubImpl_Invoke( ELEMDESC *elem = fdesc->lprgelemdescParam+i; hres = serialize_param( tinfo, - elem->u.paramdesc.wParamFlags & PARAMFLAG_FOUT, + is_out_elem(elem), FALSE, TRUE, &elem->tdesc, @@ -1768,40 +2013,31 @@ TMStubImpl_Invoke( ); xargs += _argsize(elem->tdesc.vt); if (hres) { - ERR("Failed to stuballoc param, hres %lx\n",hres); + ERR("Failed to stuballoc param, hres %x\n",hres); break; } } hres = xbuf_add (&buf, (LPBYTE)&res, sizeof(DWORD)); - if (hres != S_OK) - return hres; - ITypeInfo_Release(tinfo); - HeapFree(GetProcessHeap(), 0, args); + if (hres != S_OK) + goto exit; xmsg->cbBuffer = buf.curoff; - if (rpcchanbuf) - { - hres = IRpcChannelBuffer_GetBuffer(rpcchanbuf, xmsg, &This->iid); - if (hres != S_OK) - ERR("IRpcChannelBuffer_GetBuffer failed with error 0x%08lx\n", hres); - } - else - { - /* FIXME: remove this case when we start sending an IRpcChannelBuffer - * object with builtin OLE */ - RPC_STATUS status = I_RpcGetBuffer((RPC_MESSAGE *)xmsg); - if (status != RPC_S_OK) - { - ERR("I_RpcGetBuffer failed with error %ld\n", status); - hres = E_FAIL; - } - } + hres = IRpcChannelBuffer_GetBuffer(rpcchanbuf, xmsg, &This->iid); + if (hres != S_OK) + ERR("IRpcChannelBuffer_GetBuffer failed with error 0x%08x\n", hres); if (hres == S_OK) memcpy(xmsg->Buffer, buf.base, buf.curoff); +exit: + for (i = 0; i < nrofnames; i++) + SysFreeString(names[i]); + + ITypeInfo_Release(tinfo); + HeapFree(GetProcessHeap(), 0, args); + HeapFree(GetProcessHeap(), 0, buf.base); TRACE("returning\n"); @@ -1870,6 +2106,7 @@ PSFacBuf_CreateStub( stub->ref = 1; stub->tinfo = tinfo; stub->dispatch_stub = NULL; + stub->dispatch_derivative = FALSE; memcpy(&(stub->iid),riid,sizeof(*riid)); hres = IRpcStubBuffer_Connect((LPRPCSTUBBUFFER)stub,pUnkServer); *ppStub = (LPRPCSTUBBUFFER)stub; @@ -1882,16 +2119,7 @@ PSFacBuf_CreateStub( if (hres == S_OK) { if (typeattr->wTypeFlags & TYPEFLAG_FDISPATCHABLE) - { - IPSFactoryBuffer *factory_buffer; - hres = get_facbuf_for_iid(&IID_IDispatch, &factory_buffer); - if (hres == S_OK) - { - hres = IPSFactoryBuffer_CreateStub(factory_buffer, &IID_IDispatch, - pUnkServer, &stub->dispatch_stub); - IPSFactoryBuffer_Release(factory_buffer); - } - } + stub->dispatch_derivative = TRUE; ITypeInfo_ReleaseTypeAttr(tinfo, typeattr); } diff --git a/reactos/dll/win32/oleaut32/typelib.c b/reactos/dll/win32/oleaut32/typelib.c index 317b44ce31f..50b29280d1d 100644 --- a/reactos/dll/win32/oleaut32/typelib.c +++ b/reactos/dll/win32/oleaut32/typelib.c @@ -19,7 +19,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * -------------------------------------------------------------------------------------- * Known problems (2000, Francois Jacques) @@ -29,27 +29,19 @@ * - dual interface dispinterfaces. vtable-interface ITypeInfo instances are * creating by doing a straight copy of the dispinterface instance and just changing * its typekind. Pointed structures aren't copied - only the address of the pointers. - * So when you release the dispinterface, you delete the vtable-interface structures - * as well... fortunately, clean up of structures is not implemented. * * - locale stuff is partially implemented but hasn't been tested. * * - typelib file is still read in its entirety, but it is released now. - * - some garbage is read from function names on some very rare occasions. * * -------------------------------------------------------------------------------------- * Known problems left from previous implementation (1999, Rein Klazes) : * * -. Data structures are straightforward, but slow for look-ups. * -. (related) nothing is hashed - * -. there are a number of stubs in ITypeLib and ITypeInfo interfaces. Most - * of them I don't know yet how to implement them. * -. Most error return values are just guessed not checked with windows * behaviour. - * -. didn't bother with a c++ interface * -. lousy fatal error handling - * -. some methods just return pointers to internal data structures, this is - * partly laziness, partly I want to check how windows does it. * */ @@ -82,9 +74,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); WINE_DECLARE_DEBUG_CHANNEL(typelib); -/* The OLE Automation ProxyStub Interface Class (aka Typelib Marshaler) */ -const GUID CLSID_PSOAInterface = { 0x00020424, 0, 0, { 0xC0, 0, 0, 0, 0, 0, 0, 0x46 } }; - static HRESULT typedescvt_to_variantvt(ITypeInfo *tinfo, const TYPEDESC *tdesc, VARTYPE *vt); static HRESULT TLB_AllocAndInitVarDesc(const VARDESC *src, VARDESC **dest_ptr); @@ -152,12 +141,61 @@ static void FromLEDWords(void *p_Val, int p_iSize) #define FromLEDWords(X,Y) /*nothing*/ #endif +/* + * Find a typelib key which matches a requested maj.min version. + */ +static BOOL find_typelib_key( REFGUID guid, WORD *wMaj, WORD *wMin ) +{ + static const WCHAR typelibW[] = {'T','y','p','e','l','i','b','\\',0}; + WCHAR buffer[60]; + char key_name[16]; + DWORD len, i; + INT best_min = -1; + HKEY hkey; + + memcpy( buffer, typelibW, sizeof(typelibW) ); + StringFromGUID2( guid, buffer + strlenW(buffer), 40 ); + + if (RegOpenKeyExW( HKEY_CLASSES_ROOT, buffer, 0, KEY_READ, &hkey ) != ERROR_SUCCESS) + return FALSE; + + len = sizeof(key_name); + i = 0; + while (RegEnumKeyExA(hkey, i++, key_name, &len, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) + { + INT v_maj, v_min; + + if (sscanf(key_name, "%x.%x", &v_maj, &v_min) == 2) + { + TRACE("found %s: %x.%x\n", debugstr_w(buffer), v_maj, v_min); + + if (*wMaj == v_maj) + { + if (*wMin == v_min) + { + best_min = v_min; + break; /* exact match */ + } + if (v_min > best_min) best_min = v_min; + } + } + len = sizeof(key_name); + } + RegCloseKey( hkey ); + if (best_min >= 0) + { + *wMin = best_min; + return TRUE; + } + return FALSE; +} + /* get the path of a typelib key, in the form "Typelib\\\\." */ /* buffer must be at least 60 characters long */ static WCHAR *get_typelib_key( REFGUID guid, WORD wMaj, WORD wMin, WCHAR *buffer ) { static const WCHAR TypelibW[] = {'T','y','p','e','l','i','b','\\',0}; - static const WCHAR VersionFormatW[] = {'\\','%','u','.','%','u',0}; + static const WCHAR VersionFormatW[] = {'\\','%','x','.','%','x',0}; memcpy( buffer, TypelibW, sizeof(TypelibW) ); StringFromGUID2( guid, buffer + strlenW(buffer), 40 ); @@ -231,8 +269,9 @@ HRESULT WINAPI QueryPathOfRegTypeLib( WCHAR Path[MAX_PATH]; LONG res; - TRACE_(typelib)("(%s, %x.%x, 0x%lx, %p)\n", debugstr_guid(guid), wMaj, wMin, lcid, path); + TRACE_(typelib)("(%s, %x.%x, 0x%x, %p)\n", debugstr_guid(guid), wMaj, wMin, lcid, path); + if (!find_typelib_key( guid, &wMaj, &wMin )) return TYPE_E_LIBNOTREGISTERED; get_typelib_key( guid, wMaj, wMin, buffer ); res = RegOpenKeyExW( HKEY_CLASSES_ROOT, buffer, 0, KEY_READ, &hkey ); @@ -279,7 +318,7 @@ HRESULT WINAPI QueryPathOfRegTypeLib( } } RegCloseKey( hkey ); - TRACE_(typelib)("-- 0x%08lx\n", hr); + TRACE_(typelib)("-- 0x%08x\n", hr); return hr; } @@ -347,8 +386,7 @@ HRESULT WINAPI LoadTypeLibEx( { case REGKIND_DEFAULT: /* don't register typelibs supplied with full path. Experimentation confirms the following */ - if ((!szFile) || - ((szFile[0] == '\\') && (szFile[1] == '\\')) || + if (((szFile[0] == '\\') && (szFile[1] == '\\')) || (szFile[0] && (szFile[1] == ':'))) break; /* else fall-through */ @@ -363,7 +401,7 @@ HRESULT WINAPI LoadTypeLibEx( break; } - TRACE(" returns %08lx\n",res); + TRACE(" returns %08x\n",res); return res; } @@ -392,7 +430,11 @@ HRESULT WINAPI LoadRegTypeLib( ITypeLib **ppTLib) { BSTR bstr=NULL; - HRESULT res=QueryPathOfRegTypeLib( rguid, wVerMajor, wVerMinor, lcid, &bstr); + HRESULT res; + + *ppTLib = NULL; + + res = QueryPathOfRegTypeLib( rguid, wVerMajor, wVerMinor, lcid, &bstr); if(SUCCEEDED(res)) { @@ -597,7 +639,7 @@ HRESULT WINAPI RegisterTypeLib( MESSAGE("\n"); } - if (tattr->wTypeFlags & (TYPEFLAG_FOLEAUTOMATION|TYPEFLAG_FDUAL)) + if (tattr->wTypeFlags & (TYPEFLAG_FOLEAUTOMATION|TYPEFLAG_FDUAL|TYPEFLAG_FDISPATCHABLE)) { /* register interface<->typelib coupling */ get_interface_key( &tattr->guid, keyName ); @@ -611,14 +653,14 @@ HRESULT WINAPI RegisterTypeLib( if (RegCreateKeyExW(key, ProxyStubClsidW, 0, NULL, 0, KEY_WRITE, NULL, &subKey, NULL) == ERROR_SUCCESS) { RegSetValueExW(subKey, NULL, 0, REG_SZ, - (BYTE*)PSOA, sizeof PSOA); + (const BYTE *)PSOA, sizeof PSOA); RegCloseKey(subKey); } if (RegCreateKeyExW(key, ProxyStubClsid32W, 0, NULL, 0, KEY_WRITE, NULL, &subKey, NULL) == ERROR_SUCCESS) { RegSetValueExW(subKey, NULL, 0, REG_SZ, - (BYTE*)PSOA, sizeof PSOA); + (const BYTE *)PSOA, sizeof PSOA); RegCloseKey(subKey); } @@ -626,7 +668,7 @@ HRESULT WINAPI RegisterTypeLib( KEY_WRITE, NULL, &subKey, NULL) == ERROR_SUCCESS) { WCHAR buffer[40]; - static const WCHAR fmtver[] = {'%','u','.','%','u',0 }; + static const WCHAR fmtver[] = {'%','x','.','%','x',0 }; static const WCHAR VersionW[] = {'V','e','r','s','i','o','n',0}; StringFromGUID2(&attr->guid, buffer, 40); @@ -689,7 +731,7 @@ HRESULT WINAPI UnRegisterTypeLib( ITypeLib* typeLib = NULL; int numTypes; - TRACE("(IID: %s): stub\n",debugstr_guid(libid)); + TRACE("(IID: %s)\n",debugstr_guid(libid)); /* Create the path to the key */ get_typelib_key( libid, wVerMajor, wVerMinor, keyName ); @@ -708,7 +750,7 @@ HRESULT WINAPI UnRegisterTypeLib( } /* Try and open the key to the type library. */ - if (RegOpenKeyExW(HKEY_CLASSES_ROOT, keyName, 0, KEY_READ | KEY_WRITE, &key) != S_OK) { + if (RegOpenKeyExW(HKEY_CLASSES_ROOT, keyName, 0, KEY_READ | KEY_WRITE, &key) != ERROR_SUCCESS) { result = E_INVALIDARG; goto end; } @@ -742,7 +784,7 @@ HRESULT WINAPI UnRegisterTypeLib( get_interface_key( &typeAttr->guid, subKeyName ); /* Delete its bits */ - if (RegOpenKeyExW(HKEY_CLASSES_ROOT, subKeyName, 0, KEY_WRITE, &subKey) != S_OK) { + if (RegOpenKeyExW(HKEY_CLASSES_ROOT, subKeyName, 0, KEY_WRITE, &subKey) != ERROR_SUCCESS) { goto enddeleteloop; } RegDeleteKeyW(subKey, ProxyStubClsidW); @@ -770,7 +812,7 @@ enddeleteloop: tmpLength = sizeof(subKeyName)/sizeof(WCHAR); deleteOtherStuff = TRUE; i = 0; - while(RegEnumKeyExW(key, i++, subKeyName, &tmpLength, NULL, NULL, NULL, NULL) == S_OK) { + while(RegEnumKeyExW(key, i++, subKeyName, &tmpLength, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { tmpLength = sizeof(subKeyName)/sizeof(WCHAR); /* if its not FLAGS or HELPDIR, then we must keep the rest of the key */ @@ -850,8 +892,9 @@ typedef struct tagITypeLibImpl int ctCustData; /* number of items in cust data list */ TLBCustData * pCustData; /* linked list to cust data */ TLBImpLib * pImpLibs; /* linked list to all imported typelibs */ + int ctTypeDesc; /* number of items in type desc array */ TYPEDESC * pTypeDesc; /* array of TypeDescriptions found in the - libary. Only used while read MSFT + library. Only used while read MSFT typelibs */ /* typelibs are cached, keyed by path and index, so store the linked list info within them */ @@ -949,6 +992,7 @@ typedef struct tagITypeInfoImpl const ITypeInfo2Vtbl *lpVtbl; const ITypeCompVtbl *lpVtblTypeComp; LONG ref; + BOOL no_free_data; /* don't free data structurees */ TYPEATTR TypeAttr ; /* _lots_ of type information. */ ITypeLibImpl * pTypeLib; /* back pointer to typelib */ int index; /* index in this typelib; */ @@ -1033,7 +1077,7 @@ static void dump_TypeDesc(const TYPEDESC *pTD,char *szVarType) { case VT_VARIANT: sprintf(szVarType, "VT_VARIANT"); break; case VT_VOID: sprintf(szVarType, "VT_VOID"); break; case VT_HRESULT: sprintf(szVarType, "VT_HRESULT"); break; - case VT_USERDEFINED: sprintf(szVarType, "VT_USERDEFINED ref = %lx", + case VT_USERDEFINED: sprintf(szVarType, "VT_USERDEFINED ref = %x", pTD->u.hreftype); break; case VT_PTR: sprintf(szVarType, "ptr to "); dump_TypeDesc(pTD->u.lptdesc, szVarType + 7); @@ -1068,7 +1112,7 @@ static void dump_ELEMDESC(const ELEMDESC *edesc) { } static void dump_FUNCDESC(const FUNCDESC *funcdesc) { int i; - MESSAGE("memid is %08lx\n",funcdesc->memid); + MESSAGE("memid is %08x\n",funcdesc->memid); for (i=0;icParams;i++) { MESSAGE("Param %d:\n",i); dump_ELEMDESC(funcdesc->lprgelemdescParam+i); @@ -1105,7 +1149,7 @@ static void dump_FUNCDESC(const FUNCDESC *funcdesc) { dump_ELEMDESC(&funcdesc->elemdescFunc); } -static const char * typekind_desc[] = +static const char * const typekind_desc[] = { "TKIND_ENUM", "TKIND_RECORD", @@ -1129,7 +1173,7 @@ static void dump_TLBFuncDescOne(const TLBFuncDesc * pfd) dump_FUNCDESC(&(pfd->funcdesc)); MESSAGE("\thelpstring: %s\n", debugstr_w(pfd->HelpString)); - MESSAGE("\tentry: %s\n", debugstr_w(pfd->Entry)); + MESSAGE("\tentry: %s\n", (pfd->Entry == (void *)-1) ? "invalid" : debugstr_w(pfd->Entry)); } static void dump_TLBFuncDesc(const TLBFuncDesc * pfd) { @@ -1152,7 +1196,7 @@ static void dump_TLBImpLib(const TLBImpLib *import) { TRACE_(typelib)("%s %s\n", debugstr_guid(&(import->guid)), debugstr_w(import->name)); - TRACE_(typelib)("v%d.%d lcid=%lx offset=%x\n", import->wVersionMajor, + TRACE_(typelib)("v%d.%d lcid=%x offset=%x\n", import->wVersionMajor, import->wVersionMinor, import->lcid, import->offset); } @@ -1160,7 +1204,7 @@ static void dump_TLBRefType(const TLBRefType * prt) { while (prt) { - TRACE_(typelib)("href:0x%08lx\n", prt->reference); + TRACE_(typelib)("href:0x%08x\n", prt->reference); if(prt->index == -1) TRACE_(typelib)("%s\n", debugstr_guid(&(prt->guid))); else @@ -1179,13 +1223,13 @@ static void dump_TLBImplType(const TLBImplType * impl) { while (impl) { TRACE_(typelib)( - "implementing/inheriting interface hRef = %lx implflags %x\n", + "implementing/inheriting interface hRef = %x implflags %x\n", impl->hRef, impl->implflags); impl = impl->next; } } -void dump_Variant(const VARIANT * pvar) +static void dump_Variant(const VARIANT * pvar) { SYSTEMTIME st; @@ -1209,18 +1253,18 @@ void dump_Variant(const VARIANT * pvar) case VT_I2: TRACE(",%d", V_I2(pvar)); break; case VT_UI2: TRACE(",%d", V_UI2(pvar)); break; case VT_INT: - case VT_I4: TRACE(",%ld", V_I4(pvar)); break; + case VT_I4: TRACE(",%d", V_I4(pvar)); break; case VT_UINT: - case VT_UI4: TRACE(",%ld", V_UI4(pvar)); break; - case VT_I8: TRACE(",0x%08lx,0x%08lx", (ULONG)(V_I8(pvar) >> 32), + case VT_UI4: TRACE(",%d", V_UI4(pvar)); break; + case VT_I8: TRACE(",0x%08x,0x%08x", (ULONG)(V_I8(pvar) >> 32), (ULONG)(V_I8(pvar) & 0xffffffff)); break; - case VT_UI8: TRACE(",0x%08lx,0x%08lx", (ULONG)(V_UI8(pvar) >> 32), + case VT_UI8: TRACE(",0x%08x,0x%08x", (ULONG)(V_UI8(pvar) >> 32), (ULONG)(V_UI8(pvar) & 0xffffffff)); break; case VT_R4: TRACE(",%3.3e", V_R4(pvar)); break; case VT_R8: TRACE(",%3.3e", V_R8(pvar)); break; case VT_BOOL: TRACE(",%s", V_BOOL(pvar) ? "TRUE" : "FALSE"); break; case VT_BSTR: TRACE(",%s", debugstr_w(V_BSTR(pvar))); break; - case VT_CY: TRACE(",0x%08lx,0x%08lx", V_CY(pvar).s.Hi, + case VT_CY: TRACE(",0x%08x,0x%08x", V_CY(pvar).s.Hi, V_CY(pvar).s.Lo); break; case VT_DATE: if(!VariantTimeToSystemTime(V_DATE(pvar), &st)) @@ -1242,20 +1286,28 @@ void dump_Variant(const VARIANT * pvar) static void dump_DispParms(const DISPPARAMS * pdp) { - int index = 0; + int index; TRACE("args=%u named args=%u\n", pdp->cArgs, pdp->cNamedArgs); - while (index < pdp->cArgs) + if (pdp->cNamedArgs && pdp->rgdispidNamedArgs) { - dump_Variant( &pdp->rgvarg[index] ); - ++index; + TRACE("named args:\n"); + for (index = 0; index < pdp->cNamedArgs; index++) + TRACE( "\t0x%x\n", pdp->rgdispidNamedArgs[index] ); + } + + if (pdp->cArgs && pdp->rgvarg) + { + TRACE("args:\n"); + for (index = 0; index < pdp->cArgs; index++) + dump_Variant( &pdp->rgvarg[index] ); } } static void dump_TypeInfo(const ITypeInfoImpl * pty) { - TRACE("%p ref=%lu\n", pty, pty->ref); + TRACE("%p ref=%u\n", pty, pty->ref); TRACE("%s %s\n", debugstr_w(pty->Name), debugstr_w(pty->DocString)); TRACE("attr:%s\n", debugstr_guid(&(pty->TypeAttr.guid))); TRACE("kind:%s\n", typekind_desc[pty->TypeAttr.typekind]); @@ -1272,9 +1324,9 @@ static void dump_TypeInfo(const ITypeInfoImpl * pty) static void dump_VARDESC(const VARDESC *v) { - MESSAGE("memid %ld\n",v->memid); + MESSAGE("memid %d\n",v->memid); MESSAGE("lpstrSchema %s\n",debugstr_w(v->lpstrSchema)); - MESSAGE("oInst %ld\n",v->u.oInst); + MESSAGE("oInst %d\n",v->u.oInst); dump_ELEMDESC(&(v->elemdescVar)); MESSAGE("wVarFlags %x\n",v->wVarFlags); MESSAGE("varkind %d\n",v->varkind); @@ -1367,12 +1419,13 @@ static void *TLB_CopyTypeDesc( TYPEDESC *dest, const TYPEDESC *src, void *buffer * * Functions for reading MSFT typelibs (those created by CreateTypeLib2) */ -/* read function */ -static DWORD MSFT_Read(void *buffer, DWORD count, TLBContext *pcx, long where ) +static inline unsigned int MSFT_Tell(TLBContext *pcx) { - TRACE_(typelib)("pos=0x%08x len=0x%08lx 0x%08x 0x%08x 0x%08lx\n", - pcx->pos, count, pcx->oStart, pcx->length, where); + return pcx->pos; +} +static inline void MSFT_Seek(TLBContext *pcx, long where) +{ if (where != DO_NOT_SEEK) { where += pcx->oStart; @@ -1384,6 +1437,15 @@ static DWORD MSFT_Read(void *buffer, DWORD count, TLBContext *pcx, long where ) } pcx->pos = where; } +} + +/* read function */ +static DWORD MSFT_Read(void *buffer, DWORD count, TLBContext *pcx, long where ) +{ + TRACE_(typelib)("pos=0x%08x len=0x%08x 0x%08x 0x%08x 0x%08lx\n", + pcx->pos, count, pcx->oStart, pcx->length, where); + + MSFT_Seek(pcx, where); if (pcx->pos + count > pcx->length) count = pcx->length - pcx->pos; memcpy( buffer, (char *)pcx->mapping + pcx->pos, count ); pcx->pos += count; @@ -1446,7 +1508,6 @@ static BSTR MSFT_ReadName( TLBContext *pcx, int offset) char * name; MSFT_NameIntro niName; int lengthInChars; - WCHAR* pwstring = NULL; BSTR bstrName = NULL; if (offset < 0) @@ -1467,15 +1528,12 @@ static BSTR MSFT_ReadName( TLBContext *pcx, int offset) /* no invalid characters in string */ if (lengthInChars) { - pwstring = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*lengthInChars); + bstrName = SysAllocStringByteLen(NULL, lengthInChars * sizeof(WCHAR)); /* don't check for invalid character since this has been done previously */ - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, pwstring, lengthInChars); - - bstrName = SysAllocStringLen(pwstring, lengthInChars); - lengthInChars = SysStringLen(bstrName); - HeapFree(GetProcessHeap(), 0, pwstring); + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, bstrName, lengthInChars); } + TLB_Free(name); TRACE_(typelib)("%s %d\n", debugstr_w(bstrName), lengthInChars); return bstrName; @@ -1501,15 +1559,12 @@ static BSTR MSFT_ReadString( TLBContext *pcx, int offset) /* no invalid characters in string */ if (lengthInChars) { - WCHAR* pwstring = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*lengthInChars); + bstr = SysAllocStringByteLen(NULL, lengthInChars * sizeof(WCHAR)); /* don't check for invalid character since this has been done previously */ - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, string, -1, pwstring, lengthInChars); - - bstr = SysAllocStringLen(pwstring, lengthInChars); - lengthInChars = SysStringLen(bstr); - HeapFree(GetProcessHeap(), 0, pwstring); + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, string, -1, bstr, lengthInChars); } + TLB_Free(string); TRACE_(typelib)("%s %d\n", debugstr_w(bstr), lengthInChars); return bstr; @@ -1561,16 +1616,23 @@ static void MSFT_ReadValue( VARIANT * pVar, int offset, TLBContext *pcx ) char * ptr; MSFT_ReadLEDWords(&size, sizeof(INT), pcx, DO_NOT_SEEK ); if(size < 0) { - FIXME("BSTR length = %d?\n", size); - } else { - ptr=TLB_Alloc(size);/* allocate temp buffer */ - MSFT_Read(ptr, size, pcx, DO_NOT_SEEK);/* read string (ANSI) */ - V_BSTR(pVar)=SysAllocStringLen(NULL,size); - /* FIXME: do we need a AtoW conversion here? */ - V_UNION(pVar, bstrVal[size])=L'\0'; - while(size--) V_UNION(pVar, bstrVal[size])=ptr[size]; - TLB_Free(ptr); + char next; + DWORD origPos = MSFT_Tell(pcx), nullPos; + + do { + MSFT_Read(&next, 1, pcx, DO_NOT_SEEK); + } while (next); + nullPos = MSFT_Tell(pcx); + size = nullPos - origPos; + MSFT_Seek(pcx, origPos); } + ptr=TLB_Alloc(size);/* allocate temp buffer */ + MSFT_Read(ptr, size, pcx, DO_NOT_SEEK);/* read string (ANSI) */ + V_BSTR(pVar)=SysAllocStringLen(NULL,size); + /* FIXME: do we need a AtoW conversion here? */ + V_UNION(pVar, bstrVal[size])=L'\0'; + while(size--) V_UNION(pVar, bstrVal[size])=ptr[size]; + TLB_Free(ptr); } size=-4; break; /* FIXME: this will not work AT ALL when the variant contains a pointer */ @@ -1640,6 +1702,34 @@ static void MSFT_GetTdesc(TLBContext *pcx, INT type, TYPEDESC *pTd, TRACE_(typelib)("vt type = %X\n", pTd->vt); } +static void MSFT_ResolveReferencedTypes(TLBContext *pcx, ITypeInfoImpl *pTI, TYPEDESC *lpTypeDesc) +{ + /* resolve referenced type if any */ + while (lpTypeDesc) + { + switch (lpTypeDesc->vt) + { + case VT_PTR: + lpTypeDesc = lpTypeDesc->u.lptdesc; + break; + + case VT_CARRAY: + lpTypeDesc = & (lpTypeDesc->u.lpadesc->tdescElem); + break; + + case VT_USERDEFINED: + MSFT_DoRefType(pcx, pTI, + lpTypeDesc->u.hreftype); + + lpTypeDesc = NULL; + break; + + default: + lpTypeDesc = NULL; + } + } +} + static void MSFT_DoFuncs(TLBContext* pcx, ITypeInfoImpl* pTI, @@ -1676,7 +1766,7 @@ MSFT_DoFuncs(TLBContext* pcx, int infolen, nameoffset, reclength, nrattributes, i; int recoffset = offset + sizeof(INT); - char recbuf[512]; + char *recbuf = HeapAlloc(GetProcessHeap(), 0, 0xffff); MSFT_FuncRecord * pFuncRec=(MSFT_FuncRecord *) recbuf; TLBFuncDesc *ptfd_prev = NULL; @@ -1702,7 +1792,7 @@ MSFT_DoFuncs(TLBContext* pcx, /* read the function information record */ MSFT_ReadLEDWords(&reclength, sizeof(INT), pcx, recoffset); - reclength &= 0x1ff; + reclength &= 0xffff; MSFT_ReadLEDWords(pFuncRec, reclength - sizeof(INT), pcx, DO_NOT_SEEK); @@ -1723,7 +1813,9 @@ MSFT_DoFuncs(TLBContext* pcx, { if ( pFuncRec->FKCCIC & 0x2000 ) { - (*pptfd)->Entry = (WCHAR*) pFuncRec->OptAttr[2] ; + if (HIWORD(pFuncRec->OptAttr[2]) != 0) + ERR("ordinal 0x%08x invalid, HIWORD != 0\n", pFuncRec->OptAttr[2]); + (*pptfd)->Entry = (BSTR)pFuncRec->OptAttr[2]; } else { @@ -1742,6 +1834,10 @@ MSFT_DoFuncs(TLBContext* pcx, } } } + else + { + (*pptfd)->Entry = (BSTR)-1; + } } } @@ -1761,6 +1857,7 @@ MSFT_DoFuncs(TLBContext* pcx, pFuncRec->DataType, &(*pptfd)->funcdesc.elemdescFunc.tdesc, pTI); + MSFT_ResolveReferencedTypes(pcx, pTI, &(*pptfd)->funcdesc.elemdescFunc.tdesc); /* do the parameters/arguments */ if(pFuncRec->nrargs) @@ -1779,7 +1876,6 @@ MSFT_DoFuncs(TLBContext* pcx, for ( j = 0 ; j < pFuncRec->nrargs ; j++ ) { - TYPEDESC *lpArgTypeDesc; ELEMDESC *elemdesc = &(*pptfd)->funcdesc.lprgelemdescParam[j]; MSFT_GetTdesc(pcx, @@ -1800,32 +1896,7 @@ MSFT_DoFuncs(TLBContext* pcx, MSFT_ReadName( pcx, paraminfo.oName ); TRACE_(typelib)("param[%d] = %s\n", j, debugstr_w((*pptfd)->pParamDesc[j].Name)); - lpArgTypeDesc = &elemdesc->tdesc; - - /* resolve referenced type if any */ - while ( lpArgTypeDesc != NULL ) - { - switch ( lpArgTypeDesc->vt ) - { - case VT_PTR: - lpArgTypeDesc = lpArgTypeDesc->u.lptdesc; - break; - - case VT_CARRAY: - lpArgTypeDesc = & (lpArgTypeDesc->u.lpadesc->tdescElem); - break; - - case VT_USERDEFINED: - MSFT_DoRefType(pcx, pTI, - lpArgTypeDesc->u.hreftype); - - lpArgTypeDesc = NULL; - break; - - default: - lpArgTypeDesc = NULL; - } - } + MSFT_ResolveReferencedTypes(pcx, pTI, &elemdesc->tdesc); /* default value */ if ( (elemdesc->u.paramdesc.wParamFlags & PARAMFLAG_FHASDEFAULT) && @@ -1872,6 +1943,7 @@ MSFT_DoFuncs(TLBContext* pcx, pptfd = & ((*pptfd)->next); recoffset += reclength; } + HeapFree(GetProcessHeap(), 0, recbuf); } static void MSFT_DoVars(TLBContext *pcx, ITypeInfoImpl *pTI, int cFuncs, @@ -1893,7 +1965,7 @@ static void MSFT_DoVars(TLBContext *pcx, ITypeInfoImpl *pTI, int cFuncs, *pptvd=TLB_Alloc(sizeof(TLBVarDesc)); /* name, eventually add to a hash table */ MSFT_ReadLEDWords(&nameoffset, sizeof(INT), pcx, - offset + infolen + (cFuncs + cVars + i + 1) * sizeof(INT)); + offset + infolen + (2*cFuncs + cVars + i + 1) * sizeof(INT)); (*pptvd)->Name=MSFT_ReadName(pcx, nameoffset); /* read the variable information record */ MSFT_ReadLEDWords(&reclength, sizeof(INT), pcx, recoffset); @@ -1909,7 +1981,7 @@ static void MSFT_DoVars(TLBContext *pcx, ITypeInfoImpl *pTI, int cFuncs, (*pptvd)->HelpStringContext=pVarRec->HelpStringContext; /* fill the VarDesc Structure */ MSFT_ReadLEDWords(&(*pptvd)->vardesc.memid, sizeof(INT), pcx, - offset + infolen + ( i + 1) * sizeof(INT)); + offset + infolen + (cFuncs + i + 1) * sizeof(INT)); (*pptvd)->vardesc.varkind = pVarRec->VarKind; (*pptvd)->vardesc.wVarFlags = pVarRec->Flags; MSFT_GetTdesc(pcx, pVarRec->DataType, @@ -1921,6 +1993,7 @@ static void MSFT_DoVars(TLBContext *pcx, ITypeInfoImpl *pTI, int cFuncs, pVarRec->OffsValue, pcx); } else (*pptvd)->vardesc.u.oInst=pVarRec->OffsValue; + MSFT_ResolveReferencedTypes(pcx, pTI, &(*pptvd)->vardesc.elemdescVar.tdesc); pptvd=&((*pptvd)->next); recoffset += reclength; } @@ -2026,12 +2099,9 @@ static ITypeInfoImpl * MSFT_DoTypeInfo( ptiRet->pTypeLib = pLibInfo; ptiRet->index=count; /* fill in the typeattr fields */ - WARN("Assign constructor/destructor memid\n"); MSFT_ReadGuid(&ptiRet->TypeAttr.guid, tiBase.posguid, pcx); ptiRet->TypeAttr.lcid=pLibInfo->LibAttr.lcid; /* FIXME: correct? */ - ptiRet->TypeAttr.memidConstructor=MEMBERID_NIL ;/* FIXME */ - ptiRet->TypeAttr.memidDestructor=MEMBERID_NIL ; /* FIXME */ ptiRet->TypeAttr.lpstrSchema=NULL; /* reserved */ ptiRet->TypeAttr.cbSizeInstance=tiBase.size; ptiRet->TypeAttr.typekind=tiBase.typekind & 0xF; @@ -2144,37 +2214,41 @@ static int TLB_ReadTypeLib(LPCWSTR pszFileName, LPWSTR pszPath, UINT cchPath, IT int ret = TYPE_E_CANTLOADLIBRARY; INT index = 1; HINSTANCE hinstDLL; + LPWSTR index_str, file = (LPWSTR)pszFileName; *ppTypeLib = NULL; - lstrcpynW(pszPath, pszFileName, cchPath); - - /* first try loading as a dll and access the typelib as a resource */ - hinstDLL = LoadLibraryExW(pszFileName, 0, DONT_RESOLVE_DLL_REFERENCES | - LOAD_LIBRARY_AS_DATAFILE | LOAD_WITH_ALTERED_SEARCH_PATH); - if (!hinstDLL) + index_str = strrchrW(pszFileName, '\\'); + if(index_str && *++index_str != '\0') { - /* it may have been specified with resource index appended to the - * path, so remove it and try again */ - const WCHAR *pIndexStr = strrchrW(pszFileName, '\\'); - if(pIndexStr && pIndexStr != pszFileName && *++pIndexStr != '\0') + LPWSTR end_ptr; + long idx = strtolW(index_str, &end_ptr, 10); + if(*end_ptr == '\0') { - index = atoiW(pIndexStr); - pszPath[pIndexStr - pszFileName - 1] = '\0'; - - hinstDLL = LoadLibraryExW(pszPath, 0, DONT_RESOLVE_DLL_REFERENCES | - LOAD_LIBRARY_AS_DATAFILE | LOAD_WITH_ALTERED_SEARCH_PATH); + int str_len = index_str - pszFileName - 1; + index = idx; + file = HeapAlloc(GetProcessHeap(), 0, (str_len + 1) * sizeof(WCHAR)); + memcpy(file, pszFileName, str_len * sizeof(WCHAR)); + file[str_len] = 0; } } - /* get the path to the specified typelib file */ - if (!hinstDLL) + if(!SearchPathW(NULL, file, NULL, cchPath, pszPath, NULL)) { - /* otherwise, try loading as a regular file */ - if (!SearchPathW(NULL, pszFileName, NULL, cchPath, pszPath, NULL)) - return TYPE_E_CANTLOADLIBRARY; + if(strchrW(file, '\\')) + { + lstrcpyW(pszPath, file); + } + else + { + int len = GetSystemDirectoryW(pszPath, cchPath); + pszPath[len] = '\\'; + memcpy(pszPath + len + 1, file, (strlenW(file) + 1) * sizeof(WCHAR)); + } } + if(file != pszFileName) HeapFree(GetProcessHeap(), 0, file); + TRACE_(typelib)("File %s index %d\n", debugstr_w(pszPath), index); /* We look the path up in the typelib cache. If found, we just addref it, and return the pointer. */ @@ -2193,6 +2267,10 @@ static int TLB_ReadTypeLib(LPCWSTR pszFileName, LPWSTR pszPath, UINT cchPath, IT LeaveCriticalSection(&cache_section); /* now actually load and parse the typelib */ + + hinstDLL = LoadLibraryExW(pszPath, 0, DONT_RESOLVE_DLL_REFERENCES | + LOAD_LIBRARY_AS_DATAFILE | LOAD_WITH_ALTERED_SEARCH_PATH); + if (hinstDLL) { static const WCHAR TYPELIBW[] = {'T','Y','P','E','L','I','B',0}; @@ -2214,7 +2292,7 @@ static int TLB_ReadTypeLib(LPCWSTR pszFileName, LPWSTR pszPath, UINT cchPath, IT else if (dwSignature == SLTG_SIGNATURE) *ppTypeLib = ITypeLib2_Constructor_SLTG(pBase, dwTLBLength); else - FIXME("Header type magic 0x%08lx not supported.\n",dwSignature); + FIXME("Header type magic 0x%08x not supported.\n",dwSignature); } FreeResource( hGlobal ); } @@ -2266,7 +2344,7 @@ static int TLB_ReadTypeLib(LPCWSTR pszFileName, LPWSTR pszPath, UINT cchPath, IT LeaveCriticalSection(&cache_section); ret = S_OK; } else - ERR("Loading of typelib %s failed with error %ld\n", debugstr_w(pszFileName), GetLastError()); + ERR("Loading of typelib %s failed with error %d\n", debugstr_w(pszFileName), GetLastError()); return ret; } @@ -2300,7 +2378,7 @@ static ITypeLib2* ITypeLib2_Constructor_MSFT(LPVOID pLib, DWORD dwTLBLength) MSFT_SegDir tlbSegDir; ITypeLibImpl * pTypeLibImpl; - TRACE("%p, TLB length = %ld\n", pLib, dwTLBLength); + TRACE("%p, TLB length = %d\n", pLib, dwTLBLength); pTypeLibImpl = TypeLibImpl_Constructor(); if (!pTypeLibImpl) return NULL; @@ -2383,6 +2461,7 @@ static ITypeLib2* ITypeLib2_Constructor_MSFT(LPVOID pLib, DWORD dwTLBLength) { int i, j, cTD = tlbSegDir.pTypdescTab.length / (2*sizeof(INT)); INT16 td[4]; + pTypeLibImpl->ctTypeDesc = cTD; pTypeLibImpl->pTypeDesc = TLB_Alloc( cTD * sizeof(TYPEDESC)); MSFT_ReadLEWords(td, sizeof(td), &cx, tlbSegDir.pTypdescTab.offset); for(i=0; iData1, &guid->Data2, &guid->Data3, &s) != 4) { + if(sscanf(str, "%x-%hx-%hx-%hx", &guid->Data1, &guid->Data2, &guid->Data3, &s) != 4) { FIXME("Can't parse guid %s\n", debugstr_guid(guid)); return FALSE; } @@ -2614,26 +2693,9 @@ static DWORD SLTG_ReadLibBlk(LPVOID pLibBlk, ITypeLibImpl *pTypeLibImpl) return ptr - (char*)pLibBlk; } -static WORD *SLTG_DoType(WORD *pType, char *pBlk, ELEMDESC *pElem) +static WORD *SLTG_DoType(WORD *pType, char *pBlk, TYPEDESC *pTD) { BOOL done = FALSE; - TYPEDESC *pTD = &pElem->tdesc; - - /* Handle [in/out] first */ - if((*pType & 0xc000) == 0xc000) - pElem->u.paramdesc.wParamFlags = PARAMFLAG_NONE; - else if(*pType & 0x8000) - pElem->u.paramdesc.wParamFlags = PARAMFLAG_FIN | PARAMFLAG_FOUT; - else if(*pType & 0x4000) - pElem->u.paramdesc.wParamFlags = PARAMFLAG_FOUT; - else - pElem->u.paramdesc.wParamFlags = PARAMFLAG_FIN; - - if(*pType & 0x2000) - pElem->u.paramdesc.wParamFlags |= PARAMFLAG_FLCID; - - if(*pType & 0x80) - pElem->u.paramdesc.wParamFlags |= PARAMFLAG_FRETVAL; while(!done) { if((*pType & 0xe00) == 0xe00) { @@ -2642,7 +2704,7 @@ static WORD *SLTG_DoType(WORD *pType, char *pBlk, ELEMDESC *pElem) sizeof(TYPEDESC)); pTD = pTD->u.lptdesc; } - switch(*pType & 0x7f) { + switch(*pType & 0x3f) { case VT_PTR: pTD->vt = VT_PTR; pTD->u.lptdesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, @@ -2688,7 +2750,7 @@ static WORD *SLTG_DoType(WORD *pType, char *pBlk, ELEMDESC *pElem) break; } default: - pTD->vt = *pType & 0x7f; + pTD->vt = *pType & 0x3f; done = TRUE; break; } @@ -2697,6 +2759,27 @@ static WORD *SLTG_DoType(WORD *pType, char *pBlk, ELEMDESC *pElem) return pType; } +static WORD *SLTG_DoElem(WORD *pType, char *pBlk, ELEMDESC *pElem) +{ + /* Handle [in/out] first */ + if((*pType & 0xc000) == 0xc000) + pElem->u.paramdesc.wParamFlags = PARAMFLAG_NONE; + else if(*pType & 0x8000) + pElem->u.paramdesc.wParamFlags = PARAMFLAG_FIN | PARAMFLAG_FOUT; + else if(*pType & 0x4000) + pElem->u.paramdesc.wParamFlags = PARAMFLAG_FOUT; + else + pElem->u.paramdesc.wParamFlags = PARAMFLAG_FIN; + + if(*pType & 0x2000) + pElem->u.paramdesc.wParamFlags |= PARAMFLAG_FLCID; + + if(*pType & 0x80) + pElem->u.paramdesc.wParamFlags |= PARAMFLAG_FRETVAL; + + return SLTG_DoType(pType, pBlk, &pElem->tdesc); +} + static void SLTG_DoRefs(SLTG_RefInfo *pRef, ITypeInfoImpl *pTI, char *pNameTable) @@ -2739,7 +2822,7 @@ static void SLTG_DoRefs(SLTG_RefInfo *pRef, ITypeInfoImpl *pTI, (*import)->offset = lib_offs; TLB_GUIDFromString( pNameTable + lib_offs + 4, &(*import)->guid); - if(sscanf(pNameTable + lib_offs + 40, "}#%hd.%hd#%lx#%s", + if(sscanf(pNameTable + lib_offs + 40, "}#%hd.%hd#%x#%s", &(*import)->wVersionMajor, &(*import)->wVersionMinor, &(*import)->lcid, fname) != 4) { @@ -2798,67 +2881,111 @@ static char *SLTG_DoImpls(char *pBlk, ITypeInfoImpl *pTI, return (char*)info; } -static SLTG_TypeInfoTail *SLTG_ProcessCoClass(char *pBlk, ITypeInfoImpl *pTI, - char *pNameTable) +static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsigned short cVars, char *pNameTable) { - SLTG_TypeInfoHeader *pTIHeader = (SLTG_TypeInfoHeader*)pBlk; - SLTG_MemberHeader *pMemHeader; - char *pFirstItem, *pNextItem; + TLBVarDesc **ppVarDesc = &pTI->varlist; + BSTR bstrPrevName = NULL; + SLTG_Variable *pItem; + unsigned short i; + WORD *pType; + char buf[300]; - if(pTIHeader->href_table != 0xffffffff) { - SLTG_DoRefs((SLTG_RefInfo*)(pBlk + pTIHeader->href_table), pTI, - pNameTable); - } + for(pItem = (SLTG_Variable *)pFirstItem, i = 0; i < cVars; + pItem = (SLTG_Variable *)(pBlk + pItem->next), i++) { + *ppVarDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + sizeof(**ppVarDesc)); + (*ppVarDesc)->vardesc.memid = pItem->memid; - pMemHeader = (SLTG_MemberHeader*)(pBlk + pTIHeader->elem_table); + if (pItem->magic != SLTG_VAR_MAGIC && + pItem->magic != SLTG_VAR_WITH_FLAGS_MAGIC) { + FIXME_(typelib)("var magic = %02x\n", pItem->magic); + return; + } - pFirstItem = pNextItem = (char*)(pMemHeader + 1); + if (pItem->name == 0xfffe) + (*ppVarDesc)->Name = SysAllocString(bstrPrevName); + else + (*ppVarDesc)->Name = TLB_MultiByteToBSTR(pItem->name + pNameTable); - if(*(WORD*)pFirstItem == SLTG_IMPL_MAGIC) { - pNextItem = SLTG_DoImpls(pFirstItem, pTI, FALSE); - } + TRACE_(typelib)("byte_offs = 0x%x\n", pItem->byte_offs); + TRACE_(typelib)("memid = 0x%x\n", pItem->memid); - return (SLTG_TypeInfoTail*)(pFirstItem + pMemHeader->cbExtra); + if (pItem->flags & 0x40) { + TRACE_(typelib)("VAR_DISPATCH\n"); + (*ppVarDesc)->vardesc.varkind = VAR_DISPATCH; + } + else if (pItem->flags & 0x10) { + TRACE_(typelib)("VAR_CONST\n"); + (*ppVarDesc)->vardesc.varkind = VAR_CONST; + (*ppVarDesc)->vardesc.u.lpvarValue = HeapAlloc(GetProcessHeap(), 0, + sizeof(VARIANT)); + V_VT((*ppVarDesc)->vardesc.u.lpvarValue) = VT_INT; + V_UNION((*ppVarDesc)->vardesc.u.lpvarValue, intVal) = + *(INT*)(pBlk + pItem->byte_offs); + } + else { + TRACE_(typelib)("VAR_PERINSTANCE\n"); + (*ppVarDesc)->vardesc.u.oInst = pItem->byte_offs; + (*ppVarDesc)->vardesc.varkind = VAR_PERINSTANCE; + } + + if (pItem->magic == SLTG_VAR_WITH_FLAGS_MAGIC) + (*ppVarDesc)->vardesc.wVarFlags = pItem->varflags; + + if (pItem->flags & 0x80) + (*ppVarDesc)->vardesc.wVarFlags |= VARFLAG_FREADONLY; + + if(pItem->flags & 0x02) + pType = &pItem->type; + else + pType = (WORD*)(pBlk + pItem->type); + + if (pItem->flags & ~0xd2) + FIXME_(typelib)("unhandled flags = %02x\n", pItem->flags & ~0xd2); + + SLTG_DoElem(pType, pBlk, + &(*ppVarDesc)->vardesc.elemdescVar); + + dump_TypeDesc(&(*ppVarDesc)->vardesc.elemdescVar.tdesc, buf); + + bstrPrevName = (*ppVarDesc)->Name; + ppVarDesc = &((*ppVarDesc)->next); + } + pTI->TypeAttr.cVars = cVars; } - -static SLTG_TypeInfoTail *SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, - char *pNameTable) +static void SLTG_DoFuncs(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsigned short cFuncs, char *pNameTable) { - SLTG_TypeInfoHeader *pTIHeader = (SLTG_TypeInfoHeader*)pBlk; - SLTG_MemberHeader *pMemHeader; SLTG_Function *pFunc; - char *pFirstItem, *pNextItem; + unsigned short i; TLBFuncDesc **ppFuncDesc = &pTI->funclist; - int num = 0; - if(pTIHeader->href_table != 0xffffffff) { - SLTG_DoRefs((SLTG_RefInfo*)(pBlk + pTIHeader->href_table), pTI, - pNameTable); - } - - pMemHeader = (SLTG_MemberHeader*)(pBlk + pTIHeader->elem_table); - - pFirstItem = pNextItem = (char*)(pMemHeader + 1); - - if(*(WORD*)pFirstItem == SLTG_IMPL_MAGIC) { - pNextItem = SLTG_DoImpls(pFirstItem, pTI, TRUE); - } - - for(pFunc = (SLTG_Function*)pNextItem, num = 1; 1; - pFunc = (SLTG_Function*)(pFirstItem + pFunc->next), num++) { + for(pFunc = (SLTG_Function*)pFirstItem, i = 0; i < cFuncs; + pFunc = (SLTG_Function*)(pBlk + pFunc->next), i++) { int param; WORD *pType, *pArg; - if(pFunc->magic != SLTG_FUNCTION_MAGIC && - pFunc->magic != SLTG_FUNCTION_WITH_FLAGS_MAGIC) { - FIXME("func magic = %02x\n", pFunc->magic); - return NULL; - } *ppFuncDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(**ppFuncDesc)); + + switch (pFunc->magic & ~SLTG_FUNCTION_FLAGS_PRESENT) { + case SLTG_FUNCTION_MAGIC: + (*ppFuncDesc)->funcdesc.funckind = FUNC_PUREVIRTUAL; + break; + case SLTG_DISPATCH_FUNCTION_MAGIC: + (*ppFuncDesc)->funcdesc.funckind = FUNC_DISPATCH; + break; + case SLTG_STATIC_FUNCTION_MAGIC: + (*ppFuncDesc)->funcdesc.funckind = FUNC_STATIC; + break; + default: + FIXME("unimplemented func magic = %02x\n", pFunc->magic & ~SLTG_FUNCTION_FLAGS_PRESENT); + HeapFree(GetProcessHeap(), 0, *ppFuncDesc); + *ppFuncDesc = NULL; + return; + } (*ppFuncDesc)->Name = TLB_MultiByteToBSTR(pFunc->name + pNameTable); (*ppFuncDesc)->funcdesc.memid = pFunc->dispid; @@ -2868,16 +2995,15 @@ static SLTG_TypeInfoTail *SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, (*ppFuncDesc)->funcdesc.cParamsOpt = (pFunc->retnextopt & 0x7e) >> 1; (*ppFuncDesc)->funcdesc.oVft = pFunc->vtblpos; - if(pFunc->magic == SLTG_FUNCTION_WITH_FLAGS_MAGIC) + if(pFunc->magic & SLTG_FUNCTION_FLAGS_PRESENT) (*ppFuncDesc)->funcdesc.wFuncFlags = pFunc->funcflags; if(pFunc->retnextopt & 0x80) pType = &pFunc->rettype; else - pType = (WORD*)(pFirstItem + pFunc->rettype); + pType = (WORD*)(pBlk + pFunc->rettype); - - SLTG_DoType(pType, pFirstItem, &(*ppFuncDesc)->funcdesc.elemdescFunc); + SLTG_DoElem(pType, pBlk, &(*ppFuncDesc)->funcdesc.elemdescFunc); (*ppFuncDesc)->funcdesc.lprgelemdescParam = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, @@ -2886,7 +3012,7 @@ static SLTG_TypeInfoTail *SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (*ppFuncDesc)->funcdesc.cParams * sizeof(TLBParDesc)); - pArg = (WORD*)(pFirstItem + pFunc->arg_off); + pArg = (WORD*)(pBlk + pFunc->arg_off); for(param = 0; param < (*ppFuncDesc)->funcdesc.cParams; param++) { char *paramName = pNameTable + *pArg; @@ -2913,14 +3039,14 @@ static SLTG_TypeInfoTail *SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, pArg++; if(HaveOffs) { /* the next word is an offset to type */ - pType = (WORD*)(pFirstItem + *pArg); - SLTG_DoType(pType, pFirstItem, + pType = (WORD*)(pBlk + *pArg); + SLTG_DoElem(pType, pBlk, &(*ppFuncDesc)->funcdesc.lprgelemdescParam[param]); pArg++; } else { if(paramName) paramName--; - pArg = SLTG_DoType(pArg, pFirstItem, + pArg = SLTG_DoElem(pArg, pBlk, &(*ppFuncDesc)->funcdesc.lprgelemdescParam[param]); } @@ -2938,152 +3064,125 @@ static SLTG_TypeInfoTail *SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, ppFuncDesc = &((*ppFuncDesc)->next); if(pFunc->next == 0xffff) break; } - pTI->TypeAttr.cFuncs = num; + pTI->TypeAttr.cFuncs = cFuncs; +} + +static void SLTG_ProcessCoClass(char *pBlk, ITypeInfoImpl *pTI, + char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, + SLTG_TypeInfoTail *pTITail) +{ + char *pFirstItem, *pNextItem; + + if(pTIHeader->href_table != 0xffffffff) { + SLTG_DoRefs((SLTG_RefInfo*)((char *)pTIHeader + pTIHeader->href_table), pTI, + pNameTable); + } + + pFirstItem = pNextItem = pBlk; + + if(*(WORD*)pFirstItem == SLTG_IMPL_MAGIC) { + pNextItem = SLTG_DoImpls(pFirstItem, pTI, FALSE); + } +} + + +static void SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, + char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, + SLTG_TypeInfoTail *pTITail) +{ + char *pFirstItem, *pNextItem; + + if(pTIHeader->href_table != 0xffffffff) { + SLTG_DoRefs((SLTG_RefInfo*)((char *)pTIHeader + pTIHeader->href_table), pTI, + pNameTable); + } + + pFirstItem = pNextItem = pBlk; + + if(*(WORD*)pFirstItem == SLTG_IMPL_MAGIC) { + pNextItem = SLTG_DoImpls(pFirstItem, pTI, TRUE); + } + + if (pTITail->funcs_off != 0xffff) + SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable); + if (TRACE_ON(typelib)) dump_TLBFuncDesc(pTI->funclist); - return (SLTG_TypeInfoTail*)(pFirstItem + pMemHeader->cbExtra); } -static SLTG_TypeInfoTail *SLTG_ProcessRecord(char *pBlk, ITypeInfoImpl *pTI, - char *pNameTable) +static void SLTG_ProcessRecord(char *pBlk, ITypeInfoImpl *pTI, + char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, + SLTG_TypeInfoTail *pTITail) +{ + SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable); +} + +static void SLTG_ProcessAlias(char *pBlk, ITypeInfoImpl *pTI, + char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, + SLTG_TypeInfoTail *pTITail) { - SLTG_TypeInfoHeader *pTIHeader = (SLTG_TypeInfoHeader*)pBlk; - SLTG_MemberHeader *pMemHeader; - SLTG_RecordItem *pItem; - char *pFirstItem; - TLBVarDesc **ppVarDesc = &pTI->varlist; - int num = 0; WORD *pType; - char buf[300]; - pMemHeader = (SLTG_MemberHeader*)(pBlk + pTIHeader->elem_table); - - pFirstItem = (char*)(pMemHeader + 1); - for(pItem = (SLTG_RecordItem *)pFirstItem, num = 1; 1; - pItem = (SLTG_RecordItem *)(pFirstItem + pItem->next), num++) { - if(pItem->magic != SLTG_RECORD_MAGIC) { - FIXME("record magic = %02x\n", pItem->magic); - return NULL; - } - *ppVarDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, - sizeof(**ppVarDesc)); - (*ppVarDesc)->Name = TLB_MultiByteToBSTR(pItem->name + pNameTable); - (*ppVarDesc)->vardesc.memid = pItem->memid; - (*ppVarDesc)->vardesc.u.oInst = pItem->byte_offs; - (*ppVarDesc)->vardesc.varkind = VAR_PERINSTANCE; - - if(pItem->typepos == 0x02) - pType = &pItem->type; - else if(pItem->typepos == 0x00) - pType = (WORD*)(pFirstItem + pItem->type); - else { - FIXME("typepos = %02x\n", pItem->typepos); - break; - } - - SLTG_DoType(pType, pFirstItem, - &(*ppVarDesc)->vardesc.elemdescVar); - - /* FIXME("helpcontext, helpstring\n"); */ - - dump_TypeDesc(&(*ppVarDesc)->vardesc.elemdescVar.tdesc, buf); - - ppVarDesc = &((*ppVarDesc)->next); - if(pItem->next == 0xffff) break; + if (pTITail->simple_alias) { + /* if simple alias, no more processing required */ + pTI->TypeAttr.tdescAlias.vt = pTITail->tdescalias_vt; + return; } - pTI->TypeAttr.cVars = num; - return (SLTG_TypeInfoTail*)(pFirstItem + pMemHeader->cbExtra); + + if(pTIHeader->href_table != 0xffffffff) { + SLTG_DoRefs((SLTG_RefInfo*)((char *)pTIHeader + pTIHeader->href_table), pTI, + pNameTable); + } + + /* otherwise it is an offset to a type */ + pType = (WORD *)(pBlk + pTITail->tdescalias_vt); + + SLTG_DoType(pType, pBlk, &pTI->TypeAttr.tdescAlias); } -static SLTG_TypeInfoTail *SLTG_ProcessAlias(char *pBlk, ITypeInfoImpl *pTI, - char *pNameTable) +static void SLTG_ProcessDispatch(char *pBlk, ITypeInfoImpl *pTI, + char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, + SLTG_TypeInfoTail *pTITail) { - SLTG_TypeInfoHeader *pTIHeader = (SLTG_TypeInfoHeader*)pBlk; - SLTG_MemberHeader *pMemHeader; - SLTG_AliasItem *pItem; - int i, mustbelast; + if (pTIHeader->href_table != 0xffffffff) + SLTG_DoRefs((SLTG_RefInfo*)((char *)pTIHeader + pTIHeader->href_table), pTI, + pNameTable); - pMemHeader = (SLTG_MemberHeader*)(pBlk + pTIHeader->elem_table); - pItem = (SLTG_AliasItem*)(pMemHeader + 1); + if (pTITail->vars_off != 0xffff) + SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable); - mustbelast = 0; - /* This is used for creating a TYPEDESC chain in case of VT_USERDEFINED */ - for (i = 0 ; icbExtra/4 ; i++) { - if (pItem->vt == 0xffff) { - if (i<(pMemHeader->cbExtra/4-1)) - FIXME("Endmarker too early in process alias data!\n"); - break; - } - if (mustbelast) { - FIXME("Chain extends over last entry?\n"); - break; - } - if (pItem->vt == VT_USERDEFINED) { - pTI->TypeAttr.tdescAlias.vt = pItem->vt; - /* guessing here ... */ - FIXME("Guessing TKIND_ALIAS of VT_USERDEFINED with hreftype 0x%x\n",pItem->res02); - pTI->TypeAttr.tdescAlias.u.hreftype = pItem->res02; - mustbelast = 1; - } else { - FIXME("alias %d: 0x%x\n",i,pItem->vt); - FIXME("alias %d: 0x%x\n",i,pItem->res02); - } - pItem++; - } - return (SLTG_TypeInfoTail*)((char*)(pMemHeader + 1)+pMemHeader->cbExtra); + if (pTITail->funcs_off != 0xffff) + SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable); + + /* this is necessary to cope with MSFT typelibs that set cFuncs to the number + * of dispinterface functons including the IDispatch ones, so + * ITypeInfo::GetFuncDesc takes the real value for cFuncs from cbSizeVft */ + pTI->TypeAttr.cbSizeVft = pTI->TypeAttr.cFuncs * sizeof(void *); + + if (TRACE_ON(typelib)) + dump_TLBFuncDesc(pTI->funclist); } -static SLTG_TypeInfoTail *SLTG_ProcessDispatch(char *pBlk, ITypeInfoImpl *pTI, - char *pNameTable) +static void SLTG_ProcessEnum(char *pBlk, ITypeInfoImpl *pTI, + char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, + SLTG_TypeInfoTail *pTITail) { - SLTG_TypeInfoHeader *pTIHeader = (SLTG_TypeInfoHeader*)pBlk; - SLTG_MemberHeader *pMemHeader; - SLTG_AliasItem *pItem; - - pMemHeader = (SLTG_MemberHeader*)(pBlk + pTIHeader->elem_table); - pItem = (SLTG_AliasItem*)(pMemHeader + 1); - FIXME("memh.cbExtra is %ld\n",pMemHeader->cbExtra); - FIXME("offset 0 0x%x\n",*(WORD*)pItem); - return (SLTG_TypeInfoTail*)((char*)(pMemHeader + 1)+pMemHeader->cbExtra); + SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable); } -static SLTG_TypeInfoTail *SLTG_ProcessEnum(char *pBlk, ITypeInfoImpl *pTI, - char *pNameTable) +static void SLTG_ProcessModule(char *pBlk, ITypeInfoImpl *pTI, + char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, + SLTG_TypeInfoTail *pTITail) { - SLTG_TypeInfoHeader *pTIHeader = (SLTG_TypeInfoHeader*)pBlk; - SLTG_MemberHeader *pMemHeader; - SLTG_EnumItem *pItem; - char *pFirstItem; - TLBVarDesc **ppVarDesc = &pTI->varlist; - int num = 0; + if (pTIHeader->href_table != 0xffffffff) + SLTG_DoRefs((SLTG_RefInfo*)((char *)pTIHeader + pTIHeader->href_table), pTI, + pNameTable); - pMemHeader = (SLTG_MemberHeader*)(pBlk + pTIHeader->elem_table); + if (pTITail->vars_off != 0xffff) + SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable); - pFirstItem = (char*)(pMemHeader + 1); - for(pItem = (SLTG_EnumItem *)pFirstItem, num = 1; 1; - pItem = (SLTG_EnumItem *)(pFirstItem + pItem->next), num++) { - if(pItem->magic != SLTG_ENUMITEM_MAGIC) { - FIXME("enumitem magic = %04x\n", pItem->magic); - return NULL; - } - *ppVarDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, - sizeof(**ppVarDesc)); - (*ppVarDesc)->Name = TLB_MultiByteToBSTR(pItem->name + pNameTable); - (*ppVarDesc)->vardesc.memid = pItem->memid; - (*ppVarDesc)->vardesc.u.lpvarValue = HeapAlloc(GetProcessHeap(), 0, - sizeof(VARIANT)); - V_VT((*ppVarDesc)->vardesc.u.lpvarValue) = VT_INT; - V_UNION((*ppVarDesc)->vardesc.u.lpvarValue, intVal) = - *(INT*)(pItem->value + pFirstItem); - (*ppVarDesc)->vardesc.elemdescVar.tdesc.vt = VT_I4; - (*ppVarDesc)->vardesc.varkind = VAR_CONST; - /* FIXME("helpcontext, helpstring\n"); */ - - ppVarDesc = &((*ppVarDesc)->next); - if(pItem->next == 0xffff) break; - } - pTI->TypeAttr.cVars = num; - return (SLTG_TypeInfoTail*)(pFirstItem + pMemHeader->cbExtra); + if (pTITail->funcs_off != 0xffff) + SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable); } /* Because SLTG_OtherTypeInfo is such a painful struct, we make a more @@ -3124,7 +3223,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) DWORD len, order; ITypeInfoImpl **ppTypeInfoImpl; - TRACE_(typelib)("%p, TLB length = %ld\n", pLib, dwTLBLength); + TRACE_(typelib)("%p, TLB length = %d\n", pLib, dwTLBLength); pTypeLibImpl = TypeLibImpl_Constructor(); @@ -3133,10 +3232,10 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) pHeader = pLib; TRACE_(typelib)("header:\n"); - TRACE_(typelib)("\tmagic=0x%08lx, file blocks = %d\n", pHeader->SLTG_magic, + TRACE_(typelib)("\tmagic=0x%08x, file blocks = %d\n", pHeader->SLTG_magic, pHeader->nrOfFileBlks ); if (pHeader->SLTG_magic != SLTG_SIGNATURE) { - FIXME("Header type magic 0x%08lx not supported.\n", + FIXME("Header type magic 0x%08x not supported.\n", pHeader->SLTG_magic); return NULL; } @@ -3268,7 +3367,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) /* Hopefully we now have enough ptrs set up to actually read in some TypeInfos. It's not clear which order to do them in, so I'll just follow the links along the BlkEntry chain and read - them in in the order in which they're in the file */ + them in the order in which they are in the file */ ppTypeInfoImpl = &(pTypeLibImpl->pTypeInfo); @@ -3278,6 +3377,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) SLTG_TypeInfoHeader *pTIHeader; SLTG_TypeInfoTail *pTITail; + SLTG_MemberHeader *pMemHeader; if(strcmp(pBlkEntry[order].index_string + (char*)pMagic, pOtherTypeInfoBlks[i].index_name)) { @@ -3290,6 +3390,9 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) FIXME("TypeInfoHeader magic = %04x\n", pTIHeader->magic); return NULL; } + TRACE("pTIHeader->res06 = %x, pTIHeader->res0e = %x, pTIHeader->res16 = %x, pTIHeader->res1e = %x\n", + pTIHeader->res06, pTIHeader->res0e, pTIHeader->res16, pTIHeader->res1e); + *ppTypeInfoImpl = (ITypeInfoImpl*)ITypeInfo_Constructor(); (*ppTypeInfoImpl)->pTypeLib = pTypeLibImpl; (*ppTypeInfoImpl)->index = i; @@ -3316,58 +3419,63 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) debugstr_guid(&(*ppTypeInfoImpl)->TypeAttr.guid), (*ppTypeInfoImpl)->TypeAttr.wTypeFlags); + pMemHeader = (SLTG_MemberHeader*)((char *)pBlk + pTIHeader->elem_table); + + pTITail = (SLTG_TypeInfoTail*)((char *)(pMemHeader + 1) + pMemHeader->cbExtra); + + (*ppTypeInfoImpl)->TypeAttr.cbAlignment = pTITail->cbAlignment; + (*ppTypeInfoImpl)->TypeAttr.cbSizeInstance = pTITail->cbSizeInstance; + (*ppTypeInfoImpl)->TypeAttr.cbSizeVft = pTITail->cbSizeVft; + switch(pTIHeader->typekind) { case TKIND_ENUM: - pTITail = SLTG_ProcessEnum(pBlk, *ppTypeInfoImpl, pNameTable); + SLTG_ProcessEnum((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, + pTIHeader, pTITail); break; case TKIND_RECORD: - pTITail = SLTG_ProcessRecord(pBlk, *ppTypeInfoImpl, pNameTable); + SLTG_ProcessRecord((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, + pTIHeader, pTITail); break; case TKIND_INTERFACE: - pTITail = SLTG_ProcessInterface(pBlk, *ppTypeInfoImpl, pNameTable); + SLTG_ProcessInterface((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, + pTIHeader, pTITail); break; case TKIND_COCLASS: - pTITail = SLTG_ProcessCoClass(pBlk, *ppTypeInfoImpl, pNameTable); + SLTG_ProcessCoClass((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, + pTIHeader, pTITail); break; case TKIND_ALIAS: - pTITail = SLTG_ProcessAlias(pBlk, *ppTypeInfoImpl, pNameTable); - if (pTITail->tdescalias_vt) - (*ppTypeInfoImpl)->TypeAttr.tdescAlias.vt = pTITail->tdescalias_vt; + SLTG_ProcessAlias((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, + pTIHeader, pTITail); break; case TKIND_DISPATCH: - pTITail = SLTG_ProcessDispatch(pBlk, *ppTypeInfoImpl, pNameTable); + SLTG_ProcessDispatch((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, + pTIHeader, pTITail); + break; + + case TKIND_MODULE: + SLTG_ProcessModule((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, + pTIHeader, pTITail); break; default: FIXME("Not processing typekind %d\n", pTIHeader->typekind); - pTITail = NULL; break; } if(pTITail) { /* could get cFuncs, cVars and cImplTypes from here but we've already set those */ - (*ppTypeInfoImpl)->TypeAttr.cbAlignment = pTITail->cbAlignment; - (*ppTypeInfoImpl)->TypeAttr.cbSizeInstance = pTITail->cbSizeInstance; - (*ppTypeInfoImpl)->TypeAttr.cbSizeVft = pTITail->cbSizeVft; - #define X(x) TRACE_(typelib)("tt "#x": %x\n",pTITail->res##x); X(06); - X(08); - X(0a); - X(0c); - X(0e); - X(10); - X(12); X(16); X(18); X(1a); - X(1c); X(1e); X(24); X(26); @@ -3427,7 +3535,7 @@ static ULONG WINAPI ITypeLib2_fnAddRef( ITypeLib2 *iface) ITypeLibImpl *This = (ITypeLibImpl *)iface; ULONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p)->ref was %lu\n",This, ref - 1); + TRACE("(%p)->ref was %u\n",This, ref - 1); return ref; } @@ -3439,10 +3547,14 @@ static ULONG WINAPI ITypeLib2_fnRelease( ITypeLib2 *iface) ITypeLibImpl *This = (ITypeLibImpl *)iface; ULONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p)->(%lu)\n",This, ref); + TRACE("(%p)->(%u)\n",This, ref); if (!ref) { + TLBImpLib *pImpLib, *pImpLibNext; + TLBCustData *pCustData, *pCustDataNext; + int i; + /* remove cache entry */ if(This->path) { @@ -3454,7 +3566,6 @@ static ULONG WINAPI ITypeLib2_fnRelease( ITypeLib2 *iface) LeaveCriticalSection(&cache_section); HeapFree(GetProcessHeap(), 0, This->path); } - /* FIXME destroy child objects */ TRACE(" destroying ITypeLib(%p)\n",This); if (This->Name) @@ -3481,6 +3592,30 @@ static ULONG WINAPI ITypeLib2_fnRelease( ITypeLib2 *iface) This->HelpStringDll = NULL; } + for (pCustData = This->pCustData; pCustData; pCustData = pCustDataNext) + { + VariantClear(&pCustData->data); + + pCustDataNext = pCustData->next; + TLB_Free(pCustData); + } + + for (i = 0; i < This->ctTypeDesc; i++) + if (This->pTypeDesc[i].vt == VT_CARRAY) + TLB_Free(This->pTypeDesc[i].u.lpadesc); + + TLB_Free(This->pTypeDesc); + + for (pImpLib = This->pImpLibs; pImpLib; pImpLib = pImpLibNext) + { + if (pImpLib->pImpTypeLib) + ITypeLib_Release((ITypeLib *)pImpLib->pImpTypeLib); + TLB_Free(pImpLib->name); + + pImpLibNext = pImpLib->next; + TLB_Free(pImpLib); + } + if (This->pTypeInfo) /* can be NULL */ ITypeInfo_Release((ITypeInfo*) This->pTypeInfo); HeapFree(GetProcessHeap(),0,This); @@ -3550,6 +3685,9 @@ static HRESULT WINAPI ITypeLib2_fnGetTypeInfoType( ITypeLibImpl *This = (ITypeLibImpl *)iface; int i; ITypeInfoImpl *pTInfo = This->pTypeInfo; + + if ((ITypeLib2_fnGetTypeInfoCount(iface) < index + 1) || (index < 0)) + return TYPE_E_ELEMENTNOTFOUND; TRACE("(%p) index %d\n", This, index); @@ -3767,7 +3905,7 @@ static HRESULT WINAPI ITypeLib2_fnIsName( int i; UINT nNameBufLen = (lstrlenW(szNameBuf)+1)*sizeof(WCHAR); - TRACE("(%p)->(%s,%08lx,%p)\n", This, debugstr_w(szNameBuf), lHashVal, + TRACE("(%p)->(%s,%08x,%p)\n", This, debugstr_w(szNameBuf), lHashVal, pfName); *pfName=TRUE; @@ -3920,7 +4058,7 @@ static HRESULT WINAPI ITypeLib2_fnGetDocumentation2( HRESULT result; ITypeInfo *pTInfo; - FIXME("(%p) index %d lcid %ld half implemented stub!\n", This, index, lcid); + FIXME("(%p) index %d lcid %d half implemented stub!\n", This, index, lcid); /* the help string should be obtained from the helpstringdll, * using the _DLLGetDocumentation function, based on the supplied @@ -4050,7 +4188,7 @@ static HRESULT WINAPI ITypeLibComp_fnBind( ITypeLibImpl *This = impl_from_ITypeComp(iface); ITypeInfoImpl *pTypeInfo; - TRACE("(%s, 0x%lx, 0x%x, %p, %p, %p)\n", debugstr_w(szName), lHash, wFlags, ppTInfo, pDescKind, pBindPtr); + TRACE("(%s, 0x%x, 0x%x, %p, %p, %p)\n", debugstr_w(szName), lHash, wFlags, ppTInfo, pDescKind, pBindPtr); *pDescKind = DESCKIND_NONE; pBindPtr->lptcomp = NULL; @@ -4174,7 +4312,7 @@ static HRESULT WINAPI ITypeLibComp_fnBindType( ITypeInfo ** ppTInfo, ITypeComp ** ppTComp) { - FIXME("(%s, %lx, %p, %p): stub\n", debugstr_w(szName), lHash, ppTInfo, ppTComp); + FIXME("(%s, %x, %p, %p): stub\n", debugstr_w(szName), lHash, ppTInfo, ppTComp); return E_NOTIMPL; } @@ -4201,6 +4339,8 @@ static ITypeInfo2 * WINAPI ITypeInfo_Constructor(void) pTypeInfoImpl->lpVtblTypeComp = &tcompvt; pTypeInfoImpl->ref=1; pTypeInfoImpl->hreftype = -1; + pTypeInfoImpl->TypeAttr.memidConstructor = MEMBERID_NIL; + pTypeInfoImpl->TypeAttr.memidDestructor = MEMBERID_NIL; } TRACE("(%p)\n", pTypeInfoImpl); return (ITypeInfo2*) pTypeInfoImpl; @@ -4241,7 +4381,7 @@ static ULONG WINAPI ITypeInfo_fnAddRef( ITypeInfo2 *iface) ITypeLib2_AddRef((ITypeLib2*)This->pTypeLib); - TRACE("(%p)->ref is %lu\n",This, ref); + TRACE("(%p)->ref is %u\n",This, ref); return ref; } @@ -4252,21 +4392,24 @@ static ULONG WINAPI ITypeInfo_fnRelease(ITypeInfo2 *iface) ITypeInfoImpl *This = (ITypeInfoImpl *)iface; ULONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p)->(%lu)\n",This, ref); + TRACE("(%p)->(%u)\n",This, ref); if (ref) { /* We don't release ITypeLib when ref=0 because it means that function is called by ITypeLib2_Release */ ITypeLib2_Release((ITypeLib2*)This->pTypeLib); } else { - static int once = 0; - if (!once) - { - once = 1; - FIXME("destroy child objects\n"); - } + TLBFuncDesc *pFInfo, *pFInfoNext; + TLBVarDesc *pVInfo, *pVInfoNext; + TLBImplType *pImpl, *pImplNext; + TLBRefType *pRefType,*pRefTypeNext; + TLBCustData *pCustData, *pCustDataNext; TRACE("destroying ITypeInfo(%p)\n",This); + + if (This->no_free_data) + goto finish_free; + if (This->Name) { SysFreeString(This->Name); @@ -4285,6 +4428,67 @@ static ULONG WINAPI ITypeInfo_fnRelease(ITypeInfo2 *iface) This->DllName = 0; } + for (pFInfo = This->funclist; pFInfo; pFInfo = pFInfoNext) + { + UINT i; + for(i = 0;i < pFInfo->funcdesc.cParams; i++) + { + ELEMDESC *elemdesc = &pFInfo->funcdesc.lprgelemdescParam[i]; + if (elemdesc->u.paramdesc.wParamFlags & PARAMFLAG_FHASDEFAULT) + { + VariantClear(&elemdesc->u.paramdesc.pparamdescex->varDefaultValue); + TLB_Free(elemdesc->u.paramdesc.pparamdescex); + } + SysFreeString(pFInfo->pParamDesc[i].Name); + } + TLB_Free(pFInfo->funcdesc.lprgelemdescParam); + TLB_Free(pFInfo->pParamDesc); + for (pCustData = This->pCustData; pCustData; pCustData = pCustDataNext) + { + VariantClear(&pCustData->data); + + pCustDataNext = pCustData->next; + TLB_Free(pCustData); + } + if (HIWORD(pFInfo->Entry) != 0 && pFInfo->Entry != (BSTR)-1) + SysFreeString(pFInfo->Entry); + SysFreeString(pFInfo->HelpString); + SysFreeString(pFInfo->Name); + + pFInfoNext = pFInfo->next; + TLB_Free(pFInfo); + } + for (pVInfo = This->varlist; pVInfo; pVInfo = pVInfoNext) + { + if (pVInfo->vardesc.varkind == VAR_CONST) + { + VariantClear(pVInfo->vardesc.u.lpvarValue); + TLB_Free(pVInfo->vardesc.u.lpvarValue); + } + SysFreeString(pVInfo->Name); + pVInfoNext = pVInfo->next; + TLB_Free(pVInfo); + } + for(pImpl = This->impltypelist; pImpl; pImpl = pImplNext) + { + for (pCustData = pImpl->pCustData; pCustData; pCustData = pCustDataNext) + { + VariantClear(&pCustData->data); + + pCustDataNext = pCustData->next; + TLB_Free(pCustData); + } + pImplNext = pImpl->next; + TLB_Free(pImpl); + } + for(pRefType = This->reflist; pRefType; pRefType = pRefTypeNext) + { + pRefTypeNext = pRefType->next; + TLB_Free(pRefType); + } + TLB_Free(This->pCustData); + +finish_free: if (This->next) { ITypeInfo_Release((ITypeInfo*)This->next); @@ -4344,7 +4548,7 @@ static HRESULT WINAPI ITypeInfo_fnGetTypeComp( ITypeInfo2 *iface, { ITypeInfoImpl *This = (ITypeInfoImpl *)iface; - TRACE("(%p)->(%p) stub!\n", This, ppTComp); + TRACE("(%p)->(%p)\n", This, ppTComp); *ppTComp = (ITypeComp *)&This->lpVtblTypeComp; ITypeComp_AddRef(*ppTComp); @@ -4489,6 +4693,51 @@ HRESULT ITypeInfoImpl_GetInternalFuncDesc( ITypeInfo *iface, UINT index, const F return E_INVALIDARG; } +/* internal function to make the inherited interfaces' methods appear + * part of the interface */ +static HRESULT ITypeInfoImpl_GetInternalDispatchFuncDesc( ITypeInfo *iface, + UINT index, const FUNCDESC **ppFuncDesc, UINT *funcs) +{ + ITypeInfoImpl *This = (ITypeInfoImpl *)iface; + HRESULT hr; + UINT i; + UINT implemented_funcs = 0; + + if (funcs) + *funcs = 0; + + for (i = 0; i < This->TypeAttr.cImplTypes; i++) + { + HREFTYPE href; + ITypeInfo *pSubTypeInfo; + UINT sub_funcs; + + hr = ITypeInfo_GetRefTypeOfImplType(iface, i, &href); + if (FAILED(hr)) + return hr; + hr = ITypeInfo_GetRefTypeInfo(iface, href, &pSubTypeInfo); + if (FAILED(hr)) + return hr; + + hr = ITypeInfoImpl_GetInternalDispatchFuncDesc(pSubTypeInfo, + index, + ppFuncDesc, + &sub_funcs); + implemented_funcs += sub_funcs; + ITypeInfo_Release(pSubTypeInfo); + if (SUCCEEDED(hr)) + return hr; + } + + if (funcs) + *funcs = implemented_funcs + This->TypeAttr.cFuncs; + + if (index < implemented_funcs) + return E_INVALIDARG; + return ITypeInfoImpl_GetInternalFuncDesc(iface, index - implemented_funcs, + ppFuncDesc); +} + /* ITypeInfo::GetFuncDesc * * Retrieves the FUNCDESC structure that contains information about a @@ -4504,9 +4753,18 @@ static HRESULT WINAPI ITypeInfo_fnGetFuncDesc( ITypeInfo2 *iface, UINT index, TRACE("(%p) index %d\n", This, index); - hr = ITypeInfoImpl_GetInternalFuncDesc((ITypeInfo *)iface, index, &internal_funcdesc); + if ((This->TypeAttr.typekind == TKIND_DISPATCH) && + (This->TypeAttr.wTypeFlags & TYPEFLAG_FDUAL)) + hr = ITypeInfoImpl_GetInternalDispatchFuncDesc((ITypeInfo *)iface, index, + &internal_funcdesc, NULL); + else + hr = ITypeInfoImpl_GetInternalFuncDesc((ITypeInfo *)iface, index, + &internal_funcdesc); if (FAILED(hr)) + { + WARN("description for function %d not found\n", index); return hr; + } return TLB_AllocAndInitFuncDesc( internal_funcdesc, @@ -4603,7 +4861,7 @@ static HRESULT WINAPI ITypeInfo_fnGetNames( ITypeInfo2 *iface, MEMBERID memid, const TLBFuncDesc *pFDesc; const TLBVarDesc *pVDesc; int i; - TRACE("(%p) memid=0x%08lx Maxname=%d\n", This, memid, cMaxNames); + TRACE("(%p) memid=0x%08x Maxname=%d\n", This, memid, cMaxNames); for(pFDesc=This->funclist; pFDesc && pFDesc->funcdesc.memid != memid; pFDesc=pFDesc->next); if(pFDesc) { @@ -4709,9 +4967,9 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeOfImplType( if(TRACE_ON(ole)) { if(SUCCEEDED(hr)) - TRACE("SUCCESS -- hRef = 0x%08lx\n", *pRefType ); + TRACE("SUCCESS -- hRef = 0x%08x\n", *pRefType ); else - TRACE("FAILURE -- hresult = 0x%08lx\n", hr); + TRACE("FAILURE -- hresult = 0x%08x\n", hr); } return hr; @@ -4774,7 +5032,7 @@ static HRESULT WINAPI ITypeInfo_fnGetIDsOfNames( ITypeInfo2 *iface, else ret=DISP_E_UNKNOWNNAME; }; - TRACE("-- 0x%08lx\n", ret); + TRACE("-- 0x%08x\n", ret); return ret; } } @@ -4784,9 +5042,8 @@ static HRESULT WINAPI ITypeInfo_fnGetIDsOfNames( ITypeInfo2 *iface, return ret; } } - /* not found, see if this is and interface with an inheritance */ - if(This->TypeAttr.cImplTypes && - (This->TypeAttr.typekind==TKIND_INTERFACE || This->TypeAttr.typekind==TKIND_DISPATCH)) { + /* not found, see if it can be found in an inherited interface */ + if(This->TypeAttr.cImplTypes) { /* recursive search */ ITypeInfo *pTInfo; ret=ITypeInfo_GetRefTypeInfo(iface, @@ -4814,7 +5071,7 @@ _invoke(FARPROC func,CALLCONV callconv, int nrargs, DWORD *args) { if (TRACE_ON(ole)) { int i; TRACE("Calling %p(",func); - for (i=0;iu.hreftype, &tinfo2); if (hr) { - ERR("Could not get typeinfo of hreftype %lx for VT_USERDEFINED, " - "hr = 0x%08lx\n", + ERR("Could not get typeinfo of hreftype %x for VT_USERDEFINED, " + "hr = 0x%08x\n", tdesc->u.hreftype, hr); return hr; } hr = ITypeInfo_GetTypeAttr(tinfo2, &tattr); if (hr) { - ERR("ITypeInfo_GetTypeAttr failed, hr = 0x%08lx\n", hr); + ERR("ITypeInfo_GetTypeAttr failed, hr = 0x%08x\n", hr); ITypeInfo_Release(tinfo2); return hr; } @@ -4955,13 +5212,17 @@ static HRESULT userdefined_to_variantvt(ITypeInfo *tinfo, const TYPEDESC *tdesc, *vt |= VT_DISPATCH; break; + case TKIND_COCLASS: + *vt |= VT_DISPATCH; + break; + case TKIND_RECORD: FIXME("TKIND_RECORD unhandled.\n"); hr = E_NOTIMPL; break; case TKIND_UNION: - FIXME("TKIND_RECORD unhandled.\n"); + FIXME("TKIND_UNION unhandled.\n"); hr = E_NOTIMPL; break; @@ -5110,7 +5371,10 @@ DispCallFunc( { VARIANT *arg = prgpvarg[i]; TRACE("Storing arg %d (%d as %d)\n",i,V_VT(arg),prgvt[i]); - memcpy(&args[argspos], &V_NONE(arg), _argsize(prgvt[i]) * sizeof(DWORD)); + if (prgvt[i] == VT_VARIANT) + memcpy(&args[argspos], arg, _argsize(prgvt[i]) * sizeof(DWORD)); + else + memcpy(&args[argspos], &V_NONE(arg), _argsize(prgvt[i]) * sizeof(DWORD)); argspos += _argsize(prgvt[i]); } @@ -5126,7 +5390,7 @@ DispCallFunc( if (pvargResult && (vtReturn != VT_EMPTY)) { - TRACE("Method returned 0x%08lx\n",hres); + TRACE("Method returned 0x%08x\n",hres); V_VT(pvargResult) = vtReturn; V_UI4(pvargResult) = hres; } @@ -5163,15 +5427,30 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( HRESULT hres; const TLBFuncDesc *pFuncInfo; - TRACE("(%p)(%p,id=%ld,flags=0x%08x,%p,%p,%p,%p)\n", + TRACE("(%p)(%p,id=%d,flags=0x%08x,%p,%p,%p,%p)\n", This,pIUnk,memid,wFlags,pDispParams,pVarResult,pExcepInfo,pArgErr ); + + if (!pDispParams) + { + ERR("NULL pDispParams not allowed\n"); + return E_INVALIDARG; + } + dump_DispParms(pDispParams); + if (pDispParams->cNamedArgs > pDispParams->cArgs) + { + ERR("named argument array cannot be bigger than argument array (%d/%d)\n", + pDispParams->cNamedArgs, pDispParams->cArgs); + return E_INVALIDARG; + } + /* we do this instead of using GetFuncDesc since it will return a fake * FUNCDESC for dispinterfaces and we want the real function description */ for (pFuncInfo = This->funclist; pFuncInfo; pFuncInfo=pFuncInfo->next) - if (memid == pFuncInfo->funcdesc.memid && (wFlags & pFuncInfo->funcdesc.invkind)) + if ((memid == pFuncInfo->funcdesc.memid) && + (wFlags & pFuncInfo->funcdesc.invkind)) break; if (pFuncInfo) { @@ -5192,8 +5471,24 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( VARIANTARG **prgpvarg = INVBUF_GET_ARG_PTR_ARRAY(buffer, func_desc->cParams); VARIANTARG *rgvarg = INVBUF_GET_ARG_ARRAY(buffer, func_desc->cParams); VARTYPE *rgvt = INVBUF_GET_ARG_TYPE_ARRAY(buffer, func_desc->cParams); + UINT cNamedArgs = pDispParams->cNamedArgs; + DISPID *rgdispidNamedArgs = pDispParams->rgdispidNamedArgs; hres = S_OK; + + if (func_desc->invkind & (INVOKE_PROPERTYPUT|INVOKE_PROPERTYPUTREF)) + { + if (!cNamedArgs || (rgdispidNamedArgs[0] != DISPID_PROPERTYPUT)) + { + ERR("first named arg for property put invocation must be DISPID_PROPERTYPUT\n"); + hres = DISP_E_PARAMNOTFOUND; + goto func_fail; + } + /* ignore the DISPID_PROPERTYPUT named argument from now on */ + cNamedArgs--; + rgdispidNamedArgs++; + } + for (i = 0; i < func_desc->cParams; i++) { TYPEDESC *tdesc = &func_desc->lprgelemdescParam[i].tdesc; @@ -5206,9 +5501,37 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( for (i = 0; i < func_desc->cParams; i++) { USHORT wParamFlags = func_desc->lprgelemdescParam[i].u.paramdesc.wParamFlags; + VARIANTARG *src_arg; + + if (cNamedArgs) + { + USHORT j; + src_arg = NULL; + for (j = 0; j < cNamedArgs; j++) + if (rgdispidNamedArgs[j] == i) + { + src_arg = &pDispParams->rgvarg[j]; + break; + } + } + else + src_arg = i < pDispParams->cArgs ? &pDispParams->rgvarg[pDispParams->cArgs - 1 - i] : NULL; if (wParamFlags & PARAMFLAG_FRETVAL) { + /* under most conditions the caller is not allowed to + * pass in a dispparam arg in the index of what would be + * the retval parameter. however, there is an exception + * where the extra parameter is used in an extra + * IDispatch::Invoke below */ + if ((i < pDispParams->cArgs) && + ((func_desc->cParams != 1) || !pVarResult || + !(func_desc->invkind & INVOKE_PROPERTYGET))) + { + hres = DISP_E_BADPARAMCOUNT; + break; + } + /* note: this check is placed so that if the caller passes * in a VARIANTARG for the retval we just ignore it, like * native does */ @@ -5228,23 +5551,45 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( break; } } - else if (i < pDispParams->cArgs) + else if (src_arg) { - VARIANTARG *src_arg = &pDispParams->rgvarg[pDispParams->cArgs - 1 - i]; - V_VT(&rgvarg[i]) = V_VT(src_arg); dump_Variant(src_arg); - /* FIXME: this doesn't work for VT_BYREF arguments if - * they are not the same type as in the paramdesc */ - if ((rgvt[i] & VT_BYREF) && !V_ISBYREF(src_arg)) + if (rgvt[i] == VT_VARIANT) + hres = VariantCopy(&rgvarg[i], src_arg); + else if (rgvt[i] == (VT_VARIANT | VT_BYREF)) + { + if (rgvt[i] == V_VT(src_arg)) + V_VARIANTREF(&rgvarg[i]) = V_VARIANTREF(src_arg); + else + { + VARIANTARG *missing_arg = INVBUF_GET_MISSING_ARG_ARRAY(buffer, func_desc->cParams); + hres = VariantCopy(&missing_arg[i], src_arg); + V_VARIANTREF(&rgvarg[i]) = &missing_arg[i]; + } + V_VT(&rgvarg[i]) = rgvt[i]; + } + else if ((rgvt[i] & VT_BYREF) && !V_ISBYREF(src_arg)) { VARIANTARG *missing_arg = INVBUF_GET_MISSING_ARG_ARRAY(buffer, func_desc->cParams); V_VT(&missing_arg[i]) = V_VT(src_arg); hres = VariantChangeType(&missing_arg[i], src_arg, 0, rgvt[i] & ~VT_BYREF); V_BYREF(&rgvarg[i]) = &V_NONE(&missing_arg[i]); + V_VT(&rgvarg[i]) = rgvt[i]; + } + else if ((rgvt[i] & VT_BYREF) && (rgvt[i] == V_VT(src_arg))) + { + V_BYREF(&rgvarg[i]) = V_BYREF(src_arg); + V_VT(&rgvarg[i]) = rgvt[i]; } else + { + /* FIXME: this doesn't work for VT_BYREF arguments if + * they are not the same type as in the paramdesc */ + V_VT(&rgvarg[i]) = V_VT(src_arg); hres = VariantChangeType(&rgvarg[i], src_arg, 0, rgvt[i]); + V_VT(&rgvarg[i]) = rgvt[i]; + } if (FAILED(hres)) { @@ -5253,7 +5598,6 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( debugstr_VT(src_arg), debugstr_VF(src_arg)); break; } - V_VT(&rgvarg[i]) = rgvt[i]; prgpvarg[i] = &rgvarg[i]; } else if (wParamFlags & PARAMFLAG_FOPT) @@ -5268,11 +5612,20 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( } else { - VARIANTARG *missing_arg = INVBUF_GET_MISSING_ARG_ARRAY(buffer, func_desc->cParams); - V_VT(arg) = VT_VARIANT | VT_BYREF; - V_VARIANTREF(arg) = &missing_arg[i]; - V_VT(V_VARIANTREF(arg)) = VT_ERROR; - V_ERROR(V_VARIANTREF(arg)) = DISP_E_PARAMNOTFOUND; + VARIANTARG *missing_arg; + /* if the function wants a pointer to a variant then + * set that up, otherwise just pass the VT_ERROR in + * the argument by value */ + if (rgvt[i] & VT_BYREF) + { + missing_arg = INVBUF_GET_MISSING_ARG_ARRAY(buffer, func_desc->cParams) + i; + V_VT(arg) = VT_VARIANT | VT_BYREF; + V_VARIANTREF(arg) = missing_arg; + } + else + missing_arg = arg; + V_VT(missing_arg) = VT_ERROR; + V_ERROR(missing_arg) = DISP_E_PARAMNOTFOUND; } } else @@ -5289,9 +5642,16 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( goto func_fail; /* FIXME: we don't free changed types here */ } - V_VT(&varresult) = 0; - hres = typedescvt_to_variantvt((ITypeInfo *)iface, &func_desc->elemdescFunc.tdesc, &V_VT(&varresult)); - if (FAILED(hres)) goto func_fail; /* FIXME: we don't free changed types here */ + /* VT_VOID is a special case for return types, so it is not + * handled in the general function */ + if (func_desc->elemdescFunc.tdesc.vt == VT_VOID) + V_VT(&varresult) = VT_EMPTY; + else + { + V_VT(&varresult) = 0; + hres = typedescvt_to_variantvt((ITypeInfo *)iface, &func_desc->elemdescFunc.tdesc, &V_VT(&varresult)); + if (FAILED(hres)) goto func_fail; /* FIXME: we don't free changed types here */ + } hres = DispCallFunc(pIUnk, func_desc->oVft, func_desc->callconv, V_VT(&varresult), func_desc->cParams, rgvt, @@ -5309,8 +5669,11 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( } if (pVarResult) + { + VariantInit(pVarResult); /* deref return value */ hres = VariantCopyInd(pVarResult, prgpvarg[i]); + } /* free data stored in varresult. Note that * VariantClear doesn't do what we want because we are @@ -5329,9 +5692,11 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( { if (wParamFlags & PARAMFLAG_FOUT) { - hres = VariantChangeType(&pDispParams->rgvarg[pDispParams->cArgs - 1 - i], - &rgvarg[i], 0, - V_VT(&pDispParams->rgvarg[pDispParams->cArgs - 1 - i])); + VARIANTARG *arg = &pDispParams->rgvarg[pDispParams->cArgs - 1 - i]; + + if ((rgvt[i] == VT_BYREF) && (V_VT(arg) != VT_BYREF)) + hres = VariantChangeType(arg, &rgvarg[i], 0, V_VT(arg)); + if (FAILED(hres)) { ERR("failed to convert param %d to vt %d\n", i, @@ -5350,9 +5715,58 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( if ((V_VT(&varresult) == VT_ERROR) && FAILED(V_ERROR(&varresult))) { - WARN("invoked function failed with error 0x%08lx\n", V_ERROR(&varresult)); + WARN("invoked function failed with error 0x%08x\n", V_ERROR(&varresult)); hres = DISP_E_EXCEPTION; - if (pExcepInfo) pExcepInfo->scode = V_ERROR(&varresult); + if (pExcepInfo) + { + IErrorInfo *pErrorInfo; + pExcepInfo->scode = V_ERROR(&varresult); + if (GetErrorInfo(0, &pErrorInfo) == S_OK) + { + IErrorInfo_GetDescription(pErrorInfo, &pExcepInfo->bstrDescription); + IErrorInfo_GetHelpFile(pErrorInfo, &pExcepInfo->bstrHelpFile); + IErrorInfo_GetSource(pErrorInfo, &pExcepInfo->bstrSource); + IErrorInfo_GetHelpContext(pErrorInfo, &pExcepInfo->dwHelpContext); + + IErrorInfo_Release(pErrorInfo); + } + } + } + if (V_VT(&varresult) != VT_ERROR) + { + TRACE("varresult value: "); + dump_Variant(&varresult); + + if (pVarResult) + { + VariantClear(pVarResult); + *pVarResult = varresult; + } + else + VariantClear(&varresult); + } + + if (SUCCEEDED(hres) && pVarResult && (func_desc->cParams == 1) && + (wFlags == INVOKE_PROPERTYGET) && + (func_desc->lprgelemdescParam[0].u.paramdesc.wParamFlags & PARAMFLAG_FRETVAL) && + (pDispParams->cArgs != 0)) + { + if (V_VT(pVarResult) == VT_DISPATCH) + { + IDispatch *pDispatch = V_DISPATCH(pVarResult); + /* Note: not VariantClear; we still need the dispatch + * pointer to be valid */ + VariantInit(pVarResult); + hres = IDispatch_Invoke(pDispatch, DISPID_VALUE, &IID_NULL, + GetSystemDefaultLCID(), INVOKE_PROPERTYGET, + pDispParams, pVarResult, pExcepInfo, pArgErr); + IDispatch_Release(pDispatch); + } + else + { + VariantClear(pVarResult); + hres = DISP_E_NOTACOLLECTION; + } } func_fail: @@ -5370,7 +5784,7 @@ func_fail: pVarResult,pExcepInfo,pArgErr ); if (FAILED(hres)) - FIXME("IDispatch::Invoke failed with %08lx. (Could be not a real error?)\n", hres); + FIXME("IDispatch::Invoke failed with %08x. (Could be not a real error?)\n", hres); IDispatch_Release(disp); } else FIXME("FUNC_DISPATCH used on object without IDispatch iface?\n"); @@ -5382,7 +5796,7 @@ func_fail: break; } - TRACE("-- 0x%08lx\n", hres); + TRACE("-- 0x%08x\n", hres); return hres; } else if(SUCCEEDED(hres = ITypeInfo2_GetVarIndexOfMemId(iface, memid, &var_index))) { @@ -5413,7 +5827,7 @@ func_fail: WARN("Could not search inherited interface!\n"); } } - ERR("did not find member id %ld, flags 0x%x!\n", memid, wFlags); + ERR("did not find member id %d, flags 0x%x!\n", memid, wFlags); return DISP_E_MEMBERNOTFOUND; } @@ -5431,7 +5845,7 @@ static HRESULT WINAPI ITypeInfo_fnGetDocumentation( ITypeInfo2 *iface, ITypeInfoImpl *This = (ITypeInfoImpl *)iface; const TLBFuncDesc *pFDesc; const TLBVarDesc *pVDesc; - TRACE("(%p) memid %ld Name(%p) DocString(%p)" + TRACE("(%p) memid %d Name(%p) DocString(%p)" " HelpContext(%p) HelpFile(%p)\n", This, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile); if(memid==MEMBERID_NIL){ /* documentation for the typeinfo */ @@ -5466,7 +5880,24 @@ static HRESULT WINAPI ITypeInfo_fnGetDocumentation( ITypeInfo2 *iface, return S_OK; } } - WARN("member %ld not found\n", memid); + + if(This->TypeAttr.cImplTypes && + (This->TypeAttr.typekind==TKIND_INTERFACE || This->TypeAttr.typekind==TKIND_DISPATCH)) { + /* recursive search */ + ITypeInfo *pTInfo; + HRESULT result; + result = ITypeInfo_GetRefTypeInfo(iface, This->impltypelist->hRef, + &pTInfo); + if(SUCCEEDED(result)) { + result = ITypeInfo_GetDocumentation(pTInfo, memid, pBstrName, + pBstrDocString, pdwHelpContext, pBstrHelpFile); + ITypeInfo_Release(pTInfo); + return result; + } + WARN("Could not search inherited interface!\n"); + } + + WARN("member %d not found\n", memid); return TYPE_E_ELEMENTNOTFOUND; } @@ -5482,7 +5913,7 @@ static HRESULT WINAPI ITypeInfo_fnGetDllEntry( ITypeInfo2 *iface, MEMBERID memid ITypeInfoImpl *This = (ITypeInfoImpl *)iface; const TLBFuncDesc *pFDesc; - TRACE("(%p)->(memid %lx, %d, %p, %p, %p)\n", This, memid, invKind, pBstrDllName, pBstrName, pwOrdinal); + TRACE("(%p)->(memid %x, %d, %p, %p, %p)\n", This, memid, invKind, pBstrDllName, pBstrName, pwOrdinal); if (pBstrDllName) *pBstrDllName = NULL; if (pBstrName) *pBstrName = NULL; @@ -5549,14 +5980,21 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo( * copy the contents of the structs. */ *pTypeInfoImpl = *This; - pTypeInfoImpl->ref = 1; + pTypeInfoImpl->ref = 0; /* change the type to interface */ pTypeInfoImpl->TypeAttr.typekind = TKIND_INTERFACE; *ppTInfo = (ITypeInfo*) pTypeInfoImpl; - ITypeInfo_AddRef((ITypeInfo*) pTypeInfoImpl); + /* we use data structures from This, so we need to keep a reference + * to it to stop it being destroyed and signal to the new instance to + * not free its data structures when it is destroyed */ + pTypeInfoImpl->no_free_data = TRUE; + pTypeInfoImpl->next = This; + ITypeInfo_AddRef((ITypeInfo*) This); + + ITypeInfo_AddRef(*ppTInfo); result = S_OK; @@ -5567,7 +6005,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo( break; } if(!pRefType) - FIXME("Can't find pRefType for ref %lx\n", hRefType); + FIXME("Can't find pRefType for ref %x\n", hRefType); if(pRefType && hRefType != -1) { ITypeLib *pTLib = NULL; @@ -5613,7 +6051,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo( } } - TRACE("(%p) hreftype 0x%04lx loaded %s (%p)\n", This, hRefType, + TRACE("(%p) hreftype 0x%04x loaded %s (%p)\n", This, hRefType, SUCCEEDED(result)? "SUCCESS":"FAILURE", *ppTInfo); return result; } @@ -5632,7 +6070,7 @@ static HRESULT WINAPI ITypeInfo_fnAddressOfMember( ITypeInfo2 *iface, WORD ordinal; HMODULE module; - TRACE("(%p)->(0x%lx, 0x%x, %p)\n", This, memid, invKind, ppv); + TRACE("(%p)->(0x%x, 0x%x, %p)\n", This, memid, invKind, ppv); hr = ITypeInfo_GetDllEntry(iface, memid, invKind, &dll, &entry, &ordinal); if (FAILED(hr)) @@ -5683,11 +6121,53 @@ static HRESULT WINAPI ITypeInfo_fnAddressOfMember( ITypeInfo2 *iface, * (coclass). */ static HRESULT WINAPI ITypeInfo_fnCreateInstance( ITypeInfo2 *iface, - IUnknown *pUnk, REFIID riid, VOID **ppvObj) + IUnknown *pOuterUnk, REFIID riid, VOID **ppvObj) { ITypeInfoImpl *This = (ITypeInfoImpl *)iface; - FIXME("(%p) stub!\n", This); - return S_OK; + HRESULT hr; + TYPEATTR *pTA; + + TRACE("(%p)->(%p, %s, %p)\n", This, pOuterUnk, debugstr_guid(riid), ppvObj); + + *ppvObj = NULL; + + if(pOuterUnk) + { + WARN("Not able to aggregate\n"); + return CLASS_E_NOAGGREGATION; + } + + hr = ITypeInfo_GetTypeAttr(iface, &pTA); + if(FAILED(hr)) return hr; + + if(pTA->typekind != TKIND_COCLASS) + { + WARN("CreateInstance on typeinfo of type %x\n", pTA->typekind); + hr = E_INVALIDARG; + goto end; + } + + hr = S_FALSE; + if(pTA->wTypeFlags & TYPEFLAG_FAPPOBJECT) + { + IUnknown *pUnk; + hr = GetActiveObject(&pTA->guid, NULL, &pUnk); + TRACE("GetActiveObject rets %08x\n", hr); + if(hr == S_OK) + { + hr = IUnknown_QueryInterface(pUnk, riid, ppvObj); + IUnknown_Release(pUnk); + } + } + + if(hr != S_OK) + hr = CoCreateInstance(&pTA->guid, NULL, + CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, + riid, ppvObj); + +end: + ITypeInfo_ReleaseTypeAttr(iface, pTA); + return hr; } /* ITypeInfo::GetMops @@ -5801,7 +6281,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetTypeFlags( ITypeInfo2 *iface, ULONG *pType { ITypeInfoImpl *This = (ITypeInfoImpl *)iface; *pTypeFlags=This->TypeAttr.wTypeFlags; - TRACE("(%p) flags 0x%lx\n", This,*pTypeFlags); + TRACE("(%p) flags 0x%x\n", This,*pTypeFlags); return S_OK; } @@ -5827,7 +6307,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetFuncIndexOfMemId( ITypeInfo2 * iface, } else result = TYPE_E_ELEMENTNOTFOUND; - TRACE("(%p) memid 0x%08lx invKind 0x%04x -> %s\n", This, + TRACE("(%p) memid 0x%08x invKind 0x%04x -> %s\n", This, memid, invKind, SUCCEEDED(result) ? "SUCCESS" : "FAILED"); return result; } @@ -5854,7 +6334,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetVarIndexOfMemId( ITypeInfo2 * iface, } else result = TYPE_E_ELEMENTNOTFOUND; - TRACE("(%p) memid 0x%08lx -> %s\n", This, + TRACE("(%p) memid 0x%08x -> %s\n", This, memid, SUCCEEDED(result) ? "SUCCESS" : "FAILED"); return result; } @@ -6040,7 +6520,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetDocumentation2( ITypeInfoImpl *This = (ITypeInfoImpl *)iface; const TLBFuncDesc *pFDesc; const TLBVarDesc *pVDesc; - TRACE("(%p) memid %ld lcid(0x%lx) HelpString(%p) " + TRACE("(%p) memid %d lcid(0x%x) HelpString(%p) " "HelpStringContext(%p) HelpStringDll(%p)\n", This, memid, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll ); @@ -6330,7 +6810,7 @@ HRESULT WINAPI CreateDispTypeInfo( int param, func; TLBFuncDesc **ppFuncDesc; - TRACE_(typelib)("\n"); + TRACE("\n"); pTypeLibImpl = TypeLibImpl_Constructor(); if (!pTypeLibImpl) return E_FAIL; @@ -6358,12 +6838,14 @@ HRESULT WINAPI CreateDispTypeInfo( *ppFuncDesc = HeapAlloc(GetProcessHeap(), 0, sizeof(**ppFuncDesc)); (*ppFuncDesc)->Name = SysAllocString(md->szName); (*ppFuncDesc)->funcdesc.memid = md->dispid; + (*ppFuncDesc)->funcdesc.lprgscode = NULL; (*ppFuncDesc)->funcdesc.funckind = FUNC_VIRTUAL; (*ppFuncDesc)->funcdesc.invkind = md->wFlags; (*ppFuncDesc)->funcdesc.callconv = md->cc; (*ppFuncDesc)->funcdesc.cParams = md->cArgs; (*ppFuncDesc)->funcdesc.cParamsOpt = 0; (*ppFuncDesc)->funcdesc.oVft = md->iMeth << 2; + (*ppFuncDesc)->funcdesc.cScodes = 0; (*ppFuncDesc)->funcdesc.wFuncFlags = 0; (*ppFuncDesc)->funcdesc.elemdescFunc.tdesc.vt = md->vtReturn; (*ppFuncDesc)->funcdesc.elemdescFunc.u.paramdesc.wParamFlags = PARAMFLAG_NONE; @@ -6386,6 +6868,8 @@ HRESULT WINAPI CreateDispTypeInfo( ppFuncDesc = &(*ppFuncDesc)->next; } + dump_TypeInfo(pTIIface); + pTypeLibImpl->pTypeInfo = pTIIface; pTypeLibImpl->TypeInfoCount++; @@ -6415,10 +6899,16 @@ HRESULT WINAPI CreateDispTypeInfo( pTIClass->reflist->reference = 1; pTIClass->reflist->pImpTLInfo = TLB_REF_INTERNAL; + dump_TypeInfo(pTIClass); + pTIIface->next = pTIClass; pTypeLibImpl->TypeInfoCount++; *pptinfo = (ITypeInfo*)pTIClass; + + ITypeInfo_AddRef(*pptinfo); + ITypeLib_Release((ITypeLib *)&pTypeLibImpl->lpVtbl); + return S_OK; } @@ -6456,18 +6946,22 @@ static HRESULT WINAPI ITypeComp_fnBind( ITypeInfoImpl *This = info_impl_from_ITypeComp(iface); const TLBFuncDesc *pFDesc; const TLBVarDesc *pVDesc; + HRESULT hr = DISP_E_MEMBERNOTFOUND; - TRACE("(%s, %lx, 0x%x, %p, %p, %p)\n", debugstr_w(szName), lHash, wFlags, ppTInfo, pDescKind, pBindPtr); + TRACE("(%s, %x, 0x%x, %p, %p, %p)\n", debugstr_w(szName), lHash, wFlags, ppTInfo, pDescKind, pBindPtr); *pDescKind = DESCKIND_NONE; pBindPtr->lpfuncdesc = NULL; *ppTInfo = NULL; for(pFDesc = This->funclist; pFDesc; pFDesc = pFDesc->next) - if (!wFlags || (pFDesc->funcdesc.invkind & wFlags)) - if (!strcmpW(pFDesc->Name, szName)) { + if (!strcmpiW(pFDesc->Name, szName)) { + if (!wFlags || (pFDesc->funcdesc.invkind & wFlags)) break; - } + else + /* name found, but wrong flags */ + hr = TYPE_E_TYPEMISMATCH; + } if (pFDesc) { @@ -6483,7 +6977,7 @@ static HRESULT WINAPI ITypeComp_fnBind( return S_OK; } else { for(pVDesc = This->varlist; pVDesc; pVDesc = pVDesc->next) { - if (!strcmpW(pVDesc->Name, szName)) { + if (!strcmpiW(pVDesc->Name, szName)) { HRESULT hr = TLB_AllocAndInitVarDesc(&pVDesc->vardesc, &pBindPtr->lpvardesc); if (FAILED(hr)) return hr; @@ -6495,7 +6989,7 @@ static HRESULT WINAPI ITypeComp_fnBind( } } /* FIXME: search each inherited interface, not just the first */ - if (This->TypeAttr.cImplTypes) { + if (hr == DISP_E_MEMBERNOTFOUND && This->TypeAttr.cImplTypes) { /* recursive search */ ITypeInfo *pTInfo; ITypeComp *pTComp; @@ -6515,7 +7009,7 @@ static HRESULT WINAPI ITypeComp_fnBind( WARN("Could not search inherited interface!\n"); } WARN("did not find member with name %s, flags 0x%x!\n", debugstr_w(szName), wFlags); - return DISP_E_MEMBERNOTFOUND; + return hr; } static HRESULT WINAPI ITypeComp_fnBindType( @@ -6525,7 +7019,7 @@ static HRESULT WINAPI ITypeComp_fnBindType( ITypeInfo ** ppTInfo, ITypeComp ** ppTComp) { - TRACE("(%s, %lx, %p, %p)\n", debugstr_w(szName), lHash, ppTInfo, ppTComp); + TRACE("(%s, %x, %p, %p)\n", debugstr_w(szName), lHash, ppTInfo, ppTComp); /* strange behaviour (does nothing) but like the * original */ diff --git a/reactos/dll/win32/oleaut32/typelib.h b/reactos/dll/win32/oleaut32/typelib.h index c286fae069c..fc1cba0a711 100644 --- a/reactos/dll/win32/oleaut32/typelib.h +++ b/reactos/dll/win32/oleaut32/typelib.h @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef _WINE_TYPELIB_H #define _WINE_TYPELIB_H @@ -79,7 +79,7 @@ typedef struct tagMSFT_Header { INT res44; /* unknown always: 0x20 (guid hash size?) */ INT res48; /* unknown always: 0x80 (name hash size?) */ INT dispatchpos; /* HREFTYPE to IDispatch, or -1 if no IDispatch */ -/*0x50*/INT res50; /* is zero becomes one when an interface is derived */ +/*0x50*/INT nimpinfos; /* number of impinfos */ } MSFT_Header; /* segments in the type lib file have a structure like this: */ @@ -149,7 +149,7 @@ typedef struct tagMSFT_TypeInfoBase { /*050*/ INT size; /* size in bytes, at least for structures */ /* FIXME: name of this field */ INT datatype1; /* position in type description table */ - /* or in base intefaces */ + /* or in base interfaces */ /* if coclass: offset in reftable */ /* if interface: reference to inherited if */ /* if module: offset to dllname in name table */ @@ -285,7 +285,7 @@ typedef struct { lower-middle 8 bits are unknown (flags?), upper 16 bits are hash code */ } MSFT_NameIntro; -/* the custom data table directory has enties like this */ +/* the custom data table directory has entries like this */ typedef struct { INT GuidOffset; INT DataOffset; @@ -428,28 +428,28 @@ typedef struct { /*00*/ WORD cFuncs; /*02*/ WORD cVars; /*04*/ WORD cImplTypes; -/*06*/ WORD res06; -/*08*/ WORD res08; -/*0a*/ WORD res0a; -/*0c*/ WORD res0c; -/*0e*/ WORD res0e; -/*10*/ WORD res10; -/*12*/ WORD res12; +/*06*/ WORD res06; /* always 0000 */ +/*08*/ WORD funcs_off; /* offset to functions (starting from the member header) */ +/*0a*/ WORD vars_off; /* offset to vars (starting from the member header) */ +/*0c*/ WORD impls_off; /* offset to implemented types (starting from the member header) */ +/*0e*/ WORD funcs_bytes; /* bytes used by function data */ +/*10*/ WORD vars_bytes; /* bytes used by var data */ +/*12*/ WORD impls_bytes; /* bytes used by implemented type data */ /*14*/ WORD tdescalias_vt; /* for TKIND_ALIAS */ -/*16*/ WORD res16; -/*18*/ WORD res18; -/*1a*/ WORD res1a; -/*1c*/ WORD res1c; -/*1e*/ WORD res1e; +/*16*/ WORD res16; /* always ffff */ +/*18*/ WORD res18; /* always 0000 */ +/*1a*/ WORD res1a; /* always 0000 */ +/*1c*/ WORD simple_alias; /* tdescalias_vt is a vt rather than an offset? */ +/*1e*/ WORD res1e; /* always 0000 */ /*20*/ WORD cbSizeInstance; /*22*/ WORD cbAlignment; /*24*/ WORD res24; /*26*/ WORD res26; /*28*/ WORD cbSizeVft; -/*2a*/ WORD res2a; -/*2c*/ WORD res2c; -/*2e*/ WORD res2e; -/*30*/ WORD res30; +/*2a*/ WORD res2a; /* always ffff */ +/*2c*/ WORD res2c; /* always ffff */ +/*2e*/ WORD res2e; /* always ffff */ +/*30*/ WORD res30; /* always ffff */ /*32*/ WORD res32; /*34*/ WORD res34; } SLTG_TypeInfoTail; @@ -477,15 +477,7 @@ typedef struct { #define SLTG_ENUMITEM_MAGIC 0x120a typedef struct { -/*00*/ WORD vt; /* vartype, 0xffff marks end. */ -/*02*/ WORD res02; /* ?, 0xffff marks end */ -} SLTG_AliasItem; - -#define SLTG_ALIASITEM_MAGIC 0x001d - - -typedef struct { - BYTE magic; /* 0x4c or 0x6c */ + BYTE magic; /* 0x4c, 0xcb or 0x8b with optional SLTG_FUNCTION_FLAGS_PRESENT flag */ BYTE inv; /* high nibble is INVOKE_KIND, low nibble = 2 */ WORD next; /* byte offset from beginning of group to next fn */ WORD name; /* Offset within name table to name */ @@ -499,7 +491,7 @@ typedef struct { middle 6 bits */ WORD rettype; /* return type VT_?? or offset to ret type */ WORD vtblpos; /* position in vtbl? */ - WORD funcflags; /* present if magic == 0x6c */ + WORD funcflags; /* present if magic & 0x20 */ /* Param list starts, repeat next two as required */ #if 0 WORD name; /* offset to 2nd letter of name */ @@ -507,8 +499,10 @@ typedef struct { #endif } SLTG_Function; +#define SLTG_FUNCTION_FLAGS_PRESENT 0x20 #define SLTG_FUNCTION_MAGIC 0x4c -#define SLTG_FUNCTION_WITH_FLAGS_MAGIC 0x6c +#define SLTG_DISPATCH_FUNCTION_MAGIC 0xcb +#define SLTG_STATIC_FUNCTION_MAGIC 0x8b typedef struct { /*00*/ BYTE magic; /* 0xdf */ @@ -579,17 +573,19 @@ typedef struct { typedef struct { BYTE magic; /* 0x0a */ - BYTE typepos; + BYTE flags; WORD next; WORD name; - WORD byte_offs; /* pos in struct */ - WORD type; /* if typepos == 0x02 this is the type, else offset to type */ + WORD byte_offs; /* pos in struct, or offset to const type */ + WORD type; /* if flags & 0x02 this is the type, else offset to type */ DWORD memid; WORD helpcontext; /* ?? */ WORD helpstring; /* ?? */ -} SLTG_RecordItem; + WORD varflags; /* only present if magic & 0x02 */ +} SLTG_Variable; -#define SLTG_RECORD_MAGIC 0x0a +#define SLTG_VAR_MAGIC 0x0a +#define SLTG_VAR_WITH_FLAGS_MAGIC 0x2a /* CARRAYs look like this @@ -603,9 +599,16 @@ WORD typeofarray HRESULT ITypeInfoImpl_GetInternalFuncDesc( ITypeInfo *iface, UINT index, const FUNCDESC **ppFuncDesc ); extern DWORD _invoke(FARPROC func,CALLCONV callconv, int nrargs, DWORD *args); -extern void dump_Variant(const VARIANT * pvar); HRESULT TMARSHAL_DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv); +/* The OLE Automation ProxyStub Interface Class (aka Typelib Marshaler) */ +DEFINE_OLEGUID( CLSID_PSDispatch, 0x00020420, 0x0000, 0x0000 ); +DEFINE_OLEGUID( CLSID_PSEnumVariant, 0x00020421, 0x0000, 0x0000 ); +DEFINE_OLEGUID( CLSID_PSTypeInfo, 0x00020422, 0x0000, 0x0000 ); +DEFINE_OLEGUID( CLSID_PSTypeLib, 0x00020423, 0x0000, 0x0000 ); +DEFINE_OLEGUID( CLSID_PSOAInterface, 0x00020424, 0x0000, 0x0000 ); +DEFINE_OLEGUID( CLSID_PSTypeComp, 0x00020425, 0x0000, 0x0000 ); + /*---------------------------END--------------------------------------------*/ #endif diff --git a/reactos/dll/win32/oleaut32/typelib16.c b/reactos/dll/win32/oleaut32/typelib16.c index aedb499f9dd..69b4f65f941 100644 --- a/reactos/dll/win32/oleaut32/typelib16.c +++ b/reactos/dll/win32/oleaut32/typelib16.c @@ -18,7 +18,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -85,14 +85,14 @@ QueryPathOfRegTypeLib16( TRACE("\n"); if (HIWORD(guid)) { - sprintf( typelibkey, "SOFTWARE\\Classes\\Typelib\\{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\%d.%d\\%lx\\win16", + sprintf( typelibkey, "SOFTWARE\\Classes\\Typelib\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\%d.%d\\%x\\win16", guid->Data1, guid->Data2, guid->Data3, guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7], wMaj,wMin,lcid); } else { - sprintf(xguid,"",(DWORD)guid); - FIXME("(%s,%d,%d,0x%04lx,%p),can't handle non-string guids.\n",xguid,wMaj,wMin,(DWORD)lcid,path); + sprintf(xguid,"",(DWORD)guid); + FIXME("(%s,%d,%d,0x%04x,%p),can't handle non-string guids.\n",xguid,wMaj,wMin,(DWORD)lcid,path); return E_FAIL; } plen = sizeof(pathname); @@ -120,10 +120,10 @@ QueryPathOfRegTypeLib16( * Both parameters are FAR pointers. */ HRESULT WINAPI LoadTypeLib16( - LPOLESTR szFile, /* [in] Name of file to load from */ + LPSTR szFile, /* [in] Name of file to load from */ ITypeLib** pptLib) /* [out] Destination for loaded ITypeLib interface */ { - FIXME("(%s,%p): stub\n",debugstr_w((LPWSTR)szFile),pptLib); + FIXME("(%s,%p): stub\n",debugstr_a(szFile),pptLib); if (pptLib!=0) *pptLib=0; diff --git a/reactos/dll/win32/oleaut32/typelib2.c b/reactos/dll/win32/oleaut32/typelib2.c index 7b4c670a836..5f3ead17a2c 100644 --- a/reactos/dll/win32/oleaut32/typelib2.c +++ b/reactos/dll/win32/oleaut32/typelib2.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * -------------------------------------------------------------------------------------- * Known problems: @@ -232,7 +232,7 @@ static void ctl2_init_header( This->typelib_header.res44 = 0x20; This->typelib_header.res48 = 0x80; This->typelib_header.dispatchpos = -1; - This->typelib_header.res50 = 0; + This->typelib_header.nimpinfos = 0; } /**************************************************************************** @@ -276,7 +276,7 @@ static int ctl2_hash_guid( hash ^= ((const short *)guid)[i]; } - return (hash & 0xf) | ((hash & 0x10) & (0 - !!(hash & 0xe0))); + return hash & 0x1f; } /**************************************************************************** @@ -677,6 +677,8 @@ static int ctl2_alloc_importinfo( } } + impinfo->flags |= This->typelib_header.nimpinfos++; + offset = ctl2_alloc_segment(This, MSFT_SEG_IMPORTINFO, sizeof(MSFT_ImpInfo), 0); if (offset == -1) return -1; @@ -1148,7 +1150,7 @@ static ULONG WINAPI ICreateTypeInfo2_fnAddRef(ICreateTypeInfo2 *iface) ICreateTypeInfo2Impl *This = (ICreateTypeInfo2Impl *)iface; ULONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p)->ref was %lu\n",This, ref - 1); + TRACE("(%p)->ref was %u\n",This, ref - 1); return ref; } @@ -1163,7 +1165,7 @@ static ULONG WINAPI ICreateTypeInfo2_fnRelease(ICreateTypeInfo2 *iface) ICreateTypeInfo2Impl *This = (ICreateTypeInfo2Impl *)iface; ULONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p)->(%lu)\n",This, ref); + TRACE("(%p)->(%u)\n",This, ref); if (!ref) { if (This->typelib) { @@ -1252,7 +1254,6 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetTypeFlags(ICreateTypeInfo2 *iface, U ctl2_alloc_importinfo(This->typelib, &impinfo); This->typelib->typelib_header.dispatchpos = 1; - This->typelib->typelib_header.res50 = 1; This->typeinfo->typekind |= 0x10; This->typeinfo->typekind &= ~0x0f; @@ -1294,7 +1295,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetHelpContext( { ICreateTypeInfo2Impl *This = (ICreateTypeInfo2Impl *)iface; - TRACE("(%p,%ld)\n", iface, dwHelpContext); + TRACE("(%p,%d)\n", iface, dwHelpContext); This->typeinfo->helpcontext = dwHelpContext; @@ -1379,7 +1380,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddFuncDesc( int decoded_size; FIXME("(%p,%d,%p), stub!\n", iface, index, pFuncDesc); - FIXME("{%ld,%p,%p,%d,%d,%d,%d,%d,%d,%d,{%d},%d}\n", pFuncDesc->memid, pFuncDesc->lprgscode, pFuncDesc->lprgelemdescParam, pFuncDesc->funckind, pFuncDesc->invkind, pFuncDesc->callconv, pFuncDesc->cParams, pFuncDesc->cParamsOpt, pFuncDesc->oVft, pFuncDesc->cScodes, pFuncDesc->elemdescFunc.tdesc.vt, pFuncDesc->wFuncFlags); + FIXME("{%d,%p,%p,%d,%d,%d,%d,%d,%d,%d,{%d},%d}\n", pFuncDesc->memid, pFuncDesc->lprgscode, pFuncDesc->lprgelemdescParam, pFuncDesc->funckind, pFuncDesc->invkind, pFuncDesc->callconv, pFuncDesc->cParams, pFuncDesc->cParamsOpt, pFuncDesc->oVft, pFuncDesc->cScodes, pFuncDesc->elemdescFunc.tdesc.vt, pFuncDesc->wFuncFlags); /* FIXME("{%d, %d}\n", pFuncDesc->lprgelemdescParam[0].tdesc.vt, pFuncDesc->lprgelemdescParam[1].tdesc.vt); */ /* return E_OUTOFMEMORY; */ @@ -1457,7 +1458,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddImplType( { ICreateTypeInfo2Impl *This = (ICreateTypeInfo2Impl *)iface; - TRACE("(%p,%d,%ld)\n", iface, index, hRefType); + TRACE("(%p,%d,%d)\n", iface, index, hRefType); if ((This->typeinfo->typekind & 15) == TKIND_COCLASS) { int offset; @@ -1619,7 +1620,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddVarDesc( int alignment; TRACE("(%p,%d,%p), stub!\n", iface, index, pVarDesc); - TRACE("%ld, %p, %ld, {{%lx, %d}, {%p, %x}}, 0x%x, %d\n", pVarDesc->memid, pVarDesc->lpstrSchema, pVarDesc->u.oInst, + TRACE("%d, %p, %d, {{%x, %d}, {%p, %x}}, 0x%x, %d\n", pVarDesc->memid, pVarDesc->lpstrSchema, pVarDesc->u.oInst, pVarDesc->elemdescVar.tdesc.u.hreftype, pVarDesc->elemdescVar.tdesc.vt, pVarDesc->elemdescVar.u.paramdesc.pparamdescex, pVarDesc->elemdescVar.u.paramdesc.wParamFlags, pVarDesc->wVarFlags, pVarDesc->varkind); @@ -1856,7 +1857,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetFuncHelpContext( UINT index, DWORD dwHelpContext) { - FIXME("(%p,%d,%ld), stub!\n", iface, index, dwHelpContext); + FIXME("(%p,%d,%d), stub!\n", iface, index, dwHelpContext); return E_OUTOFMEMORY; } @@ -1870,7 +1871,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetVarHelpContext( UINT index, DWORD dwHelpContext) { - FIXME("(%p,%d,%ld), stub!\n", iface, index, dwHelpContext); + FIXME("(%p,%d,%d), stub!\n", iface, index, dwHelpContext); return E_OUTOFMEMORY; } @@ -1947,7 +1948,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnDeleteFuncDescByMemId( MEMBERID memid, /* [I] The member id of the function to delete. */ INVOKEKIND invKind) /* [I] The invocation type of the function to delete. (?) */ { - FIXME("(%p,%ld,%d), stub!\n", iface, memid, invKind); + FIXME("(%p,%d,%d), stub!\n", iface, memid, invKind); return E_OUTOFMEMORY; } @@ -1985,7 +1986,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnDeleteVarDescByMemId( ICreateTypeInfo2* iface, /* [I] The typeinfo from which to delete the variable description. */ MEMBERID memid) /* [I] The member id of the variable description to delete. */ { - FIXME("(%p,%ld), stub!\n", iface, memid); + FIXME("(%p,%d), stub!\n", iface, memid); return E_OUTOFMEMORY; } @@ -2121,7 +2122,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetHelpStringContext( ICreateTypeInfo2* iface, /* [I] The typeinfo on which to set the help string context. */ ULONG dwHelpStringContext) /* [I] The help string context. */ { - FIXME("(%p,%ld), stub!\n", iface, dwHelpStringContext); + FIXME("(%p,%d), stub!\n", iface, dwHelpStringContext); return E_OUTOFMEMORY; } @@ -2140,7 +2141,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetFuncHelpStringContext( UINT index, /* [I] The index for the function on which to set the help string context. */ ULONG dwHelpStringContext) /* [I] The help string context. */ { - FIXME("(%p,%d,%ld), stub!\n", iface, index, dwHelpStringContext); + FIXME("(%p,%d,%d), stub!\n", iface, index, dwHelpStringContext); return E_OUTOFMEMORY; } @@ -2159,7 +2160,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetVarHelpStringContext( UINT index, /* [I] The index of the variable on which to set the help string context. */ ULONG dwHelpStringContext) /* [I] The help string context */ { - FIXME("(%p,%d,%ld), stub!\n", iface, index, dwHelpStringContext); + FIXME("(%p,%d,%d), stub!\n", iface, index, dwHelpStringContext); return E_OUTOFMEMORY; } @@ -2297,7 +2298,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetNames( UINT cMaxNames, UINT* pcNames) { - FIXME("(%p,%ld,%p,%d,%p), stub!\n", iface, memid, rgBstrNames, cMaxNames, pcNames); + FIXME("(%p,%d,%p,%d,%p), stub!\n", iface, memid, rgBstrNames, cMaxNames, pcNames); return E_OUTOFMEMORY; } @@ -2359,7 +2360,7 @@ static HRESULT WINAPI ITypeInfo2_fnInvoke( EXCEPINFO* pExcepInfo, UINT* puArgErr) { - FIXME("(%p,%p,%ld,%x,%p,%p,%p,%p), stub!\n", iface, pvInstance, memid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + FIXME("(%p,%p,%d,%x,%p,%p,%p,%p), stub!\n", iface, pvInstance, memid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); return E_OUTOFMEMORY; } @@ -2376,7 +2377,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetDocumentation( DWORD* pdwHelpContext, BSTR* pBstrHelpFile) { - FIXME("(%p,%ld,%p,%p,%p,%p), stub!\n", iface, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile); + FIXME("(%p,%d,%p,%p,%p,%p), stub!\n", iface, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile); return E_OUTOFMEMORY; } @@ -2393,7 +2394,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetDllEntry( BSTR* pBstrName, WORD* pwOrdinal) { - FIXME("(%p,%ld,%d,%p,%p,%p), stub!\n", iface, memid, invKind, pBstrDllName, pBstrName, pwOrdinal); + FIXME("(%p,%d,%d,%p,%p,%p), stub!\n", iface, memid, invKind, pBstrDllName, pBstrName, pwOrdinal); return E_OUTOFMEMORY; } @@ -2407,7 +2408,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetRefTypeInfo( HREFTYPE hRefType, ITypeInfo** ppTInfo) { - FIXME("(%p,%ld,%p), stub!\n", iface, hRefType, ppTInfo); + FIXME("(%p,%d,%p), stub!\n", iface, hRefType, ppTInfo); return E_OUTOFMEMORY; } @@ -2422,7 +2423,7 @@ static HRESULT WINAPI ITypeInfo2_fnAddressOfMember( INVOKEKIND invKind, PVOID* ppv) { - FIXME("(%p,%ld,%d,%p), stub!\n", iface, memid, invKind, ppv); + FIXME("(%p,%d,%d,%p), stub!\n", iface, memid, invKind, ppv); return E_OUTOFMEMORY; } @@ -2451,7 +2452,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetMops( MEMBERID memid, BSTR* pBstrMops) { - FIXME("(%p,%ld,%p), stub!\n", iface, memid, pBstrMops); + FIXME("(%p,%d,%p), stub!\n", iface, memid, pBstrMops); return E_OUTOFMEMORY; } @@ -2564,7 +2565,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetFuncIndexOfMemId( INVOKEKIND invKind, /* [I] The invocation kind for the function. */ UINT* pFuncIndex) /* [O] The index of the function. */ { - FIXME("(%p,%ld,%d,%p), stub!\n", iface, memid, invKind, pFuncIndex); + FIXME("(%p,%d,%d,%p), stub!\n", iface, memid, invKind, pFuncIndex); return E_OUTOFMEMORY; } @@ -2583,7 +2584,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetVarIndexOfMemId( MEMBERID memid, /* [I] The member id for the variable. */ UINT* pVarIndex) /* [O] The index of the variable. */ { - FIXME("(%p,%ld,%p), stub!\n", iface, memid, pVarIndex); + FIXME("(%p,%d,%p), stub!\n", iface, memid, pVarIndex); return E_OUTOFMEMORY; } @@ -2705,7 +2706,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetDocumentation2( DWORD* pdwHelpStringContext, /* [O] The help string context. */ BSTR* pbstrHelpStringDll) /* [O] The help file name. */ { - FIXME("(%p,%ld,%ld,%p,%p,%p), stub!\n", iface, memid, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll); + FIXME("(%p,%d,%d,%p,%p,%p), stub!\n", iface, memid, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll); return E_OUTOFMEMORY; } @@ -3015,7 +3016,7 @@ static ULONG WINAPI ICreateTypeLib2_fnAddRef(ICreateTypeLib2 *iface) ICreateTypeLib2Impl *This = (ICreateTypeLib2Impl *)iface; ULONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p)->ref was %lu\n",This, ref - 1); + TRACE("(%p)->ref was %u\n",This, ref - 1); return ref; } @@ -3030,7 +3031,7 @@ static ULONG WINAPI ICreateTypeLib2_fnRelease(ICreateTypeLib2 *iface) ICreateTypeLib2Impl *This = (ICreateTypeLib2Impl *)iface; ULONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p)->(%lu)\n",This, ref); + TRACE("(%p)->(%u)\n",This, ref); if (!ref) { int i; @@ -3189,7 +3190,7 @@ static HRESULT WINAPI ICreateTypeLib2_fnSetHelpFileName(ICreateTypeLib2 * iface, */ static HRESULT WINAPI ICreateTypeLib2_fnSetHelpContext(ICreateTypeLib2 * iface, DWORD dwHelpContext) { - FIXME("(%p,%ld), stub!\n", iface, dwHelpContext); + FIXME("(%p,%d), stub!\n", iface, dwHelpContext); return E_OUTOFMEMORY; } @@ -3202,7 +3203,7 @@ static HRESULT WINAPI ICreateTypeLib2_fnSetLcid(ICreateTypeLib2 * iface, LCID lc { ICreateTypeLib2Impl *This = (ICreateTypeLib2Impl *)iface; - TRACE("(%p,%ld)\n", iface, lcid); + TRACE("(%p,%d)\n", iface, lcid); This->typelib_header.lcid2 = lcid; @@ -3404,7 +3405,7 @@ static HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringContext( ICreateTypeLib2 * iface, /* [I] The type library to set the help string context for. */ ULONG dwHelpStringContext) /* [I] The help string context. */ { - FIXME("(%p,%ld), stub!\n", iface, dwHelpStringContext); + FIXME("(%p,%d), stub!\n", iface, dwHelpStringContext); return E_OUTOFMEMORY; } @@ -3618,7 +3619,7 @@ static HRESULT WINAPI ITypeLib2_fnIsName( int nameoffset; MSFT_NameIntro *nameintro; - TRACE("(%p,%s,%lx,%p)\n", iface, debugstr_w(szNameBuf), lHashVal, pfName); + TRACE("(%p,%s,%x,%p)\n", iface, debugstr_w(szNameBuf), lHashVal, pfName); ctl2_encode_name(This, szNameBuf, &encoded_name); nameoffset = ctl2_find_name(This, encoded_name); @@ -3652,7 +3653,7 @@ static HRESULT WINAPI ITypeLib2_fnFindName( { ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface); - FIXME("(%p,%s,%lx,%p,%p,%p), stub!\n", This, debugstr_w(szNameBuf), lHashVal, ppTInfo, rgMemId, pcFound); + FIXME("(%p,%s,%x,%p,%p,%p), stub!\n", This, debugstr_w(szNameBuf), lHashVal, ppTInfo, rgMemId, pcFound); return E_OUTOFMEMORY; } @@ -3736,7 +3737,7 @@ static HRESULT WINAPI ITypeLib2_fnGetDocumentation2( { ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface); - FIXME("(%p,%d,%ld,%p,%p,%p), stub!\n", This, index, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll); + FIXME("(%p,%d,%d,%p,%p,%p), stub!\n", This, index, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll); return E_OUTOFMEMORY; } diff --git a/reactos/dll/win32/oleaut32/ungif.c b/reactos/dll/win32/oleaut32/ungif.c new file mode 100644 index 00000000000..e80f8ab9ca2 --- /dev/null +++ b/reactos/dll/win32/oleaut32/ungif.c @@ -0,0 +1,994 @@ +/* + * Gif extracting routines - derived from libungif + * + * Portions Copyright 2006 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* + * Original copyright notice: + * + * The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + */ + + +/****************************************************************************** + * "Gif-Lib" - Yet another gif library. + * + * Written by: Gershon Elber IBM PC Ver 1.1, Aug. 1990 + ****************************************************************************** + * The kernel of the GIF Decoding process can be found here. + ****************************************************************************** + * History: + * 16 Jun 89 - Version 1.0 by Gershon Elber. + * 3 Sep 90 - Version 1.1 by Gershon Elber (Support for Gif89, Unique names). + *****************************************************************************/ + +#include +#include +#include "ungif.h" + +#include +#include "windef.h" +#include "winbase.h" + +static void *ungif_alloc( size_t sz ) +{ + return HeapAlloc( GetProcessHeap(), 0, sz ); +} + +static void *ungif_calloc( size_t num, size_t sz ) +{ + return HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, num*sz ); +} + +static void ungif_free( void *ptr ) +{ + HeapFree( GetProcessHeap(), 0, ptr ); +} + +#define LZ_MAX_CODE 4095 /* Biggest code possible in 12 bits. */ +#define LZ_BITS 12 + +#define NO_SUCH_CODE 4098 /* Impossible code, to signal empty. */ + +typedef struct GifFilePrivateType { + GifWord BitsPerPixel, /* Bits per pixel (Codes uses at least this + 1). */ + ClearCode, /* The CLEAR LZ code. */ + EOFCode, /* The EOF LZ code. */ + RunningCode, /* The next code algorithm can generate. */ + RunningBits, /* The number of bits required to represent RunningCode. */ + MaxCode1, /* 1 bigger than max. possible code, in RunningBits bits. */ + LastCode, /* The code before the current code. */ + CrntCode, /* Current algorithm code. */ + StackPtr, /* For character stack (see below). */ + CrntShiftState; /* Number of bits in CrntShiftDWord. */ + unsigned long CrntShiftDWord; /* For bytes decomposition into codes. */ + unsigned long PixelCount; /* Number of pixels in image. */ + InputFunc Read; /* function to read gif input (TVT) */ + GifByteType Buf[256]; /* Compressed input is buffered here. */ + GifByteType Stack[LZ_MAX_CODE]; /* Decoded pixels are stacked here. */ + GifByteType Suffix[LZ_MAX_CODE + 1]; /* So we can trace the codes. */ + GifPrefixType Prefix[LZ_MAX_CODE + 1]; +} GifFilePrivateType; + +/* avoid extra function call in case we use fread (TVT) */ +#define READ(_gif,_buf,_len) \ + ((GifFilePrivateType*)_gif->Private)->Read(_gif,_buf,_len) + +static int DGifGetWord(GifFileType *GifFile, GifWord *Word); +static int DGifSetupDecompress(GifFileType *GifFile); +static int DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, int LineLen); +static int DGifGetPrefixChar(GifPrefixType *Prefix, int Code, int ClearCode); +static int DGifDecompressInput(GifFileType *GifFile, int *Code); +static int DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf, + GifByteType *NextByte); + +static int DGifGetExtensionNext(GifFileType * GifFile, GifByteType ** GifExtension); +static int DGifGetCodeNext(GifFileType * GifFile, GifByteType ** GifCodeBlock); + +/****************************************************************************** + * Miscellaneous utility functions + *****************************************************************************/ + +/* return smallest bitfield size n will fit in */ +static int +BitSize(int n) { + + register int i; + + for (i = 1; i <= 8; i++) + if ((1 << i) >= n) + break; + return (i); +} + +/****************************************************************************** + * Color map object functions + *****************************************************************************/ + +/* + * Allocate a color map of given size; initialize with contents of + * ColorMap if that pointer is non-NULL. + */ +static ColorMapObject * +MakeMapObject(int ColorCount, + const GifColorType * ColorMap) { + + ColorMapObject *Object; + + /*** FIXME: Our ColorCount has to be a power of two. Is it necessary to + * make the user know that or should we automatically round up instead? */ + if (ColorCount != (1 << BitSize(ColorCount))) { + return ((ColorMapObject *) NULL); + } + + Object = ungif_alloc(sizeof(ColorMapObject)); + if (Object == (ColorMapObject *) NULL) { + return ((ColorMapObject *) NULL); + } + + Object->Colors = ungif_calloc(ColorCount, sizeof(GifColorType)); + if (Object->Colors == (GifColorType *) NULL) { + return NULL; + } + + Object->ColorCount = ColorCount; + Object->BitsPerPixel = BitSize(ColorCount); + + if (ColorMap) { + memcpy(Object->Colors, ColorMap, ColorCount * sizeof(GifColorType)); + } + + return (Object); +} + +/* + * Free a color map object + */ +static void +FreeMapObject(ColorMapObject * Object) { + + if (Object != NULL) { + ungif_free(Object->Colors); + ungif_free(Object); + /*** FIXME: + * When we are willing to break API we need to make this function + * FreeMapObject(ColorMapObject **Object) + * and do this assignment to NULL here: + * *Object = NULL; + */ + } +} + +static int +AddExtensionBlock(SavedImage * New, + int Len, + unsigned char ExtData[]) { + + ExtensionBlock *ep; + + if (New->ExtensionBlocks == NULL) + New->ExtensionBlocks = ungif_alloc(sizeof(ExtensionBlock)); + else + New->ExtensionBlocks = realloc(New->ExtensionBlocks, + sizeof(ExtensionBlock) * + (New->ExtensionBlockCount + 1)); + + if (New->ExtensionBlocks == NULL) + return (GIF_ERROR); + + ep = &New->ExtensionBlocks[New->ExtensionBlockCount++]; + + ep->ByteCount=Len; + ep->Bytes = ungif_alloc(ep->ByteCount); + if (ep->Bytes == NULL) + return (GIF_ERROR); + + if (ExtData) { + memcpy(ep->Bytes, ExtData, Len); + ep->Function = New->Function; + } + + return (GIF_OK); +} + +static void +FreeExtension(SavedImage * Image) +{ + ExtensionBlock *ep; + + if ((Image == NULL) || (Image->ExtensionBlocks == NULL)) { + return; + } + for (ep = Image->ExtensionBlocks; + ep < (Image->ExtensionBlocks + Image->ExtensionBlockCount); ep++) + ungif_free(ep->Bytes); + ungif_free(Image->ExtensionBlocks); + Image->ExtensionBlocks = NULL; +} + +/****************************************************************************** + * Image block allocation functions +******************************************************************************/ + +static void +FreeSavedImages(GifFileType * GifFile) { + + SavedImage *sp; + + if ((GifFile == NULL) || (GifFile->SavedImages == NULL)) { + return; + } + for (sp = GifFile->SavedImages; + sp < GifFile->SavedImages + GifFile->ImageCount; sp++) { + if (sp->ImageDesc.ColorMap) { + FreeMapObject(sp->ImageDesc.ColorMap); + sp->ImageDesc.ColorMap = NULL; + } + + ungif_free(sp->RasterBits); + + if (sp->ExtensionBlocks) + FreeExtension(sp); + } + ungif_free(GifFile->SavedImages); + GifFile->SavedImages=NULL; +} + +/****************************************************************************** + * This routine should be called before any other DGif calls. Note that + * this routine is called automatically from DGif file open routines. + *****************************************************************************/ +static int +DGifGetScreenDesc(GifFileType * GifFile) { + + int i, BitsPerPixel; + GifByteType Buf[3]; + + /* Put the screen descriptor into the file: */ + if (DGifGetWord(GifFile, &GifFile->SWidth) == GIF_ERROR || + DGifGetWord(GifFile, &GifFile->SHeight) == GIF_ERROR) + return GIF_ERROR; + + if (READ(GifFile, Buf, 3) != 3) { + return GIF_ERROR; + } + GifFile->SColorResolution = (((Buf[0] & 0x70) + 1) >> 4) + 1; + BitsPerPixel = (Buf[0] & 0x07) + 1; + GifFile->SBackGroundColor = Buf[1]; + if (Buf[0] & 0x80) { /* Do we have global color map? */ + + GifFile->SColorMap = MakeMapObject(1 << BitsPerPixel, NULL); + if (GifFile->SColorMap == NULL) { + return GIF_ERROR; + } + + /* Get the global color map: */ + for (i = 0; i < GifFile->SColorMap->ColorCount; i++) { + if (READ(GifFile, Buf, 3) != 3) { + FreeMapObject(GifFile->SColorMap); + GifFile->SColorMap = NULL; + return GIF_ERROR; + } + GifFile->SColorMap->Colors[i].Red = Buf[0]; + GifFile->SColorMap->Colors[i].Green = Buf[1]; + GifFile->SColorMap->Colors[i].Blue = Buf[2]; + } + } else { + GifFile->SColorMap = NULL; + } + + return GIF_OK; +} + +/****************************************************************************** + * This routine should be called before any attempt to read an image. + *****************************************************************************/ +static int +DGifGetRecordType(GifFileType * GifFile, + GifRecordType * Type) { + + GifByteType Buf; + + if (READ(GifFile, &Buf, 1) != 1) { + return GIF_ERROR; + } + + switch (Buf) { + case ',': + *Type = IMAGE_DESC_RECORD_TYPE; + break; + case '!': + *Type = EXTENSION_RECORD_TYPE; + break; + case ';': + *Type = TERMINATE_RECORD_TYPE; + break; + default: + *Type = UNDEFINED_RECORD_TYPE; + return GIF_ERROR; + } + + return GIF_OK; +} + +/****************************************************************************** + * This routine should be called before any attempt to read an image. + * Note it is assumed the Image desc. header (',') has been read. + *****************************************************************************/ +static int +DGifGetImageDesc(GifFileType * GifFile) { + + int i, BitsPerPixel; + GifByteType Buf[3]; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + SavedImage *sp; + + if (DGifGetWord(GifFile, &GifFile->Image.Left) == GIF_ERROR || + DGifGetWord(GifFile, &GifFile->Image.Top) == GIF_ERROR || + DGifGetWord(GifFile, &GifFile->Image.Width) == GIF_ERROR || + DGifGetWord(GifFile, &GifFile->Image.Height) == GIF_ERROR) + return GIF_ERROR; + if (READ(GifFile, Buf, 1) != 1) { + return GIF_ERROR; + } + BitsPerPixel = (Buf[0] & 0x07) + 1; + GifFile->Image.Interlace = (Buf[0] & 0x40); + if (Buf[0] & 0x80) { /* Does this image have local color map? */ + + /*** FIXME: Why do we check both of these in order to do this? + * Why do we have both Image and SavedImages? */ + if (GifFile->Image.ColorMap && GifFile->SavedImages == NULL) + FreeMapObject(GifFile->Image.ColorMap); + + GifFile->Image.ColorMap = MakeMapObject(1 << BitsPerPixel, NULL); + if (GifFile->Image.ColorMap == NULL) { + return GIF_ERROR; + } + + /* Get the image local color map: */ + for (i = 0; i < GifFile->Image.ColorMap->ColorCount; i++) { + if (READ(GifFile, Buf, 3) != 3) { + FreeMapObject(GifFile->Image.ColorMap); + GifFile->Image.ColorMap = NULL; + return GIF_ERROR; + } + GifFile->Image.ColorMap->Colors[i].Red = Buf[0]; + GifFile->Image.ColorMap->Colors[i].Green = Buf[1]; + GifFile->Image.ColorMap->Colors[i].Blue = Buf[2]; + } + } else if (GifFile->Image.ColorMap) { + FreeMapObject(GifFile->Image.ColorMap); + GifFile->Image.ColorMap = NULL; + } + + if (GifFile->SavedImages) { + if ((GifFile->SavedImages = realloc(GifFile->SavedImages, + sizeof(SavedImage) * + (GifFile->ImageCount + 1))) == NULL) { + return GIF_ERROR; + } + } else { + if ((GifFile->SavedImages = ungif_alloc(sizeof(SavedImage))) == NULL) { + return GIF_ERROR; + } + } + + sp = &GifFile->SavedImages[GifFile->ImageCount]; + memcpy(&sp->ImageDesc, &GifFile->Image, sizeof(GifImageDesc)); + if (GifFile->Image.ColorMap != NULL) { + sp->ImageDesc.ColorMap = MakeMapObject( + GifFile->Image.ColorMap->ColorCount, + GifFile->Image.ColorMap->Colors); + if (sp->ImageDesc.ColorMap == NULL) { + return GIF_ERROR; + } + } + sp->RasterBits = (unsigned char *)NULL; + sp->ExtensionBlockCount = 0; + sp->ExtensionBlocks = (ExtensionBlock *) NULL; + + GifFile->ImageCount++; + + Private->PixelCount = (long)GifFile->Image.Width * + (long)GifFile->Image.Height; + + DGifSetupDecompress(GifFile); /* Reset decompress algorithm parameters. */ + + return GIF_OK; +} + +/****************************************************************************** + * Get one full scanned line (Line) of length LineLen from GIF file. + *****************************************************************************/ +static int +DGifGetLine(GifFileType * GifFile, + GifPixelType * Line, + int LineLen) { + + GifByteType *Dummy; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + if (!LineLen) + LineLen = GifFile->Image.Width; + + if ((Private->PixelCount -= LineLen) > 0xffff0000UL) { + return GIF_ERROR; + } + + if (DGifDecompressLine(GifFile, Line, LineLen) == GIF_OK) { + if (Private->PixelCount == 0) { + /* We probably would not be called any more, so lets clean + * everything before we return: need to flush out all rest of + * image until empty block (size 0) detected. We use GetCodeNext. */ + do + if (DGifGetCodeNext(GifFile, &Dummy) == GIF_ERROR) + return GIF_ERROR; + while (Dummy != NULL) ; + } + return GIF_OK; + } else + return GIF_ERROR; +} + +/****************************************************************************** + * Get an extension block (see GIF manual) from gif file. This routine only + * returns the first data block, and DGifGetExtensionNext should be called + * after this one until NULL extension is returned. + * The Extension should NOT be freed by the user (not dynamically allocated). + * Note it is assumed the Extension desc. header ('!') has been read. + *****************************************************************************/ +static int +DGifGetExtension(GifFileType * GifFile, + int *ExtCode, + GifByteType ** Extension) { + + GifByteType Buf; + + if (READ(GifFile, &Buf, 1) != 1) { + return GIF_ERROR; + } + *ExtCode = Buf; + + return DGifGetExtensionNext(GifFile, Extension); +} + +/****************************************************************************** + * Get a following extension block (see GIF manual) from gif file. This + * routine should be called until NULL Extension is returned. + * The Extension should NOT be freed by the user (not dynamically allocated). + *****************************************************************************/ +static int +DGifGetExtensionNext(GifFileType * GifFile, + GifByteType ** Extension) { + + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + if (READ(GifFile, &Buf, 1) != 1) { + return GIF_ERROR; + } + if (Buf > 0) { + *Extension = Private->Buf; /* Use private unused buffer. */ + (*Extension)[0] = Buf; /* Pascal strings notation (pos. 0 is len.). */ + if (READ(GifFile, &((*Extension)[1]), Buf) != Buf) { + return GIF_ERROR; + } + } else + *Extension = NULL; + + return GIF_OK; +} + +/****************************************************************************** + * Get 2 bytes (word) from the given file: + *****************************************************************************/ +static int +DGifGetWord(GifFileType * GifFile, + GifWord *Word) { + + unsigned char c[2]; + + if (READ(GifFile, c, 2) != 2) { + return GIF_ERROR; + } + + *Word = (((unsigned int)c[1]) << 8) + c[0]; + return GIF_OK; +} + +/****************************************************************************** + * Continue to get the image code in compressed form. This routine should be + * called until NULL block is returned. + * The block should NOT be freed by the user (not dynamically allocated). + *****************************************************************************/ +static int +DGifGetCodeNext(GifFileType * GifFile, + GifByteType ** CodeBlock) { + + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + if (READ(GifFile, &Buf, 1) != 1) { + return GIF_ERROR; + } + + if (Buf > 0) { + *CodeBlock = Private->Buf; /* Use private unused buffer. */ + (*CodeBlock)[0] = Buf; /* Pascal strings notation (pos. 0 is len.). */ + if (READ(GifFile, &((*CodeBlock)[1]), Buf) != Buf) { + return GIF_ERROR; + } + } else { + *CodeBlock = NULL; + Private->Buf[0] = 0; /* Make sure the buffer is empty! */ + Private->PixelCount = 0; /* And local info. indicate image read. */ + } + + return GIF_OK; +} + +/****************************************************************************** + * Setup the LZ decompression for this image: + *****************************************************************************/ +static int +DGifSetupDecompress(GifFileType * GifFile) { + + int i, BitsPerPixel; + GifByteType CodeSize; + GifPrefixType *Prefix; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + READ(GifFile, &CodeSize, 1); /* Read Code size from file. */ + BitsPerPixel = CodeSize; + + Private->Buf[0] = 0; /* Input Buffer empty. */ + Private->BitsPerPixel = BitsPerPixel; + Private->ClearCode = (1 << BitsPerPixel); + Private->EOFCode = Private->ClearCode + 1; + Private->RunningCode = Private->EOFCode + 1; + Private->RunningBits = BitsPerPixel + 1; /* Number of bits per code. */ + Private->MaxCode1 = 1 << Private->RunningBits; /* Max. code + 1. */ + Private->StackPtr = 0; /* No pixels on the pixel stack. */ + Private->LastCode = NO_SUCH_CODE; + Private->CrntShiftState = 0; /* No information in CrntShiftDWord. */ + Private->CrntShiftDWord = 0; + + Prefix = Private->Prefix; + for (i = 0; i <= LZ_MAX_CODE; i++) + Prefix[i] = NO_SUCH_CODE; + + return GIF_OK; +} + +/****************************************************************************** + * The LZ decompression routine: + * This version decompress the given gif file into Line of length LineLen. + * This routine can be called few times (one per scan line, for example), in + * order the complete the whole image. + *****************************************************************************/ +static int +DGifDecompressLine(GifFileType * GifFile, + GifPixelType * Line, + int LineLen) { + + int i = 0; + int j, CrntCode, EOFCode, ClearCode, CrntPrefix, LastCode, StackPtr; + GifByteType *Stack, *Suffix; + GifPrefixType *Prefix; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + StackPtr = Private->StackPtr; + Prefix = Private->Prefix; + Suffix = Private->Suffix; + Stack = Private->Stack; + EOFCode = Private->EOFCode; + ClearCode = Private->ClearCode; + LastCode = Private->LastCode; + + if (StackPtr != 0) { + /* Let pop the stack off before continueing to read the gif file: */ + while (StackPtr != 0 && i < LineLen) + Line[i++] = Stack[--StackPtr]; + } + + while (i < LineLen) { /* Decode LineLen items. */ + if (DGifDecompressInput(GifFile, &CrntCode) == GIF_ERROR) + return GIF_ERROR; + + if (CrntCode == EOFCode) { + /* Note however that usually we will not be here as we will stop + * decoding as soon as we got all the pixel, or EOF code will + * not be read at all, and DGifGetLine/Pixel clean everything. */ + if (i != LineLen - 1 || Private->PixelCount != 0) { + return GIF_ERROR; + } + i++; + } else if (CrntCode == ClearCode) { + /* We need to start over again: */ + for (j = 0; j <= LZ_MAX_CODE; j++) + Prefix[j] = NO_SUCH_CODE; + Private->RunningCode = Private->EOFCode + 1; + Private->RunningBits = Private->BitsPerPixel + 1; + Private->MaxCode1 = 1 << Private->RunningBits; + LastCode = Private->LastCode = NO_SUCH_CODE; + } else { + /* Its regular code - if in pixel range simply add it to output + * stream, otherwise trace to codes linked list until the prefix + * is in pixel range: */ + if (CrntCode < ClearCode) { + /* This is simple - its pixel scalar, so add it to output: */ + Line[i++] = CrntCode; + } else { + /* Its a code to needed to be traced: trace the linked list + * until the prefix is a pixel, while pushing the suffix + * pixels on our stack. If we done, pop the stack in reverse + * (thats what stack is good for!) order to output. */ + if (Prefix[CrntCode] == NO_SUCH_CODE) { + /* Only allowed if CrntCode is exactly the running code: + * In that case CrntCode = XXXCode, CrntCode or the + * prefix code is last code and the suffix char is + * exactly the prefix of last code! */ + if (CrntCode == Private->RunningCode - 2) { + CrntPrefix = LastCode; + Suffix[Private->RunningCode - 2] = + Stack[StackPtr++] = DGifGetPrefixChar(Prefix, + LastCode, + ClearCode); + } else { + return GIF_ERROR; + } + } else + CrntPrefix = CrntCode; + + /* Now (if image is O.K.) we should not get a NO_SUCH_CODE + * during the trace. As we might loop forever, in case of + * defective image, we count the number of loops we trace + * and stop if we got LZ_MAX_CODE. Obviously we cannot + * loop more than that. */ + j = 0; + while (j++ <= LZ_MAX_CODE && + CrntPrefix > ClearCode && CrntPrefix <= LZ_MAX_CODE) { + Stack[StackPtr++] = Suffix[CrntPrefix]; + CrntPrefix = Prefix[CrntPrefix]; + } + if (j >= LZ_MAX_CODE || CrntPrefix > LZ_MAX_CODE) { + return GIF_ERROR; + } + /* Push the last character on stack: */ + Stack[StackPtr++] = CrntPrefix; + + /* Now lets pop all the stack into output: */ + while (StackPtr != 0 && i < LineLen) + Line[i++] = Stack[--StackPtr]; + } + if (LastCode != NO_SUCH_CODE) { + Prefix[Private->RunningCode - 2] = LastCode; + + if (CrntCode == Private->RunningCode - 2) { + /* Only allowed if CrntCode is exactly the running code: + * In that case CrntCode = XXXCode, CrntCode or the + * prefix code is last code and the suffix char is + * exactly the prefix of last code! */ + Suffix[Private->RunningCode - 2] = + DGifGetPrefixChar(Prefix, LastCode, ClearCode); + } else { + Suffix[Private->RunningCode - 2] = + DGifGetPrefixChar(Prefix, CrntCode, ClearCode); + } + } + LastCode = CrntCode; + } + } + + Private->LastCode = LastCode; + Private->StackPtr = StackPtr; + + return GIF_OK; +} + +/****************************************************************************** + * Routine to trace the Prefixes linked list until we get a prefix which is + * not code, but a pixel value (less than ClearCode). Returns that pixel value. + * If image is defective, we might loop here forever, so we limit the loops to + * the maximum possible if image O.k. - LZ_MAX_CODE times. + *****************************************************************************/ +static int +DGifGetPrefixChar(GifPrefixType *Prefix, + int Code, + int ClearCode) { + + int i = 0; + + while (Code > ClearCode && i++ <= LZ_MAX_CODE) + Code = Prefix[Code]; + return Code; +} + +/****************************************************************************** + * The LZ decompression input routine: + * This routine is responsible for the decompression of the bit stream from + * 8 bits (bytes) packets, into the real codes. + * Returns GIF_OK if read successfully. + *****************************************************************************/ +static int +DGifDecompressInput(GifFileType * GifFile, + int *Code) { + + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + GifByteType NextByte; + static const unsigned short CodeMasks[] = { + 0x0000, 0x0001, 0x0003, 0x0007, + 0x000f, 0x001f, 0x003f, 0x007f, + 0x00ff, 0x01ff, 0x03ff, 0x07ff, + 0x0fff + }; + /* The image can't contain more than LZ_BITS per code. */ + if (Private->RunningBits > LZ_BITS) { + return GIF_ERROR; + } + + while (Private->CrntShiftState < Private->RunningBits) { + /* Needs to get more bytes from input stream for next code: */ + if (DGifBufferedInput(GifFile, Private->Buf, &NextByte) == GIF_ERROR) { + return GIF_ERROR; + } + Private->CrntShiftDWord |= + ((unsigned long)NextByte) << Private->CrntShiftState; + Private->CrntShiftState += 8; + } + *Code = Private->CrntShiftDWord & CodeMasks[Private->RunningBits]; + + Private->CrntShiftDWord >>= Private->RunningBits; + Private->CrntShiftState -= Private->RunningBits; + + /* If code cannot fit into RunningBits bits, must raise its size. Note + * however that codes above 4095 are used for special signaling. + * If we're using LZ_BITS bits already and we're at the max code, just + * keep using the table as it is, don't increment Private->RunningCode. + */ + if (Private->RunningCode < LZ_MAX_CODE + 2 && + ++Private->RunningCode > Private->MaxCode1 && + Private->RunningBits < LZ_BITS) { + Private->MaxCode1 <<= 1; + Private->RunningBits++; + } + return GIF_OK; +} + +/****************************************************************************** + * This routines read one gif data block at a time and buffers it internally + * so that the decompression routine could access it. + * The routine returns the next byte from its internal buffer (or read next + * block in if buffer empty) and returns GIF_OK if successful. + *****************************************************************************/ +static int +DGifBufferedInput(GifFileType * GifFile, + GifByteType * Buf, + GifByteType * NextByte) { + + if (Buf[0] == 0) { + /* Needs to read the next buffer - this one is empty: */ + if (READ(GifFile, Buf, 1) != 1) { + return GIF_ERROR; + } + /* There shouldn't be any empty data blocks here as the LZW spec + * says the LZW termination code should come first. Therefore we + * shouldn't be inside this routine at that point. + */ + if (Buf[0] == 0) { + return GIF_ERROR; + } + if (READ(GifFile, &Buf[1], Buf[0]) != Buf[0]) { + return GIF_ERROR; + } + *NextByte = Buf[1]; + Buf[1] = 2; /* We use now the second place as last char read! */ + Buf[0]--; + } else { + *NextByte = Buf[Buf[1]++]; + Buf[0]--; + } + + return GIF_OK; +} + +/****************************************************************************** + * This routine reads an entire GIF into core, hanging all its state info off + * the GifFileType pointer. Call DGifOpenFileName() or DGifOpenFileHandle() + * first to initialize I/O. Its inverse is EGifSpew(). + ******************************************************************************/ +int +DGifSlurp(GifFileType * GifFile) { + + int ImageSize; + GifRecordType RecordType; + SavedImage *sp; + GifByteType *ExtData; + SavedImage temp_save; + + temp_save.ExtensionBlocks = NULL; + temp_save.ExtensionBlockCount = 0; + + do { + if (DGifGetRecordType(GifFile, &RecordType) == GIF_ERROR) + return (GIF_ERROR); + + switch (RecordType) { + case IMAGE_DESC_RECORD_TYPE: + if (DGifGetImageDesc(GifFile) == GIF_ERROR) + return (GIF_ERROR); + + sp = &GifFile->SavedImages[GifFile->ImageCount - 1]; + ImageSize = sp->ImageDesc.Width * sp->ImageDesc.Height; + + sp->RasterBits = ungif_alloc(ImageSize * sizeof(GifPixelType)); + if (sp->RasterBits == NULL) { + return GIF_ERROR; + } + if (DGifGetLine(GifFile, sp->RasterBits, ImageSize) == + GIF_ERROR) + return (GIF_ERROR); + if (temp_save.ExtensionBlocks) { + sp->ExtensionBlocks = temp_save.ExtensionBlocks; + sp->ExtensionBlockCount = temp_save.ExtensionBlockCount; + + temp_save.ExtensionBlocks = NULL; + temp_save.ExtensionBlockCount = 0; + + /* FIXME: The following is wrong. It is left in only for + * backwards compatibility. Someday it should go away. Use + * the sp->ExtensionBlocks->Function variable instead. */ + sp->Function = sp->ExtensionBlocks[0].Function; + } + break; + + case EXTENSION_RECORD_TYPE: + if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == + GIF_ERROR) + return (GIF_ERROR); + while (ExtData != NULL) { + + /* Create an extension block with our data */ + if (AddExtensionBlock(&temp_save, ExtData[0], &ExtData[1]) + == GIF_ERROR) + return (GIF_ERROR); + + if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) + return (GIF_ERROR); + temp_save.Function = 0; + } + break; + + case TERMINATE_RECORD_TYPE: + break; + + default: /* Should be trapped by DGifGetRecordType */ + break; + } + } while (RecordType != TERMINATE_RECORD_TYPE); + + /* Just in case the Gif has an extension block without an associated + * image... (Should we save this into a savefile structure with no image + * instead? Have to check if the present writing code can handle that as + * well.... */ + if (temp_save.ExtensionBlocks) + FreeExtension(&temp_save); + + return (GIF_OK); +} + +/****************************************************************************** + * GifFileType constructor with user supplied input function (TVT) + *****************************************************************************/ +GifFileType * +DGifOpen(void *userData, + InputFunc readFunc) { + + unsigned char Buf[GIF_STAMP_LEN + 1]; + GifFileType *GifFile; + GifFilePrivateType *Private; + + GifFile = ungif_alloc(sizeof(GifFileType)); + if (GifFile == NULL) { + return NULL; + } + + memset(GifFile, '\0', sizeof(GifFileType)); + + Private = ungif_alloc(sizeof(GifFilePrivateType)); + if (!Private) { + ungif_free(GifFile); + return NULL; + } + + GifFile->Private = (void*)Private; + + Private->Read = readFunc; /* TVT */ + GifFile->UserData = userData; /* TVT */ + + /* Lets see if this is a GIF file: */ + if (READ(GifFile, Buf, GIF_STAMP_LEN) != GIF_STAMP_LEN) { + ungif_free(Private); + ungif_free(GifFile); + return NULL; + } + + /* The GIF Version number is ignored at this time. Maybe we should do + * something more useful with it. */ + Buf[GIF_STAMP_LEN] = 0; + if (memcmp(GIF_STAMP, Buf, GIF_VERSION_POS) != 0) { + ungif_free(Private); + ungif_free(GifFile); + return NULL; + } + + if (DGifGetScreenDesc(GifFile) == GIF_ERROR) { + ungif_free(Private); + ungif_free(GifFile); + return NULL; + } + + return GifFile; +} + +/****************************************************************************** + * This routine should be called last, to close the GIF file. + *****************************************************************************/ +int +DGifCloseFile(GifFileType * GifFile) { + + GifFilePrivateType *Private; + + if (GifFile == NULL) + return GIF_ERROR; + + Private = (GifFilePrivateType *) GifFile->Private; + + if (GifFile->Image.ColorMap) { + FreeMapObject(GifFile->Image.ColorMap); + GifFile->Image.ColorMap = NULL; + } + + if (GifFile->SColorMap) { + FreeMapObject(GifFile->SColorMap); + GifFile->SColorMap = NULL; + } + + ungif_free(Private); + Private = NULL; + + if (GifFile->SavedImages) { + FreeSavedImages(GifFile); + GifFile->SavedImages = NULL; + } + + ungif_free(GifFile); + + return GIF_OK; +} diff --git a/reactos/dll/win32/oleaut32/ungif.h b/reactos/dll/win32/oleaut32/ungif.h new file mode 100644 index 00000000000..6b54a1bd5ae --- /dev/null +++ b/reactos/dll/win32/oleaut32/ungif.h @@ -0,0 +1,169 @@ +/* + * Gif extracting routines - derived from libungif + * + * Portions Copyright 2006 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* + * Original copyright notice: + * + * The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + */ + +/****************************************************************************** + * In order to make life a little bit easier when using the GIF file format, + * this library was written, and which does all the dirty work... + * + * Written by Gershon Elber, Jun. 1989 + * Hacks by Eric S. Raymond, Sep. 1992 + ****************************************************************************** + * History: + * 14 Jun 89 - Version 1.0 by Gershon Elber. + * 3 Sep 90 - Version 1.1 by Gershon Elber (Support for Gif89, Unique names) + * 15 Sep 90 - Version 2.0 by Eric S. Raymond (Changes to suoport GIF slurp) + * 26 Jun 96 - Version 3.0 by Eric S. Raymond (Full GIF89 support) + * 17 Dec 98 - Version 4.0 by Toshio Kuratomi (Fix extension writing code) + *****************************************************************************/ + +#ifndef _UNGIF_H_ +#define _UNGIF_H_ 1 + +#define GIF_ERROR 0 +#define GIF_OK 1 + +#ifndef TRUE +#define TRUE 1 +#endif /* TRUE */ +#ifndef FALSE +#define FALSE 0 +#endif /* FALSE */ + +#ifndef NULL +#define NULL 0 +#endif /* NULL */ + +#define GIF_STAMP "GIFVER" /* First chars in file - GIF stamp. */ +#define GIF_STAMP_LEN sizeof(GIF_STAMP) - 1 +#define GIF_VERSION_POS 3 /* Version first character in stamp. */ +#define GIF87_STAMP "GIF87a" /* First chars in file - GIF stamp. */ +#define GIF89_STAMP "GIF89a" /* First chars in file - GIF stamp. */ + +#define GIF_FILE_BUFFER_SIZE 16384 /* Files uses bigger buffers than usual. */ + +typedef int GifBooleanType; +typedef unsigned char GifPixelType; +typedef unsigned char *GifRowType; +typedef unsigned char GifByteType; +typedef unsigned int GifPrefixType; +typedef int GifWord; + +typedef struct GifColorType { + GifByteType Red, Green, Blue; +} GifColorType; + +typedef struct ColorMapObject { + int ColorCount; + int BitsPerPixel; + GifColorType *Colors; +} ColorMapObject; + +typedef struct GifImageDesc { + GifWord Left, Top, Width, Height, /* Current image dimensions. */ + Interlace; /* Sequential/Interlaced lines. */ + ColorMapObject *ColorMap; /* The local color map */ +} GifImageDesc; + +typedef struct GifFileType { + GifWord SWidth, SHeight, /* Screen dimensions. */ + SColorResolution, /* How many colors can we generate? */ + SBackGroundColor; /* I hope you understand this one... */ + ColorMapObject *SColorMap; /* NULL if not exists. */ + int ImageCount; /* Number of current image */ + GifImageDesc Image; /* Block describing current image */ + struct SavedImage *SavedImages; /* Use this to accumulate file state */ + void *UserData; /* hook to attach user data (TVT) */ + void *Private; /* Don't mess with this! */ +} GifFileType; + +typedef enum { + UNDEFINED_RECORD_TYPE, + SCREEN_DESC_RECORD_TYPE, + IMAGE_DESC_RECORD_TYPE, /* Begin with ',' */ + EXTENSION_RECORD_TYPE, /* Begin with '!' */ + TERMINATE_RECORD_TYPE /* Begin with ';' */ +} GifRecordType; + +/* func type to read gif data from arbitrary sources (TVT) */ +typedef int (*InputFunc) (GifFileType *, GifByteType *, int); + +/* GIF89 extension function codes */ + +#define COMMENT_EXT_FUNC_CODE 0xfe /* comment */ +#define GRAPHICS_EXT_FUNC_CODE 0xf9 /* graphics control */ +#define PLAINTEXT_EXT_FUNC_CODE 0x01 /* plaintext */ +#define APPLICATION_EXT_FUNC_CODE 0xff /* application block */ + +/* public interface to ungif.c */ +int DGifSlurp(GifFileType * GifFile); +GifFileType *DGifOpen(void *userPtr, InputFunc readFunc); +int DGifCloseFile(GifFileType * GifFile); + +#define D_GIF_ERR_OPEN_FAILED 101 /* And DGif possible errors. */ +#define D_GIF_ERR_READ_FAILED 102 +#define D_GIF_ERR_NOT_GIF_FILE 103 +#define D_GIF_ERR_NO_SCRN_DSCR 104 +#define D_GIF_ERR_NO_IMAG_DSCR 105 +#define D_GIF_ERR_NO_COLOR_MAP 106 +#define D_GIF_ERR_WRONG_RECORD 107 +#define D_GIF_ERR_DATA_TOO_BIG 108 +#define D_GIF_ERR_NOT_ENOUGH_MEM 109 +#define D_GIF_ERR_CLOSE_FAILED 110 +#define D_GIF_ERR_NOT_READABLE 111 +#define D_GIF_ERR_IMAGE_DEFECT 112 +#define D_GIF_ERR_EOF_TOO_SOON 113 + +/****************************************************************************** + * Support for the in-core structures allocation (slurp mode). + *****************************************************************************/ + +/* This is the in-core version of an extension record */ +typedef struct { + int ByteCount; + char *Bytes; + int Function; /* Holds the type of the Extension block. */ +} ExtensionBlock; + +/* This holds an image header, its unpacked raster bits, and extensions */ +typedef struct SavedImage { + GifImageDesc ImageDesc; + unsigned char *RasterBits; + int Function; /* DEPRECATED: Use ExtensionBlocks[x].Function instead */ + int ExtensionBlockCount; + ExtensionBlock *ExtensionBlocks; +} SavedImage; + +#endif /* _UNGIF_H_ */ diff --git a/reactos/dll/win32/oleaut32/usrmarshal.c b/reactos/dll/win32/oleaut32/usrmarshal.c index 242c3b1960a..eea46c606bd 100644 --- a/reactos/dll/win32/oleaut32/usrmarshal.c +++ b/reactos/dll/win32/oleaut32/usrmarshal.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -35,15 +35,15 @@ #include "ole2.h" #include "oleauto.h" #include "rpcproxy.h" +#include "typelib.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(ole); -/* FIXME: not supposed to be here */ - -const CLSID CLSID_PSDispatch = { - 0x20420, 0, 0, {0xC0, 0, 0, 0, 0, 0, 0, 0x46} -}; +#define ALIGNED_LENGTH(_Len, _Align) (((_Len)+(_Align))&~(_Align)) +#define ALIGNED_POINTER(_Ptr, _Align) ((LPVOID)ALIGNED_LENGTH((ULONG_PTR)(_Ptr), _Align)) +#define ALIGN_LENGTH(_Len, _Align) _Len = ALIGNED_LENGTH(_Len, _Align) +#define ALIGN_POINTER(_Ptr, _Align) _Ptr = ALIGNED_POINTER(_Ptr, _Align) static CStdPSFactoryBuffer PSFactoryBuffer; @@ -51,7 +51,7 @@ CSTDSTUBBUFFERRELEASE(&PSFactoryBuffer) extern const ExtendedProxyFileInfo oaidl_ProxyFileInfo; -const ProxyFileInfo* OLEAUT32_ProxyFileList[] = { +static const ProxyFileInfo *OLEAUT32_ProxyFileList[] = { &oaidl_ProxyFileInfo, NULL }; @@ -62,7 +62,7 @@ HRESULT OLEAUTPS_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) &CLSID_PSDispatch, &PSFactoryBuffer); } -static void dump_user_flags(unsigned long *pFlags) +static void dump_user_flags(ULONG *pFlags) { if (HIWORD(*pFlags) == NDR_LOCAL_DATA_REPRESENTATION) TRACE("MAKELONG(NDR_LOCAL_REPRESENTATION, "); @@ -79,129 +79,205 @@ static void dump_user_flags(unsigned long *pFlags) } /* CLEANLOCALSTORAGE */ -/* I'm not sure how this is supposed to work yet */ -unsigned long WINAPI CLEANLOCALSTORAGE_UserSize(unsigned long *pFlags, unsigned long Start, CLEANLOCALSTORAGE *pstg) +#define CLS_FUNCDESC 'f' +#define CLS_LIBATTR 'l' +#define CLS_TYPEATTR 't' +#define CLS_VARDESC 'v' + +ULONG WINAPI CLEANLOCALSTORAGE_UserSize(ULONG *pFlags, ULONG Start, CLEANLOCALSTORAGE *pstg) { - return Start + sizeof(DWORD); + ALIGN_LENGTH(Start, 3); + return Start + sizeof(DWORD); } -unsigned char * WINAPI CLEANLOCALSTORAGE_UserMarshal(unsigned long *pFlags, unsigned char *Buffer, CLEANLOCALSTORAGE *pstg) +unsigned char * WINAPI CLEANLOCALSTORAGE_UserMarshal(ULONG *pFlags, unsigned char *Buffer, CLEANLOCALSTORAGE *pstg) { - *(DWORD*)Buffer = 0; - return Buffer + sizeof(DWORD); + ALIGN_POINTER(Buffer, 3); + *(DWORD*)Buffer = pstg->flags; + switch(pstg->flags) + { + case CLS_LIBATTR: + ITypeLib_ReleaseTLibAttr((ITypeLib*)pstg->pInterface, *(TLIBATTR**)pstg->pStorage); + break; + case CLS_TYPEATTR: + ITypeInfo_ReleaseTypeAttr((ITypeInfo*)pstg->pInterface, *(TYPEATTR**)pstg->pStorage); + break; + case CLS_FUNCDESC: + ITypeInfo_ReleaseFuncDesc((ITypeInfo*)pstg->pInterface, *(FUNCDESC**)pstg->pStorage); + break; + case CLS_VARDESC: + ITypeInfo_ReleaseVarDesc((ITypeInfo*)pstg->pInterface, *(VARDESC**)pstg->pStorage); + break; + + default: + ERR("Unknown type %x\n", pstg->flags); + } + + *(VOID**)pstg->pStorage = NULL; + IUnknown_Release(pstg->pInterface); + pstg->pInterface = NULL; + + return Buffer + sizeof(DWORD); } -unsigned char * WINAPI CLEANLOCALSTORAGE_UserUnmarshal(unsigned long *pFlags, unsigned char *Buffer, CLEANLOCALSTORAGE *pstr) +unsigned char * WINAPI CLEANLOCALSTORAGE_UserUnmarshal(ULONG *pFlags, unsigned char *Buffer, CLEANLOCALSTORAGE *pstr) { - return Buffer + sizeof(DWORD); + ALIGN_POINTER(Buffer, 3); + pstr->flags = *(DWORD*)Buffer; + return Buffer + sizeof(DWORD); } -void WINAPI CLEANLOCALSTORAGE_UserFree(unsigned long *pFlags, CLEANLOCALSTORAGE *pstr) +void WINAPI CLEANLOCALSTORAGE_UserFree(ULONG *pFlags, CLEANLOCALSTORAGE *pstr) { + /* Nothing to do */ } /* BSTR */ -unsigned long WINAPI BSTR_UserSize(unsigned long *pFlags, unsigned long Start, BSTR *pstr) +typedef struct { - TRACE("(%lx,%ld,%p) => %p\n", *pFlags, Start, pstr, *pstr); - if (*pstr) TRACE("string=%s\n", debugstr_w(*pstr)); - Start += sizeof(FLAGGED_WORD_BLOB) + sizeof(OLECHAR) * (SysStringLen(*pstr) - 1); - TRACE("returning %ld\n", Start); - return Start; + DWORD len; /* No. of chars not including trailing '\0' */ + DWORD byte_len; /* len * 2 or 0xffffffff if len == 0 */ + DWORD len2; /* == len */ +} bstr_wire_t; + +ULONG WINAPI BSTR_UserSize(ULONG *pFlags, ULONG Start, BSTR *pstr) +{ + TRACE("(%x,%d,%p) => %p\n", *pFlags, Start, pstr, *pstr); + if (*pstr) TRACE("string=%s\n", debugstr_w(*pstr)); + ALIGN_LENGTH(Start, 3); + Start += sizeof(bstr_wire_t) + ((SysStringByteLen(*pstr) + 1) & ~1); + TRACE("returning %d\n", Start); + return Start; } -unsigned char * WINAPI BSTR_UserMarshal(unsigned long *pFlags, unsigned char *Buffer, BSTR *pstr) +unsigned char * WINAPI BSTR_UserMarshal(ULONG *pFlags, unsigned char *Buffer, BSTR *pstr) { - wireBSTR str = (wireBSTR)Buffer; + bstr_wire_t *header; + DWORD len = SysStringByteLen(*pstr); - TRACE("(%lx,%p,%p) => %p\n", *pFlags, Buffer, pstr, *pstr); - if (*pstr) TRACE("string=%s\n", debugstr_w(*pstr)); - str->fFlags = 0; - str->clSize = SysStringLen(*pstr); - if (str->clSize) - memcpy(&str->asData, *pstr, sizeof(OLECHAR) * str->clSize); - return Buffer + sizeof(FLAGGED_WORD_BLOB) + sizeof(OLECHAR) * (str->clSize - 1); + TRACE("(%x,%p,%p) => %p\n", *pFlags, Buffer, pstr, *pstr); + if (*pstr) TRACE("string=%s\n", debugstr_w(*pstr)); + + ALIGN_POINTER(Buffer, 3); + header = (bstr_wire_t*)Buffer; + header->len = header->len2 = (len + 1) / 2; + if (*pstr) + { + header->byte_len = len; + memcpy(header + 1, *pstr, header->len * 2); + } + else + header->byte_len = 0xffffffff; /* special case for a null bstr */ + + return Buffer + sizeof(*header) + sizeof(OLECHAR) * header->len; } -unsigned char * WINAPI BSTR_UserUnmarshal(unsigned long *pFlags, unsigned char *Buffer, BSTR *pstr) +unsigned char * WINAPI BSTR_UserUnmarshal(ULONG *pFlags, unsigned char *Buffer, BSTR *pstr) { - wireBSTR str = (wireBSTR)Buffer; - TRACE("(%lx,%p,%p) => %p\n", *pFlags, Buffer, pstr, *pstr); - if (str->clSize) { - SysReAllocStringLen(pstr, (OLECHAR*)&str->asData, str->clSize); - } - else if (*pstr) { - SysFreeString(*pstr); - *pstr = NULL; - } - if (*pstr) TRACE("string=%s\n", debugstr_w(*pstr)); - return Buffer + sizeof(FLAGGED_WORD_BLOB) + sizeof(OLECHAR) * (str->clSize - 1); + bstr_wire_t *header; + TRACE("(%x,%p,%p) => %p\n", *pFlags, Buffer, pstr, *pstr); + + ALIGN_POINTER(Buffer, 3); + header = (bstr_wire_t*)Buffer; + if(header->len != header->len2) + FIXME("len %08x != len2 %08x\n", header->len, header->len2); + + if(*pstr) + { + SysFreeString(*pstr); + *pstr = NULL; + } + + if(header->byte_len != 0xffffffff) + *pstr = SysAllocStringByteLen((char*)(header + 1), header->byte_len); + + if (*pstr) TRACE("string=%s\n", debugstr_w(*pstr)); + return Buffer + sizeof(*header) + sizeof(OLECHAR) * header->len; } -void WINAPI BSTR_UserFree(unsigned long *pFlags, BSTR *pstr) +void WINAPI BSTR_UserFree(ULONG *pFlags, BSTR *pstr) { - TRACE("(%lx,%p) => %p\n", *pFlags, pstr, *pstr); - if (*pstr) { - SysFreeString(*pstr); - *pstr = NULL; - } + TRACE("(%x,%p) => %p\n", *pFlags, pstr, *pstr); + if (*pstr) + { + SysFreeString(*pstr); + *pstr = NULL; + } } /* VARIANT */ -/* I'm not too sure how to do this yet */ -#define VARIANT_wiresize sizeof(struct _wireVARIANT) - -static unsigned wire_size(VARTYPE vt) +typedef struct { - if (vt & VT_ARRAY) return 0; + DWORD clSize; + DWORD rpcReserverd; + USHORT vt; + USHORT wReserved1; + USHORT wReserved2; + USHORT wReserved3; + DWORD switch_is; +} variant_wire_t; - switch (vt & ~VT_BYREF) { - case VT_EMPTY: - case VT_NULL: - return 0; - case VT_I1: - case VT_UI1: - return sizeof(CHAR); - case VT_I2: - case VT_UI2: - return sizeof(SHORT); - case VT_I4: - case VT_UI4: - return sizeof(LONG); - case VT_INT: - case VT_UINT: - return sizeof(INT); - case VT_R4: - return sizeof(FLOAT); - case VT_R8: - return sizeof(DOUBLE); - case VT_BOOL: - return sizeof(VARIANT_BOOL); - case VT_ERROR: - return sizeof(SCODE); - case VT_DATE: - return sizeof(DATE); - case VT_CY: - return sizeof(CY); - case VT_DECIMAL: - return sizeof(DECIMAL); - case VT_BSTR: - case VT_VARIANT: - case VT_UNKNOWN: - case VT_DISPATCH: - case VT_SAFEARRAY: - case VT_RECORD: - return 0; - default: - FIXME("unhandled VT %d\n", vt); - return 0; - } +static unsigned int get_type_size(ULONG *pFlags, VARIANT *pvar) +{ + if (V_VT(pvar) & VT_ARRAY) return 4; + + switch (V_VT(pvar) & ~VT_BYREF) { + case VT_EMPTY: + case VT_NULL: + return 0; + case VT_I1: + case VT_UI1: + return sizeof(CHAR); + case VT_I2: + case VT_UI2: + return sizeof(SHORT); + case VT_I4: + case VT_UI4: + return sizeof(LONG); + case VT_INT: + case VT_UINT: + return sizeof(INT); + case VT_R4: + return sizeof(FLOAT); + case VT_R8: + return sizeof(DOUBLE); + case VT_BOOL: + return sizeof(VARIANT_BOOL); + case VT_ERROR: + return sizeof(SCODE); + case VT_DATE: + return sizeof(DATE); + case VT_CY: + return sizeof(CY); + case VT_DECIMAL: + return sizeof(DECIMAL); + case VT_BSTR: + return sizeof(BSTR); + case VT_VARIANT: + return sizeof(VARIANT); + case VT_UNKNOWN: + case VT_DISPATCH: + case VT_RECORD: + return 0; + default: + FIXME("unhandled VT %d\n", V_VT(pvar)); + return 0; + } } -static unsigned interface_variant_size(unsigned long *pFlags, REFIID riid, VARIANT *pvar) +static unsigned int get_type_alignment(ULONG *pFlags, VARIANT *pvar) +{ + unsigned int size = get_type_size(pFlags, pvar); + if(V_VT(pvar) & VT_BYREF) return 3; + if(size == 0) return 0; + if(size <= 4) return size - 1; + return 7; +} + +static unsigned interface_variant_size(ULONG *pFlags, REFIID riid, VARIANT *pvar) { ULONG size; HRESULT hr; @@ -211,45 +287,49 @@ static unsigned interface_variant_size(unsigned long *pFlags, REFIID riid, VARIA if (!V_DISPATCH(pvar)) WARN("NULL dispatch pointer\n"); else - ERR("Dispatch variant buffer size calculation failed, HRESULT=0x%lx\n", hr); + ERR("Dispatch variant buffer size calculation failed, HRESULT=0x%x\n", hr); return 0; } size += sizeof(ULONG); /* we have to store the buffersize in the stream */ - TRACE("wire-size extra of dispatch variant is %ld\n", size); + TRACE("wire-size extra of dispatch variant is %d\n", size); return size; } -static unsigned wire_extra(unsigned long *pFlags, VARIANT *pvar) +static ULONG wire_extra_user_size(ULONG *pFlags, ULONG Start, VARIANT *pvar) { - if (V_ISARRAY(pvar)) { - FIXME("wire-size safearray\n"); - return 0; + if (V_ISARRAY(pvar)) + { + if (V_ISBYREF(pvar)) + return LPSAFEARRAY_UserSize(pFlags, Start, V_ARRAYREF(pvar)); + else + return LPSAFEARRAY_UserSize(pFlags, Start, &V_ARRAY(pvar)); } + switch (V_VT(pvar)) { case VT_BSTR: - return BSTR_UserSize(pFlags, 0, &V_BSTR(pvar)); + return BSTR_UserSize(pFlags, Start, &V_BSTR(pvar)); case VT_BSTR | VT_BYREF: - return BSTR_UserSize(pFlags, 0, V_BSTRREF(pvar)); - case VT_SAFEARRAY: - case VT_SAFEARRAY | VT_BYREF: - FIXME("wire-size safearray\n"); - return 0; + return BSTR_UserSize(pFlags, Start, V_BSTRREF(pvar)); case VT_VARIANT | VT_BYREF: - return VARIANT_UserSize(pFlags, 0, V_VARIANTREF(pvar)); + return VARIANT_UserSize(pFlags, Start, V_VARIANTREF(pvar)); case VT_UNKNOWN: - return interface_variant_size(pFlags, &IID_IUnknown, pvar); + return Start + interface_variant_size(pFlags, &IID_IUnknown, pvar); case VT_DISPATCH: - return interface_variant_size(pFlags, &IID_IDispatch, pvar); + return Start + interface_variant_size(pFlags, &IID_IDispatch, pvar); case VT_RECORD: FIXME("wire-size record\n"); - return 0; + return Start; + case VT_SAFEARRAY: + case VT_SAFEARRAY | VT_BYREF: + FIXME("wire-size safearray: shouldn't be marshaling this\n"); + return Start; default: - return 0; + return Start; } } /* helper: called for VT_DISPATCH variants to marshal the IDispatch* into the buffer. returns Buffer on failure, new position otherwise */ -static unsigned char* interface_variant_marshal(unsigned long *pFlags, unsigned char *Buffer, REFIID riid, VARIANT *pvar) +static unsigned char* interface_variant_marshal(ULONG *pFlags, unsigned char *Buffer, REFIID riid, VARIANT *pvar) { IStream *working; HGLOBAL working_mem; @@ -258,7 +338,7 @@ static unsigned char* interface_variant_marshal(unsigned long *pFlags, unsigned ULONG size; HRESULT hr; - TRACE("pFlags=%ld, Buffer=%p, pvar=%p\n", *pFlags, Buffer, pvar); + TRACE("pFlags=%d, Buffer=%p, pvar=%p\n", *pFlags, Buffer, pvar); oldpos = Buffer; @@ -268,7 +348,7 @@ static unsigned char* interface_variant_marshal(unsigned long *pFlags, unsigned * but that would be overkill here, hence this implementation. We save the size because the unmarshal * code has no way to know how long the marshalled buffer is. */ - size = wire_extra(pFlags, pvar); + size = wire_extra_user_size(pFlags, 0, pvar); working_mem = GlobalAlloc(0, size); if (!working_mem) return oldpos; @@ -287,18 +367,18 @@ static unsigned char* interface_variant_marshal(unsigned long *pFlags, unsigned working_memlocked = GlobalLock(working_mem); memcpy(Buffer, &size, sizeof(ULONG)); /* copy the buffersize */ - Buffer += sizeof(ULONG); - memcpy(Buffer, working_memlocked, size); + memcpy(Buffer + sizeof(ULONG), working_memlocked, size - sizeof(ULONG)); GlobalUnlock(working_mem); IStream_Release(working); - TRACE("done, size=%ld\n", sizeof(ULONG) + size); - return Buffer + sizeof(ULONG) + size; + /* size includes the ULONG for the size written above */ + TRACE("done, size=%d\n", size); + return Buffer + size; } /* helper: called for VT_DISPATCH / VT_UNKNOWN variants to unmarshal the buffer. returns Buffer on failure, new position otherwise */ -static unsigned char *interface_variant_unmarshal(unsigned long *pFlags, unsigned char *Buffer, REFIID riid, VARIANT *pvar) +static unsigned char *interface_variant_unmarshal(ULONG *pFlags, unsigned char *Buffer, REFIID riid, VARIANT *pvar) { IStream *working; HGLOBAL working_mem; @@ -307,15 +387,14 @@ static unsigned char *interface_variant_unmarshal(unsigned long *pFlags, unsigne ULONG size; HRESULT hr; - TRACE("pFlags=%ld, Buffer=%p, pvar=%p\n", *pFlags, Buffer, pvar); + TRACE("pFlags=%d, Buffer=%p, pvar=%p\n", *pFlags, Buffer, pvar); oldpos = Buffer; /* get the buffersize */ memcpy(&size, Buffer, sizeof(ULONG)); - TRACE("buffersize=%ld\n", size); - Buffer += sizeof(ULONG); - + TRACE("buffersize=%d\n", size); + working_mem = GlobalAlloc(0, size); if (!working_mem) return oldpos; @@ -328,7 +407,7 @@ static unsigned char *interface_variant_unmarshal(unsigned long *pFlags, unsigne working_memlocked = GlobalLock(working_mem); /* now we copy the contents of the marshalling buffer to working_memlocked, unlock it, and demarshal the stream */ - memcpy(working_memlocked, Buffer, size); + memcpy(working_memlocked, Buffer + sizeof(ULONG), size); GlobalUnlock(working_mem); hr = CoUnmarshalInterface(working, riid, (void**)&V_UNKNOWN(pvar)); @@ -339,170 +418,225 @@ static unsigned char *interface_variant_unmarshal(unsigned long *pFlags, unsigne IStream_Release(working); /* this also frees the underlying hglobal */ - TRACE("done, processed=%ld bytes\n", sizeof(ULONG) + size); - return Buffer + sizeof(ULONG) + size; + /* size includes the ULONG for the size written above */ + TRACE("done, processed=%d bytes\n", size); + return Buffer + size; } -unsigned long WINAPI VARIANT_UserSize(unsigned long *pFlags, unsigned long Start, VARIANT *pvar) +ULONG WINAPI VARIANT_UserSize(ULONG *pFlags, ULONG Start, VARIANT *pvar) { - TRACE("(%lx,%ld,%p)\n", *pFlags, Start, pvar); - TRACE("vt=%04x\n", V_VT(pvar)); - Start += VARIANT_wiresize + wire_extra(pFlags, pvar); - TRACE("returning %ld\n", Start); - return Start; -} + int align; + TRACE("(%x,%d,%p)\n", *pFlags, Start, pvar); + TRACE("vt=%04x\n", V_VT(pvar)); -unsigned char * WINAPI VARIANT_UserMarshal(unsigned long *pFlags, unsigned char *Buffer, VARIANT *pvar) -{ - wireVARIANT var = (wireVARIANT)Buffer; - unsigned size, extra; - unsigned char *Pos = Buffer + VARIANT_wiresize; + ALIGN_LENGTH(Start, 7); + Start += sizeof(variant_wire_t); + if(V_VT(pvar) & VT_BYREF) + Start += 4; - TRACE("(%lx,%p,%p)\n", *pFlags, Buffer, pvar); - TRACE("vt=%04x\n", V_VT(pvar)); - - memset(var, 0, sizeof(*var)); - var->clSize = sizeof(*var); - var->vt = pvar->n1.n2.vt; - - var->rpcReserved = var->vt; - if ((var->vt & VT_ARRAY) || - ((var->vt & VT_TYPEMASK) == VT_SAFEARRAY)) - var->vt = VT_ARRAY | (var->vt & VT_BYREF); - - if (var->vt == VT_DECIMAL) { - /* special case because decVal is on a different level */ - var->u.decVal = pvar->n1.decVal; - return Pos; - } - - size = wire_size(V_VT(pvar)); - extra = wire_extra(pFlags, pvar); - var->wReserved1 = pvar->n1.n2.wReserved1; - var->wReserved2 = pvar->n1.n2.wReserved2; - var->wReserved3 = pvar->n1.n2.wReserved3; - if (size) { - if (var->vt & VT_BYREF) - memcpy(&var->u.cVal, pvar->n1.n2.n3.byref, size); + align = get_type_alignment(pFlags, pvar); + ALIGN_LENGTH(Start, align); + if(V_VT(pvar) == (VT_VARIANT | VT_BYREF)) + Start += 4; else - memcpy(&var->u.cVal, &pvar->n1.n2.n3, size); - } - if (!extra) return Pos; + Start += get_type_size(pFlags, pvar); + Start = wire_extra_user_size(pFlags, Start, pvar); - switch (var->vt) { - case VT_BSTR: - Pos = BSTR_UserMarshal(pFlags, Pos, &V_BSTR(pvar)); - break; - case VT_BSTR | VT_BYREF: - Pos = BSTR_UserMarshal(pFlags, Pos, V_BSTRREF(pvar)); - break; - case VT_VARIANT | VT_BYREF: - Pos = VARIANT_UserMarshal(pFlags, Pos, V_VARIANTREF(pvar)); - break; - case VT_DISPATCH | VT_BYREF: - FIXME("handle DISPATCH by ref\n"); - break; - case VT_UNKNOWN: - /* this should probably call WdtpInterfacePointer_UserMarshal in ole32.dll */ - Pos = interface_variant_marshal(pFlags, Pos, &IID_IUnknown, pvar); - break; - case VT_DISPATCH: - /* this should probably call WdtpInterfacePointer_UserMarshal in ole32.dll */ - Pos = interface_variant_marshal(pFlags, Pos, &IID_IDispatch, pvar); - break; - case VT_RECORD: - FIXME("handle BRECORD by val\n"); - break; - case VT_RECORD | VT_BYREF: - FIXME("handle BRECORD by ref\n"); - break; - default: - FIXME("handle unknown complex type\n"); - break; - } - var->clSize = Pos - Buffer; - TRACE("marshalled size=%ld\n", var->clSize); - return Pos; + TRACE("returning %d\n", Start); + return Start; } -unsigned char * WINAPI VARIANT_UserUnmarshal(unsigned long *pFlags, unsigned char *Buffer, VARIANT *pvar) +unsigned char * WINAPI VARIANT_UserMarshal(ULONG *pFlags, unsigned char *Buffer, VARIANT *pvar) { - wireVARIANT var = (wireVARIANT)Buffer; - unsigned size; - unsigned char *Pos = Buffer + VARIANT_wiresize; + variant_wire_t *header; + ULONG type_size; + int align; + unsigned char *Pos; - TRACE("(%lx,%p,%p)\n", *pFlags, Buffer, pvar); - VariantInit(pvar); - pvar->n1.n2.vt = var->rpcReserved; - TRACE("marshalled: clSize=%ld, vt=%04x\n", var->clSize, var->vt); - TRACE("vt=%04x\n", V_VT(pvar)); - TRACE("reserved: %d, %d, %d\n", var->wReserved1, var->wReserved2, var->wReserved3); - TRACE("val: %ld\n", var->u.lVal); + TRACE("(%x,%p,%p)\n", *pFlags, Buffer, pvar); + TRACE("vt=%04x\n", V_VT(pvar)); - if (var->vt == VT_DECIMAL) { - /* special case because decVal is on a different level */ - pvar->n1.decVal = var->u.decVal; - return Pos; - } + ALIGN_POINTER(Buffer, 7); - size = wire_size(V_VT(pvar)); - pvar->n1.n2.wReserved1 = var->wReserved1; - pvar->n1.n2.wReserved2 = var->wReserved2; - pvar->n1.n2.wReserved3 = var->wReserved3; - if (size) { - if (var->vt & VT_BYREF) { - pvar->n1.n2.n3.byref = CoTaskMemAlloc(size); - memcpy(pvar->n1.n2.n3.byref, &var->u.cVal, size); + header = (variant_wire_t *)Buffer; + + header->clSize = 0; /* fixed up at the end */ + header->rpcReserverd = 0; + header->vt = pvar->n1.n2.vt; + header->wReserved1 = pvar->n1.n2.wReserved1; + header->wReserved2 = pvar->n1.n2.wReserved2; + header->wReserved3 = pvar->n1.n2.wReserved3; + header->switch_is = pvar->n1.n2.vt; + if(header->switch_is & VT_ARRAY) + header->switch_is &= ~VT_TYPEMASK; + + Pos = (unsigned char*)(header + 1); + type_size = get_type_size(pFlags, pvar); + align = get_type_alignment(pFlags, pvar); + ALIGN_POINTER(Pos, align); + + if(header->vt & VT_BYREF) + { + *(DWORD *)Pos = max(type_size, 4); + Pos += 4; + if((header->vt & VT_TYPEMASK) != VT_VARIANT) + { + memcpy(Pos, pvar->n1.n2.n3.byref, type_size); + Pos += type_size; + } + else + { + *(DWORD*)Pos = 'U' | 's' << 8 | 'e' << 16 | 'r' << 24; + Pos += 4; + } + } + else + { + if((header->vt & VT_TYPEMASK) == VT_DECIMAL) + memcpy(Pos, pvar, type_size); + else + memcpy(Pos, &pvar->n1.n2.n3, type_size); + Pos += type_size; + } + + if(header->vt & VT_ARRAY) + { + if(header->vt & VT_BYREF) + Pos = LPSAFEARRAY_UserMarshal(pFlags, Pos, V_ARRAYREF(pvar)); + else + Pos = LPSAFEARRAY_UserMarshal(pFlags, Pos, &V_ARRAY(pvar)); } else - memcpy(&pvar->n1.n2.n3, &var->u.cVal, size); - } - if (var->clSize <= VARIANT_wiresize) return Pos; - - switch (var->vt) { - case VT_BSTR: - Pos = BSTR_UserUnmarshal(pFlags, Pos, &V_BSTR(pvar)); - break; - case VT_BSTR | VT_BYREF: - pvar->n1.n2.n3.byref = CoTaskMemAlloc(sizeof(BSTR)); - *(BSTR*)pvar->n1.n2.n3.byref = NULL; - Pos = BSTR_UserUnmarshal(pFlags, Pos, V_BSTRREF(pvar)); - break; - case VT_VARIANT | VT_BYREF: - pvar->n1.n2.n3.byref = CoTaskMemAlloc(sizeof(VARIANT)); - Pos = VARIANT_UserUnmarshal(pFlags, Pos, V_VARIANTREF(pvar)); - break; - case VT_RECORD: - FIXME("handle BRECORD by val\n"); - break; - case VT_RECORD | VT_BYREF: - FIXME("handle BRECORD by ref\n"); - break; - case VT_UNKNOWN: - Pos = interface_variant_unmarshal(pFlags, Pos, &IID_IUnknown, pvar); - break; - case VT_DISPATCH: - Pos = interface_variant_unmarshal(pFlags, Pos, &IID_IDispatch, pvar); - break; - case VT_DISPATCH | VT_BYREF: - FIXME("handle DISPATCH by ref\n"); - default: - FIXME("handle unknown complex type\n"); - break; - } - if (Pos != Buffer + var->clSize) { - ERR("size difference during unmarshal\n"); - } - return Buffer + var->clSize; + { + switch (header->vt) + { + case VT_BSTR: + Pos = BSTR_UserMarshal(pFlags, Pos, &V_BSTR(pvar)); + break; + case VT_BSTR | VT_BYREF: + Pos = BSTR_UserMarshal(pFlags, Pos, V_BSTRREF(pvar)); + break; + case VT_VARIANT | VT_BYREF: + Pos = VARIANT_UserMarshal(pFlags, Pos, V_VARIANTREF(pvar)); + break; + case VT_DISPATCH | VT_BYREF: + FIXME("handle DISPATCH by ref\n"); + break; + case VT_UNKNOWN: + /* this should probably call WdtpInterfacePointer_UserMarshal in ole32.dll */ + Pos = interface_variant_marshal(pFlags, Pos, &IID_IUnknown, pvar); + break; + case VT_DISPATCH: + /* this should probably call WdtpInterfacePointer_UserMarshal in ole32.dll */ + Pos = interface_variant_marshal(pFlags, Pos, &IID_IDispatch, pvar); + break; + case VT_RECORD: + FIXME("handle BRECORD by val\n"); + break; + case VT_RECORD | VT_BYREF: + FIXME("handle BRECORD by ref\n"); + break; + } + } + header->clSize = ((Pos - Buffer) + 7) >> 3; + TRACE("marshalled size=%d\n", header->clSize); + return Pos; } -void WINAPI VARIANT_UserFree(unsigned long *pFlags, VARIANT *pvar) +unsigned char * WINAPI VARIANT_UserUnmarshal(ULONG *pFlags, unsigned char *Buffer, VARIANT *pvar) +{ + variant_wire_t *header; + ULONG type_size; + int align; + unsigned char *Pos; + + TRACE("(%x,%p,%p)\n", *pFlags, Buffer, pvar); + + ALIGN_POINTER(Buffer, 7); + VariantClear(pvar); + + header = (variant_wire_t *)Buffer; + + pvar->n1.n2.vt = header->vt; + pvar->n1.n2.wReserved1 = header->wReserved1; + pvar->n1.n2.wReserved2 = header->wReserved2; + pvar->n1.n2.wReserved3 = header->wReserved3; + + Pos = (unsigned char*)(header + 1); + type_size = get_type_size(pFlags, pvar); + align = get_type_alignment(pFlags, pvar); + ALIGN_POINTER(Pos, align); + + if(header->vt & VT_BYREF) + { + Pos += 4; + pvar->n1.n2.n3.byref = CoTaskMemAlloc(type_size); + memcpy(pvar->n1.n2.n3.byref, Pos, type_size); + if((header->vt & VT_TYPEMASK) != VT_VARIANT) + Pos += type_size; + else + Pos += 4; + } + else + { + if((header->vt & VT_TYPEMASK) == VT_DECIMAL) + memcpy(pvar, Pos, type_size); + else + memcpy(&pvar->n1.n2.n3, Pos, type_size); + Pos += type_size; + } + + if(header->vt & VT_ARRAY) + { + if(header->vt & VT_BYREF) + Pos = LPSAFEARRAY_UserUnmarshal(pFlags, Pos, V_ARRAYREF(pvar)); + else + Pos = LPSAFEARRAY_UserUnmarshal(pFlags, Pos, &V_ARRAY(pvar)); + } + else + { + switch (header->vt) + { + case VT_BSTR: + V_BSTR(pvar) = NULL; + Pos = BSTR_UserUnmarshal(pFlags, Pos, &V_BSTR(pvar)); + break; + case VT_BSTR | VT_BYREF: + *V_BSTRREF(pvar) = NULL; + Pos = BSTR_UserUnmarshal(pFlags, Pos, V_BSTRREF(pvar)); + break; + case VT_VARIANT | VT_BYREF: + Pos = VARIANT_UserUnmarshal(pFlags, Pos, V_VARIANTREF(pvar)); + break; + case VT_DISPATCH | VT_BYREF: + FIXME("handle DISPATCH by ref\n"); + break; + case VT_UNKNOWN: + /* this should probably call WdtpInterfacePointer_UserUnmarshal in ole32.dll */ + Pos = interface_variant_unmarshal(pFlags, Pos, &IID_IUnknown, pvar); + break; + case VT_DISPATCH: + /* this should probably call WdtpInterfacePointer_UserUnmarshal in ole32.dll */ + Pos = interface_variant_unmarshal(pFlags, Pos, &IID_IDispatch, pvar); + break; + case VT_RECORD: + FIXME("handle BRECORD by val\n"); + break; + case VT_RECORD | VT_BYREF: + FIXME("handle BRECORD by ref\n"); + break; + } + } + return Pos; +} + +void WINAPI VARIANT_UserFree(ULONG *pFlags, VARIANT *pvar) { VARTYPE vt = V_VT(pvar); PVOID ref = NULL; - TRACE("(%lx,%p)\n", *pFlags, pvar); + TRACE("(%x,%p)\n", *pFlags, pvar); TRACE("vt=%04x\n", V_VT(pvar)); if (vt & VT_BYREF) ref = pvar->n1.n2.n3.byref; @@ -510,23 +644,26 @@ void WINAPI VARIANT_UserFree(unsigned long *pFlags, VARIANT *pvar) VariantClear(pvar); if (!ref) return; - switch (vt) { - case VT_BSTR | VT_BYREF: - BSTR_UserFree(pFlags, ref); - break; - case VT_VARIANT | VT_BYREF: - VARIANT_UserFree(pFlags, ref); - break; - case VT_RECORD | VT_BYREF: - FIXME("handle BRECORD by ref\n"); - break; - case VT_UNKNOWN: - case VT_DISPATCH: - IUnknown_Release(V_UNKNOWN(pvar)); - break; - default: - FIXME("handle unknown complex type\n"); - break; + if(vt & VT_ARRAY) + LPSAFEARRAY_UserFree(pFlags, V_ARRAYREF(pvar)); + else + { + switch (vt) + { + case VT_BSTR | VT_BYREF: + BSTR_UserFree(pFlags, V_BSTRREF(pvar)); + break; + case VT_VARIANT | VT_BYREF: + VARIANT_UserFree(pFlags, V_VARIANTREF(pvar)); + break; + case VT_RECORD | VT_BYREF: + FIXME("handle BRECORD by ref\n"); + break; + case VT_UNKNOWN | VT_BYREF: + case VT_DISPATCH | VT_BYREF: + IUnknown_Release(*V_UNKNOWNREF(pvar)); + break; + } } CoTaskMemFree(ref); @@ -559,7 +696,17 @@ static inline SF_TYPE SAFEARRAY_GetUnionType(SAFEARRAY *psa) hr = SafeArrayGetVartype(psa, &vt); if (FAILED(hr)) - RpcRaiseException(hr); + { + switch(psa->cbElements) + { + case 1: vt = VT_I1; break; + case 2: vt = VT_I2; break; + case 4: vt = VT_I4; break; + case 8: vt = VT_I8; break; + default: + RpcRaiseException(hr); + } + } if (psa->fFeatures & FADF_HAVEIID) return SF_HAVEIID; @@ -595,12 +742,13 @@ static inline SF_TYPE SAFEARRAY_GetUnionType(SAFEARRAY *psa) } } -unsigned long WINAPI LPSAFEARRAY_UserSize(unsigned long *pFlags, unsigned long StartingSize, LPSAFEARRAY *ppsa) +ULONG WINAPI LPSAFEARRAY_UserSize(ULONG *pFlags, ULONG StartingSize, LPSAFEARRAY *ppsa) { - unsigned long size = StartingSize; + ULONG size = StartingSize; - TRACE("("); dump_user_flags(pFlags); TRACE(", %ld, %p\n", StartingSize, *ppsa); + TRACE("("); dump_user_flags(pFlags); TRACE(", %d, %p\n", StartingSize, *ppsa); + ALIGN_LENGTH(size, 3); size += sizeof(ULONG_PTR); if (*ppsa) { @@ -665,10 +813,12 @@ unsigned long WINAPI LPSAFEARRAY_UserSize(unsigned long *pFlags, unsigned long S } break; } + case SF_I8: + ALIGN_LENGTH(size, 7); + /* fallthrough */ case SF_I1: case SF_I2: case SF_I4: - case SF_I8: size += ulCellCount * psa->cbElements; break; default: @@ -680,12 +830,13 @@ unsigned long WINAPI LPSAFEARRAY_UserSize(unsigned long *pFlags, unsigned long S return size; } -unsigned char * WINAPI LPSAFEARRAY_UserMarshal(unsigned long *pFlags, unsigned char *Buffer, LPSAFEARRAY *ppsa) +unsigned char * WINAPI LPSAFEARRAY_UserMarshal(ULONG *pFlags, unsigned char *Buffer, LPSAFEARRAY *ppsa) { HRESULT hr; TRACE("("); dump_user_flags(pFlags); TRACE(", %p, &%p\n", Buffer, *ppsa); + ALIGN_POINTER(Buffer, 3); *(ULONG_PTR *)Buffer = *ppsa ? TRUE : FALSE; Buffer += sizeof(ULONG_PTR); if (*ppsa) @@ -705,8 +856,8 @@ unsigned char * WINAPI LPSAFEARRAY_UserMarshal(unsigned long *pFlags, unsigned c wiresa->cbElements = psa->cbElements; hr = SafeArrayGetVartype(psa, &vt); - if (FAILED(hr)) - RpcRaiseException(hr); + if (FAILED(hr)) vt = 0; + wiresa->cLocks = (USHORT)psa->cLocks | (vt << 16); Buffer += FIELD_OFFSET(struct _wireSAFEARRAY, uArrayStructs); @@ -775,10 +926,13 @@ unsigned char * WINAPI LPSAFEARRAY_UserMarshal(unsigned long *pFlags, unsigned c } break; } + + case SF_I8: + ALIGN_POINTER(Buffer, 7); + /* fallthrough */ case SF_I1: case SF_I2: case SF_I4: - case SF_I8: /* Just copy the data over */ memcpy(Buffer, psa->pvData, ulCellCount * psa->cbElements); Buffer += ulCellCount * psa->cbElements; @@ -796,7 +950,7 @@ unsigned char * WINAPI LPSAFEARRAY_UserMarshal(unsigned long *pFlags, unsigned c FADF_BSTR | FADF_UNKNOWN | FADF_DISPATCH | \ FADF_VARIANT | FADF_CREATEVECTOR) -unsigned char * WINAPI LPSAFEARRAY_UserUnmarshal(unsigned long *pFlags, unsigned char *Buffer, LPSAFEARRAY *ppsa) +unsigned char * WINAPI LPSAFEARRAY_UserUnmarshal(ULONG *pFlags, unsigned char *Buffer, LPSAFEARRAY *ppsa) { ULONG_PTR ptr; wireSAFEARRAY wiresa; @@ -810,6 +964,7 @@ unsigned char * WINAPI LPSAFEARRAY_UserUnmarshal(unsigned long *pFlags, unsigned TRACE("("); dump_user_flags(pFlags); TRACE(", %p, %p\n", Buffer, ppsa); + ALIGN_POINTER(Buffer, 3); ptr = *(ULONG_PTR *)Buffer; Buffer += sizeof(ULONG_PTR); @@ -851,13 +1006,21 @@ unsigned char * WINAPI LPSAFEARRAY_UserUnmarshal(unsigned long *pFlags, unsigned wiresab = (SAFEARRAYBOUND *)Buffer; Buffer += sizeof(wiresab[0]) * wiresa->cDims; - *ppsa = SafeArrayCreateEx(vt, wiresa->cDims, wiresab, NULL); - if (!ppsa) + if(vt) + *ppsa = SafeArrayCreateEx(vt, wiresa->cDims, wiresab, NULL); + else + { + SafeArrayAllocDescriptor(wiresa->cDims, ppsa); + if(*ppsa) + memcpy((*ppsa)->rgsabound, wiresab, sizeof(SAFEARRAYBOUND) * wiresa->cDims); + } + if (!*ppsa) RpcRaiseException(E_OUTOFMEMORY); /* be careful about which flags we set since they could be a security * risk */ - (*ppsa)->fFeatures = wiresa->fFeatures & ~(FADF_AUTOSETFLAGS); + (*ppsa)->fFeatures &= FADF_AUTOSETFLAGS; + (*ppsa)->fFeatures |= (wiresa->fFeatures & ~(FADF_AUTOSETFLAGS)); /* FIXME: there should be a limit on how large wiresa->cbElements can be */ (*ppsa)->cbElements = wiresa->cbElements; (*ppsa)->cLocks = LOWORD(wiresa->cLocks); @@ -903,10 +1066,13 @@ unsigned char * WINAPI LPSAFEARRAY_UserUnmarshal(unsigned long *pFlags, unsigned break; } + + case SF_I8: + ALIGN_POINTER(Buffer, 7); + /* fallthrough */ case SF_I1: case SF_I2: case SF_I4: - case SF_I8: /* Just copy the data over */ memcpy((*ppsa)->pvData, Buffer, cell_count * (*ppsa)->cbElements); Buffer += cell_count * (*ppsa)->cbElements; @@ -921,7 +1087,7 @@ unsigned char * WINAPI LPSAFEARRAY_UserUnmarshal(unsigned long *pFlags, unsigned return Buffer; } -void WINAPI LPSAFEARRAY_UserFree(unsigned long *pFlags, LPSAFEARRAY *ppsa) +void WINAPI LPSAFEARRAY_UserFree(ULONG *pFlags, LPSAFEARRAY *ppsa) { TRACE("("); dump_user_flags(pFlags); TRACE(", &%p\n", *ppsa); @@ -951,7 +1117,7 @@ HRESULT CALLBACK IDispatch_Invoke_Proxy( UINT uArgErr; EXCEPINFO ExcepInfo; - TRACE("(%p)->(%ld,%s,%lx,%x,%p,%p,%p,%p)\n", This, + TRACE("(%p)->(%d,%s,%x,%x,%p,%p,%p,%p)\n", This, dispIdMember, debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); @@ -1128,6 +1294,48 @@ HRESULT __RPC_STUB IEnumVARIANT_Next_Stub( return hr; } +/* TypeInfo related freers */ + +static void free_embedded_typedesc(TYPEDESC *tdesc); +static void free_embedded_arraydesc(ARRAYDESC *adesc) +{ + switch(adesc->tdescElem.vt) + { + case VT_PTR: + case VT_SAFEARRAY: + free_embedded_typedesc(adesc->tdescElem.u.lptdesc); + CoTaskMemFree(adesc->tdescElem.u.lptdesc); + break; + case VT_CARRAY: + free_embedded_arraydesc(adesc->tdescElem.u.lpadesc); + CoTaskMemFree(adesc->tdescElem.u.lpadesc); + break; + } +} + +static void free_embedded_typedesc(TYPEDESC *tdesc) +{ + switch(tdesc->vt) + { + case VT_PTR: + case VT_SAFEARRAY: + free_embedded_typedesc(tdesc->u.lptdesc); + CoTaskMemFree(tdesc->u.lptdesc); + break; + case VT_CARRAY: + free_embedded_arraydesc(tdesc->u.lpadesc); + CoTaskMemFree(tdesc->u.lpadesc); + break; + } +} + +static void free_embedded_elemdesc(ELEMDESC *edesc) +{ + free_embedded_typedesc(&edesc->tdesc); + if(edesc->u.paramdesc.wParamFlags & PARAMFLAG_FHASDEFAULT) + CoTaskMemFree(edesc->u.paramdesc.pparamdescex); +} + /* ITypeComp */ HRESULT CALLBACK ITypeComp_Bind_Proxy( @@ -1185,9 +1393,16 @@ HRESULT __RPC_STUB ITypeComp_BindType_Stub( HRESULT CALLBACK ITypeInfo_GetTypeAttr_Proxy( ITypeInfo* This, TYPEATTR** ppTypeAttr) + { - FIXME("not implemented\n"); - return E_FAIL; + CLEANLOCALSTORAGE stg; + TRACE("(%p, %p)\n", This, ppTypeAttr); + + stg.flags = 0; + stg.pStorage = NULL; + stg.pInterface = NULL; + + return ITypeInfo_RemoteGetTypeAttr_Proxy(This, ppTypeAttr, &stg); } HRESULT __RPC_STUB ITypeInfo_GetTypeAttr_Stub( @@ -1195,8 +1410,18 @@ HRESULT __RPC_STUB ITypeInfo_GetTypeAttr_Stub( LPTYPEATTR* ppTypeAttr, CLEANLOCALSTORAGE* pDummy) { - FIXME("not implemented\n"); - return E_FAIL; + HRESULT hr; + TRACE("(%p, %p)\n", This, ppTypeAttr); + + hr = ITypeInfo_GetTypeAttr(This, ppTypeAttr); + if(hr != S_OK) + return hr; + + pDummy->flags = CLS_TYPEATTR; + ITypeInfo_AddRef(This); + pDummy->pInterface = (IUnknown*)This; + pDummy->pStorage = ppTypeAttr; + return hr; } HRESULT CALLBACK ITypeInfo_GetFuncDesc_Proxy( @@ -1204,8 +1429,14 @@ HRESULT CALLBACK ITypeInfo_GetFuncDesc_Proxy( UINT index, FUNCDESC** ppFuncDesc) { - FIXME("not implemented\n"); - return E_FAIL; + CLEANLOCALSTORAGE stg; + TRACE("(%p, %d, %p)\n", This, index, ppFuncDesc); + + stg.flags = 0; + stg.pStorage = NULL; + stg.pInterface = NULL; + + return ITypeInfo_RemoteGetFuncDesc_Proxy(This, index, ppFuncDesc, &stg); } HRESULT __RPC_STUB ITypeInfo_GetFuncDesc_Stub( @@ -1214,8 +1445,18 @@ HRESULT __RPC_STUB ITypeInfo_GetFuncDesc_Stub( LPFUNCDESC* ppFuncDesc, CLEANLOCALSTORAGE* pDummy) { - FIXME("not implemented\n"); - return E_FAIL; + HRESULT hr; + TRACE("(%p, %d, %p)\n", This, index, ppFuncDesc); + + hr = ITypeInfo_GetFuncDesc(This, index, ppFuncDesc); + if(hr != S_OK) + return hr; + + pDummy->flags = CLS_FUNCDESC; + ITypeInfo_AddRef(This); + pDummy->pInterface = (IUnknown*)This; + pDummy->pStorage = ppFuncDesc; + return hr; } HRESULT CALLBACK ITypeInfo_GetVarDesc_Proxy( @@ -1223,8 +1464,14 @@ HRESULT CALLBACK ITypeInfo_GetVarDesc_Proxy( UINT index, VARDESC** ppVarDesc) { - FIXME("not implemented\n"); - return E_FAIL; + CLEANLOCALSTORAGE stg; + TRACE("(%p, %d, %p)\n", This, index, ppVarDesc); + + stg.flags = 0; + stg.pStorage = NULL; + stg.pInterface = NULL; + + return ITypeInfo_RemoteGetVarDesc_Proxy(This, index, ppVarDesc, &stg); } HRESULT __RPC_STUB ITypeInfo_GetVarDesc_Stub( @@ -1233,8 +1480,18 @@ HRESULT __RPC_STUB ITypeInfo_GetVarDesc_Stub( LPVARDESC* ppVarDesc, CLEANLOCALSTORAGE* pDummy) { - FIXME("not implemented\n"); - return E_FAIL; + HRESULT hr; + TRACE("(%p, %d, %p)\n", This, index, ppVarDesc); + + hr = ITypeInfo_GetVarDesc(This, index, ppVarDesc); + if(hr != S_OK) + return hr; + + pDummy->flags = CLS_VARDESC; + ITypeInfo_AddRef(This); + pDummy->pInterface = (IUnknown*)This; + pDummy->pStorage = ppVarDesc; + return hr; } HRESULT CALLBACK ITypeInfo_GetNames_Proxy( @@ -1305,8 +1562,27 @@ HRESULT CALLBACK ITypeInfo_GetDocumentation_Proxy( DWORD* pdwHelpContext, BSTR* pBstrHelpFile) { - FIXME("not implemented\n"); - return E_FAIL; + DWORD help_context; + BSTR name, doc_string, help_file; + HRESULT hr; + TRACE("(%p, %08x, %p, %p, %p, %p)\n", This, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile); + + /* FIXME: presumably refPtrFlags is supposed to be a bitmask of which ptrs we actually want? */ + hr = ITypeInfo_RemoteGetDocumentation_Proxy(This, memid, 0, &name, &doc_string, &help_context, &help_file); + if(SUCCEEDED(hr)) + { + if(pBstrName) *pBstrName = name; + else SysFreeString(name); + + if(pBstrDocString) *pBstrDocString = doc_string; + else SysFreeString(doc_string); + + if(pBstrHelpFile) *pBstrHelpFile = help_file; + else SysFreeString(help_file); + + if(pdwHelpContext) *pdwHelpContext = help_context; + } + return hr; } HRESULT __RPC_STUB ITypeInfo_GetDocumentation_Stub( @@ -1318,8 +1594,9 @@ HRESULT __RPC_STUB ITypeInfo_GetDocumentation_Stub( DWORD* pdwHelpContext, BSTR* pBstrHelpFile) { - FIXME("not implemented\n"); - return E_FAIL; + TRACE("(%p, %08x, %08x, %p, %p, %p, %p)\n", This, memid, refPtrFlags, pBstrName, pBstrDocString, + pdwHelpContext, pBstrHelpFile); + return ITypeInfo_GetDocumentation(This, memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile); } HRESULT CALLBACK ITypeInfo_GetDllEntry_Proxy( @@ -1421,42 +1698,65 @@ void CALLBACK ITypeInfo_ReleaseTypeAttr_Proxy( ITypeInfo* This, TYPEATTR* pTypeAttr) { - FIXME("not implemented\n"); + TRACE("(%p, %p)\n", This, pTypeAttr); + free_embedded_typedesc(&pTypeAttr->tdescAlias); + CoTaskMemFree(pTypeAttr); } HRESULT __RPC_STUB ITypeInfo_ReleaseTypeAttr_Stub( ITypeInfo* This) { - FIXME("not implemented\n"); - return E_FAIL; + TRACE("nothing to do\n"); + return S_OK; } void CALLBACK ITypeInfo_ReleaseFuncDesc_Proxy( ITypeInfo* This, FUNCDESC* pFuncDesc) { - FIXME("not implemented\n"); + SHORT param; + TRACE("(%p, %p)\n", This, pFuncDesc); + + for(param = 0; param < pFuncDesc->cParams; param++) + free_embedded_elemdesc(pFuncDesc->lprgelemdescParam + param); + if(param) + CoTaskMemFree(pFuncDesc->lprgelemdescParam); + + free_embedded_elemdesc(&pFuncDesc->elemdescFunc); + + if(pFuncDesc->cScodes != 0 && pFuncDesc->cScodes != -1) + CoTaskMemFree(pFuncDesc->lprgscode); + + CoTaskMemFree(pFuncDesc); } HRESULT __RPC_STUB ITypeInfo_ReleaseFuncDesc_Stub( ITypeInfo* This) { - FIXME("not implemented\n"); - return E_FAIL; + TRACE("nothing to do\n"); + return S_OK; } void CALLBACK ITypeInfo_ReleaseVarDesc_Proxy( ITypeInfo* This, VARDESC* pVarDesc) { - FIXME("not implemented\n"); + TRACE("(%p, %p)\n", This, pVarDesc); + + CoTaskMemFree(pVarDesc->lpstrSchema); + + if(pVarDesc->varkind == VAR_CONST) + CoTaskMemFree(pVarDesc->u.lpvarValue); + + free_embedded_elemdesc(&pVarDesc->elemdescVar); + CoTaskMemFree(pVarDesc); } HRESULT __RPC_STUB ITypeInfo_ReleaseVarDesc_Stub( ITypeInfo* This) { - FIXME("not implemented\n"); - return E_FAIL; + TRACE("nothing to do\n"); + return S_OK; } @@ -1515,6 +1815,11 @@ HRESULT CALLBACK ITypeLib_GetLibAttr_Proxy( { CLEANLOCALSTORAGE stg; TRACE("(%p, %p)\n", This, ppTLibAttr); + + stg.flags = 0; + stg.pStorage = NULL; + stg.pInterface = NULL; + return ITypeLib_RemoteGetLibAttr_Proxy(This, ppTLibAttr, &stg); } @@ -1523,8 +1828,18 @@ HRESULT __RPC_STUB ITypeLib_GetLibAttr_Stub( LPTLIBATTR* ppTLibAttr, CLEANLOCALSTORAGE* pDummy) { + HRESULT hr; TRACE("(%p, %p)\n", This, ppTLibAttr); - return ITypeLib_GetLibAttr(This, ppTLibAttr); + + hr = ITypeLib_GetLibAttr(This, ppTLibAttr); + if(hr != S_OK) + return hr; + + pDummy->flags = CLS_LIBATTR; + ITypeLib_AddRef(This); + pDummy->pInterface = (IUnknown*)This; + pDummy->pStorage = ppTLibAttr; + return hr; } HRESULT CALLBACK ITypeLib_GetDocumentation_Proxy( diff --git a/reactos/dll/win32/oleaut32/varformat.c b/reactos/dll/win32/oleaut32/varformat.c index f0d3b09ba17..5faecd24ece 100644 --- a/reactos/dll/win32/oleaut32/varformat.c +++ b/reactos/dll/win32/oleaut32/varformat.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES * Since the formatting functions aren't properly documented, I used the @@ -50,7 +50,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(variant); static const WCHAR szPercent_d[] = { '%','d','\0' }; static const WCHAR szPercentZeroTwo_d[] = { '%','0','2','d','\0' }; -static const WCHAR szPercentZeroFour_d[] = { '%','0','4','d','\0' }; static const WCHAR szPercentZeroStar_d[] = { '%','0','*','d','\0' }; #if 0 @@ -530,7 +529,7 @@ HRESULT WINAPI VarTokenizeFormatString(LPOLESTR lpszFormat, LPBYTE rgbTok, DWORD fmt_state = 0; LPCWSTR pFormat = lpszFormat; - TRACE("(%s,%p,%d,%d,%d,0x%08lx,%p)\n", debugstr_w(lpszFormat), rgbTok, cbTok, + TRACE("(%s,%p,%d,%d,%d,0x%08x,%p)\n", debugstr_w(lpszFormat), rgbTok, cbTok, nFirstDay, nFirstWeek, lcid, pcbActual); if (!rgbTok || @@ -1201,7 +1200,7 @@ static HRESULT VARIANT_FormatNumber(LPVARIANT pVarIn, LPOLESTR lpszFormat, const BYTE* pToken = NULL; HRESULT hRes = S_OK; - TRACE("(%p->(%s%s),%s,%p,0x%08lx,%p,0x%08lx)\n", pVarIn, debugstr_VT(pVarIn), + TRACE("(%p->(%s%s),%s,%p,0x%08x,%p,0x%08x)\n", pVarIn, debugstr_VT(pVarIn), debugstr_VF(pVarIn), debugstr_w(lpszFormat), rgbTok, dwFlags, pbstrOut, lcid); @@ -1535,7 +1534,7 @@ static HRESULT VARIANT_FormatDate(LPVARIANT pVarIn, LPOLESTR lpszFormat, const BYTE* pToken = NULL; HRESULT hRes; - TRACE("(%p->(%s%s),%s,%p,0x%08lx,%p,0x%08lx)\n", pVarIn, debugstr_VT(pVarIn), + TRACE("(%p->(%s%s),%s,%p,0x%08x,%p,0x%08x)\n", pVarIn, debugstr_VT(pVarIn), debugstr_VF(pVarIn), debugstr_w(lpszFormat), rgbTok, dwFlags, pbstrOut, lcid); @@ -1858,7 +1857,7 @@ static HRESULT VARIANT_FormatString(LPVARIANT pVarIn, LPOLESTR lpszFormat, LPBYTE rgbTok, ULONG dwFlags, BSTR *pbstrOut, LCID lcid) { - static const WCHAR szEmpty[] = { '\0' }; + static WCHAR szEmpty[] = { '\0' }; WCHAR buff[256], *pBuff = buff; WCHAR *pSrc; FMT_HEADER *header = (FMT_HEADER*)rgbTok; @@ -1869,7 +1868,7 @@ static HRESULT VARIANT_FormatString(LPVARIANT pVarIn, LPOLESTR lpszFormat, BOOL bUpper = FALSE; HRESULT hRes = S_OK; - TRACE("(%p->(%s%s),%s,%p,0x%08lx,%p,0x%08lx)\n", pVarIn, debugstr_VT(pVarIn), + TRACE("(%p->(%s%s),%s,%p,0x%08x,%p,0x%08x)\n", pVarIn, debugstr_VT(pVarIn), debugstr_VF(pVarIn), debugstr_w(lpszFormat), rgbTok, dwFlags, pbstrOut, lcid); @@ -1878,7 +1877,7 @@ static HRESULT VARIANT_FormatString(LPVARIANT pVarIn, LPOLESTR lpszFormat, if (V_TYPE(pVarIn) == VT_EMPTY || V_TYPE(pVarIn) == VT_NULL) { strHeader = (FMT_STRING_HEADER*)(rgbTok + FmtGetNegative(header)); - V_BSTR(&vStr) = (WCHAR*)szEmpty; + V_BSTR(&vStr) = szEmpty; } else { @@ -1996,7 +1995,7 @@ HRESULT WINAPI VarFormatFromTokens(LPVARIANT pVarIn, LPOLESTR lpszFormat, VARIANT vTmp; HRESULT hres; - TRACE("(%p,%s,%p,%lx,%p,0x%08lx)\n", pVarIn, debugstr_w(lpszFormat), + TRACE("(%p,%s,%p,%x,%p,0x%08x)\n", pVarIn, debugstr_w(lpszFormat), rgbTok, dwFlags, pbstrOut, lcid); if (!pbstrOut) @@ -2083,7 +2082,7 @@ HRESULT WINAPI VarFormat(LPVARIANT pVarIn, LPOLESTR lpszFormat, BYTE buff[256]; HRESULT hres; - TRACE("(%p->(%s%s),%s,%d,%d,0x%08lx,%p)\n", pVarIn, debugstr_VT(pVarIn), + TRACE("(%p->(%s%s),%s,%d,%d,0x%08x,%p)\n", pVarIn, debugstr_VT(pVarIn), debugstr_VF(pVarIn), debugstr_w(lpszFormat), nFirstDay, nFirstWeek, dwFlags, pbstrOut); @@ -2096,7 +2095,7 @@ HRESULT WINAPI VarFormat(LPVARIANT pVarIn, LPOLESTR lpszFormat, if (SUCCEEDED(hres)) hres = VarFormatFromTokens(pVarIn, lpszFormat, buff, dwFlags, pbstrOut, LOCALE_USER_DEFAULT); - TRACE("returning 0x%08lx, %s\n", hres, debugstr_w(*pbstrOut)); + TRACE("returning 0x%08x, %s\n", hres, debugstr_w(*pbstrOut)); return hres; } @@ -2131,10 +2130,10 @@ HRESULT WINAPI VarFormat(LPVARIANT pVarIn, LPOLESTR lpszFormat, */ HRESULT WINAPI VarFormatDateTime(LPVARIANT pVarIn, INT nFormat, ULONG dwFlags, BSTR *pbstrOut) { - static const WCHAR szEmpty[] = { '\0' }; + static WCHAR szEmpty[] = { '\0' }; const BYTE* lpFmt = NULL; - TRACE("(%p->(%s%s),%d,0x%08lx,%p)\n", pVarIn, debugstr_VT(pVarIn), + TRACE("(%p->(%s%s),%d,0x%08x,%p)\n", pVarIn, debugstr_VT(pVarIn), debugstr_VF(pVarIn), nFormat, dwFlags, pbstrOut); if (!pVarIn || !pbstrOut || nFormat < 0 || nFormat > 4) @@ -2148,7 +2147,7 @@ HRESULT WINAPI VarFormatDateTime(LPVARIANT pVarIn, INT nFormat, ULONG dwFlags, B case 3: lpFmt = fmtLongTime; break; case 4: lpFmt = fmtShortTime; break; } - return VarFormatFromTokens(pVarIn, (LPWSTR)szEmpty, (BYTE*)lpFmt, dwFlags, + return VarFormatFromTokens(pVarIn, szEmpty, (BYTE*)lpFmt, dwFlags, pbstrOut, LOCALE_USER_DEFAULT); } @@ -2187,7 +2186,7 @@ HRESULT WINAPI VarFormatNumber(LPVARIANT pVarIn, INT nDigits, INT nLeading, INT HRESULT hRet; VARIANT vStr; - TRACE("(%p->(%s%s),%d,%d,%d,%d,0x%08lx,%p)\n", pVarIn, debugstr_VT(pVarIn), + TRACE("(%p->(%s%s),%d,%d,%d,%d,0x%08x,%p)\n", pVarIn, debugstr_VT(pVarIn), debugstr_VF(pVarIn), nDigits, nLeading, nParens, nGrouping, dwFlags, pbstrOut); if (!pVarIn || !pbstrOut || nDigits > 9) @@ -2199,7 +2198,7 @@ HRESULT WINAPI VarFormatNumber(LPVARIANT pVarIn, INT nDigits, INT nLeading, INT hRet = VariantCopyInd(&vStr, pVarIn); if (SUCCEEDED(hRet)) - hRet = VariantChangeTypeEx(&vStr, &vStr, LOCALE_USER_DEFAULT, 0, VT_BSTR); + hRet = VariantChangeTypeEx(&vStr, &vStr, LCID_US, 0, VT_BSTR); if (SUCCEEDED(hRet)) { @@ -2298,7 +2297,7 @@ HRESULT WINAPI VarFormatPercent(LPVARIANT pVarIn, INT nDigits, INT nLeading, INT HRESULT hRet; VARIANT vDbl; - TRACE("(%p->(%s%s),%d,%d,%d,%d,0x%08lx,%p)\n", pVarIn, debugstr_VT(pVarIn), + TRACE("(%p->(%s%s),%d,%d,%d,%d,0x%08x,%p)\n", pVarIn, debugstr_VT(pVarIn), debugstr_VF(pVarIn), nDigits, nLeading, nParens, nGrouping, dwFlags, pbstrOut); @@ -2372,7 +2371,7 @@ HRESULT WINAPI VarFormatCurrency(LPVARIANT pVarIn, INT nDigits, INT nLeading, HRESULT hRet; VARIANT vStr; - TRACE("(%p->(%s%s),%d,%d,%d,%d,0x%08lx,%p)\n", pVarIn, debugstr_VT(pVarIn), + TRACE("(%p->(%s%s),%d,%d,%d,%d,0x%08x,%p)\n", pVarIn, debugstr_VT(pVarIn), debugstr_VF(pVarIn), nDigits, nLeading, nParens, nGrouping, dwFlags, pbstrOut); if (!pVarIn || !pbstrOut || nDigits > 9) @@ -2471,13 +2470,12 @@ HRESULT WINAPI VarMonthName(INT iMonth, INT fAbbrev, ULONG dwFlags, BSTR *pbstrO { DWORD localeValue; INT size; - WCHAR *str; if ((iMonth < 1) || (iMonth > 12)) return E_INVALIDARG; if (dwFlags) - FIXME("Does not support dwFlags 0x%lx, ignoring.\n", dwFlags); + FIXME("Does not support dwFlags 0x%x, ignoring.\n", dwFlags); if (fAbbrev) localeValue = LOCALE_SABBREVMONTHNAME1 + iMonth - 1; @@ -2486,21 +2484,17 @@ HRESULT WINAPI VarMonthName(INT iMonth, INT fAbbrev, ULONG dwFlags, BSTR *pbstrO size = GetLocaleInfoW(LOCALE_USER_DEFAULT,localeValue, NULL, 0); if (!size) { - FIXME("GetLocaleInfo 0x%lx failed.\n", localeValue); - return E_INVALIDARG; + ERR("GetLocaleInfo 0x%x failed.\n", localeValue); + return HRESULT_FROM_WIN32(GetLastError()); } - str = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*size); - if (!str) - return E_OUTOFMEMORY; - size = GetLocaleInfoW(LOCALE_USER_DEFAULT,localeValue, str, size); - if (!size) { - FIXME("GetLocaleInfo of 0x%lx failed in 2nd stage?!\n", localeValue); - HeapFree(GetProcessHeap(),0,str); - return E_INVALIDARG; - } - *pbstrOut = SysAllocString(str); - HeapFree(GetProcessHeap(),0,str); + *pbstrOut = SysAllocStringLen(NULL,size - 1); if (!*pbstrOut) return E_OUTOFMEMORY; + size = GetLocaleInfoW(LOCALE_USER_DEFAULT,localeValue, *pbstrOut, size); + if (!size) { + ERR("GetLocaleInfo of 0x%x failed in 2nd stage?!\n", localeValue); + SysFreeString(*pbstrOut); + return HRESULT_FROM_WIN32(GetLastError()); + } return S_OK; } diff --git a/reactos/dll/win32/oleaut32/variant.c b/reactos/dll/win32/oleaut32/variant.c index a40f3d0a191..d851a9b1403 100644 --- a/reactos/dll/win32/oleaut32/variant.c +++ b/reactos/dll/win32/oleaut32/variant.c @@ -4,6 +4,7 @@ * Copyright 1998 Jean-Claude Cote * Copyright 2003 Jon Griffiths * Copyright 2005 Daniel Remenak + * Copyright 2006 Google (Benjamin Arai) * * The alorithm for conversion from Julian days to day/month/year is based on * that devised by Henry Fliegel, as implemented in PostgreSQL, which is @@ -21,7 +22,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" @@ -43,7 +44,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(variant); -const char* wine_vtypes[VT_CLSID+1] = +const char * const wine_vtypes[VT_CLSID+1] = { "VT_EMPTY","VT_NULL","VT_I2","VT_I4","VT_R4","VT_R8","VT_CY","VT_DATE", "VT_BSTR","VT_DISPATCH","VT_ERROR","VT_BOOL","VT_VARIANT","VT_UNKNOWN", @@ -56,7 +57,7 @@ const char* wine_vtypes[VT_CLSID+1] = "VT_STREAMED_OBJECT","VT_STORED_OBJECT","VT_BLOB_OBJECT","VT_CF","VT_CLSID" }; -const char* wine_vflags[16] = +const char * const wine_vflags[16] = { "", "|VT_VECTOR", @@ -84,7 +85,7 @@ static inline HRESULT VARIANT_Coerce(VARIANTARG* pd, LCID lcid, USHORT wFlags, VARTYPE vtFrom = V_TYPE(ps); DWORD dwFlags = 0; - TRACE("(%p->(%s%s),0x%08lx,0x%04x,%p->(%s%s),%s%s)\n", pd, debugstr_VT(pd), + TRACE("(%p->(%s%s),0x%08x,0x%04x,%p->(%s%s),%s%s)\n", pd, debugstr_VT(pd), debugstr_VF(pd), lcid, wFlags, ps, debugstr_VT(ps), debugstr_VF(ps), debugstr_vt(vt), debugstr_vf(vt)); @@ -431,7 +432,7 @@ static inline HRESULT VARIANT_Coerce(VARIANTARG* pd, LCID lcid, USHORT wFlags, case VT_DATE: return VarBstrFromDate(V_DATE(ps), lcid, dwFlags, &V_BSTR(pd)); case VT_CY: return VarBstrFromCy(V_CY(ps), lcid, dwFlags, &V_BSTR(pd)); case VT_DECIMAL: return VarBstrFromDec(&V_DECIMAL(ps), lcid, dwFlags, &V_BSTR(pd)); -/* case VT_DISPATCH: return VarBstrFromDisp(V_DISPATCH(ps), lcid, dwFlags, &V_BSTR(pd)); */ + case VT_DISPATCH: return VarBstrFromDisp(V_DISPATCH(ps), lcid, dwFlags, &V_BSTR(pd)); } break; @@ -625,11 +626,6 @@ HRESULT WINAPI VariantClear(VARIANTARG* pVarg) if (V_UNKNOWN(pVarg)) IUnknown_Release(V_UNKNOWN(pVarg)); } - else if (V_VT(pVarg) == VT_VARIANT) - { - if (V_VARIANTREF(pVarg)) - VariantClear(V_VARIANTREF(pVarg)); - } } V_VT(pVarg) = VT_EMPTY; } @@ -723,15 +719,12 @@ HRESULT WINAPI VariantCopy(VARIANTARG* pvargDest, VARIANTARG* pvargSrc) } else if (V_VT(pvargSrc) == VT_BSTR) { - if (V_BSTR(pvargSrc)) - { - V_BSTR(pvargDest) = SysAllocStringByteLen((char*)V_BSTR(pvargSrc), SysStringByteLen(V_BSTR(pvargSrc))); - if (!V_BSTR(pvargDest)) - { - TRACE("!V_BSTR(pvargDest), SysAllocStringByteLen() failed to allocate %d bytes\n", SysStringByteLen(V_BSTR(pvargSrc))); - hres = E_OUTOFMEMORY; - } - } + V_BSTR(pvargDest) = SysAllocStringByteLen((char*)V_BSTR(pvargSrc), SysStringByteLen(V_BSTR(pvargSrc))); + if (!V_BSTR(pvargDest)) + { + TRACE("!V_BSTR(pvargDest), SysAllocStringByteLen() failed to allocate %d bytes\n", SysStringByteLen(V_BSTR(pvargSrc))); + hres = E_OUTOFMEMORY; + } } else if (V_VT(pvargSrc) == VT_RECORD) { @@ -780,7 +773,7 @@ static inline size_t VARIANT_DataSize(const VARIANT* pv) /****************************************************************************** * VariantCopyInd [OLEAUT32.11] * - * Copy a variant, dereferencing it it is by-reference. + * Copy a variant, dereferencing it if it is by-reference. * * PARAMS * pvargDest [O] Destination for copy @@ -900,7 +893,7 @@ VariantCopyInd_Return: if (pSrc != pvargSrc) VariantClear(pSrc); - TRACE("returning 0x%08lx, %p->(%s%s)\n", hres, pvargDest, + TRACE("returning 0x%08x, %p->(%s%s)\n", hres, pvargDest, debugstr_VT(pvargDest), debugstr_VF(pvargDest)); return hres; } @@ -955,7 +948,7 @@ HRESULT WINAPI VariantChangeTypeEx(VARIANTARG* pvargDest, VARIANTARG* pvargSrc, { HRESULT res = S_OK; - TRACE("(%p->(%s%s),%p->(%s%s),0x%08lx,0x%04x,%s%s)\n", pvargDest, + TRACE("(%p->(%s%s),%p->(%s%s),0x%08x,0x%04x,%s%s)\n", pvargDest, debugstr_VT(pvargDest), debugstr_VF(pvargDest), pvargSrc, debugstr_VT(pvargSrc), debugstr_VF(pvargSrc), lcid, wFlags, debugstr_vt(vt), debugstr_vf(vt)); @@ -1006,7 +999,7 @@ HRESULT WINAPI VariantChangeTypeEx(VARIANTARG* pvargDest, VARIANTARG* pvargSrc, } } - TRACE("returning 0x%08lx, %p->(%s%s)\n", res, pvargDest, + TRACE("returning 0x%08x, %p->(%s%s)\n", res, pvargDest, debugstr_VT(pvargDest), debugstr_VF(pvargDest)); return res; } @@ -1311,7 +1304,7 @@ HRESULT WINAPI VarDateFromUdateEx(UDATE *pUdateIn, LCID lcid, ULONG dwFlags, DAT UDATE ud; double dateVal; - TRACE("(%p->%d/%d/%d %d:%d:%d:%d %d %d,0x%08lx,0x%08lx,%p)\n", pUdateIn, + TRACE("(%p->%d/%d/%d %d:%d:%d:%d %d %d,0x%08x,0x%08x,%p)\n", pUdateIn, pUdateIn->st.wMonth, pUdateIn->st.wDay, pUdateIn->st.wYear, pUdateIn->st.wHour, pUdateIn->st.wMinute, pUdateIn->st.wSecond, pUdateIn->st.wMilliseconds, pUdateIn->st.wDayOfWeek, @@ -1391,7 +1384,7 @@ HRESULT WINAPI VarUdateFromDate(DATE dateIn, ULONG dwFlags, UDATE *lpUdate) double datePart, timePart; int julianDays; - TRACE("(%g,0x%08lx,%p)\n", dateIn, dwFlags, lpUdate); + TRACE("(%g,0x%08x,%p)\n", dateIn, dwFlags, lpUdate); if (dateIn <= (DATE_MIN - 1.0) || dateIn >= (DATE_MAX + 1.0)) return E_INVALIDARG; @@ -1469,10 +1462,10 @@ HRESULT WINAPI VarUdateFromDate(DATE dateIn, ULONG dwFlags, UDATE *lpUdate) WARN("buffer too small for " #fld "\n"); \ else \ if (buff[0]) lpChars->name = buff[0]; \ - TRACE("lcid 0x%lx, " #name "=%d '%c'\n", lcid, lpChars->name, lpChars->name) + TRACE("lcid 0x%x, " #name "=%d '%c'\n", lcid, lpChars->name, lpChars->name) /* Get the valid number characters for an lcid */ -void VARIANT_GetLocalisedNumberChars(VARIANT_NUMBER_CHARS *lpChars, LCID lcid, DWORD dwFlags) +static void VARIANT_GetLocalisedNumberChars(VARIANT_NUMBER_CHARS *lpChars, LCID lcid, DWORD dwFlags) { static const VARIANT_NUMBER_CHARS defaultChars = { '-','+','.',',','$',0,'.',',' }; LCTYPE lctype = dwFlags & LOCALE_NOUSEROVERRIDE; @@ -1482,9 +1475,9 @@ void VARIANT_GetLocalisedNumberChars(VARIANT_NUMBER_CHARS *lpChars, LCID lcid, D GET_NUMBER_TEXT(LOCALE_SNEGATIVESIGN, cNegativeSymbol); GET_NUMBER_TEXT(LOCALE_SPOSITIVESIGN, cPositiveSymbol); GET_NUMBER_TEXT(LOCALE_SDECIMAL, cDecimalPoint); - GET_NUMBER_TEXT(LOCALE_STHOUSAND, cDigitSeperator); + GET_NUMBER_TEXT(LOCALE_STHOUSAND, cDigitSeparator); GET_NUMBER_TEXT(LOCALE_SMONDECIMALSEP, cCurrencyDecimalPoint); - GET_NUMBER_TEXT(LOCALE_SMONTHOUSANDSEP, cCurrencyDigitSeperator); + GET_NUMBER_TEXT(LOCALE_SMONTHOUSANDSEP, cCurrencyDigitSeparator); /* Local currency symbols are often 2 characters */ lpChars->cCurrencyLocal2 = '\0'; @@ -1495,7 +1488,7 @@ void VARIANT_GetLocalisedNumberChars(VARIANT_NUMBER_CHARS *lpChars, LCID lcid, D break; default: WARN("buffer too small for LOCALE_SCURRENCY\n"); } - TRACE("lcid 0x%lx, cCurrencyLocal =%d,%d '%c','%c'\n", lcid, lpChars->cCurrencyLocal, + TRACE("lcid 0x%x, cCurrencyLocal =%d,%d '%c','%c'\n", lcid, lpChars->cCurrencyLocal, lpChars->cCurrencyLocal2, lpChars->cCurrencyLocal, lpChars->cCurrencyLocal2); } @@ -1547,7 +1540,7 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags, int iMaxDigits = sizeof(rgbTmp) / sizeof(BYTE); int cchUsed = 0; - TRACE("(%s,%ld,0x%08lx,%p,%p)\n", debugstr_w(lpszStr), lcid, dwFlags, pNumprs, rgbDig); + TRACE("(%s,%d,0x%08x,%p,%p)\n", debugstr_w(lpszStr), lcid, dwFlags, pNumprs, rgbDig); if (!pNumprs || !rgbDig) return E_INVALIDARG; @@ -1604,7 +1597,7 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags, lpszStr++; /* Only accept currency characters */ chars.cDecimalPoint = chars.cCurrencyDecimalPoint; - chars.cDigitSeperator = chars.cCurrencyDigitSeperator; + chars.cDigitSeparator = chars.cCurrencyDigitSeparator; } else if (pNumprs->dwInFlags & NUMPRS_PARENS && *lpszStr == '(' && !(pNumprs->dwOutFlags & NUMPRS_PARENS)) @@ -1621,7 +1614,7 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags, { /* Only accept non-currency characters */ chars.cCurrencyDecimalPoint = chars.cDecimalPoint; - chars.cCurrencyDigitSeperator = chars.cDigitSeperator; + chars.cCurrencyDigitSeparator = chars.cDigitSeparator; } if ((*lpszStr == '&' && (*(lpszStr+1) == 'H' || *(lpszStr+1) == 'h')) && @@ -1713,7 +1706,7 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags, cchUsed++; } } - else if (*lpszStr == chars.cDigitSeperator && pNumprs->dwInFlags & NUMPRS_THOUSANDS) + else if (*lpszStr == chars.cDigitSeparator && pNumprs->dwInFlags & NUMPRS_THOUSANDS) { pNumprs->dwOutFlags |= NUMPRS_THOUSANDS; cchUsed++; @@ -1737,23 +1730,6 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags, } } } - else if ((*lpszStr == 'e' || *lpszStr == 'E') && - pNumprs->dwInFlags & NUMPRS_EXPONENT && - !(pNumprs->dwOutFlags & NUMPRS_EXPONENT)) - { - dwState |= B_PROCESSING_EXPONENT; - pNumprs->dwOutFlags |= NUMPRS_EXPONENT; - cchUsed++; - } - else if (dwState & B_PROCESSING_EXPONENT && *lpszStr == chars.cPositiveSymbol) - { - cchUsed++; /* Ignore positive exponent */ - } - else if (dwState & B_PROCESSING_EXPONENT && *lpszStr == chars.cNegativeSymbol) - { - dwState |= B_NEGATIVE_EXPONENT; - cchUsed++; - } else if (((*lpszStr >= 'a' && *lpszStr <= 'f') || (*lpszStr >= 'A' && *lpszStr <= 'F')) && dwState & B_PROCESSING_HEX) @@ -1772,6 +1748,23 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags, pNumprs->cDig++; cchUsed++; } + else if ((*lpszStr == 'e' || *lpszStr == 'E') && + pNumprs->dwInFlags & NUMPRS_EXPONENT && + !(pNumprs->dwOutFlags & NUMPRS_EXPONENT)) + { + dwState |= B_PROCESSING_EXPONENT; + pNumprs->dwOutFlags |= NUMPRS_EXPONENT; + cchUsed++; + } + else if (dwState & B_PROCESSING_EXPONENT && *lpszStr == chars.cPositiveSymbol) + { + cchUsed++; /* Ignore positive exponent */ + } + else if (dwState & B_PROCESSING_EXPONENT && *lpszStr == chars.cNegativeSymbol) + { + dwState |= B_NEGATIVE_EXPONENT; + cchUsed++; + } else break; /* Stop at an unrecognised character */ @@ -1788,6 +1781,7 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags, if (pNumprs->dwOutFlags & NUMPRS_EXPONENT && dwState & B_PROCESSING_EXPONENT) { pNumprs->cchUsed = cchUsed; + WARN("didn't completely parse exponent\n"); return DISP_E_TYPEMISMATCH; /* Failed to completely parse the exponent */ } @@ -1953,7 +1947,7 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig, int wholeNumberDigits, fractionalDigits, divisor10 = 0, multiplier10 = 0; - TRACE("(%p,%p,0x%lx,%p)\n", pNumprs, rgbDig, dwVtBits, pVarDst); + TRACE("(%p,%p,0x%x,%p)\n", pNumprs, rgbDig, dwVtBits, pVarDst); if (pNumprs->nBaseShift) { @@ -2025,7 +2019,7 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig, V_UI8(pVarDst) = ul64; return S_OK; } - else if ((dwVtBits & REAL_VTBITS) == VTBIT_DECIMAL) + else if ((dwVtBits & VTBIT_DECIMAL) == VTBIT_DECIMAL) { V_VT(pVarDst) = VT_DECIMAL; DEC_SIGNSCALE(&V_DECIMAL(pVarDst)) = SIGNSCALE(DECIMAL_POS,0); @@ -2052,7 +2046,7 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig, return S_OK; } - TRACE("Overflow: possible return types: 0x%lx, value: %s\n", dwVtBits, wine_dbgstr_longlong(ul64)); + TRACE("Overflow: possible return types: 0x%x, value: %s\n", dwVtBits, wine_dbgstr_longlong(ul64)); return DISP_E_OVERFLOW; } @@ -2090,9 +2084,9 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig, multiplier10 = pNumprs->nPwr10; } - TRACE("cDig %d; nPwr10 %d, whole %d, frac %d ", pNumprs->cDig, - pNumprs->nPwr10, wholeNumberDigits, fractionalDigits); - TRACE("mult %d; div %d\n", multiplier10, divisor10); + TRACE("cDig %d; nPwr10 %d, whole %d, frac %d mult %d; div %d\n", + pNumprs->cDig, pNumprs->nPwr10, wholeNumberDigits, fractionalDigits, + multiplier10, divisor10); if (dwVtBits & (INTEGER_VTBITS|VTBIT_DECIMAL) && (!fractionalDigits || !(dwVtBits & (REAL_VTBITS|VTBIT_CY|VTBIT_DECIMAL)))) @@ -2178,7 +2172,7 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig, /* Zero is not a negative number */ bNegative = pNumprs->dwOutFlags & NUMPRS_NEG && ul64 ? TRUE : FALSE; - TRACE("Integer value is %lld, bNeg %d\n", ul64, bNegative); + TRACE("Integer value is 0x%s, bNeg %d\n", wine_dbgstr_longlong(ul64), bNegative); /* For negative integers, try the signed types in size order */ if (!bOverflow && bNegative) @@ -2450,56 +2444,191 @@ VarNumFromParseNum_DecOverflow: */ HRESULT WINAPI VarCat(LPVARIANT left, LPVARIANT right, LPVARIANT out) { + VARTYPE leftvt,rightvt,resultvt; + HRESULT hres; + static const WCHAR str_true[] = {'T','r','u','e','\0'}; + static const WCHAR str_false[] = {'F','a','l','s','e','\0'}; + static const WCHAR sz_empty[] = {'\0'}; + leftvt = V_VT(left); + rightvt = V_VT(right); + TRACE("(%p->(%s%s),%p->(%s%s),%p)\n", left, debugstr_VT(left), debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right), out); - /* Should we VariantClear out? */ - /* Can we handle array, vector, by ref etc. */ - if ((V_VT(left)&VT_TYPEMASK) == VT_NULL && - (V_VT(right)&VT_TYPEMASK) == VT_NULL) + /* when both left and right are NULL the result is NULL */ + if (leftvt == VT_NULL && rightvt == VT_NULL) { V_VT(out) = VT_NULL; return S_OK; } - if (V_VT(left) == VT_BSTR && V_VT(right) == VT_BSTR) + hres = S_OK; + resultvt = VT_EMPTY; + + /* There are many special case for errors and return types */ + if (leftvt == VT_VARIANT && (rightvt == VT_ERROR || + rightvt == VT_DATE || rightvt == VT_DECIMAL)) + hres = DISP_E_TYPEMISMATCH; + else if ((leftvt == VT_I2 || leftvt == VT_I4 || + leftvt == VT_R4 || leftvt == VT_R8 || + leftvt == VT_CY || leftvt == VT_BOOL || + leftvt == VT_BSTR || leftvt == VT_I1 || + leftvt == VT_UI1 || leftvt == VT_UI2 || + leftvt == VT_UI4 || leftvt == VT_I8 || + leftvt == VT_UI8 || leftvt == VT_INT || + leftvt == VT_UINT || leftvt == VT_EMPTY || + leftvt == VT_NULL || leftvt == VT_DATE || + leftvt == VT_DECIMAL || leftvt == VT_DISPATCH) + && + (rightvt == VT_I2 || rightvt == VT_I4 || + rightvt == VT_R4 || rightvt == VT_R8 || + rightvt == VT_CY || rightvt == VT_BOOL || + rightvt == VT_BSTR || rightvt == VT_I1 || + rightvt == VT_UI1 || rightvt == VT_UI2 || + rightvt == VT_UI4 || rightvt == VT_I8 || + rightvt == VT_UI8 || rightvt == VT_INT || + rightvt == VT_UINT || rightvt == VT_EMPTY || + rightvt == VT_NULL || rightvt == VT_DATE || + rightvt == VT_DECIMAL || rightvt == VT_DISPATCH)) + resultvt = VT_BSTR; + else if (rightvt == VT_ERROR && leftvt < VT_VOID) + hres = DISP_E_TYPEMISMATCH; + else if (leftvt == VT_ERROR && (rightvt == VT_DATE || + rightvt == VT_ERROR || rightvt == VT_DECIMAL)) + hres = DISP_E_TYPEMISMATCH; + else if (rightvt == VT_DATE || rightvt == VT_ERROR || + rightvt == VT_DECIMAL) + hres = DISP_E_BADVARTYPE; + else if (leftvt == VT_ERROR || rightvt == VT_ERROR) + hres = DISP_E_TYPEMISMATCH; + else if (leftvt == VT_VARIANT) + hres = DISP_E_TYPEMISMATCH; + else if (rightvt == VT_VARIANT && (leftvt == VT_EMPTY || + leftvt == VT_NULL || leftvt == VT_I2 || + leftvt == VT_I4 || leftvt == VT_R4 || + leftvt == VT_R8 || leftvt == VT_CY || + leftvt == VT_DATE || leftvt == VT_BSTR || + leftvt == VT_BOOL || leftvt == VT_DECIMAL || + leftvt == VT_I1 || leftvt == VT_UI1 || + leftvt == VT_UI2 || leftvt == VT_UI4 || + leftvt == VT_I8 || leftvt == VT_UI8 || + leftvt == VT_INT || leftvt == VT_UINT)) + hres = DISP_E_TYPEMISMATCH; + else + hres = DISP_E_BADVARTYPE; + + /* if resutl type is not S_OK, then no need to go further */ + if (hres != S_OK) { - V_VT(out) = VT_BSTR; - VarBstrCat (V_BSTR(left), V_BSTR(right), &V_BSTR(out)); - return S_OK; + V_VT(out) = resultvt; + return hres; } - if (V_VT(left) == VT_BSTR) { - VARIANT bstrvar; - HRESULT hres; + /* Else proceed with formatting inputs to strings */ + else + { + VARIANT bstrvar_left, bstrvar_right; + V_VT(out) = VT_BSTR; - V_VT(out) = VT_BSTR; - VariantInit(&bstrvar); - hres = VariantChangeTypeEx(&bstrvar,right,0,0,VT_BSTR); - if (hres) { - FIXME("Failed to convert right side from vt %d to VT_BSTR?\n",V_VT(right)); - return hres; - } - VarBstrCat (V_BSTR(left), V_BSTR(&bstrvar), &V_BSTR(out)); - return S_OK; - } - if (V_VT(right) == VT_BSTR) { - VARIANT bstrvar; - HRESULT hres; + VariantInit(&bstrvar_left); + VariantInit(&bstrvar_right); - V_VT(out) = VT_BSTR; - VariantInit(&bstrvar); - hres = VariantChangeTypeEx(&bstrvar,left,0,0,VT_BSTR); - if (hres) { - FIXME("Failed to convert right side from vt %d to VT_BSTR?\n",V_VT(right)); - return hres; + /* Convert left side variant to string */ + if (leftvt != VT_BSTR) + { + if (leftvt == VT_BOOL) + { + /* Bools are handled as True/False strings instead of 0/-1 as in MSDN */ + V_VT(&bstrvar_left) = VT_BSTR; + if (V_BOOL(left) == TRUE) + V_BSTR(&bstrvar_left) = SysAllocString(str_true); + else + V_BSTR(&bstrvar_left) = SysAllocString(str_false); + } + /* Fill with empty string for later concat with right side */ + else if (leftvt == VT_NULL) + { + V_VT(&bstrvar_left) = VT_BSTR; + V_BSTR(&bstrvar_left) = SysAllocString(sz_empty); + } + else + { + hres = VariantChangeTypeEx(&bstrvar_left,left,0,0,VT_BSTR); + if (hres != S_OK) { + VariantClear(&bstrvar_left); + VariantClear(&bstrvar_right); + if (leftvt == VT_NULL && (rightvt == VT_EMPTY || + rightvt == VT_NULL || rightvt == VT_I2 || + rightvt == VT_I4 || rightvt == VT_R4 || + rightvt == VT_R8 || rightvt == VT_CY || + rightvt == VT_DATE || rightvt == VT_BSTR || + rightvt == VT_BOOL || rightvt == VT_DECIMAL || + rightvt == VT_I1 || rightvt == VT_UI1 || + rightvt == VT_UI2 || rightvt == VT_UI4 || + rightvt == VT_I8 || rightvt == VT_UI8 || + rightvt == VT_INT || rightvt == VT_UINT)) + return DISP_E_BADVARTYPE; + return hres; + } + } } - VarBstrCat (V_BSTR(&bstrvar), V_BSTR(right), &V_BSTR(out)); + + /* convert right side variant to string */ + if (rightvt != VT_BSTR) + { + if (rightvt == VT_BOOL) + { + /* Bools are handled as True/False strings instead of 0/-1 as in MSDN */ + V_VT(&bstrvar_right) = VT_BSTR; + if (V_BOOL(right) == TRUE) + V_BSTR(&bstrvar_right) = SysAllocString(str_true); + else + V_BSTR(&bstrvar_right) = SysAllocString(str_false); + } + /* Fill with empty string for later concat with right side */ + else if (rightvt == VT_NULL) + { + V_VT(&bstrvar_right) = VT_BSTR; + V_BSTR(&bstrvar_right) = SysAllocString(sz_empty); + } + else + { + hres = VariantChangeTypeEx(&bstrvar_right,right,0,0,VT_BSTR); + if (hres != S_OK) { + VariantClear(&bstrvar_left); + VariantClear(&bstrvar_right); + if (rightvt == VT_NULL && (leftvt == VT_EMPTY || + leftvt == VT_NULL || leftvt == VT_I2 || + leftvt == VT_I4 || leftvt == VT_R4 || + leftvt == VT_R8 || leftvt == VT_CY || + leftvt == VT_DATE || leftvt == VT_BSTR || + leftvt == VT_BOOL || leftvt == VT_DECIMAL || + leftvt == VT_I1 || leftvt == VT_UI1 || + leftvt == VT_UI2 || leftvt == VT_UI4 || + leftvt == VT_I8 || leftvt == VT_UI8 || + leftvt == VT_INT || leftvt == VT_UINT)) + return DISP_E_BADVARTYPE; + return hres; + } + } + } + + /* Concat the resulting strings together */ + if (leftvt == VT_BSTR && rightvt == VT_BSTR) + VarBstrCat (V_BSTR(left), V_BSTR(right), &V_BSTR(out)); + else if (leftvt != VT_BSTR && rightvt != VT_BSTR) + VarBstrCat (V_BSTR(&bstrvar_left), V_BSTR(&bstrvar_right), &V_BSTR(out)); + else if (leftvt != VT_BSTR && rightvt == VT_BSTR) + VarBstrCat (V_BSTR(&bstrvar_left), V_BSTR(right), &V_BSTR(out)); + else if (leftvt == VT_BSTR && rightvt != VT_BSTR) + VarBstrCat (V_BSTR(left), V_BSTR(&bstrvar_right), &V_BSTR(out)); + + VariantClear(&bstrvar_left); + VariantClear(&bstrvar_right); return S_OK; } - FIXME ("types %d / %d not supported\n",V_VT(left)&VT_TYPEMASK, V_VT(right)&VT_TYPEMASK); - return S_OK; } + /* Wrapper around VariantChangeTypeEx() which permits changing a variant with VT_RESERVED flag set. Needed by VarCmp. */ static HRESULT _VarChangeTypeExWrap (VARIANTARG* pvargDest, @@ -2532,7 +2661,7 @@ static HRESULT _VarChangeTypeExWrap (VARIANTARG* pvargDest, * RETURNS * VARCMP_LT: left variant is less than right variant. * VARCMP_EQ: input variants are equal. - * VARCMP_LT: left variant is greater than right variant. + * VARCMP_GT: left variant is greater than right variant. * VARCMP_NULL: either one of the input variants is NULL. * Failure: An HRESULT error code indicating the error. * @@ -2567,7 +2696,7 @@ HRESULT WINAPI VarCmp(LPVARIANT left, LPVARIANT right, LCID lcid, DWORD flags) DWORD xmask; HRESULT rc; - TRACE("(%p->(%s%s),%p->(%s%s),0x%08lx,0x%08lx)\n", left, debugstr_VT(left), + TRACE("(%p->(%s%s),%p->(%s%s),0x%08x,0x%08x)\n", left, debugstr_VT(left), debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right), lcid, flags); lvt = V_VT(left) & VT_TYPEMASK; @@ -2727,6 +2856,22 @@ HRESULT WINAPI VarCmp(LPVARIANT left, LPVARIANT right, LCID lcid, DWORD flags) #undef _VARCMP } +static HRESULT VARIANT_FetchDispatchValue(LPVARIANT pvDispatch, LPVARIANT pValue) +{ + HRESULT hres; + static DISPPARAMS emptyParams = { NULL, NULL, 0, 0 }; + + if ((V_VT(pvDispatch) & VT_TYPEMASK) == VT_DISPATCH) { + if (NULL == V_DISPATCH(pvDispatch)) return DISP_E_TYPEMISMATCH; + hres = IDispatch_Invoke(V_DISPATCH(pvDispatch), DISPID_VALUE, &IID_NULL, + LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &emptyParams, pValue, + NULL, NULL); + } else { + hres = DISP_E_TYPEMISMATCH; + } + return hres; +} + /********************************************************************** * VarAnd [OLEAUT32.142] * @@ -2743,80 +2888,216 @@ HRESULT WINAPI VarCmp(LPVARIANT left, LPVARIANT right, LCID lcid, DWORD flags) */ HRESULT WINAPI VarAnd(LPVARIANT left, LPVARIANT right, LPVARIANT result) { - HRESULT rc = E_FAIL; + HRESULT hres = S_OK; + VARTYPE resvt = VT_EMPTY; + VARTYPE leftvt,rightvt; + VARTYPE rightExtraFlags,leftExtraFlags,ExtraFlags; + VARIANT varLeft, varRight; + VARIANT tempLeft, tempRight; + + VariantInit(&varLeft); + VariantInit(&varRight); + VariantInit(&tempLeft); + VariantInit(&tempRight); TRACE("(%p->(%s%s),%p->(%s%s),%p)\n", left, debugstr_VT(left), debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right), result); - if ((V_VT(left)&VT_TYPEMASK) == VT_BOOL && - (V_VT(right)&VT_TYPEMASK) == VT_BOOL) { - - V_VT(result) = VT_BOOL; - if (V_BOOL(left) && V_BOOL(right)) { - V_BOOL(result) = VARIANT_TRUE; - } else { - V_BOOL(result) = VARIANT_FALSE; - } - rc = S_OK; - - } else { - /* Integers */ - BOOL lOk = TRUE; - BOOL rOk = TRUE; - LONGLONG lVal = -1; - LONGLONG rVal = -1; - LONGLONG res = -1; - int resT = 0; /* Testing has shown I2 & I2 == I2, all else - becomes I4, even unsigned ints (incl. UI2) */ - - lOk = TRUE; - switch (V_VT(left)&VT_TYPEMASK) { - case VT_I1 : lVal = V_I1(left); resT=VT_I4; break; - case VT_I2 : lVal = V_I2(left); resT=VT_I2; break; - case VT_I4 : - case VT_INT : lVal = V_I4(left); resT=VT_I4; break; - case VT_UI1 : lVal = V_UI1(left); resT=VT_I4; break; - case VT_UI2 : lVal = V_UI2(left); resT=VT_I4; break; - case VT_UI4 : - case VT_UINT : lVal = V_UI4(left); resT=VT_I4; break; - case VT_BOOL : rVal = V_BOOL(left); resT=VT_I4; break; - default: lOk = FALSE; - } - - rOk = TRUE; - switch (V_VT(right)&VT_TYPEMASK) { - case VT_I1 : rVal = V_I1(right); resT=VT_I4; break; - case VT_I2 : rVal = V_I2(right); resT=max(VT_I2, resT); break; - case VT_I4 : - case VT_INT : rVal = V_I4(right); resT=VT_I4; break; - case VT_UI1 : rVal = V_UI1(right); resT=VT_I4; break; - case VT_UI2 : rVal = V_UI2(right); resT=VT_I4; break; - case VT_UI4 : - case VT_UINT : rVal = V_UI4(right); resT=VT_I4; break; - case VT_BOOL : rVal = V_BOOL(right); resT=VT_I4; break; - default: rOk = FALSE; - } - - if (lOk && rOk) { - res = (lVal & rVal); - V_VT(result) = resT; - switch (resT) { - case VT_I2 : V_I2(result) = res; break; - case VT_I4 : V_I4(result) = res; break; - default: - FIXME("Unexpected result variant type %x\n", resT); - V_I4(result) = res; - } - rc = S_OK; - - } else { - FIXME("VarAnd stub\n"); - } + /* Handle VT_DISPATCH by storing and taking address of returned value */ + if ((V_VT(left) & VT_TYPEMASK) == VT_DISPATCH) + { + hres = VARIANT_FetchDispatchValue(left, &tempLeft); + if (FAILED(hres)) goto VarAnd_Exit; + left = &tempLeft; + } + if ((V_VT(right) & VT_TYPEMASK) == VT_DISPATCH) + { + hres = VARIANT_FetchDispatchValue(right, &tempRight); + if (FAILED(hres)) goto VarAnd_Exit; + right = &tempRight; } - TRACE("returning 0x%8lx (%s%s),%ld\n", rc, debugstr_VT(result), - debugstr_VF(result), V_VT(result) == VT_I4 ? V_I4(result) : V_I2(result)); - return rc; + leftvt = V_VT(left)&VT_TYPEMASK; + rightvt = V_VT(right)&VT_TYPEMASK; + leftExtraFlags = V_VT(left)&(~VT_TYPEMASK); + rightExtraFlags = V_VT(right)&(~VT_TYPEMASK); + + if (leftExtraFlags != rightExtraFlags) + { + hres = DISP_E_BADVARTYPE; + goto VarAnd_Exit; + } + ExtraFlags = leftExtraFlags; + + /* Native VarAnd always returns a error when using any extra + * flags or if the variant combination is I8 and INT. + */ + if ((leftvt == VT_I8 && rightvt == VT_INT) || + (leftvt == VT_INT && rightvt == VT_I8) || + ExtraFlags != 0) + { + hres = DISP_E_BADVARTYPE; + goto VarAnd_Exit; + } + + /* Determine return type */ + else if (leftvt == VT_I8 || rightvt == VT_I8) + resvt = VT_I8; + else if (leftvt == VT_I4 || rightvt == VT_I4 || + leftvt == VT_UINT || rightvt == VT_UINT || + leftvt == VT_INT || rightvt == VT_INT || + leftvt == VT_UINT || rightvt == VT_UINT || + leftvt == VT_R4 || rightvt == VT_R4 || + leftvt == VT_R8 || rightvt == VT_R8 || + leftvt == VT_CY || rightvt == VT_CY || + leftvt == VT_DATE || rightvt == VT_DATE || + leftvt == VT_I1 || rightvt == VT_I1 || + leftvt == VT_UI2 || rightvt == VT_UI2 || + leftvt == VT_UI4 || rightvt == VT_UI4 || + leftvt == VT_UI8 || rightvt == VT_UI8 || + leftvt == VT_DECIMAL || rightvt == VT_DECIMAL) + resvt = VT_I4; + else if (leftvt == VT_UI1 || rightvt == VT_UI1 || + leftvt == VT_I2 || rightvt == VT_I2 || + leftvt == VT_EMPTY || rightvt == VT_EMPTY) + if ((leftvt == VT_NULL && rightvt == VT_UI1) || + (leftvt == VT_UI1 && rightvt == VT_NULL) || + (leftvt == VT_UI1 && rightvt == VT_UI1)) + resvt = VT_UI1; + else + resvt = VT_I2; + else if (leftvt == VT_BOOL || rightvt == VT_BOOL || + (leftvt == VT_BSTR && rightvt == VT_BSTR)) + resvt = VT_BOOL; + else if (leftvt == VT_NULL || rightvt == VT_NULL || + leftvt == VT_BSTR || rightvt == VT_BSTR) + resvt = VT_NULL; + else + { + hres = DISP_E_BADVARTYPE; + goto VarAnd_Exit; + } + + if (leftvt == VT_NULL || rightvt == VT_NULL) + { + /* + * Special cases for when left variant is VT_NULL + * (NULL & 0 = NULL, NULL & value = value) + */ + if (leftvt == VT_NULL) + { + VARIANT_BOOL b; + switch(rightvt) + { + case VT_I1: if (V_I1(right)) resvt = VT_NULL; break; + case VT_UI1: if (V_UI1(right)) resvt = VT_NULL; break; + case VT_I2: if (V_I2(right)) resvt = VT_NULL; break; + case VT_UI2: if (V_UI2(right)) resvt = VT_NULL; break; + case VT_I4: if (V_I4(right)) resvt = VT_NULL; break; + case VT_UI4: if (V_UI4(right)) resvt = VT_NULL; break; + case VT_I8: if (V_I8(right)) resvt = VT_NULL; break; + case VT_UI8: if (V_UI8(right)) resvt = VT_NULL; break; + case VT_INT: if (V_INT(right)) resvt = VT_NULL; break; + case VT_UINT: if (V_UINT(right)) resvt = VT_NULL; break; + case VT_BOOL: if (V_BOOL(right)) resvt = VT_NULL; break; + case VT_R4: if (V_R4(right)) resvt = VT_NULL; break; + case VT_R8: if (V_R8(right)) resvt = VT_NULL; break; + case VT_CY: + if(V_CY(right).int64) + resvt = VT_NULL; + break; + case VT_DECIMAL: + if (DEC_HI32(&V_DECIMAL(right)) || + DEC_LO64(&V_DECIMAL(right))) + resvt = VT_NULL; + break; + case VT_BSTR: + hres = VarBoolFromStr(V_BSTR(right), + LOCALE_USER_DEFAULT, VAR_LOCALBOOL, &b); + if (FAILED(hres)) + return hres; + else if (b) + V_VT(result) = VT_NULL; + else + { + V_VT(result) = VT_BOOL; + V_BOOL(result) = b; + } + goto VarAnd_Exit; + } + } + V_VT(result) = resvt; + goto VarAnd_Exit; + } + + hres = VariantCopy(&varLeft, left); + if (FAILED(hres)) goto VarAnd_Exit; + + hres = VariantCopy(&varRight, right); + if (FAILED(hres)) goto VarAnd_Exit; + + if (resvt == VT_I4 && V_VT(&varLeft) == VT_UI4) + V_VT(&varLeft) = VT_I4; /* Don't overflow */ + else + { + double d; + + if (V_VT(&varLeft) == VT_BSTR && + FAILED(VarR8FromStr(V_BSTR(&varLeft), + LOCALE_USER_DEFAULT, 0, &d))) + hres = VariantChangeType(&varLeft,&varLeft, + VARIANT_LOCALBOOL, VT_BOOL); + if (SUCCEEDED(hres) && V_VT(&varLeft) != resvt) + hres = VariantChangeType(&varLeft,&varLeft,0,resvt); + if (FAILED(hres)) goto VarAnd_Exit; + } + + if (resvt == VT_I4 && V_VT(&varRight) == VT_UI4) + V_VT(&varRight) = VT_I4; /* Don't overflow */ + else + { + double d; + + if (V_VT(&varRight) == VT_BSTR && + FAILED(VarR8FromStr(V_BSTR(&varRight), + LOCALE_USER_DEFAULT, 0, &d))) + hres = VariantChangeType(&varRight, &varRight, + VARIANT_LOCALBOOL, VT_BOOL); + if (SUCCEEDED(hres) && V_VT(&varRight) != resvt) + hres = VariantChangeType(&varRight, &varRight, 0, resvt); + if (FAILED(hres)) goto VarAnd_Exit; + } + + V_VT(result) = resvt; + switch(resvt) + { + case VT_I8: + V_I8(result) = V_I8(&varLeft) & V_I8(&varRight); + break; + case VT_I4: + V_I4(result) = V_I4(&varLeft) & V_I4(&varRight); + break; + case VT_I2: + V_I2(result) = V_I2(&varLeft) & V_I2(&varRight); + break; + case VT_UI1: + V_UI1(result) = V_UI1(&varLeft) & V_UI1(&varRight); + break; + case VT_BOOL: + V_BOOL(result) = V_BOOL(&varLeft) & V_BOOL(&varRight); + break; + default: + FIXME("Couldn't bitwise AND variant types %d,%d\n", + leftvt,rightvt); + } + +VarAnd_Exit: + VariantClear(&varLeft); + VariantClear(&varRight); + VariantClear(&tempLeft); + VariantClear(&tempRight); + + return hres; } /********************************************************************** @@ -2849,6 +3130,7 @@ HRESULT WINAPI VarAdd(LPVARIANT left, LPVARIANT right, LPVARIANT result) HRESULT hres; VARTYPE lvt, rvt, resvt, tvt; VARIANT lv, rv, tv; + VARIANT tempLeft, tempRight; double r8res; /* Variant priority for coercion. Sorted from lowest to highest. @@ -2857,12 +3139,12 @@ HRESULT WINAPI VarAdd(LPVARIANT left, LPVARIANT right, LPVARIANT result) vt_R8, vt_CY, vt_DATE, vt_DECIMAL, vt_DISPATCH, vt_NULL, vt_ERROR }; /* Mapping from priority to variant type. Keep in sync with coerceprio! */ - VARTYPE prio2vt[] = { VT_EMPTY, VT_UI1, VT_I2, VT_I4, VT_I8, VT_BSTR, VT_R4, + static const VARTYPE prio2vt[] = { VT_EMPTY, VT_UI1, VT_I2, VT_I4, VT_I8, VT_BSTR, VT_R4, VT_R8, VT_CY, VT_DATE, VT_DECIMAL, VT_DISPATCH, VT_NULL, VT_ERROR }; /* Mapping for coercion from input variant to priority of result variant. */ - static VARTYPE coerce[] = { + static const VARTYPE coerce[] = { /* VT_EMPTY, VT_NULL, VT_I2, VT_I4, VT_R4 */ vt_EMPTY, vt_NULL, vt_I2, vt_I4, vt_R4, /* VT_R8, VT_CY, VT_DATE, VT_BSTR, VT_DISPATCH */ @@ -2880,6 +3162,26 @@ HRESULT WINAPI VarAdd(LPVARIANT left, LPVARIANT right, LPVARIANT result) VariantInit(&lv); VariantInit(&rv); VariantInit(&tv); + VariantInit(&tempLeft); + VariantInit(&tempRight); + + /* Handle VT_DISPATCH by storing and taking address of returned value */ + if ((V_VT(left) & VT_TYPEMASK) != VT_NULL && (V_VT(right) & VT_TYPEMASK) != VT_NULL) + { + if ((V_VT(left) & VT_TYPEMASK) == VT_DISPATCH) + { + hres = VARIANT_FetchDispatchValue(left, &tempLeft); + if (FAILED(hres)) goto end; + left = &tempLeft; + } + if ((V_VT(right) & VT_TYPEMASK) == VT_DISPATCH) + { + hres = VARIANT_FetchDispatchValue(right, &tempRight); + if (FAILED(hres)) goto end; + right = &tempRight; + } + } + lvt = V_VT(left)&VT_TYPEMASK; rvt = V_VT(right)&VT_TYPEMASK; @@ -3007,7 +3309,9 @@ end: VariantClear(&lv); VariantClear(&rv); VariantClear(&tv); - TRACE("returning 0x%8lx (variant type %s)\n", hres, debugstr_VT(result)); + VariantClear(&tempLeft); + VariantClear(&tempRight); + TRACE("returning 0x%8x (variant type %s)\n", hres, debugstr_VT(result)); return hres; } @@ -3041,6 +3345,7 @@ HRESULT WINAPI VarMul(LPVARIANT left, LPVARIANT right, LPVARIANT result) HRESULT hres; VARTYPE lvt, rvt, resvt, tvt; VARIANT lv, rv, tv; + VARIANT tempLeft, tempRight; double r8res; /* Variant priority for coercion. Sorted from lowest to highest. @@ -3048,11 +3353,11 @@ HRESULT WINAPI VarMul(LPVARIANT left, LPVARIANT right, LPVARIANT result) enum coerceprio { vt_UI1 = 0, vt_I2, vt_I4, vt_I8, vt_CY, vt_R4, vt_R8, vt_DECIMAL, vt_NULL, vt_ERROR }; /* Mapping from priority to variant type. Keep in sync with coerceprio! */ - VARTYPE prio2vt[] = { VT_UI1, VT_I2, VT_I4, VT_I8, VT_CY, VT_R4, VT_R8, + static const VARTYPE prio2vt[] = { VT_UI1, VT_I2, VT_I4, VT_I8, VT_CY, VT_R4, VT_R8, VT_DECIMAL, VT_NULL, VT_ERROR }; /* Mapping for coercion from input variant to priority of result variant. */ - static VARTYPE coerce[] = { + static const VARTYPE coerce[] = { /* VT_EMPTY, VT_NULL, VT_I2, VT_I4, VT_R4 */ vt_UI1, vt_NULL, vt_I2, vt_I4, vt_R4, /* VT_R8, VT_CY, VT_DATE, VT_BSTR, VT_DISPATCH */ @@ -3070,6 +3375,23 @@ HRESULT WINAPI VarMul(LPVARIANT left, LPVARIANT right, LPVARIANT result) VariantInit(&lv); VariantInit(&rv); VariantInit(&tv); + VariantInit(&tempLeft); + VariantInit(&tempRight); + + /* Handle VT_DISPATCH by storing and taking address of returned value */ + if ((V_VT(left) & VT_TYPEMASK) == VT_DISPATCH) + { + hres = VARIANT_FetchDispatchValue(left, &tempLeft); + if (FAILED(hres)) goto end; + left = &tempLeft; + } + if ((V_VT(right) & VT_TYPEMASK) == VT_DISPATCH) + { + hres = VARIANT_FetchDispatchValue(right, &tempRight); + if (FAILED(hres)) goto end; + right = &tempRight; + } + lvt = V_VT(left)&VT_TYPEMASK; rvt = V_VT(right)&VT_TYPEMASK; @@ -3178,7 +3500,9 @@ end: VariantClear(&lv); VariantClear(&rv); VariantClear(&tv); - TRACE("returning 0x%8lx (variant type %s)\n", hres, debugstr_VT(result)); + VariantClear(&tempLeft); + VariantClear(&tempRight); + TRACE("returning 0x%8x (variant type %s)\n", hres, debugstr_VT(result)); return hres; } @@ -3198,65 +3522,151 @@ end: */ HRESULT WINAPI VarDiv(LPVARIANT left, LPVARIANT right, LPVARIANT result) { - HRESULT rc = E_FAIL; - VARTYPE lvt,rvt,resvt; + HRESULT hres = S_OK; + VARTYPE resvt = VT_EMPTY; + VARTYPE leftvt,rightvt; + VARTYPE rightExtraFlags,leftExtraFlags,ExtraFlags; VARIANT lv,rv; - BOOL found; + VARIANT tempLeft, tempRight; + + VariantInit(&tempLeft); + VariantInit(&tempRight); + VariantInit(&lv); + VariantInit(&rv); TRACE("(%p->(%s%s),%p->(%s%s),%p)\n", left, debugstr_VT(left), debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right), result); - VariantInit(&lv);VariantInit(&rv); - lvt = V_VT(left)&VT_TYPEMASK; - rvt = V_VT(right)&VT_TYPEMASK; - found = FALSE;resvt = VT_VOID; - if (((1<(%s%s),%p->(%s%s),%p)\n", left, debugstr_VT(left), debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right), result); - VariantInit(&lv);VariantInit(&rv); - lvt = V_VT(left)&VT_TYPEMASK; - rvt = V_VT(right)&VT_TYPEMASK; - found = FALSE;resvt = VT_VOID; - if (((1<= VT_INT_PTR) + hres = DISP_E_BADVARTYPE; + else if ((V_VT(right) & VT_TYPEMASK) >= VT_UI8 && + (V_VT(right) & VT_TYPEMASK) < VT_RECORD) + hres = DISP_E_BADVARTYPE; + else switch (V_VT(right) & VT_TYPEMASK) + { + case VT_VARIANT: + case VT_UNKNOWN: + case 15: + case VT_I1: + case VT_UI2: + case VT_UI4: + hres = DISP_E_BADVARTYPE; + } + if (FAILED(hres)) goto end; + } + hres = VARIANT_FetchDispatchValue(left, &tempLeft); + if (FAILED(hres)) goto end; + left = &tempLeft; } - if (!found && (((1<= VT_INT_PTR) + hres = DISP_E_BADVARTYPE; + else if ((V_VT(left) & VT_TYPEMASK) >= VT_UI8 && + (V_VT(left) & VT_TYPEMASK) < VT_RECORD) + hres = DISP_E_BADVARTYPE; + else switch (V_VT(left) & VT_TYPEMASK) + { + case VT_VARIANT: + case VT_UNKNOWN: + case 15: + case VT_I1: + case VT_UI2: + case VT_UI4: + hres = DISP_E_BADVARTYPE; + } + if (FAILED(hres)) goto end; + } + hres = VARIANT_FetchDispatchValue(right, &tempRight); + if (FAILED(hres)) goto end; + right = &tempRight; } - if (!found && (((1<= VT_ARRAY) + { + hres = DISP_E_TYPEMISMATCH; + goto end; } - rc = VariantChangeType(&rv, right, 0, resvt); - if (FAILED(rc)) { - FIXME("Could not convert 0x%x to %d?\n",V_VT(right),resvt); - return rc; + /* Native VarSub cannot handle: VT_I1, VT_UI2, VT_UI4, + VT_INT, VT_UINT and VT_UI8. Tested with WinXP */ + else if (leftvt == VT_CLSID || rightvt == VT_CLSID || + leftvt == VT_VARIANT || rightvt == VT_VARIANT || + leftvt == VT_I1 || rightvt == VT_I1 || + leftvt == VT_UI2 || rightvt == VT_UI2 || + leftvt == VT_UI4 || rightvt == VT_UI4 || + leftvt == VT_UI8 || rightvt == VT_UI8 || + leftvt == VT_INT || rightvt == VT_INT || + leftvt == VT_UINT || rightvt == VT_UINT || + leftvt == VT_UNKNOWN || rightvt == VT_UNKNOWN || + leftvt == VT_RECORD || rightvt == VT_RECORD) + { + if (leftvt == VT_RECORD && rightvt == VT_I8) + hres = DISP_E_TYPEMISMATCH; + else if (leftvt < VT_UI1 && rightvt == VT_RECORD) + hres = DISP_E_TYPEMISMATCH; + else if (leftvt >= VT_UI1 && rightvt == VT_RECORD) + hres = DISP_E_TYPEMISMATCH; + else if (leftvt == VT_RECORD && rightvt <= VT_UI1) + hres = DISP_E_TYPEMISMATCH; + else if (leftvt == VT_RECORD && rightvt > VT_UI1) + hres = DISP_E_BADVARTYPE; + else + hres = DISP_E_BADVARTYPE; + goto end; } - switch (resvt) { - case VT_R8: - V_VT(result) = resvt; - V_R8(result) = V_R8(&lv) - V_R8(&rv); - rc = S_OK; - break; - case VT_DECIMAL: - rc = VarDecSub(&(V_DECIMAL(&lv)), &(V_DECIMAL(&rv)), &(V_DECIMAL(result))); - V_VT(result) = resvt; - break; + /* The following flags/types are invalid for left variant */ + else if (!((leftvt <= VT_LPWSTR || leftvt == VT_RECORD || + leftvt == VT_CLSID) && leftvt != (VARTYPE)15 /* undefined vt */ && + (leftvt < VT_VOID || leftvt > VT_LPWSTR))) + { + hres = DISP_E_BADVARTYPE; + goto end; + } + /* The following flags/types are invalid for right variant */ + else if (!((rightvt <= VT_LPWSTR || rightvt == VT_RECORD || + rightvt == VT_CLSID) && rightvt != (VARTYPE)15 /* undefined vt */ && + (rightvt < VT_VOID || rightvt > VT_LPWSTR))) + { + hres = DISP_E_BADVARTYPE; + goto end; + } + else if ((leftvt == VT_NULL && rightvt == VT_DISPATCH) || + (leftvt == VT_DISPATCH && rightvt == VT_NULL)) + resvt = VT_NULL; + else if (leftvt == VT_DISPATCH || rightvt == VT_DISPATCH || + leftvt == VT_ERROR || rightvt == VT_ERROR) + { + hres = DISP_E_TYPEMISMATCH; + goto end; + } + else if (leftvt == VT_NULL || rightvt == VT_NULL) + resvt = VT_NULL; + else if ((leftvt == VT_EMPTY && rightvt == VT_BSTR) || + (leftvt == VT_DATE && rightvt == VT_DATE) || + (leftvt == VT_BSTR && rightvt == VT_EMPTY) || + (leftvt == VT_BSTR && rightvt == VT_BSTR)) + resvt = VT_R8; + else if (leftvt == VT_DECIMAL || rightvt == VT_DECIMAL) + resvt = VT_DECIMAL; + else if (leftvt == VT_DATE || rightvt == VT_DATE) + resvt = VT_DATE; + else if (leftvt == VT_CY || rightvt == VT_CY) + resvt = VT_CY; + else if (leftvt == VT_R8 || rightvt == VT_R8) + resvt = VT_R8; + else if (leftvt == VT_BSTR || rightvt == VT_BSTR) + resvt = VT_R8; + else if (leftvt == VT_R4 || rightvt == VT_R4) + { + if (leftvt == VT_I4 || rightvt == VT_I4 || + leftvt == VT_I8 || rightvt == VT_I8) + resvt = VT_R8; + else + resvt = VT_R4; + } + else if (leftvt == VT_I8 || rightvt == VT_I8) + resvt = VT_I8; + else if (leftvt == VT_I4 || rightvt == VT_I4) + resvt = VT_I4; + else if (leftvt == VT_I2 || rightvt == VT_I2 || + leftvt == VT_BOOL || rightvt == VT_BOOL || + (leftvt == VT_EMPTY && rightvt == VT_EMPTY)) + resvt = VT_I2; + else if (leftvt == VT_UI1 || rightvt == VT_UI1) + resvt = VT_UI1; + else + { + hres = DISP_E_TYPEMISMATCH; + goto end; + } + + /* coerce to the result type */ + if (leftvt == VT_BSTR && rightvt == VT_DATE) + hres = VariantChangeType(&lv, left, 0, VT_R8); + else + hres = VariantChangeType(&lv, left, 0, resvt); + if (hres != S_OK) goto end; + if (leftvt == VT_DATE && rightvt == VT_BSTR) + hres = VariantChangeType(&rv, right, 0, VT_R8); + else + hres = VariantChangeType(&rv, right, 0, resvt); + if (hres != S_OK) goto end; + + /* do the math */ + V_VT(result) = resvt; + switch (resvt) + { + case VT_NULL: + break; + case VT_DATE: + V_DATE(result) = V_DATE(&lv) - V_DATE(&rv); + break; + case VT_CY: + hres = VarCySub(V_CY(&lv), V_CY(&rv), &(V_CY(result))); + break; + case VT_R4: + V_R4(result) = V_R4(&lv) - V_R4(&rv); + break; + case VT_I8: + V_I8(result) = V_I8(&lv) - V_I8(&rv); + break; case VT_I4: - V_VT(result) = resvt; - V_I4(result) = V_I4(&lv) - V_I4(&rv); - rc = S_OK; - break; + V_I4(result) = V_I4(&lv) - V_I4(&rv); + break; + case VT_I2: + V_I2(result) = V_I2(&lv) - V_I2(&rv); + break; + case VT_I1: + V_I1(result) = V_I1(&lv) - V_I1(&rv); + break; + case VT_UI1: + V_UI1(result) = V_UI2(&lv) - V_UI1(&rv); + break; + case VT_R8: + V_R8(result) = V_R8(&lv) - V_R8(&rv); + break; + case VT_DECIMAL: + hres = VarDecSub(&(V_DECIMAL(&lv)), &(V_DECIMAL(&rv)), &(V_DECIMAL(result))); + break; } - TRACE("returning 0x%8lx (%s%s),%g\n", rc, debugstr_VT(result), - debugstr_VF(result), V_VT(result) == VT_R8 ? V_R8(result) : (double)V_I4(result)); - return rc; + +end: + VariantClear(&lv); + VariantClear(&rv); + VariantClear(&tempLeft); + VariantClear(&tempRight); + TRACE("returning 0x%8x (variant type %s)\n", hres, debugstr_VT(result)); + return hres; } + /********************************************************************** * VarOr [OLEAUT32.157] * @@ -3357,16 +3960,40 @@ HRESULT WINAPI VarOr(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut) VARTYPE vt = VT_I4; VARIANT varLeft, varRight, varStr; HRESULT hRet; + VARIANT tempLeft, tempRight; + + VariantInit(&tempLeft); + VariantInit(&tempRight); + VariantInit(&varLeft); + VariantInit(&varRight); + VariantInit(&varStr); TRACE("(%p->(%s%s),%p->(%s%s),%p)\n", pVarLeft, debugstr_VT(pVarLeft), debugstr_VF(pVarLeft), pVarRight, debugstr_VT(pVarRight), debugstr_VF(pVarRight), pVarOut); + /* Handle VT_DISPATCH by storing and taking address of returned value */ + if ((V_VT(pVarLeft) & VT_TYPEMASK) == VT_DISPATCH) + { + hRet = VARIANT_FetchDispatchValue(pVarLeft, &tempLeft); + if (FAILED(hRet)) goto VarOr_Exit; + pVarLeft = &tempLeft; + } + if ((V_VT(pVarRight) & VT_TYPEMASK) == VT_DISPATCH) + { + hRet = VARIANT_FetchDispatchValue(pVarRight, &tempRight); + if (FAILED(hRet)) goto VarOr_Exit; + pVarRight = &tempRight; + } + if (V_EXTRA_TYPE(pVarLeft) || V_EXTRA_TYPE(pVarRight) || V_VT(pVarLeft) == VT_UNKNOWN || V_VT(pVarRight) == VT_UNKNOWN || V_VT(pVarLeft) == VT_DISPATCH || V_VT(pVarRight) == VT_DISPATCH || V_VT(pVarLeft) == VT_RECORD || V_VT(pVarRight) == VT_RECORD) - return DISP_E_BADVARTYPE; + { + hRet = DISP_E_BADVARTYPE; + goto VarOr_Exit; + } V_VT(&varLeft) = V_VT(&varRight) = V_VT(&varStr) = VT_EMPTY; @@ -3384,49 +4011,62 @@ HRESULT WINAPI VarOr(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut) case VT_DATE: case VT_R8: if (V_R8(pVarLeft)) goto VarOr_AsEmpty; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_BOOL: if (V_BOOL(pVarLeft)) *pVarOut = *pVarLeft; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_I2: case VT_UI2: if (V_I2(pVarLeft)) goto VarOr_AsEmpty; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_I1: if (V_I1(pVarLeft)) goto VarOr_AsEmpty; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_UI1: if (V_UI1(pVarLeft)) *pVarOut = *pVarLeft; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_R4: if (V_R4(pVarLeft)) goto VarOr_AsEmpty; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_I4: case VT_UI4: case VT_INT: case VT_UINT: if (V_I4(pVarLeft)) goto VarOr_AsEmpty; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_CY: if (V_CY(pVarLeft).int64) goto VarOr_AsEmpty; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_I8: case VT_UI8: if (V_I8(pVarLeft)) goto VarOr_AsEmpty; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_DECIMAL: if (DEC_HI32(&V_DECIMAL(pVarLeft)) || DEC_LO64(&V_DECIMAL(pVarLeft))) goto VarOr_AsEmpty; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; case VT_BSTR: { VARIANT_BOOL b; if (!V_BSTR(pVarLeft)) - return DISP_E_BADVARTYPE; + { + hRet = DISP_E_BADVARTYPE; + goto VarOr_Exit; + } hRet = VarBoolFromStr(V_BSTR(pVarLeft), LOCALE_USER_DEFAULT, VAR_LOCALBOOL, &b); if (SUCCEEDED(hRet) && b) @@ -3434,13 +4074,15 @@ HRESULT WINAPI VarOr(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut) V_VT(pVarOut) = VT_BOOL; V_BOOL(pVarOut) = b; } - return hRet; + goto VarOr_Exit; } case VT_NULL: case VT_EMPTY: V_VT(pVarOut) = VT_NULL; - return S_OK; + hRet = S_OK; + goto VarOr_Exit; default: - return DISP_E_BADVARTYPE; + hRet = DISP_E_BADVARTYPE; + goto VarOr_Exit; } } @@ -3458,7 +4100,10 @@ VarOr_AsEmpty: { case VT_BSTR: if (!V_BSTR(pVarLeft)) - return DISP_E_BADVARTYPE; + { + hRet = DISP_E_BADVARTYPE; + goto VarOr_Exit; + } hRet = VariantCopy(&varStr, pVarLeft); if (FAILED(hRet)) @@ -3480,7 +4125,8 @@ VarOr_AsEmpty: V_VT(pVarOut) = VT_I8; break; default: - return DISP_E_BADVARTYPE; + hRet = DISP_E_BADVARTYPE; + goto VarOr_Exit; } hRet = VariantCopy(&varLeft, pVarLeft); if (FAILED(hRet)) @@ -3494,14 +4140,16 @@ VarOr_AsEmpty: { V_VT(pVarOut) = VT_BOOL; V_BOOL(pVarOut) = V_BOOL(pVarLeft) | V_BOOL(pVarRight); - return S_OK; + hRet = S_OK; + goto VarOr_Exit; } if (V_VT(pVarLeft) == VT_UI1 && V_VT(pVarRight) == VT_UI1) { V_VT(pVarOut) = VT_UI1; V_UI1(pVarOut) = V_UI1(pVarLeft) | V_UI1(pVarRight); - return S_OK; + hRet = S_OK; + goto VarOr_Exit; } if (V_VT(pVarLeft) == VT_BSTR) @@ -3530,7 +4178,10 @@ VarOr_AsEmpty: else if (V_VT(pVarLeft) == VT_I8 || V_VT(pVarRight) == VT_I8) { if (V_VT(pVarLeft) == VT_INT || V_VT(pVarRight) == VT_INT) - return DISP_E_TYPEMISMATCH; + { + hRet = DISP_E_TYPEMISMATCH; + goto VarOr_Exit; + } vt = VT_I8; } @@ -3590,6 +4241,8 @@ VarOr_Exit: VariantClear(&varStr); VariantClear(&varLeft); VariantClear(&varRight); + VariantClear(&tempLeft); + VariantClear(&tempRight); return hRet; } @@ -3867,6 +4520,7 @@ HRESULT WINAPI VarXor(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut { VARTYPE vt; VARIANT varLeft, varRight; + VARIANT tempLeft, tempRight; double d; HRESULT hRet; @@ -3889,6 +4543,23 @@ HRESULT WINAPI VarXor(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut return S_OK; } + VariantInit(&tempLeft); + VariantInit(&tempRight); + + /* Handle VT_DISPATCH by storing and taking address of returned value */ + if ((V_VT(pVarLeft) & VT_TYPEMASK) == VT_DISPATCH) + { + hRet = VARIANT_FetchDispatchValue(pVarLeft, &tempLeft); + if (FAILED(hRet)) goto VarXor_Exit; + pVarLeft = &tempLeft; + } + if ((V_VT(pVarRight) & VT_TYPEMASK) == VT_DISPATCH) + { + hRet = VARIANT_FetchDispatchValue(pVarRight, &tempRight); + if (FAILED(hRet)) goto VarXor_Exit; + pVarRight = &tempRight; + } + /* Copy our inputs so we don't disturb anything */ V_VT(&varLeft) = V_VT(&varRight) = VT_EMPTY; @@ -3923,7 +4594,10 @@ HRESULT WINAPI VarXor(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut if (V_VT(&varLeft) == VT_I8 || V_VT(&varRight) == VT_I8) { if (V_VT(pVarLeft) == VT_INT || V_VT(pVarRight) == VT_INT) - return DISP_E_TYPEMISMATCH; + { + hRet = DISP_E_TYPEMISMATCH; + goto VarXor_Exit; + } vt = VT_I8; } else @@ -4001,6 +4675,8 @@ HRESULT WINAPI VarXor(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut VarXor_Exit: VariantClear(&varLeft); VariantClear(&varRight); + VariantClear(&tempLeft); + VariantClear(&tempRight); return hRet; } @@ -4402,7 +5078,7 @@ HRESULT WINAPI VarRound(LPVARIANT pVarIn, int deci, LPVARIANT pVarOut) if (FAILED(hRet)) V_VT(pVarOut) = VT_EMPTY; - TRACE("returning 0x%08lx (%s%s),%f\n", hRet, debugstr_VT(pVarOut), + TRACE("returning 0x%08x (%s%s),%f\n", hRet, debugstr_VT(pVarOut), debugstr_VF(pVarOut), (V_VT(pVarOut) == VT_R4) ? V_R4(pVarOut) : (V_VT(pVarOut) == VT_R8) ? V_R8(pVarOut) : 0); @@ -4428,33 +5104,138 @@ HRESULT WINAPI VarRound(LPVARIANT pVarIn, int deci, LPVARIANT pVarOut) */ HRESULT WINAPI VarIdiv(LPVARIANT left, LPVARIANT right, LPVARIANT result) { - VARIANT lv, rv; - HRESULT hr; - + HRESULT hres = S_OK; + VARTYPE resvt = VT_EMPTY; + VARTYPE leftvt,rightvt; + VARTYPE rightExtraFlags,leftExtraFlags,ExtraFlags; + VARIANT lv,rv; + VARIANT tempLeft, tempRight; + + TRACE("(%p->(%s%s),%p->(%s%s),%p)\n", left, debugstr_VT(left), + debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right), result); + VariantInit(&lv); VariantInit(&rv); + VariantInit(&tempLeft); + VariantInit(&tempRight); - if ((V_VT(left) == VT_NULL) || (V_VT(right) == VT_NULL)) { - hr = VariantChangeType(result, result, 0, VT_NULL); - if (FAILED(hr)) { - /* This should never happen */ - FIXME("Failed to convert return value to VT_NULL.\n"); - return hr; - } - return S_OK; + leftvt = V_VT(left)&VT_TYPEMASK; + rightvt = V_VT(right)&VT_TYPEMASK; + leftExtraFlags = V_VT(left)&(~VT_TYPEMASK); + rightExtraFlags = V_VT(right)&(~VT_TYPEMASK); + + if (leftExtraFlags != rightExtraFlags) + { + hres = DISP_E_BADVARTYPE; + goto end; + } + ExtraFlags = leftExtraFlags; + + /* Native VarIdiv always returns a error when using any extra + * flags or if the variant combination is I8 and INT. + */ + if ((leftvt == VT_I8 && rightvt == VT_INT) || + (leftvt == VT_INT && rightvt == VT_I8) || + (rightvt == VT_EMPTY && leftvt != VT_NULL) || + ExtraFlags != 0) + { + hres = DISP_E_BADVARTYPE; + goto end; } - hr = VariantChangeType(&lv, left, 0, VT_I4); - if (FAILED(hr)) { - return hr; + /* Determine variant type */ + else if (leftvt == VT_NULL || rightvt == VT_NULL) + { + V_VT(result) = VT_NULL; + hres = S_OK; + goto end; } - hr = VariantChangeType(&rv, right, 0, VT_I4); - if (FAILED(hr)) { - return hr; + else if (leftvt == VT_I8 || rightvt == VT_I8) + resvt = VT_I8; + else if (leftvt == VT_I4 || rightvt == VT_I4 || + leftvt == VT_INT || rightvt == VT_INT || + leftvt == VT_UINT || rightvt == VT_UINT || + leftvt == VT_UI8 || rightvt == VT_UI8 || + leftvt == VT_UI4 || rightvt == VT_UI4 || + leftvt == VT_UI2 || rightvt == VT_UI2 || + leftvt == VT_I1 || rightvt == VT_I1 || + leftvt == VT_BSTR || rightvt == VT_BSTR || + leftvt == VT_DATE || rightvt == VT_DATE || + leftvt == VT_CY || rightvt == VT_CY || + leftvt == VT_DECIMAL || rightvt == VT_DECIMAL || + leftvt == VT_R8 || rightvt == VT_R8 || + leftvt == VT_R4 || rightvt == VT_R4) + resvt = VT_I4; + else if (leftvt == VT_I2 || rightvt == VT_I2 || + leftvt == VT_BOOL || rightvt == VT_BOOL || + leftvt == VT_EMPTY) + resvt = VT_I2; + else if (leftvt == VT_UI1 || rightvt == VT_UI1) + resvt = VT_UI1; + else + { + hres = DISP_E_BADVARTYPE; + goto end; } - hr = VarDiv(&lv, &rv, result); - return hr; + /* coerce to the result type */ + hres = VariantChangeType(&lv, left, 0, resvt); + if (hres != S_OK) goto end; + hres = VariantChangeType(&rv, right, 0, resvt); + if (hres != S_OK) goto end; + + /* do the math */ + V_VT(result) = resvt; + switch (resvt) + { + case VT_UI1: + if (V_UI1(&rv) == 0) + { + hres = DISP_E_DIVBYZERO; + V_VT(result) = VT_EMPTY; + } + else + V_UI1(result) = V_UI1(&lv) / V_UI1(&rv); + break; + case VT_I2: + if (V_I2(&rv) == 0) + { + hres = DISP_E_DIVBYZERO; + V_VT(result) = VT_EMPTY; + } + else + V_I2(result) = V_I2(&lv) / V_I2(&rv); + break; + case VT_I4: + if (V_I4(&rv) == 0) + { + hres = DISP_E_DIVBYZERO; + V_VT(result) = VT_EMPTY; + } + else + V_I4(result) = V_I4(&lv) / V_I4(&rv); + break; + case VT_I8: + if (V_I8(&rv) == 0) + { + hres = DISP_E_DIVBYZERO; + V_VT(result) = VT_EMPTY; + } + else + V_I8(result) = V_I8(&lv) / V_I8(&rv); + break; + default: + FIXME("Couldn't integer divide variant types %d,%d\n", + leftvt,rightvt); + } + +end: + VariantClear(&lv); + VariantClear(&rv); + VariantClear(&tempLeft); + VariantClear(&tempRight); + + return hres; } @@ -4483,13 +5264,30 @@ HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result) HRESULT rc = E_FAIL; int resT = 0; VARIANT lv,rv; + VARIANT tempLeft, tempRight; + VariantInit(&tempLeft); + VariantInit(&tempRight); VariantInit(&lv); VariantInit(&rv); TRACE("(%p->(%s%s),%p->(%s%s),%p)\n", left, debugstr_VT(left), debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right), result); + /* Handle VT_DISPATCH by storing and taking address of returned value */ + if ((V_VT(left) & VT_TYPEMASK) == VT_DISPATCH) + { + rc = VARIANT_FetchDispatchValue(left, &tempLeft); + if (FAILED(rc)) goto end; + left = &tempLeft; + } + if ((V_VT(right) & VT_TYPEMASK) == VT_DISPATCH) + { + rc = VARIANT_FetchDispatchValue(right, &tempRight); + if (FAILED(rc)) goto end; + right = &tempRight; + } + /* check for invalid inputs */ lOk = TRUE; switch (V_VT(left) & VT_TYPEMASK) { @@ -4510,24 +5308,26 @@ HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result) case VT_EMPTY: case VT_DATE : case VT_BSTR : + case VT_DECIMAL: break; case VT_VARIANT: case VT_UNKNOWN: V_VT(result) = VT_EMPTY; - return DISP_E_TYPEMISMATCH; - case VT_DECIMAL: - V_VT(result) = VT_EMPTY; - return DISP_E_OVERFLOW; + rc = DISP_E_TYPEMISMATCH; + goto end; case VT_ERROR: - return DISP_E_TYPEMISMATCH; + rc = DISP_E_TYPEMISMATCH; + goto end; case VT_RECORD: V_VT(result) = VT_EMPTY; - return DISP_E_TYPEMISMATCH; + rc = DISP_E_TYPEMISMATCH; + goto end; case VT_NULL: break; default: V_VT(result) = VT_EMPTY; - return DISP_E_BADVARTYPE; + rc = DISP_E_BADVARTYPE; + goto end; } @@ -4541,13 +5341,15 @@ HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result) if((V_VT(left) == VT_INT) && (V_VT(right) == VT_I8)) { V_VT(result) = VT_EMPTY; - return DISP_E_TYPEMISMATCH; + rc = DISP_E_TYPEMISMATCH; + goto end; } case VT_INT : if((V_VT(right) == VT_INT) && (V_VT(left) == VT_I8)) { V_VT(result) = VT_EMPTY; - return DISP_E_TYPEMISMATCH; + rc = DISP_E_TYPEMISMATCH; + goto end; } case VT_UI1 : case VT_UI2 : @@ -4560,65 +5362,70 @@ HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result) if(V_VT(left) == VT_EMPTY) { V_VT(result) = VT_I4; - return S_OK; + rc = S_OK; + goto end; } case VT_EMPTY: case VT_DATE : + case VT_DECIMAL: + if(V_VT(left) == VT_ERROR) + { + V_VT(result) = VT_EMPTY; + rc = DISP_E_TYPEMISMATCH; + goto end; + } case VT_BSTR: if(V_VT(left) == VT_NULL) { V_VT(result) = VT_NULL; - return S_OK; + rc = S_OK; + goto end; } break; case VT_VOID: V_VT(result) = VT_EMPTY; - return DISP_E_BADVARTYPE; + rc = DISP_E_BADVARTYPE; + goto end; case VT_NULL: if(V_VT(left) == VT_VOID) { V_VT(result) = VT_EMPTY; - return DISP_E_BADVARTYPE; + rc = DISP_E_BADVARTYPE; } else if((V_VT(left) == VT_NULL) || (V_VT(left) == VT_EMPTY) || (V_VT(left) == VT_ERROR) || lOk) { V_VT(result) = VT_NULL; - return S_OK; + rc = S_OK; } else { V_VT(result) = VT_NULL; - return DISP_E_BADVARTYPE; + rc = DISP_E_BADVARTYPE; } + goto end; case VT_VARIANT: case VT_UNKNOWN: V_VT(result) = VT_EMPTY; - return DISP_E_TYPEMISMATCH; - case VT_DECIMAL: - if(V_VT(left) == VT_ERROR) - { - V_VT(result) = VT_EMPTY; - return DISP_E_TYPEMISMATCH; - } else - { - V_VT(result) = VT_EMPTY; - return DISP_E_OVERFLOW; - } + rc = DISP_E_TYPEMISMATCH; + goto end; case VT_ERROR: - return DISP_E_TYPEMISMATCH; + rc = DISP_E_TYPEMISMATCH; + goto end; case VT_RECORD: if((V_VT(left) == 15) || ((V_VT(left) >= 24) && (V_VT(left) <= 35)) || !lOk) { V_VT(result) = VT_EMPTY; - return DISP_E_BADVARTYPE; + rc = DISP_E_BADVARTYPE; } else { V_VT(result) = VT_EMPTY; - return DISP_E_TYPEMISMATCH; + rc = DISP_E_TYPEMISMATCH; } + goto end; default: V_VT(result) = VT_EMPTY; - return DISP_E_BADVARTYPE; + rc = DISP_E_BADVARTYPE; + goto end; } /* determine the result type */ @@ -4638,22 +5445,23 @@ HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result) rc = VariantChangeType(&lv, left, 0, VT_I8); if(FAILED(rc)) { - FIXME("Could not convert left type %d to %d? rc == 0x%lX\n", V_VT(left), VT_I8, rc); - return rc; + FIXME("Could not convert left type %d to %d? rc == 0x%X\n", V_VT(left), VT_I8, rc); + goto end; } rc = VariantChangeType(&rv, right, 0, VT_I8); if(FAILED(rc)) { - FIXME("Could not convert right type %d to %d? rc == 0x%lX\n", V_VT(right), VT_I8, rc); - return rc; + FIXME("Could not convert right type %d to %d? rc == 0x%X\n", V_VT(right), VT_I8, rc); + goto end; } /* if right is zero set VT_EMPTY and return divide by zero */ if(V_I8(&rv) == 0) { V_VT(result) = VT_EMPTY; - return DISP_E_DIVBYZERO; + rc = DISP_E_DIVBYZERO; + goto end; } /* perform the modulo operation */ @@ -4667,10 +5475,15 @@ HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result) if(FAILED(rc)) { FIXME("Could not convert 0x%x to %d?\n", V_VT(result), resT); - return rc; + /* fall to end of function */ } - return S_OK; +end: + VariantClear(&lv); + VariantClear(&rv); + VariantClear(&tempLeft); + VariantClear(&tempRight); + return rc; } /********************************************************************** @@ -4689,23 +5502,354 @@ HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result) */ HRESULT WINAPI VarPow(LPVARIANT left, LPVARIANT right, LPVARIANT result) { - HRESULT hr; + HRESULT hr = S_OK; VARIANT dl,dr; + VARTYPE resvt = VT_EMPTY; + VARTYPE leftvt,rightvt; + VARTYPE rightExtraFlags,leftExtraFlags,ExtraFlags; + VARIANT tempLeft, tempRight; TRACE("(%p->(%s%s),%p->(%s%s),%p)\n", left, debugstr_VT(left), debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right), result); - hr = VariantChangeType(&dl,left,0,VT_R8); + VariantInit(&dl); + VariantInit(&dr); + VariantInit(&tempLeft); + VariantInit(&tempRight); + + /* Handle VT_DISPATCH by storing and taking address of returned value */ + if ((V_VT(left) & VT_TYPEMASK) == VT_DISPATCH) + { + hr = VARIANT_FetchDispatchValue(left, &tempLeft); + if (FAILED(hr)) goto end; + left = &tempLeft; + } + if ((V_VT(right) & VT_TYPEMASK) == VT_DISPATCH) + { + hr = VARIANT_FetchDispatchValue(right, &tempRight); + if (FAILED(hr)) goto end; + right = &tempRight; + } + + leftvt = V_VT(left)&VT_TYPEMASK; + rightvt = V_VT(right)&VT_TYPEMASK; + leftExtraFlags = V_VT(left)&(~VT_TYPEMASK); + rightExtraFlags = V_VT(right)&(~VT_TYPEMASK); + + if (leftExtraFlags != rightExtraFlags) + { + hr = DISP_E_BADVARTYPE; + goto end; + } + ExtraFlags = leftExtraFlags; + + /* Native VarPow always returns a error when using any extra flags */ + if (ExtraFlags != 0) + { + hr = DISP_E_BADVARTYPE; + goto end; + } + + /* Determine return type */ + else if (leftvt == VT_NULL || rightvt == VT_NULL) { + V_VT(result) = VT_NULL; + hr = S_OK; + goto end; + } + else if ((leftvt == VT_EMPTY || leftvt == VT_I2 || + leftvt == VT_I4 || leftvt == VT_R4 || + leftvt == VT_R8 || leftvt == VT_CY || + leftvt == VT_DATE || leftvt == VT_BSTR || + leftvt == VT_BOOL || leftvt == VT_DECIMAL || + (leftvt >= VT_I1 && leftvt <= VT_UINT)) && + (rightvt == VT_EMPTY || rightvt == VT_I2 || + rightvt == VT_I4 || rightvt == VT_R4 || + rightvt == VT_R8 || rightvt == VT_CY || + rightvt == VT_DATE || rightvt == VT_BSTR || + rightvt == VT_BOOL || rightvt == VT_DECIMAL || + (rightvt >= VT_I1 && rightvt <= VT_UINT))) + resvt = VT_R8; + else + { + hr = DISP_E_BADVARTYPE; + goto end; + } + + hr = VariantChangeType(&dl,left,0,resvt); if (!SUCCEEDED(hr)) { ERR("Could not change passed left argument to VT_R8, handle it differently.\n"); - return E_FAIL; + hr = E_FAIL; + goto end; } - hr = VariantChangeType(&dr,right,0,VT_R8); + + hr = VariantChangeType(&dr,right,0,resvt); if (!SUCCEEDED(hr)) { ERR("Could not change passed right argument to VT_R8, handle it differently.\n"); - return E_FAIL; + hr = E_FAIL; + goto end; } + V_VT(result) = VT_R8; V_R8(result) = pow(V_R8(&dl),V_R8(&dr)); - return S_OK; + +end: + VariantClear(&dl); + VariantClear(&dr); + VariantClear(&tempLeft); + VariantClear(&tempRight); + + return hr; +} + +/********************************************************************** + * VarImp [OLEAUT32.154] + * + * Bitwise implication of two variants. + * + * PARAMS + * left [I] First variant + * right [I] Second variant + * result [O] Result variant + * + * RETURNS + * Success: S_OK. + * Failure: An HRESULT error code indicating the error. + */ +HRESULT WINAPI VarImp(LPVARIANT left, LPVARIANT right, LPVARIANT result) +{ + HRESULT hres = S_OK; + VARTYPE resvt = VT_EMPTY; + VARTYPE leftvt,rightvt; + VARTYPE rightExtraFlags,leftExtraFlags,ExtraFlags; + VARIANT lv,rv; + double d; + VARIANT tempLeft, tempRight; + + VariantInit(&lv); + VariantInit(&rv); + VariantInit(&tempLeft); + VariantInit(&tempRight); + + TRACE("(%p->(%s%s),%p->(%s%s),%p)\n", left, debugstr_VT(left), + debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right), result); + + /* Handle VT_DISPATCH by storing and taking address of returned value */ + if ((V_VT(left) & VT_TYPEMASK) == VT_DISPATCH) + { + hres = VARIANT_FetchDispatchValue(left, &tempLeft); + if (FAILED(hres)) goto VarImp_Exit; + left = &tempLeft; + } + if ((V_VT(right) & VT_TYPEMASK) == VT_DISPATCH) + { + hres = VARIANT_FetchDispatchValue(right, &tempRight); + if (FAILED(hres)) goto VarImp_Exit; + right = &tempRight; + } + + leftvt = V_VT(left)&VT_TYPEMASK; + rightvt = V_VT(right)&VT_TYPEMASK; + leftExtraFlags = V_VT(left)&(~VT_TYPEMASK); + rightExtraFlags = V_VT(right)&(~VT_TYPEMASK); + + if (leftExtraFlags != rightExtraFlags) + { + hres = DISP_E_BADVARTYPE; + goto VarImp_Exit; + } + ExtraFlags = leftExtraFlags; + + /* Native VarImp always returns a error when using any extra + * flags or if the variants are I8 and INT. + */ + if ((leftvt == VT_I8 && rightvt == VT_INT) || + ExtraFlags != 0) + { + hres = DISP_E_BADVARTYPE; + goto VarImp_Exit; + } + + /* Determine result type */ + else if ((leftvt == VT_NULL && rightvt == VT_NULL) || + (leftvt == VT_NULL && rightvt == VT_EMPTY)) + { + V_VT(result) = VT_NULL; + hres = S_OK; + goto VarImp_Exit; + } + else if (leftvt == VT_I8 || rightvt == VT_I8) + resvt = VT_I8; + else if (leftvt == VT_I4 || rightvt == VT_I4 || + leftvt == VT_INT || rightvt == VT_INT || + leftvt == VT_UINT || rightvt == VT_UINT || + leftvt == VT_UI4 || rightvt == VT_UI4 || + leftvt == VT_UI8 || rightvt == VT_UI8 || + leftvt == VT_UI2 || rightvt == VT_UI2 || + leftvt == VT_DECIMAL || rightvt == VT_DECIMAL || + leftvt == VT_DATE || rightvt == VT_DATE || + leftvt == VT_CY || rightvt == VT_CY || + leftvt == VT_R8 || rightvt == VT_R8 || + leftvt == VT_R4 || rightvt == VT_R4 || + leftvt == VT_I1 || rightvt == VT_I1) + resvt = VT_I4; + else if ((leftvt == VT_UI1 && rightvt == VT_UI1) || + (leftvt == VT_UI1 && rightvt == VT_NULL) || + (leftvt == VT_NULL && rightvt == VT_UI1)) + resvt = VT_UI1; + else if (leftvt == VT_EMPTY || rightvt == VT_EMPTY || + leftvt == VT_I2 || rightvt == VT_I2 || + leftvt == VT_UI1 || rightvt == VT_UI1) + resvt = VT_I2; + else if (leftvt == VT_BOOL || rightvt == VT_BOOL || + leftvt == VT_BSTR || rightvt == VT_BSTR) + resvt = VT_BOOL; + + /* VT_NULL requires special handling for when the opposite + * variant is equal to something other than -1. + * (NULL Imp 0 = NULL, NULL Imp n = n) + */ + if (leftvt == VT_NULL) + { + VARIANT_BOOL b; + switch(rightvt) + { + case VT_I1: if (!V_I1(right)) resvt = VT_NULL; break; + case VT_UI1: if (!V_UI1(right)) resvt = VT_NULL; break; + case VT_I2: if (!V_I2(right)) resvt = VT_NULL; break; + case VT_UI2: if (!V_UI2(right)) resvt = VT_NULL; break; + case VT_I4: if (!V_I4(right)) resvt = VT_NULL; break; + case VT_UI4: if (!V_UI4(right)) resvt = VT_NULL; break; + case VT_I8: if (!V_I8(right)) resvt = VT_NULL; break; + case VT_UI8: if (!V_UI8(right)) resvt = VT_NULL; break; + case VT_INT: if (!V_INT(right)) resvt = VT_NULL; break; + case VT_UINT: if (!V_UINT(right)) resvt = VT_NULL; break; + case VT_BOOL: if (!V_BOOL(right)) resvt = VT_NULL; break; + case VT_R4: if (!V_R4(right)) resvt = VT_NULL; break; + case VT_R8: if (!V_R8(right)) resvt = VT_NULL; break; + case VT_DATE: if (!V_DATE(right)) resvt = VT_NULL; break; + case VT_CY: if (!V_CY(right).int64) resvt = VT_NULL; break; + case VT_DECIMAL: + if (!(DEC_HI32(&V_DECIMAL(right)) || DEC_LO64(&V_DECIMAL(right)))) + resvt = VT_NULL; + break; + case VT_BSTR: + hres = VarBoolFromStr(V_BSTR(right),LOCALE_USER_DEFAULT, VAR_LOCALBOOL, &b); + if (FAILED(hres)) goto VarImp_Exit; + else if (!b) + V_VT(result) = VT_NULL; + else + { + V_VT(result) = VT_BOOL; + V_BOOL(result) = b; + } + goto VarImp_Exit; + } + if (resvt == VT_NULL) + { + V_VT(result) = resvt; + goto VarImp_Exit; + } + else + { + hres = VariantChangeType(result,right,0,resvt); + goto VarImp_Exit; + } + } + + /* Special handling is required when NULL is the right variant. + * (-1 Imp NULL = NULL, n Imp NULL = n Imp 0) + */ + else if (rightvt == VT_NULL) + { + VARIANT_BOOL b; + switch(leftvt) + { + case VT_I1: if (V_I1(left) == -1) resvt = VT_NULL; break; + case VT_UI1: if (V_UI1(left) == 0xff) resvt = VT_NULL; break; + case VT_I2: if (V_I2(left) == -1) resvt = VT_NULL; break; + case VT_UI2: if (V_UI2(left) == 0xffff) resvt = VT_NULL; break; + case VT_INT: if (V_INT(left) == -1) resvt = VT_NULL; break; + case VT_UINT: if (V_UINT(left) == ~0u) resvt = VT_NULL; break; + case VT_I4: if (V_I4(left) == -1) resvt = VT_NULL; break; + case VT_UI4: if (V_UI4(left) == ~0u) resvt = VT_NULL; break; + case VT_I8: if (V_I8(left) == -1) resvt = VT_NULL; break; + case VT_UI8: if (V_UI8(left) == ~(ULONGLONG)0) resvt = VT_NULL; break; + case VT_BOOL: if (V_BOOL(left) == VARIANT_TRUE) resvt = VT_NULL; break; + case VT_R4: if (V_R4(left) == -1.0) resvt = VT_NULL; break; + case VT_R8: if (V_R8(left) == -1.0) resvt = VT_NULL; break; + case VT_CY: if (V_CY(left).int64 == -1) resvt = VT_NULL; break; + case VT_DECIMAL: + if (DEC_HI32(&V_DECIMAL(left)) == 0xffffffff) + resvt = VT_NULL; + break; + case VT_BSTR: + hres = VarBoolFromStr(V_BSTR(left),LOCALE_USER_DEFAULT, VAR_LOCALBOOL, &b); + if (FAILED(hres)) goto VarImp_Exit; + else if (b == VARIANT_TRUE) + resvt = VT_NULL; + } + if (resvt == VT_NULL) + { + V_VT(result) = resvt; + goto VarImp_Exit; + } + } + + hres = VariantCopy(&lv, left); + if (FAILED(hres)) goto VarImp_Exit; + + if (rightvt == VT_NULL) + V_VT(&rv) = resvt; + else + { + hres = VariantCopy(&rv, right); + if (FAILED(hres)) goto VarImp_Exit; + } + + if (V_VT(&lv) == VT_BSTR && + FAILED(VarR8FromStr(V_BSTR(&lv),LOCALE_USER_DEFAULT, 0, &d))) + hres = VariantChangeType(&lv,&lv,VARIANT_LOCALBOOL, VT_BOOL); + if (SUCCEEDED(hres) && V_VT(&lv) != resvt) + hres = VariantChangeType(&lv,&lv,0,resvt); + if (FAILED(hres)) goto VarImp_Exit; + + if (V_VT(&rv) == VT_BSTR && + FAILED(VarR8FromStr(V_BSTR(&rv),LOCALE_USER_DEFAULT, 0, &d))) + hres = VariantChangeType(&rv, &rv,VARIANT_LOCALBOOL, VT_BOOL); + if (SUCCEEDED(hres) && V_VT(&rv) != resvt) + hres = VariantChangeType(&rv, &rv, 0, resvt); + if (FAILED(hres)) goto VarImp_Exit; + + /* do the math */ + V_VT(result) = resvt; + switch (resvt) + { + case VT_I8: + V_I8(result) = (~V_I8(&lv)) | V_I8(&rv); + break; + case VT_I4: + V_I4(result) = (~V_I4(&lv)) | V_I4(&rv); + break; + case VT_I2: + V_I2(result) = (~V_I2(&lv)) | V_I2(&rv); + break; + case VT_UI1: + V_UI1(result) = (~V_UI1(&lv)) | V_UI1(&rv); + break; + case VT_BOOL: + V_BOOL(result) = (~V_BOOL(&lv)) | V_BOOL(&rv); + break; + default: + FIXME("Couldn't perform bitwise implication on variant types %d,%d\n", + leftvt,rightvt); + } + +VarImp_Exit: + + VariantClear(&lv); + VariantClear(&rv); + VariantClear(&tempLeft); + VariantClear(&tempRight); + + return hres; } diff --git a/reactos/dll/win32/oleaut32/variant.h b/reactos/dll/win32/oleaut32/variant.h index c4e119ff0f1..41f8a9af6ee 100644 --- a/reactos/dll/win32/oleaut32/variant.h +++ b/reactos/dll/win32/oleaut32/variant.h @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #define NONAMELESSUNION #define NONAMELESSSTRUCT @@ -48,12 +48,12 @@ #define VTBIT_VARIANT (1 << VT_VARIANT) #define VTBIT_15 (1 << 15) /* no variant type with this number */ -extern const char* wine_vtypes[]; +extern const char * const wine_vtypes[]; #define debugstr_vt(v) (((v)&VT_TYPEMASK) <= VT_CLSID ? wine_vtypes[((v)&VT_TYPEMASK)] : \ ((v)&VT_TYPEMASK) == VT_BSTR_BLOB ? "VT_BSTR_BLOB": "Invalid") #define debugstr_VT(v) (!(v) ? "(null)" : debugstr_vt(V_TYPE((v)))) -extern const char* wine_vflags[]; +extern const char * const wine_vflags[]; #define debugstr_vf(v) (wine_vflags[((v)&VT_EXTRA_TYPE)>>12]) #define debugstr_VF(v) (!(v) ? "(null)" : debugstr_vf(V_EXTRA_TYPE(v))) @@ -96,13 +96,13 @@ extern const char* wine_vflags[]; #endif /* Macros for getting at a DECIMAL's parts */ -#define DEC_SIGN(d) ((d)->sign) -#define DEC_SCALE(d) ((d)->scale) -#define DEC_SIGNSCALE(d) ((d)->signscale) +#define DEC_SIGN(d) ((d)->u.s.sign) +#define DEC_SCALE(d) ((d)->u.s.scale) +#define DEC_SIGNSCALE(d) ((d)->u.signscale) #define DEC_HI32(d) ((d)->Hi32) -#define DEC_MID32(d) ((d)->Mid32) -#define DEC_LO32(d) ((d)->Lo32) -#define DEC_LO64(d) ((d)->Lo64) +#define DEC_MID32(d) ((d)->u1.s1.Mid32) +#define DEC_LO32(d) ((d)->u1.s1.Lo32) +#define DEC_LO64(d) ((d)->u1.Lo64) #define DEC_MAX_SCALE 28 /* Maximum scale for a decimal */ @@ -117,11 +117,9 @@ typedef struct tagVARIANT_NUMBER_CHARS WCHAR cNegativeSymbol; WCHAR cPositiveSymbol; WCHAR cDecimalPoint; - WCHAR cDigitSeperator; + WCHAR cDigitSeparator; WCHAR cCurrencyLocal; WCHAR cCurrencyLocal2; WCHAR cCurrencyDecimalPoint; - WCHAR cCurrencyDigitSeperator; + WCHAR cCurrencyDigitSeparator; } VARIANT_NUMBER_CHARS; - -void VARIANT_GetLocalisedNumberChars(VARIANT_NUMBER_CHARS*,LCID,DWORD); diff --git a/reactos/dll/win32/oleaut32/vartype.c b/reactos/dll/win32/oleaut32/vartype.c index 5c5ec0c7f96..fd4e56e3973 100644 --- a/reactos/dll/win32/oleaut32/vartype.c +++ b/reactos/dll/win32/oleaut32/vartype.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #define COBJMACROS @@ -64,6 +64,7 @@ static inline void VARIANT_CopyData(const VARIANT *srcVar, VARTYPE vt, void *pOu case VT_UI8: memcpy(pOut, &V_UI8(srcVar), sizeof (LONG64)); break; case VT_INT_PTR: memcpy(pOut, &V_INT_PTR(srcVar), sizeof (INT_PTR)); break; case VT_DECIMAL: memcpy(pOut, &V_DECIMAL(srcVar), sizeof (DECIMAL)); break; + case VT_BSTR: memcpy(pOut, &V_BSTR(srcVar), sizeof(BSTR)); break; default: FIXME("VT_ type %d unhandled, please report!\n", vt); } @@ -113,7 +114,7 @@ static HRESULT VARIANT_NumberFromBstr(OLECHAR* pStrIn, LCID lcid, ULONG ulFlags, static HRESULT VARIANT_FromDisp(IDispatch* pdispIn, LCID lcid, void* pOut, VARTYPE vt, DWORD dwFlags) { - static const DISPPARAMS emptyParams = { NULL, NULL, 0, 0 }; + static DISPPARAMS emptyParams = { NULL, NULL, 0, 0 }; VARIANTARG srcVar, dstVar; HRESULT hRet; @@ -122,7 +123,7 @@ static HRESULT VARIANT_FromDisp(IDispatch* pdispIn, LCID lcid, void* pOut, /* Get the default 'value' property from the IDispatch */ hRet = IDispatch_Invoke(pdispIn, DISPID_VALUE, &IID_NULL, lcid, DISPATCH_PROPERTYGET, - (DISPPARAMS*)&emptyParams, &srcVar, NULL, NULL); + &emptyParams, &srcVar, NULL, NULL); if (SUCCEEDED(hRet)) { @@ -143,7 +144,7 @@ static HRESULT VARIANT_FromDisp(IDispatch* pdispIn, LCID lcid, void* pOut, } /* Inline return type */ -#define RETTYP inline static HRESULT +#define RETTYP static inline HRESULT /* Simple compiler cast from one type to another */ @@ -163,105 +164,103 @@ static HRESULT VARIANT_FromDisp(IDispatch* pdispIn, LCID lcid, void* pOut, if (in < (dest)lo || in > hi) return DISP_E_OVERFLOW; *out = in; return S_OK; } /* I1 */ -POSTST(signed char, BYTE, VarI1FromUI1, I1_MAX); -BOTHTST(signed char, SHORT, VarI1FromI2, I1_MIN, I1_MAX); -BOTHTST(signed char, LONG, VarI1FromI4, I1_MIN, I1_MAX); -SIMPLE(signed char, VARIANT_BOOL, VarI1FromBool); -POSTST(signed char, USHORT, VarI1FromUI2, I1_MAX); -POSTST(signed char, ULONG, VarI1FromUI4, I1_MAX); -BOTHTST(signed char, LONG64, VarI1FromI8, I1_MIN, I1_MAX); -POSTST(signed char, ULONG64, VarI1FromUI8, I1_MAX); +POSTST(signed char, BYTE, VarI1FromUI1, I1_MAX) +BOTHTST(signed char, SHORT, VarI1FromI2, I1_MIN, I1_MAX) +BOTHTST(signed char, LONG, VarI1FromI4, I1_MIN, I1_MAX) +SIMPLE(signed char, VARIANT_BOOL, VarI1FromBool) +POSTST(signed char, USHORT, VarI1FromUI2, I1_MAX) +POSTST(signed char, ULONG, VarI1FromUI4, I1_MAX) +BOTHTST(signed char, LONG64, VarI1FromI8, I1_MIN, I1_MAX) +POSTST(signed char, ULONG64, VarI1FromUI8, I1_MAX) /* UI1 */ -BOTHTST(BYTE, SHORT, VarUI1FromI2, UI1_MIN, UI1_MAX); -SIMPLE(BYTE, VARIANT_BOOL, VarUI1FromBool); -NEGTST(BYTE, signed char, VarUI1FromI1); -POSTST(BYTE, USHORT, VarUI1FromUI2, UI1_MAX); -BOTHTST(BYTE, LONG, VarUI1FromI4, UI1_MIN, UI1_MAX); -POSTST(BYTE, ULONG, VarUI1FromUI4, UI1_MAX); -BOTHTST(BYTE, LONG64, VarUI1FromI8, UI1_MIN, UI1_MAX); -POSTST(BYTE, ULONG64, VarUI1FromUI8, UI1_MAX); +BOTHTST(BYTE, SHORT, VarUI1FromI2, UI1_MIN, UI1_MAX) +SIMPLE(BYTE, VARIANT_BOOL, VarUI1FromBool) +NEGTST(BYTE, signed char, VarUI1FromI1) +POSTST(BYTE, USHORT, VarUI1FromUI2, UI1_MAX) +BOTHTST(BYTE, LONG, VarUI1FromI4, UI1_MIN, UI1_MAX) +POSTST(BYTE, ULONG, VarUI1FromUI4, UI1_MAX) +BOTHTST(BYTE, LONG64, VarUI1FromI8, UI1_MIN, UI1_MAX) +POSTST(BYTE, ULONG64, VarUI1FromUI8, UI1_MAX) /* I2 */ -SIMPLE(SHORT, BYTE, VarI2FromUI1); -BOTHTST(SHORT, LONG, VarI2FromI4, I2_MIN, I2_MAX); -SIMPLE(SHORT, VARIANT_BOOL, VarI2FromBool); -SIMPLE(SHORT, signed char, VarI2FromI1); -POSTST(SHORT, USHORT, VarI2FromUI2, I2_MAX); -POSTST(SHORT, ULONG, VarI2FromUI4, I2_MAX); -BOTHTST(SHORT, LONG64, VarI2FromI8, I2_MIN, I2_MAX); -POSTST(SHORT, ULONG64, VarI2FromUI8, I2_MAX); +SIMPLE(SHORT, BYTE, VarI2FromUI1) +BOTHTST(SHORT, LONG, VarI2FromI4, I2_MIN, I2_MAX) +SIMPLE(SHORT, VARIANT_BOOL, VarI2FromBool) +SIMPLE(SHORT, signed char, VarI2FromI1) +POSTST(SHORT, USHORT, VarI2FromUI2, I2_MAX) +POSTST(SHORT, ULONG, VarI2FromUI4, I2_MAX) +BOTHTST(SHORT, LONG64, VarI2FromI8, I2_MIN, I2_MAX) +POSTST(SHORT, ULONG64, VarI2FromUI8, I2_MAX) /* UI2 */ -SIMPLE(USHORT, BYTE, VarUI2FromUI1); -NEGTST(USHORT, SHORT, VarUI2FromI2); -BOTHTST(USHORT, LONG, VarUI2FromI4, UI2_MIN, UI2_MAX); -SIMPLE(USHORT, VARIANT_BOOL, VarUI2FromBool); -NEGTST(USHORT, signed char, VarUI2FromI1); -POSTST(USHORT, ULONG, VarUI2FromUI4, UI2_MAX); -BOTHTST(USHORT, LONG64, VarUI2FromI8, UI2_MIN, UI2_MAX); -POSTST(USHORT, ULONG64, VarUI2FromUI8, UI2_MAX); +SIMPLE(USHORT, BYTE, VarUI2FromUI1) +NEGTST(USHORT, SHORT, VarUI2FromI2) +BOTHTST(USHORT, LONG, VarUI2FromI4, UI2_MIN, UI2_MAX) +SIMPLE(USHORT, VARIANT_BOOL, VarUI2FromBool) +NEGTST(USHORT, signed char, VarUI2FromI1) +POSTST(USHORT, ULONG, VarUI2FromUI4, UI2_MAX) +BOTHTST(USHORT, LONG64, VarUI2FromI8, UI2_MIN, UI2_MAX) +POSTST(USHORT, ULONG64, VarUI2FromUI8, UI2_MAX) /* I4 */ -SIMPLE(LONG, BYTE, VarI4FromUI1); -SIMPLE(LONG, SHORT, VarI4FromI2); -SIMPLE(LONG, VARIANT_BOOL, VarI4FromBool); -SIMPLE(LONG, signed char, VarI4FromI1); -SIMPLE(LONG, USHORT, VarI4FromUI2); -POSTST(LONG, ULONG, VarI4FromUI4, I4_MAX); -BOTHTST(LONG, LONG64, VarI4FromI8, I4_MIN, I4_MAX); -POSTST(LONG, ULONG64, VarI4FromUI8, I4_MAX); +SIMPLE(LONG, BYTE, VarI4FromUI1) +SIMPLE(LONG, SHORT, VarI4FromI2) +SIMPLE(LONG, VARIANT_BOOL, VarI4FromBool) +SIMPLE(LONG, signed char, VarI4FromI1) +SIMPLE(LONG, USHORT, VarI4FromUI2) +POSTST(LONG, ULONG, VarI4FromUI4, I4_MAX) +BOTHTST(LONG, LONG64, VarI4FromI8, I4_MIN, I4_MAX) +POSTST(LONG, ULONG64, VarI4FromUI8, I4_MAX) /* UI4 */ -SIMPLE(ULONG, BYTE, VarUI4FromUI1); -NEGTST(ULONG, SHORT, VarUI4FromI2); -NEGTST(ULONG, LONG, VarUI4FromI4); -SIMPLE(ULONG, VARIANT_BOOL, VarUI4FromBool); -NEGTST(ULONG, signed char, VarUI4FromI1); -SIMPLE(ULONG, USHORT, VarUI4FromUI2); -BOTHTST(ULONG, LONG64, VarUI4FromI8, UI4_MIN, UI4_MAX); -POSTST(ULONG, ULONG64, VarUI4FromUI8, UI4_MAX); +SIMPLE(ULONG, BYTE, VarUI4FromUI1) +NEGTST(ULONG, SHORT, VarUI4FromI2) +NEGTST(ULONG, LONG, VarUI4FromI4) +SIMPLE(ULONG, VARIANT_BOOL, VarUI4FromBool) +NEGTST(ULONG, signed char, VarUI4FromI1) +SIMPLE(ULONG, USHORT, VarUI4FromUI2) +BOTHTST(ULONG, LONG64, VarUI4FromI8, UI4_MIN, UI4_MAX) +POSTST(ULONG, ULONG64, VarUI4FromUI8, UI4_MAX) /* I8 */ -SIMPLE(LONG64, BYTE, VarI8FromUI1); -SIMPLE(LONG64, SHORT, VarI8FromI2); -SIMPLE(LONG64, signed char, VarI8FromI1); -SIMPLE(LONG64, USHORT, VarI8FromUI2); -SIMPLE(LONG64, LONG, VarI8FromI4); -SIMPLE(LONG64, ULONG, VarI8FromUI4); -POSTST(LONG64, ULONG64, VarI8FromUI8, I8_MAX); +SIMPLE(LONG64, BYTE, VarI8FromUI1) +SIMPLE(LONG64, SHORT, VarI8FromI2) +SIMPLE(LONG64, signed char, VarI8FromI1) +SIMPLE(LONG64, USHORT, VarI8FromUI2) +SIMPLE(LONG64, ULONG, VarI8FromUI4) +POSTST(LONG64, ULONG64, VarI8FromUI8, I8_MAX) /* UI8 */ -SIMPLE(ULONG64, BYTE, VarUI8FromUI1); -NEGTST(ULONG64, SHORT, VarUI8FromI2); -NEGTST(ULONG64, signed char, VarUI8FromI1); -SIMPLE(ULONG64, USHORT, VarUI8FromUI2); -NEGTST(ULONG64, LONG, VarUI8FromI4); -SIMPLE(ULONG64, ULONG, VarUI8FromUI4); -NEGTST(ULONG64, LONG64, VarUI8FromI8); +SIMPLE(ULONG64, BYTE, VarUI8FromUI1) +NEGTST(ULONG64, SHORT, VarUI8FromI2) +NEGTST(ULONG64, signed char, VarUI8FromI1) +SIMPLE(ULONG64, USHORT, VarUI8FromUI2) +SIMPLE(ULONG64, ULONG, VarUI8FromUI4) +NEGTST(ULONG64, LONG64, VarUI8FromI8) /* R4 (float) */ -SIMPLE(float, BYTE, VarR4FromUI1); -SIMPLE(float, SHORT, VarR4FromI2); -SIMPLE(float, signed char, VarR4FromI1); -SIMPLE(float, USHORT, VarR4FromUI2); -SIMPLE(float, LONG, VarR4FromI4); -SIMPLE(float, ULONG, VarR4FromUI4); -SIMPLE(float, LONG64, VarR4FromI8); -SIMPLE(float, ULONG64, VarR4FromUI8); +SIMPLE(float, BYTE, VarR4FromUI1) +SIMPLE(float, SHORT, VarR4FromI2) +SIMPLE(float, signed char, VarR4FromI1) +SIMPLE(float, USHORT, VarR4FromUI2) +SIMPLE(float, LONG, VarR4FromI4) +SIMPLE(float, ULONG, VarR4FromUI4) +SIMPLE(float, LONG64, VarR4FromI8) +SIMPLE(float, ULONG64, VarR4FromUI8) /* R8 (double) */ -SIMPLE(double, BYTE, VarR8FromUI1); -SIMPLE(double, SHORT, VarR8FromI2); -SIMPLE(double, float, VarR8FromR4); +SIMPLE(double, BYTE, VarR8FromUI1) +SIMPLE(double, SHORT, VarR8FromI2) +SIMPLE(double, float, VarR8FromR4) RETTYP _VarR8FromCy(CY i, double* o) { *o = (double)i.int64 / CY_MULTIPLIER_F; return S_OK; } -SIMPLE(double, DATE, VarR8FromDate); -SIMPLE(double, signed char, VarR8FromI1); -SIMPLE(double, USHORT, VarR8FromUI2); -SIMPLE(double, LONG, VarR8FromI4); -SIMPLE(double, ULONG, VarR8FromUI4); -SIMPLE(double, LONG64, VarR8FromI8); -SIMPLE(double, ULONG64, VarR8FromUI8); +SIMPLE(double, DATE, VarR8FromDate) +SIMPLE(double, signed char, VarR8FromI1) +SIMPLE(double, USHORT, VarR8FromUI2) +SIMPLE(double, LONG, VarR8FromI4) +SIMPLE(double, ULONG, VarR8FromUI4) +SIMPLE(double, LONG64, VarR8FromI8) +SIMPLE(double, ULONG64, VarR8FromUI8) /* I1 @@ -4142,6 +4141,21 @@ HRESULT WINAPI VarDecFromI4(LONG lIn, DECIMAL* pDecOut) #define LOCALE_EN_US (MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),SORT_DEFAULT)) +/* internal representation of the value stored in a DECIMAL. The bytes are + stored from LSB at index 0 to MSB at index 11 + */ +typedef struct DECIMAL_internal +{ + DWORD bitsnum[3]; /* 96 significant bits, unsigned */ + unsigned char scale; /* number scaled * 10 ^ -(scale) */ + unsigned int sign : 1; /* 0 - positive, 1 - negative */ +} VARIANT_DI; + +static HRESULT VARIANT_DI_FromR4(float source, VARIANT_DI * dest); +static HRESULT VARIANT_DI_FromR8(double source, VARIANT_DI * dest); +static void VARIANT_DIFromDec(const DECIMAL * from, VARIANT_DI * to); +static void VARIANT_DecFromDI(VARIANT_DI * from, DECIMAL * to); + /************************************************************************ * VarDecFromR4 (OLEAUT32.193) * @@ -4156,10 +4170,12 @@ HRESULT WINAPI VarDecFromI4(LONG lIn, DECIMAL* pDecOut) */ HRESULT WINAPI VarDecFromR4(FLOAT fltIn, DECIMAL* pDecOut) { - WCHAR buff[256]; + VARIANT_DI di; + HRESULT hres; - sprintfW( buff, szFloatFormatW, fltIn ); - return VarDecFromStr(buff, LOCALE_EN_US, 0, pDecOut); + hres = VARIANT_DI_FromR4(fltIn, &di); + if (hres == S_OK) VARIANT_DecFromDI(&di, pDecOut); + return hres; } /************************************************************************ @@ -4176,10 +4192,12 @@ HRESULT WINAPI VarDecFromR4(FLOAT fltIn, DECIMAL* pDecOut) */ HRESULT WINAPI VarDecFromR8(double dblIn, DECIMAL* pDecOut) { - WCHAR buff[256]; + VARIANT_DI di; + HRESULT hres; - sprintfW( buff, szDoubleFormatW, dblIn ); - return VarDecFromStr(buff, LOCALE_EN_US, 0, pDecOut); + hres = VARIANT_DI_FromR8(dblIn, &di); + if (hres == S_OK) VARIANT_DecFromDI(&di, pDecOut); + return hres; } /************************************************************************ @@ -4595,16 +4613,6 @@ VarDecAdd_AsPositive: return hRet; } -/* internal representation of the value stored in a DECIMAL. The bytes are - stored from LSB at index 0 to MSB at index 11 - */ -typedef struct DECIMAL_internal -{ - DWORD bitsnum[3]; /* 96 significant bits, unsigned */ - unsigned char scale; /* number scaled * 10 ^ -(scale) */ - unsigned int sign : 1; /* 0 - positive, 1 - negative */ -} VARIANT_DI; - /* translate from external DECIMAL format into an internal representation */ static void VARIANT_DIFromDec(const DECIMAL * from, VARIANT_DI * to) { @@ -5189,6 +5197,284 @@ static HRESULT VARIANT_DI_div(VARIANT_DI * dividend, VARIANT_DI * divisor, VARIA return r_overflow; } +/* This procedure receives a VARIANT_DI with a defined mantissa and sign, but + with an undefined scale, which will be assigned to (if possible). It also + receives an exponent of 2. This procedure will then manipulate the mantissa + and calculate a corresponding scale, so that the exponent2 value is assimilated + into the VARIANT_DI and is therefore no longer necessary. Returns S_OK if + successful, or DISP_E_OVERFLOW if the represented value is too big to fit into + a DECIMAL. */ +static HRESULT VARIANT_DI_normalize(VARIANT_DI * val, int exponent2, int isDouble) +{ + HRESULT hres = S_OK; + int exponent5, exponent10; + + /* A factor of 2^exponent2 is equivalent to (10^exponent2)/(5^exponent2), and + thus equal to (5^-exponent2)*(10^exponent2). After all manipulations, + exponent10 might be used to set the VARIANT_DI scale directly. However, + the value of 5^-exponent5 must be assimilated into the VARIANT_DI. */ + exponent5 = -exponent2; + exponent10 = exponent2; + + /* Handle exponent5 > 0 */ + while (exponent5 > 0) { + char bPrevCarryBit; + char bCurrCarryBit; + + /* In order to multiply the value represented by the VARIANT_DI by 5, it + is best to multiply by 10/2. Therefore, exponent10 is incremented, and + somehow the mantissa should be divided by 2. */ + if ((val->bitsnum[0] & 1) == 0) { + /* The mantissa is divisible by 2. Therefore the division can be done + without losing significant digits. */ + exponent10++; exponent5--; + + /* Shift right */ + bPrevCarryBit = val->bitsnum[2] & 1; + val->bitsnum[2] >>= 1; + bCurrCarryBit = val->bitsnum[1] & 1; + val->bitsnum[1] = (val->bitsnum[1] >> 1) | (bPrevCarryBit ? 0x80000000 : 0); + val->bitsnum[0] = (val->bitsnum[0] >> 1) | (bCurrCarryBit ? 0x80000000 : 0); + } else { + /* The mantissa is NOT divisible by 2. Therefore the mantissa should + be multiplied by 5, unless the multiplication overflows. */ + DWORD temp_bitsnum[3]; + + exponent5--; + + memcpy(temp_bitsnum, val->bitsnum, 3 * sizeof(DWORD)); + if (0 == VARIANT_int_mulbychar(temp_bitsnum, 3, 5)) { + /* Multiplication succeeded without overflow, so copy result back + into VARIANT_DI */ + memcpy(val->bitsnum, temp_bitsnum, 3 * sizeof(DWORD)); + + /* Mask out 3 extraneous bits introduced by the multiply */ + } else { + /* Multiplication by 5 overflows. The mantissa should be divided + by 2, and therefore will lose significant digits. */ + exponent10++; + + /* Shift right */ + bPrevCarryBit = val->bitsnum[2] & 1; + val->bitsnum[2] >>= 1; + bCurrCarryBit = val->bitsnum[1] & 1; + val->bitsnum[1] = (val->bitsnum[1] >> 1) | (bPrevCarryBit ? 0x80000000 : 0); + val->bitsnum[0] = (val->bitsnum[0] >> 1) | (bCurrCarryBit ? 0x80000000 : 0); + } + } + } + + /* Handle exponent5 < 0 */ + while (exponent5 < 0) { + /* In order to divide the value represented by the VARIANT_DI by 5, it + is best to multiply by 2/10. Therefore, exponent10 is decremented, + and the mantissa should be multiplied by 2 */ + if ((val->bitsnum[2] & 0x80000000) == 0) { + /* The mantissa can withstand a shift-left without overflowing */ + exponent10--; exponent5++; + VARIANT_int_shiftleft(val->bitsnum, 3, 1); + } else { + /* The mantissa would overflow if shifted. Therefore it should be + directly divided by 5. This will lose significant digits, unless + by chance the mantissa happens to be divisible by 5 */ + exponent5++; + VARIANT_int_divbychar(val->bitsnum, 3, 5); + } + } + + /* At this point, the mantissa has assimilated the exponent5, but the + exponent10 might not be suitable for assignment. The exponent10 must be + in the range [-DEC_MAX_SCALE..0], so the mantissa must be scaled up or + down appropriately. */ + while (hres == S_OK && exponent10 > 0) { + /* In order to bring exponent10 down to 0, the mantissa should be + multiplied by 10 to compensate. If the exponent10 is too big, this + will cause the mantissa to overflow. */ + if (0 == VARIANT_int_mulbychar(val->bitsnum, 3, 10)) { + exponent10--; + } else { + hres = DISP_E_OVERFLOW; + } + } + while (exponent10 < -DEC_MAX_SCALE) { + int rem10; + /* In order to bring exponent up to -DEC_MAX_SCALE, the mantissa should + be divided by 10 to compensate. If the exponent10 is too small, this + will cause the mantissa to underflow and become 0 */ + rem10 = VARIANT_int_divbychar(val->bitsnum, 3, 10); + exponent10++; + if (VARIANT_int_iszero(val->bitsnum, 3)) { + /* Underflow, unable to keep dividing */ + exponent10 = 0; + } else if (rem10 >= 5) { + DWORD x = 1; + VARIANT_int_add(val->bitsnum, 3, &x, 1); + } + } + /* This step is requierd in order to remove excess bits of precision from the + end of the bit representation, down to the precision guaranteed by the + floating point number. */ + if (isDouble) { + while (exponent10 < 0 && (val->bitsnum[2] != 0 || (val->bitsnum[2] == 0 && (val->bitsnum[1] & 0xFFE00000) != 0))) { + int rem10; + + rem10 = VARIANT_int_divbychar(val->bitsnum, 3, 10); + exponent10++; + if (rem10 >= 5) { + DWORD x = 1; + VARIANT_int_add(val->bitsnum, 3, &x, 1); + } + } + } else { + while (exponent10 < 0 && (val->bitsnum[2] != 0 || val->bitsnum[1] != 0 || + (val->bitsnum[2] == 0 && val->bitsnum[1] == 0 && (val->bitsnum[0] & 0xFF000000) != 0))) { + int rem10; + + rem10 = VARIANT_int_divbychar(val->bitsnum, 3, 10); + exponent10++; + if (rem10 >= 5) { + DWORD x = 1; + VARIANT_int_add(val->bitsnum, 3, &x, 1); + } + } + } + /* Remove multiples of 10 from the representation */ + while (exponent10 < 0) { + DWORD temp_bitsnum[3]; + + memcpy(temp_bitsnum, val->bitsnum, 3 * sizeof(DWORD)); + if (0 == VARIANT_int_divbychar(temp_bitsnum, 3, 10)) { + exponent10++; + memcpy(val->bitsnum, temp_bitsnum, 3 * sizeof(DWORD)); + } else break; + } + + /* Scale assignment */ + if (hres == S_OK) val->scale = -exponent10; + + return hres; +} + +typedef union +{ + struct + { + unsigned long m : 23; + unsigned int exp_bias : 8; + unsigned int sign : 1; + } i; + float f; +} R4_FIELDS; + +/* Convert a 32-bit floating point number into a DECIMAL, without using an + intermediate string step. */ +static HRESULT VARIANT_DI_FromR4(float source, VARIANT_DI * dest) +{ + HRESULT hres = S_OK; + R4_FIELDS fx; + + fx.f = source; + + /* Detect special cases */ + if (fx.i.m == 0 && fx.i.exp_bias == 0) { + /* Floating-point zero */ + VARIANT_DI_clear(dest); + } else if (fx.i.m == 0 && fx.i.exp_bias == 0xFF) { + /* Floating-point infinity */ + hres = DISP_E_OVERFLOW; + } else if (fx.i.exp_bias == 0xFF) { + /* Floating-point NaN */ + hres = DISP_E_BADVARTYPE; + } else { + int exponent2; + VARIANT_DI_clear(dest); + + exponent2 = fx.i.exp_bias - 127; /* Get unbiased exponent */ + dest->sign = fx.i.sign; /* Sign is simply copied */ + + /* Copy significant bits to VARIANT_DI mantissa */ + dest->bitsnum[0] = fx.i.m; + dest->bitsnum[0] &= 0x007FFFFF; + if (fx.i.exp_bias == 0) { + /* Denormalized number - correct exponent */ + exponent2++; + } else { + /* Add hidden bit to mantissa */ + dest->bitsnum[0] |= 0x00800000; + } + + /* The act of copying a FP mantissa as integer bits is equivalent to + shifting left the mantissa 23 bits. The exponent2 is reduced to + compensate. */ + exponent2 -= 23; + + hres = VARIANT_DI_normalize(dest, exponent2, 0); + } + + return hres; +} + +typedef union +{ + struct + { + unsigned long m_lo : 32; /* 52 bits of precision */ + unsigned int m_hi : 20; + unsigned int exp_bias : 11; /* bias == 1023 */ + unsigned int sign : 1; + } i; + double d; +} R8_FIELDS; + +/* Convert a 64-bit floating point number into a DECIMAL, without using an + intermediate string step. */ +static HRESULT VARIANT_DI_FromR8(double source, VARIANT_DI * dest) +{ + HRESULT hres = S_OK; + R8_FIELDS fx; + + fx.d = source; + + /* Detect special cases */ + if (fx.i.m_lo == 0 && fx.i.m_hi == 0 && fx.i.exp_bias == 0) { + /* Floating-point zero */ + VARIANT_DI_clear(dest); + } else if (fx.i.m_lo == 0 && fx.i.m_hi == 0 && fx.i.exp_bias == 0x7FF) { + /* Floating-point infinity */ + hres = DISP_E_OVERFLOW; + } else if (fx.i.exp_bias == 0x7FF) { + /* Floating-point NaN */ + hres = DISP_E_BADVARTYPE; + } else { + int exponent2; + VARIANT_DI_clear(dest); + + exponent2 = fx.i.exp_bias - 1023; /* Get unbiased exponent */ + dest->sign = fx.i.sign; /* Sign is simply copied */ + + /* Copy significant bits to VARIANT_DI mantissa */ + dest->bitsnum[0] = fx.i.m_lo; + dest->bitsnum[1] = fx.i.m_hi; + dest->bitsnum[1] &= 0x000FFFFF; + if (fx.i.exp_bias == 0) { + /* Denormalized number - correct exponent */ + exponent2++; + } else { + /* Add hidden bit to mantissa */ + dest->bitsnum[1] |= 0x00100000; + } + + /* The act of copying a FP mantissa as integer bits is equivalent to + shifting left the mantissa 52 bits. The exponent2 is reduced to + compensate. */ + exponent2 -= 52; + + hres = VARIANT_DI_normalize(dest, exponent2, 1); + } + + return hres; +} + /************************************************************************ * VarDecDiv (OLEAUT32.178) * @@ -6069,7 +6355,8 @@ static BSTR VARIANT_BstrReplaceDecimal(WCHAR * buff, LCID lcid, ULONG dwFlags) the need to replace the decimal separator, and if so, will prepare an appropriate NUMBERFMTW structure to do the job via GetNumberFormatW(). */ - GetLocaleInfoW(lcid, LOCALE_SDECIMAL, lpDecimalSep, sizeof(lpDecimalSep) / sizeof(WCHAR)); + GetLocaleInfoW(lcid, LOCALE_SDECIMAL | (dwFlags & LOCALE_NOUSEROVERRIDE), + lpDecimalSep, sizeof(lpDecimalSep) / sizeof(WCHAR)); if (lpDecimalSep[0] == '.' && lpDecimalSep[1] == '\0') { /* locale is compatible with English - return original string */ @@ -6094,8 +6381,7 @@ static BSTR VARIANT_BstrReplaceDecimal(WCHAR * buff, LCID lcid, ULONG dwFlags) if (p) minFormat.NumDigits = strlenW(p + 1); numbuff[0] = '\0'; - if (!GetNumberFormatW(lcid, dwFlags & LOCALE_NOUSEROVERRIDE, - buff, &minFormat, numbuff, sizeof(numbuff) / sizeof(WCHAR))) + if (!GetNumberFormatW(lcid, 0, buff, &minFormat, numbuff, sizeof(numbuff) / sizeof(WCHAR))) { WARN("GetNumberFormatW() failed, returning raw number string instead\n"); bstrOut = SysAllocString(buff); @@ -6211,13 +6497,26 @@ HRESULT WINAPI VarBstrFromR8(double dblIn, LCID lcid, ULONG dwFlags, BSTR* pbstr HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut) { WCHAR buff[256]; - double dblVal; + VARIANT_DI decVal; if (!pbstrOut) return E_INVALIDARG; - VarR8FromCy(cyIn, &dblVal); - sprintfW(buff, szDoubleFormatW, dblVal); + decVal.scale = 4; + decVal.sign = 0; + decVal.bitsnum[0] = cyIn.s.Lo; + decVal.bitsnum[1] = cyIn.s.Hi; + if (cyIn.s.Hi & 0x80000000UL) { + DWORD one = 1; + + /* Negative number! */ + decVal.sign = 1; + decVal.bitsnum[0] = ~decVal.bitsnum[0]; + decVal.bitsnum[1] = ~decVal.bitsnum[1]; + VARIANT_int_add(decVal.bitsnum, 3, &one, 1); + } + decVal.bitsnum[2] = 0; + VARIANT_DI_tostringW(&decVal, buff, sizeof(buff)); if (dwFlags & LOCALE_USE_NLS) { @@ -6257,7 +6556,7 @@ HRESULT WINAPI VarBstrFromDate(DATE dateIn, LCID lcid, ULONG dwFlags, BSTR* pbst DWORD dwFormatFlags = dwFlags & LOCALE_NOUSEROVERRIDE; WCHAR date[128], *time; - TRACE("(%g,0x%08lx,0x%08lx,%p)\n", dateIn, lcid, dwFlags, pbstrOut); + TRACE("(%g,0x%08x,0x%08x,%p)\n", dateIn, lcid, dwFlags, pbstrOut); if (!pbstrOut || !VariantTimeToSystemTime(dateIn, &st)) return E_INVALIDARG; @@ -6332,7 +6631,7 @@ HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL boolIn, LCID lcid, ULONG dwFlags, BS DWORD dwResId = IDS_TRUE; LANGID langId; - TRACE("%d,0x%08lx,0x%08lx,%p\n", boolIn, lcid, dwFlags, pbstrOut); + TRACE("%d,0x%08x,0x%08x,%p\n", boolIn, lcid, dwFlags, pbstrOut); if (!pbstrOut) return E_INVALIDARG; @@ -6583,27 +6882,31 @@ HRESULT WINAPI VarBstrFromDisp(IDispatch* pdispIn, LCID lcid, ULONG dwFlags, BST */ HRESULT WINAPI VarBstrCat(BSTR pbstrLeft, BSTR pbstrRight, BSTR *pbstrOut) { - unsigned int len; + unsigned int lenLeft, lenRight; + + TRACE("%s,%s,%p\n", + debugstr_wn(pbstrLeft, SysStringLen(pbstrLeft)), + debugstr_wn(pbstrRight, SysStringLen(pbstrRight)), pbstrOut); if (!pbstrOut) return E_INVALIDARG; - len = pbstrLeft ? strlenW(pbstrLeft) : 0; - if (pbstrRight) - len += strlenW(pbstrRight); + lenLeft = pbstrLeft ? SysStringLen(pbstrLeft) : 0; + lenRight = pbstrRight ? SysStringLen(pbstrRight) : 0; - *pbstrOut = SysAllocStringLen(NULL, len); + *pbstrOut = SysAllocStringLen(NULL, lenLeft + lenRight); if (!*pbstrOut) return E_OUTOFMEMORY; (*pbstrOut)[0] = '\0'; if (pbstrLeft) - strcpyW(*pbstrOut, pbstrLeft); + memcpy(*pbstrOut, pbstrLeft, lenLeft * sizeof(WCHAR)); if (pbstrRight) - strcatW(*pbstrOut, pbstrRight); + memcpy(*pbstrOut + lenLeft, pbstrRight, lenRight * sizeof(WCHAR)); + TRACE("%s\n", debugstr_wn(*pbstrOut, SysStringLen(*pbstrOut))); return S_OK; } @@ -6625,9 +6928,17 @@ HRESULT WINAPI VarBstrCat(BSTR pbstrLeft, BSTR pbstrRight, BSTR *pbstrOut) * NOTES * VARCMP_NULL is NOT returned if either string is NULL unlike MSDN * states. A NULL BSTR pointer is equivalent to an empty string. + * If LCID is equal to 0, a byte by byte comparison is performed. */ HRESULT WINAPI VarBstrCmp(BSTR pbstrLeft, BSTR pbstrRight, LCID lcid, DWORD dwFlags) { + HRESULT hres; + int ret; + + TRACE("%s,%s,%d,%08x\n", + debugstr_wn(pbstrLeft, SysStringLen(pbstrLeft)), + debugstr_wn(pbstrRight, SysStringLen(pbstrRight)), lcid, dwFlags); + if (!pbstrLeft || !*pbstrLeft) { if (!pbstrRight || !*pbstrRight) @@ -6637,7 +6948,28 @@ HRESULT WINAPI VarBstrCmp(BSTR pbstrLeft, BSTR pbstrRight, LCID lcid, DWORD dwFl else if (!pbstrRight || !*pbstrRight) return VARCMP_GT; - return CompareStringW(lcid, dwFlags, pbstrLeft, -1, pbstrRight, -1) - 1; + if (lcid == 0) + { + unsigned int lenLeft = SysStringByteLen(pbstrLeft); + unsigned int lenRight = SysStringByteLen(pbstrRight); + ret = memcmp(pbstrLeft, pbstrRight, min(lenLeft, lenRight)); + if (ret < 0) + return VARCMP_LT; + if (ret > 0) + return VARCMP_GT; + if (lenLeft < lenRight) + return VARCMP_LT; + if (lenLeft > lenRight) + return VARCMP_GT; + return VARCMP_EQ; + } + else + { + hres = CompareStringW(lcid, dwFlags, pbstrLeft, SysStringLen(pbstrLeft), + pbstrRight, SysStringLen(pbstrRight)) - 1; + TRACE("%d\n", hres); + return hres; + } } /* @@ -6850,7 +7182,7 @@ static inline HRESULT VARIANT_MakeDate(DATEPARSE *dp, DWORD iDate, else v3 = dp->dwValues[offset + 2]; - TRACE("(%ld,%ld,%ld,%ld,%ld)\n", v1, v2, v3, iDate, offset); + TRACE("(%d,%d,%d,%d,%d)\n", v1, v2, v3, iDate, offset); /* If one number must be a month (Because a month name was given), then only * consider orders with the month in that position. @@ -6878,7 +7210,7 @@ static inline HRESULT VARIANT_MakeDate(DATEPARSE *dp, DWORD iDate, } VARIANT_MakeDate_Start: - TRACE("dwAllOrders is 0x%08lx\n", dwAllOrders); + TRACE("dwAllOrders is 0x%08x\n", dwAllOrders); while (dwAllOrders) { @@ -6910,7 +7242,7 @@ VARIANT_MakeDate_Start: dwTry = dwAllOrders; } - TRACE("Attempt %ld, dwTry is 0x%08lx\n", dwCount, dwTry); + TRACE("Attempt %d, dwTry is 0x%08x\n", dwCount, dwTry); dwCount++; if (!dwTry) @@ -6999,7 +7331,7 @@ VARIANT_MakeDate_OK: * But Wine doesn't have/use that key as at the time of writing. */ st->wYear = v3 < 30 ? 2000 + v3 : v3 < 100 ? 1900 + v3 : v3; - TRACE("Returning date %ld/%ld/%d\n", v1, v2, st->wYear); + TRACE("Returning date %d/%d/%d\n", v1, v2, st->wYear); return S_OK; } @@ -7052,7 +7384,7 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd 1,2,3,4,5,6,7,8,9,10,11,12,13, 1,2,3,4,5,6,7,8,9,10,11,12,13 }; - size_t i; + unsigned int i; BSTR tokens[sizeof(ParseDateTokens)/sizeof(ParseDateTokens[0])]; DATEPARSE dp; DWORD dwDateSeps = 0, iDate = 0; @@ -7067,13 +7399,13 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd *pdateOut = 0.0; - TRACE("(%s,0x%08lx,0x%08lx,%p)\n", debugstr_w(strIn), lcid, dwFlags, pdateOut); + TRACE("(%s,0x%08x,0x%08x,%p)\n", debugstr_w(strIn), lcid, dwFlags, pdateOut); memset(&dp, 0, sizeof(dp)); GetLocaleInfoW(lcid, LOCALE_IDATE|LOCALE_RETURN_NUMBER|(dwFlags & LOCALE_NOUSEROVERRIDE), (LPWSTR)&iDate, sizeof(iDate)/sizeof(WCHAR)); - TRACE("iDate is %ld\n", iDate); + TRACE("iDate is %d\n", iDate); /* Get the month/day/am/pm tokens for this locale */ for (i = 0; i < sizeof(tokens)/sizeof(tokens[0]); i++) @@ -7208,7 +7540,7 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd * magic here occurs in VARIANT_MakeDate() above, where we determine what * each date number must represent in the context of iDate. */ - TRACE("0x%08lx\n", TIMEFLAG(0)|TIMEFLAG(1)|TIMEFLAG(2)|TIMEFLAG(3)|TIMEFLAG(4)); + TRACE("0x%08x\n", TIMEFLAG(0)|TIMEFLAG(1)|TIMEFLAG(2)|TIMEFLAG(3)|TIMEFLAG(4)); switch (TIMEFLAG(0)|TIMEFLAG(1)|TIMEFLAG(2)|TIMEFLAG(3)|TIMEFLAG(4)) { diff --git a/reactos/dll/win32/riched20/Makefile.in b/reactos/dll/win32/riched20/Makefile.in index 6fbec4a269a..87feccd0603 100644 --- a/reactos/dll/win32/riched20/Makefile.in +++ b/reactos/dll/win32/riched20/Makefile.in @@ -4,11 +4,12 @@ SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = riched20.dll IMPORTLIB = libriched20.$(IMPLIBEXT) -IMPORTS = user32 gdi32 kernel32 +IMPORTS = ole32 user32 gdi32 kernel32 EXTRALIBS = -luuid C_SRCS = \ caret.c \ + clipboard.c \ context.c \ editor.c \ list.c \ @@ -20,10 +21,13 @@ C_SRCS = \ run.c \ string.c \ style.c \ + txtsrv.c \ undo.c \ wrap.c \ writer.c +RC_SRCS = version.rc + @MAKE_DLL_RULES@ -### Dependencies: +@DEPENDENCIES@ # everything below this line is overwritten by make depend diff --git a/reactos/dll/win32/riched20/caret.c b/reactos/dll/win32/riched20/caret.c index 69c6ca1c6b2..3f9547e7c25 100644 --- a/reactos/dll/win32/riched20/caret.c +++ b/reactos/dll/win32/riched20/caret.c @@ -2,6 +2,7 @@ * RichEdit - Caret and selection functions. * * Copyright 2004 by Krzysztof Foltman + * Copyright 2005 by Phil Krylov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ @@ -23,6 +24,10 @@ WINE_DEFAULT_DEBUG_CHANNEL(richedit); +static BOOL +ME_MoveCursorChars(ME_TextEditor *editor, ME_Cursor *pCursor, int nRelOfs); + + void ME_GetSelection(ME_TextEditor *editor, int *from, int *to) { *from = ME_GetCursorOfs(editor, 0); @@ -73,93 +78,165 @@ int ME_GetTextLengthEx(ME_TextEditor *editor, GETTEXTLENGTHEX *how) } -void ME_SetSelection(ME_TextEditor *editor, int from, int to) +int ME_SetSelection(ME_TextEditor *editor, int from, int to) { + int selectionEnd = 0; + const int len = ME_GetTextLength(editor); + + /* all negative values are effectively the same */ + if (from < 0) + from = -1; + if (to < 0) + to = -1; + + /* select all */ if (from == 0 && to == -1) { - editor->pCursors[1].pRun = ME_FindItemFwd(editor->pBuffer->pFirst, diRun); + editor->pCursors[1].pRun = ME_FindItemFwd(editor->pBuffer->pFirst, diRun); editor->pCursors[1].nOffset = 0; editor->pCursors[0].pRun = ME_FindItemBack(editor->pBuffer->pLast, diRun); - editor->pCursors[0].nOffset = 0; - ME_Repaint(editor); + editor->pCursors[0].nOffset = 0; + ME_InvalidateSelection(editor); ME_ClearTempStyle(editor); - return; + return len + 1; } - if (from == -1) + + /* if both values are equal and also out of bound, that means to */ + /* put the selection at the end of the text */ + if ((from == to) && (to < 0 || to > len)) { - editor->pCursors[1] = editor->pCursors[0]; - ME_Repaint(editor); + selectionEnd = 1; + } + else + { + /* if from is negative and to is positive then selection is */ + /* deselected and caret moved to end of the current selection */ + if (from < 0) + { + int start, end; + ME_GetSelection(editor, &start, &end); + editor->pCursors[1] = editor->pCursors[0]; + ME_Repaint(editor); + ME_ClearTempStyle(editor); + return end; + } + + /* adjust to if it's a negative value */ + if (to < 0) + to = len + 1; + + /* flip from and to if they are reversed */ + if (from>to) + { + int tmp = from; + from = to; + to = tmp; + } + + /* after fiddling with the values, we find from > len && to > len */ + if (from > len) + selectionEnd = 1; + /* special case with to too big */ + else if (to > len) + to = len + 1; + } + + if (selectionEnd) + { + editor->pCursors[1].pRun = editor->pCursors[0].pRun = ME_FindItemBack(editor->pBuffer->pLast, diRun); + editor->pCursors[1].nOffset = editor->pCursors[0].nOffset = 0; + ME_InvalidateSelection(editor); ME_ClearTempStyle(editor); - return; - } - if (from>to) - { - int tmp = from; - from = to; - to = tmp; + return len; } + ME_RunOfsFromCharOfs(editor, from, &editor->pCursors[1].pRun, &editor->pCursors[1].nOffset); - ME_RunOfsFromCharOfs(editor, to, &editor->pCursors[0].pRun, &editor->pCursors[0].nOffset); + ME_RunOfsFromCharOfs(editor, to, &editor->pCursors[0].pRun, &editor->pCursors[0].nOffset); + return to; } -void ME_MoveCaret(ME_TextEditor *editor) -{ - HDC hDC = GetDC(editor->hWnd); - ME_Context c; - ME_Cursor *pCursor = &editor->pCursors[0]; +void +ME_GetCursorCoordinates(ME_TextEditor *editor, ME_Cursor *pCursor, + int *x, int *y, int *height) +{ ME_DisplayItem *pCursorRun = pCursor->pRun; ME_DisplayItem *pSizeRun = pCursor->pRun; - - ME_InitContext(&c, editor, hDC); + assert(!pCursor->nOffset || !editor->bCaretAtEnd); + assert(height && x && y); + assert(!(ME_GetParagraph(pCursorRun)->member.para.nFlags & MEPF_REWRAP)); + assert(pCursor->pRun); + assert(pCursor->pRun->type == diRun); if (pCursorRun->type == diRun) { ME_DisplayItem *row = ME_FindItemBack(pCursorRun, diStartRowOrParagraph); + if (row) { + HDC hDC = GetDC(editor->hWnd); + ME_Context c; ME_DisplayItem *run = pCursorRun; - ME_DisplayItem *para; + ME_DisplayItem *para = NULL; SIZE sz = {0, 0}; + + ME_InitContext(&c, editor, hDC); + if (!pCursor->nOffset && !editor->bCaretAtEnd) { ME_DisplayItem *prev = ME_FindItemBack(pCursorRun, diRunOrStartRow); + assert(prev); if (prev->type == diRun) pSizeRun = prev; } assert(row->type == diStartRow); /* paragraph -> run without start row ?*/ para = ME_FindItemBack(row, diParagraph); + assert(para); + assert(para->type == diParagraph); if (editor->bCaretAtEnd && !pCursor->nOffset && run == ME_FindItemFwd(row, diRun)) { ME_DisplayItem *tmp = ME_FindItemBack(row, diRunOrParagraph); + assert(tmp); if (tmp->type == diRun) { row = ME_FindItemBack(tmp, diStartRow); pSizeRun = run = tmp; + assert(run); + assert(run->type == diRun); sz = ME_GetRunSize(&c, ¶->member.para, &run->member.run, ME_StrLen(run->member.run.strText)); } } if (pCursor->nOffset && !(run->member.run.nFlags & MERF_SKIPPED)) { sz = ME_GetRunSize(&c, ¶->member.para, &run->member.run, pCursor->nOffset); } - CreateCaret(editor->hWnd, NULL, 0, pSizeRun->member.run.nAscent+pSizeRun->member.run.nDescent); - SetCaretPos(run->member.run.pt.x+sz.cx, - para->member.para.nYPos+row->member.row.nBaseline+pSizeRun->member.run.pt.y-pSizeRun->member.run.nAscent-ME_GetYScrollPos(editor)); - } else { - assert(0 == "Wrapped paragraph run without a row?"); - CreateCaret(editor->hWnd, NULL, 0, 10); - SetCaretPos(0,0); + + *height = pSizeRun->member.run.nAscent + pSizeRun->member.run.nDescent; + *x = run->member.run.pt.x + sz.cx; + *y = para->member.para.nYPos + row->member.row.nBaseline + pSizeRun->member.run.pt.y - pSizeRun->member.run.nAscent - ME_GetYScrollPos(editor); + + ME_DestroyContext(&c); + ReleaseDC(editor->hWnd, hDC); + return; } - } - else { - assert(0 == "Cursor not on a run"); - CreateCaret(editor->hWnd, NULL, 0, 10); /* FIXME use global font */ - SetCaretPos(0,0); } - ME_DestroyContext(&c); - ReleaseDC(editor->hWnd, hDC); + *height = 10; /* FIXME use global font */ + *x = 0; + *y = 0; } + +void +ME_MoveCaret(ME_TextEditor *editor) +{ + int x, y, height; + + ME_WrapMarkedParagraphs(editor); + ME_GetCursorCoordinates(editor, &editor->pCursors[0], &x, &y, &height); + CreateCaret(editor->hWnd, NULL, 0, height); + SetCaretPos(x, y); +} + + void ME_ShowCaret(ME_TextEditor *ed) { ME_MoveCaret(ed); @@ -292,58 +369,60 @@ void ME_DeleteTextAtCursor(ME_TextEditor *editor, int nCursor, ME_InternalDeleteText(editor, ME_GetCursorOfs(editor, nCursor), nChars); } -static WCHAR wszSpace[] = {' ', 0}; - -/* FIXME this is temporary, just to have something to test how bad graphics handler is */ -void ME_InsertGraphicsFromCursor(ME_TextEditor *editor, int nCursor) -{ - ME_Cursor *pCursor = &editor->pCursors[nCursor]; - ME_DisplayItem *pItem = NULL; - ME_DisplayItem *pNewRun = NULL; - ME_Style *pStyle = ME_GetInsertStyle(editor, nCursor); - ME_UndoItem *pUndo; - - /* FIXME no no no */ - if (ME_IsSelection(editor)) - ME_DeleteSelection(editor); - - pUndo = ME_AddUndoItem(editor, diUndoDeleteRun, NULL); - if (pUndo) { - pUndo->nStart = pCursor->nOffset + pCursor->pRun->member.run.nCharOfs + ME_GetParagraph(pCursor->pRun)->member.para.nCharOfs; - pUndo->nLen = 1; - } - if (pCursor->nOffset) - { - ME_SplitRunSimple(editor, pCursor->pRun, pCursor->nOffset); - } - pItem = pCursor->pRun; - pNewRun = ME_MakeRun(pStyle, ME_MakeStringN(wszSpace, 1), MERF_GRAPHICS); - pNewRun->member.run.nCharOfs = pCursor->pRun->member.run.nCharOfs; - ME_InsertBefore(pCursor->pRun, pNewRun); - ME_PropagateCharOffset(pItem, 1); - ME_CheckCharOffsets(editor); - ME_SendSelChange(editor); -} - - -static void +static ME_DisplayItem * ME_InternalInsertTextFromCursor(ME_TextEditor *editor, int nCursor, const WCHAR *str, int len, ME_Style *style, int flags) { - ME_DisplayItem *pNewRun = NULL; ME_Cursor *p = &editor->pCursors[nCursor]; editor->bCaretAtEnd = FALSE; assert(p->pRun->type == diRun); - ME_AddRefStyle(style); + return ME_InsertRunAtCursor(editor, p, style, str, len, flags); +} + + +/* FIXME this is temporary, just to have something to test how bad graphics handler is */ +void ME_InsertGraphicsFromCursor(ME_TextEditor *editor, int nCursor) +{ + ME_Style *pStyle = ME_GetInsertStyle(editor, nCursor); + WCHAR space = ' '; - pNewRun = ME_MakeRun(style, ME_MakeStringN(str, len), flags); /* addrefs style */ - ME_InsertRun(editor, ME_CharOfsFromRunOfs(editor, p->pRun, p->nOffset), pNewRun); - ME_DestroyDisplayItem(pNewRun); - ME_ReleaseStyle(style); + /* FIXME no no no */ + if (ME_IsSelection(editor)) + ME_DeleteSelection(editor); + + ME_InternalInsertTextFromCursor(editor, nCursor, &space, 1, pStyle, + MERF_GRAPHICS); + ME_SendSelChange(editor); +} + + +void +ME_InsertTableCellFromCursor(ME_TextEditor *editor, int nCursor) +{ + WCHAR tab = '\t'; + ME_DisplayItem *p, *run; + ME_Style *pStyle = ME_GetInsertStyle(editor, nCursor); + + p = ME_InternalInsertTextFromCursor(editor, nCursor, &tab, 1, pStyle, + MERF_CELL); + run = p; + while ((run = ME_FindItemBack(run, diRunOrParagraph))->type == diRun) + { + if (run->member.run.nFlags & MERF_CELL) + { + assert(run->member.run.pCell->next); + p->member.run.pCell = run->member.run.pCell->next; + return; + } + } + assert(run->type == diParagraph); + assert(run->member.para.bTable); + assert(run->member.para.pCells); + p->member.run.pCell = run->member.para.pCells; } @@ -352,16 +431,25 @@ void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor, { const WCHAR *pos; ME_Cursor *p = NULL; - - assert(style); + int freeSpace; /* FIXME really HERE ? */ if (ME_IsSelection(editor)) ME_DeleteSelection(editor); + /* FIXME: is this too slow? */ + /* Didn't affect performance for WM_SETTEXT (around 50sec/30K) */ + freeSpace = editor->nTextLimit - ME_GetTextLength(editor); + + /* text operations set modified state */ + editor->nModifyStep = 1; + + assert(style); + assert(nCursor>=0 && nCursornCursors); if (len == -1) len = lstrlenW(str); + len = min(len, freeSpace); while (len) { pos = str; @@ -385,14 +473,10 @@ void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor, } if (pos-str < len) { /* handle EOLs */ ME_DisplayItem *tp, *end_run; - ME_Paragraph *para; ME_Style *tmp_style; if (pos!=str) ME_InternalInsertTextFromCursor(editor, nCursor, str, pos-str, style, 0); p = &editor->pCursors[nCursor]; - tp = ME_FindItemBack(p->pRun, diParagraph); - para = &tp->member.para; - assert(tp); if (p->nOffset) { ME_SplitRunSimple(editor, p->pRun, p->nOffset); p = &editor->pCursors[nCursor]; @@ -420,69 +504,170 @@ void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor, } } -static BOOL ME_ArrowLeft(ME_TextEditor *editor, ME_Cursor *p) + +static BOOL +ME_MoveCursorChars(ME_TextEditor *editor, ME_Cursor *pCursor, int nRelOfs) { - if (p->nOffset) { - p->nOffset = ME_StrRelPos2(p->pRun->member.run.strText, p->nOffset, -1); + ME_DisplayItem *pRun = pCursor->pRun; + + if (nRelOfs == -1) + { + if (!pCursor->nOffset) + { + do { + pRun = ME_FindItemBack(pRun, diRunOrParagraph); + assert(pRun); + switch (pRun->type) + { + case diRun: + break; + case diParagraph: + if (pRun->member.para.prev_para->type == diTextStart) + return FALSE; + pRun = ME_FindItemBack(pRun, diRunOrParagraph); + /* every paragraph ought to have at least one run */ + assert(pRun && pRun->type == diRun); + assert(pRun->member.run.nFlags & MERF_ENDPARA); + break; + default: + assert(pRun->type != diRun && pRun->type != diParagraph); + return FALSE; + } + } while (RUN_IS_HIDDEN(&pRun->member.run)); + pCursor->pRun = pRun; + if (pRun->member.run.nFlags & MERF_ENDPARA) + pCursor->nOffset = 0; + else + pCursor->nOffset = pRun->member.run.strText->nLen; + } + + if (pCursor->nOffset) + pCursor->nOffset = ME_StrRelPos2(pCursor->pRun->member.run.strText, pCursor->nOffset, nRelOfs); return TRUE; } else { - ME_DisplayItem *pRun = ME_FindItemBack(p->pRun, diRunOrParagraph); - assert(pRun); - if (pRun->type == diRun) { - p->pRun = pRun; - assert(p->pRun->type == diRun); - assert(pRun->member.run.strText->nLen); - p->nOffset = pRun->member.run.strText->nLen; - if (p->nOffset) { - p->nOffset = ME_StrRelPos2(pRun->member.run.strText, p->nOffset, -1); + if (!(pRun->member.run.nFlags & MERF_ENDPARA)) + { + int new_ofs = ME_StrRelPos2(pRun->member.run.strText, pCursor->nOffset, nRelOfs); + + if (new_ofs < pRun->member.run.strText->nLen) + { + pCursor->nOffset = new_ofs; return TRUE; } - else - assert(0); } - if (pRun->type == diParagraph) + do { + pRun = ME_FindItemFwd(pRun, diRun); + } while (pRun && RUN_IS_HIDDEN(&pRun->member.run)); + if (pRun) { - if (pRun->member.para.prev_para->type == diTextStart) - return FALSE; - assert(pRun->member.para.prev_para->type == diParagraph); - pRun = ME_FindItemBack(pRun, diRunOrParagraph); - /* every paragraph ought to have at least one run */ - assert(pRun && pRun->type == diRun); - assert(pRun->member.run.nFlags & MERF_ENDPARA); - p->pRun = pRun; - p->nOffset = 0; + pCursor->pRun = pRun; + pCursor->nOffset = 0; return TRUE; } - assert(0); } return FALSE; } -static BOOL ME_ArrowRight(ME_TextEditor *editor, ME_Cursor *p) + +static BOOL +ME_MoveCursorWords(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs) { - ME_DisplayItem *pRun; + ME_DisplayItem *pRun = cursor->pRun, *pOtherRun; + int nOffset = cursor->nOffset; - if (!(p->pRun->member.run.nFlags & MERF_ENDPARA)) + if (nRelOfs == -1) { - int new_ofs = ME_StrRelPos2(p->pRun->member.run.strText, p->nOffset, 1); - - if (new_ofspRun->member.run.strText->nLen) + /* Backward movement */ + while (TRUE) { - p->nOffset = new_ofs; - return TRUE; + nOffset = ME_CallWordBreakProc(editor, pRun->member.run.strText, + nOffset, WB_MOVEWORDLEFT); + if (nOffset) + break; + pOtherRun = ME_FindItemBack(pRun, diRunOrParagraph); + if (pOtherRun->type == diRun) + { + if (ME_CallWordBreakProc(editor, pOtherRun->member.run.strText, + pOtherRun->member.run.strText->nLen - 1, + WB_ISDELIMITER) + && !(pRun->member.run.nFlags & MERF_ENDPARA) + && !(cursor->pRun == pRun && cursor->nOffset == 0) + && !ME_CallWordBreakProc(editor, pRun->member.run.strText, 0, + WB_ISDELIMITER)) + break; + pRun = pOtherRun; + nOffset = pOtherRun->member.run.strText->nLen; + } + else if (pOtherRun->type == diParagraph) + { + if (cursor->pRun == pRun && cursor->nOffset == 0) + { + /* Paragraph breaks are treated as separate words */ + if (pOtherRun->member.para.prev_para->type == diTextStart) + return FALSE; + pRun = ME_FindItemBack(pOtherRun, diRunOrParagraph); + } + break; + } } } - pRun = ME_FindItemFwd(p->pRun, diRun); - if (pRun) { - p->pRun = pRun; - assert(p->pRun->type == diRun); - p->nOffset = 0; + else + { + /* Forward movement */ + BOOL last_delim = FALSE; + + while (TRUE) + { + if (last_delim && !ME_CallWordBreakProc(editor, pRun->member.run.strText, + nOffset, WB_ISDELIMITER)) + break; + nOffset = ME_CallWordBreakProc(editor, pRun->member.run.strText, + nOffset, WB_MOVEWORDRIGHT); + if (nOffset < pRun->member.run.strText->nLen) + break; + pOtherRun = ME_FindItemFwd(pRun, diRunOrParagraphOrEnd); + if (pOtherRun->type == diRun) + { + last_delim = ME_CallWordBreakProc(editor, pRun->member.run.strText, + nOffset - 1, WB_ISDELIMITER); + pRun = pOtherRun; + nOffset = 0; + } + else if (pOtherRun->type == diParagraph) + { + if (cursor->pRun == pRun) + pRun = ME_FindItemFwd(pOtherRun, diRun); + nOffset = 0; + break; + } + else /* diTextEnd */ + { + if (cursor->pRun == pRun) + return FALSE; + nOffset = 0; + break; + } + } } + cursor->pRun = pRun; + cursor->nOffset = nOffset; return TRUE; } + +void +ME_SelectWord(ME_TextEditor *editor) +{ + if (!(editor->pCursors[0].pRun->member.run.nFlags & MERF_ENDPARA)) + ME_MoveCursorWords(editor, &editor->pCursors[0], -1); + ME_MoveCursorWords(editor, &editor->pCursors[1], +1); + ME_InvalidateSelection(editor); + ME_SendSelChange(editor); +} + + int ME_GetCursorOfs(ME_TextEditor *editor, int nCursor) { ME_Cursor *pCursor = &editor->pCursors[nCursor]; @@ -599,6 +784,7 @@ ME_CharFromPos(ME_TextEditor *editor, int x, int y) GetClientRect(editor->hWnd, &rc); if (x < 0 || y < 0 || x >= rc.right || y >= rc.bottom) return -1; + y += ME_GetYScrollPos(editor); ME_FindPixelPos(editor, x, y, &cursor, NULL); return (ME_GetParagraph(cursor.pRun)->member.para.nCharOfs + cursor.pRun->member.run.nCharOfs + cursor.nOffset); @@ -630,10 +816,9 @@ void ME_LButtonDown(ME_TextEditor *editor, int x, int y) is_selection = 1; } } + ME_InvalidateSelection(editor); HideCaret(editor->hWnd); ME_MoveCaret(editor); - if (is_selection) - ME_Repaint(editor); ShowCaret(editor->hWnd); ME_ClearTempStyle(editor); ME_SendSelChange(editor); @@ -646,16 +831,18 @@ void ME_MouseMove(ME_TextEditor *editor, int x, int y) y += ME_GetYScrollPos(editor); tmp_cursor = editor->pCursors[0]; - if (!ME_FindPixelPos(editor, x, y, &editor->pCursors[0], &editor->bCaretAtEnd)) - /* return */; + /* FIXME: do something with the return value of ME_FindPixelPos */ + ME_FindPixelPos(editor, x, y, &tmp_cursor, &editor->bCaretAtEnd); if (tmp_cursor.pRun == editor->pCursors[0].pRun && tmp_cursor.nOffset == editor->pCursors[0].nOffset) return; + ME_InvalidateSelection(editor); + editor->pCursors[0] = tmp_cursor; HideCaret(editor->hWnd); ME_MoveCaret(editor); - ME_Repaint(editor); + ME_InvalidateSelection(editor); ShowCaret(editor->hWnd); ME_SendSelChange(editor); } @@ -726,50 +913,36 @@ static int ME_GetXForArrow(ME_TextEditor *editor, ME_Cursor *pCursor) return x; } -static void ME_ArrowUp(ME_TextEditor *editor, ME_Cursor *pCursor) -{ - ME_DisplayItem *pRun = pCursor->pRun; - ME_DisplayItem *pItem, *pItem2; - int x = ME_GetXForArrow(editor, pCursor); - - if (editor->bCaretAtEnd && !pCursor->nOffset) - { - pRun = ME_FindItemBack(pRun, diRun); - if (!pRun) - return; - } - - /* start of this row */ - pItem = ME_FindItemBack(pRun, diStartRow); - assert(pItem); - /* start of the previous row */ - pItem2 = ME_FindItemBack(pItem, diStartRow); - /* no previous row = the first line of the first paragraph */ - if (!pItem2) /* can't go up - don't go BOL (as in MS richedit) */ - return; - /* FIXME - ME_WrapTextParagraph(editor, ME_FindItemBack(pItem2, diParagraph)); - */ - pCursor->pRun = ME_FindRunInRow(editor, pItem2, x, &pCursor->nOffset, &editor->bCaretAtEnd); -} -static void ME_ArrowDown(ME_TextEditor *editor, ME_Cursor *pCursor) +static void +ME_MoveCursorLines(ME_TextEditor *editor, ME_Cursor *pCursor, int nRelOfs) { ME_DisplayItem *pRun = pCursor->pRun; ME_DisplayItem *pItem; int x = ME_GetXForArrow(editor, pCursor); - if (!pCursor->nOffset && editor->bCaretAtEnd) - { + + if (editor->bCaretAtEnd && !pCursor->nOffset) pRun = ME_FindItemBack(pRun, diRun); -/* x = pRun->member.run.pt.x + pRun->member.run.nWidth; */ + if (!pRun) + return; + if (nRelOfs == -1) + { + /* start of this row */ + pItem = ME_FindItemBack(pRun, diStartRow); + assert(pItem); + /* start of the previous row */ + pItem = ME_FindItemBack(pItem, diStartRow); + } + else + { + /* start of the next row */ + pItem = ME_FindItemFwd(pRun, diStartRow); + /* FIXME If diParagraph is before diStartRow, wrap the next paragraph? + */ } - /* start of the next row */ - pItem = ME_FindItemFwd(pRun, diStartRow); - /* FIXME If diParagraph is before diStartRow, wrap the next paragraph? - */ if (!pItem) { - /* next row not found - ignore */ + /* row not found - ignore */ return; } pCursor->pRun = ME_FindRunInRow(editor, pItem, x, &pCursor->nOffset, &editor->bCaretAtEnd); @@ -777,6 +950,7 @@ static void ME_ArrowDown(ME_TextEditor *editor, ME_Cursor *pCursor) assert(pCursor->pRun->type == diRun); } + static void ME_ArrowPageUp(ME_TextEditor *editor, ME_Cursor *pCursor) { ME_DisplayItem *pRun = pCursor->pRun; @@ -819,9 +993,9 @@ static void ME_ArrowPageUp(ME_TextEditor *editor, ME_Cursor *pCursor) ME_EnsureVisible(editor, ME_FindItemFwd(editor->pBuffer->pFirst, diRun)); ME_Repaint(editor); } - else { - ME_Scroll(editor, 0, ys-yprev); - ME_Repaint(editor); + else + { + ME_ScrollUp(editor, ys-yprev); } assert(pCursor->pRun); assert(pCursor->pRun->type == diRun); @@ -872,9 +1046,9 @@ static void ME_ArrowPageDown(ME_TextEditor *editor, ME_Cursor *pCursor) ME_EnsureVisible(editor, ME_FindItemBack(editor->pBuffer->pLast, diRun)); ME_Repaint(editor); } - else { - ME_Scroll(editor, 0, ys-yprev); - ME_Repaint(editor); + else + { + ME_ScrollUp(editor,ys-yprev); } assert(pCursor->pRun); assert(pCursor->pRun->type == diRun); @@ -883,6 +1057,10 @@ static void ME_ArrowPageDown(ME_TextEditor *editor, ME_Cursor *pCursor) static void ME_ArrowHome(ME_TextEditor *editor, ME_Cursor *pCursor) { ME_DisplayItem *pRow = ME_FindItemBack(pCursor->pRun, diStartRow); + /* bCaretAtEnd doesn't make sense if the cursor isn't set at the + first character of the next row */ + assert(!editor->bCaretAtEnd || !pCursor->nOffset); + ME_WrapMarkedParagraphs(editor); if (pRow) { ME_DisplayItem *pRun; if (editor->bCaretAtEnd && !pCursor->nOffset) { @@ -962,25 +1140,6 @@ static int ME_GetSelCursor(ME_TextEditor *editor, int dir) return 1; } -static BOOL ME_CancelSelection(ME_TextEditor *editor, int dir) -{ - int cdir; - - if (GetKeyState(VK_SHIFT)<0) - return FALSE; - if (!memcmp(&editor->pCursors[0], &editor->pCursors[1], sizeof(ME_Cursor))) - return FALSE; - - cdir = ME_GetCursorOfs(editor, 0) - ME_GetCursorOfs(editor, 1); - - if (cdir*dir>0) - editor->pCursors[1] = editor->pCursors[0]; - else - editor->pCursors[0] = editor->pCursors[1]; - ME_Repaint(editor); - return TRUE; -} - BOOL ME_UpdateSelection(ME_TextEditor *editor, ME_Cursor *pTempCursor) { ME_Cursor old_anchor = editor->pCursors[1]; @@ -1007,14 +1166,6 @@ BOOL ME_UpdateSelection(ME_TextEditor *editor, ME_Cursor *pTempCursor) return TRUE; } -static void ME_RepaintSelection(ME_TextEditor *editor, ME_Cursor *pTempCursor) -{ - if (ME_UpdateSelection(editor, pTempCursor)) { - ME_EnsureVisible(editor, editor->pCursors[0].pRun); - ME_Repaint(editor); - } -} - void ME_DeleteSelection(ME_TextEditor *editor) { int from, to; @@ -1042,8 +1193,12 @@ ME_Style *ME_GetSelectionInsertStyle(ME_TextEditor *editor) void ME_SendSelChange(ME_TextEditor *editor) { SELCHANGE sc; + + ME_ClearTempStyle(editor); + if (!(editor->nEventMask & ENM_SELCHANGE)) return; + sc.nmhdr.hwndFrom = editor->hWnd; sc.nmhdr.idFrom = GetWindowLongW(editor->hWnd, GWLP_ID); sc.nmhdr.code = EN_SELCHANGE; @@ -1056,116 +1211,69 @@ void ME_SendSelChange(ME_TextEditor *editor) SendMessageW(GetParent(editor->hWnd), WM_NOTIFY, sc.nmhdr.idFrom, (LPARAM)&sc); } -BOOL ME_ArrowKey(ME_TextEditor *editor, int nVKey, int nCtrl) + +BOOL +ME_ArrowKey(ME_TextEditor *editor, int nVKey, BOOL extend, BOOL ctrl) { int nCursor = 0; ME_Cursor *p = &editor->pCursors[nCursor]; ME_Cursor tmp_curs = *p; + BOOL success = FALSE; - switch(nVKey) { - case VK_UP: - ME_ArrowUp(editor, p); - ME_ClearTempStyle(editor); - ME_RepaintSelection(editor, &tmp_curs); - ME_SendSelChange(editor); - return TRUE; - case VK_DOWN: - ME_ArrowDown(editor, p); - ME_ClearTempStyle(editor); - ME_RepaintSelection(editor, &tmp_curs); - ME_SendSelChange(editor); - return TRUE; - case VK_PRIOR: - ME_ArrowPageUp(editor, p); - ME_ClearTempStyle(editor); - ME_SendSelChange(editor); - return TRUE; - case VK_NEXT: - ME_ArrowPageDown(editor, p); - ME_ClearTempStyle(editor); - ME_SendSelChange(editor); - return TRUE; - } - + ME_CheckCharOffsets(editor); editor->nUDArrowX = -1; switch(nVKey) { - case VK_BACK: { /* FIXME backspace and delete aren't the same, they act different wrt paragraph style of the merged paragraph */ - if (GetWindowLongW(editor->hWnd, GWL_STYLE) & ES_READONLY) - return FALSE; - if (ME_IsSelection(editor)) - { - editor->bCaretAtEnd = FALSE; /* FIXME or maybe not */ - ME_DeleteSelection(editor); - ME_UpdateRepaint(editor); - ME_SendRequestResize(editor, FALSE); - return TRUE; - } - if (ME_ArrowLeft(editor, p)) { - editor->bCaretAtEnd = FALSE; /* FIXME or maybe not */ - ME_ClearTempStyle(editor); - ME_MoveCaret(editor); - ME_DeleteTextAtCursor(editor, nCursor, 1); - ME_UpdateRepaint(editor); - ME_SendRequestResize(editor, FALSE); - } - return TRUE; - } - case VK_DELETE: { - if (GetWindowLongW(editor->hWnd, GWL_STYLE) & ES_READONLY) - return FALSE; - /* editor->bCaretAtEnd = 0; FIXME or maybe not */ - if (ME_IsSelection(editor)) - { - ME_DeleteSelection(editor); - ME_ClearTempStyle(editor); - ME_UpdateRepaint(editor); - ME_SendRequestResize(editor, FALSE); - return TRUE; - } - ME_DeleteTextAtCursor(editor, nCursor, 1); - ME_ClearTempStyle(editor); - ME_UpdateRepaint(editor); - ME_SendRequestResize(editor, FALSE); - return TRUE; - } - case VK_HOME: { - if (GetKeyState(VK_CONTROL)<0) - ME_ArrowCtrlHome(editor, p); - else - ME_ArrowHome(editor, p); - editor->bCaretAtEnd = 0; - ME_ClearTempStyle(editor); - ME_RepaintSelection(editor, &tmp_curs); - ME_SendSelChange(editor); - return TRUE; - } - case VK_END: - if (GetKeyState(VK_CONTROL)<0) - ME_ArrowCtrlEnd(editor, p); - else - ME_ArrowEnd(editor, p); - ME_ClearTempStyle(editor); - ME_RepaintSelection(editor, &tmp_curs); - ME_SendSelChange(editor); - return TRUE; case VK_LEFT: editor->bCaretAtEnd = 0; - if (ME_CancelSelection(editor, -1)) - return TRUE; - ME_ArrowLeft(editor, p); - ME_RepaintSelection(editor, &tmp_curs); - ME_ClearTempStyle(editor); - ME_SendSelChange(editor); - return TRUE; + if (ctrl) + success = ME_MoveCursorWords(editor, &tmp_curs, -1); + else + success = ME_MoveCursorChars(editor, &tmp_curs, -1); + break; case VK_RIGHT: editor->bCaretAtEnd = 0; - if (ME_CancelSelection(editor, +1)) - return TRUE; - ME_ArrowRight(editor, p); - ME_RepaintSelection(editor, &tmp_curs); - ME_ClearTempStyle(editor); - ME_SendSelChange(editor); - return TRUE; + if (ctrl) + success = ME_MoveCursorWords(editor, &tmp_curs, +1); + else + success = ME_MoveCursorChars(editor, &tmp_curs, +1); + break; + case VK_UP: + ME_MoveCursorLines(editor, &tmp_curs, -1); + break; + case VK_DOWN: + ME_MoveCursorLines(editor, &tmp_curs, +1); + break; + case VK_PRIOR: + ME_ArrowPageUp(editor, &tmp_curs); + break; + case VK_NEXT: + ME_ArrowPageDown(editor, &tmp_curs); + break; + case VK_HOME: { + if (ctrl) + ME_ArrowCtrlHome(editor, &tmp_curs); + else + ME_ArrowHome(editor, &tmp_curs); + editor->bCaretAtEnd = 0; + break; + } + case VK_END: + if (ctrl) + ME_ArrowCtrlEnd(editor, &tmp_curs); + else + ME_ArrowEnd(editor, &tmp_curs); + break; } - return FALSE; + + if (!extend) + editor->pCursors[1] = tmp_curs; + *p = tmp_curs; + + ME_InvalidateSelection(editor); + ME_Repaint(editor); + HideCaret(editor->hWnd); + ME_EnsureVisible(editor, tmp_curs.pRun); + ME_ShowCaret(editor); + ME_SendSelChange(editor); + return success; } diff --git a/reactos/dll/win32/riched20/clipboard.c b/reactos/dll/win32/riched20/clipboard.c new file mode 100644 index 00000000000..99d9503dcc4 --- /dev/null +++ b/reactos/dll/win32/riched20/clipboard.c @@ -0,0 +1,412 @@ +/* + * Richedit clipboard handling + * + * Copyright (C) 2006 Kevin Koltzau + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "editor.h" + +WINE_DEFAULT_DEBUG_CHANNEL(richedit); + +static UINT cfRTF = 0; + +typedef struct DataObjectImpl { + const IDataObjectVtbl *lpVtbl; + LONG ref; + + FORMATETC *fmtetc; + UINT fmtetc_cnt; + + HANDLE unicode; + HANDLE rtf; +} DataObjectImpl; + +typedef struct EnumFormatImpl { + const IEnumFORMATETCVtbl *lpVtbl; + LONG ref; + + FORMATETC *fmtetc; + UINT fmtetc_cnt; + + UINT cur; +} EnumFormatImpl; + +static HRESULT EnumFormatImpl_Create(FORMATETC *fmtetc, UINT size, LPENUMFORMATETC *lplpformatetc); + +static HRESULT WINAPI EnumFormatImpl_QueryInterface(IEnumFORMATETC *iface, REFIID riid, LPVOID *ppvObj) +{ + EnumFormatImpl *This = (EnumFormatImpl*)iface; + TRACE("%p %s\n", This, debugstr_guid(riid)); + + if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IEnumFORMATETC)) { + IEnumFORMATETC_AddRef(iface); + *ppvObj = (LPVOID)This; + return S_OK; + } + *ppvObj = NULL; + return E_NOINTERFACE; +} + +static ULONG WINAPI EnumFormatImpl_AddRef(IEnumFORMATETC *iface) +{ + EnumFormatImpl *This = (EnumFormatImpl*)iface; + LONG ref = InterlockedIncrement(&This->ref); + TRACE("(%p) ref=%d\n", This, ref); + return ref; +} + +static ULONG WINAPI EnumFormatImpl_Release(IEnumFORMATETC *iface) +{ + EnumFormatImpl *This = (EnumFormatImpl*)iface; + ULONG ref = InterlockedDecrement(&This->ref); + TRACE("(%p) ref=%d\n", This, ref); + + if(!ref) { + GlobalFree(This->fmtetc); + richedit_free(This); + } + + return ref; +} + +static HRESULT WINAPI EnumFormatImpl_Next(IEnumFORMATETC *iface, ULONG celt, + FORMATETC *rgelt, ULONG *pceltFetched) +{ + EnumFormatImpl *This = (EnumFormatImpl*)iface; + ULONG count = 0; + TRACE("(%p)->(%d %p %p)\n", This, celt, rgelt, pceltFetched); + + if(!rgelt) + return E_INVALIDARG; + + count = min(celt, This->fmtetc_cnt-This->cur); + if(count > 0) { + memcpy(rgelt, This->fmtetc+This->cur, count*sizeof(FORMATETC)); + This->cur += count; + } + if(pceltFetched) + *pceltFetched = count; + return count == celt ? S_OK : S_FALSE; +} + +static HRESULT WINAPI EnumFormatImpl_Skip(IEnumFORMATETC *iface, ULONG celt) +{ + EnumFormatImpl *This = (EnumFormatImpl*)iface; + ULONG count = 0; + TRACE("(%p)->(%d)\n", This, celt); + + count = min(celt, This->fmtetc_cnt-This->cur); + This->cur += count; + return count == celt ? S_OK : S_FALSE; +} + +static HRESULT WINAPI EnumFormatImpl_Reset(IEnumFORMATETC *iface) +{ + EnumFormatImpl *This = (EnumFormatImpl*)iface; + TRACE("(%p)\n", This); + + This->cur = 0; + return S_OK; +} + +static HRESULT WINAPI EnumFormatImpl_Clone(IEnumFORMATETC *iface, IEnumFORMATETC **ppenum) +{ + EnumFormatImpl *This = (EnumFormatImpl*)iface; + HRESULT hr; + TRACE("(%p)->(%p)\n", This, ppenum); + + if(!ppenum) + return E_INVALIDARG; + hr = EnumFormatImpl_Create(This->fmtetc, This->fmtetc_cnt, ppenum); + if(SUCCEEDED(hr)) + hr = IEnumFORMATETC_Skip(*ppenum, This->cur); + return hr; +} + +static const IEnumFORMATETCVtbl VT_EnumFormatImpl = { + EnumFormatImpl_QueryInterface, + EnumFormatImpl_AddRef, + EnumFormatImpl_Release, + EnumFormatImpl_Next, + EnumFormatImpl_Skip, + EnumFormatImpl_Reset, + EnumFormatImpl_Clone +}; + +static HRESULT EnumFormatImpl_Create(FORMATETC *fmtetc, UINT fmtetc_cnt, IEnumFORMATETC **lplpformatetc) +{ + EnumFormatImpl *ret; + TRACE("\n"); + + ret = richedit_alloc(sizeof(EnumFormatImpl)); + ret->lpVtbl = &VT_EnumFormatImpl; + ret->ref = 1; + ret->cur = 0; + ret->fmtetc_cnt = fmtetc_cnt; + ret->fmtetc = GlobalAlloc(GMEM_ZEROINIT, fmtetc_cnt*sizeof(FORMATETC)); + memcpy(ret->fmtetc, fmtetc, fmtetc_cnt*sizeof(FORMATETC)); + *lplpformatetc = (LPENUMFORMATETC)ret; + return S_OK; +} + +static HRESULT WINAPI DataObjectImpl_QueryInterface(IDataObject *iface, REFIID riid, LPVOID *ppvObj) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + TRACE("(%p)->(%s)\n", This, debugstr_guid(riid)); + + if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDataObject)) { + IDataObject_AddRef(iface); + *ppvObj = (LPVOID)This; + return S_OK; + } + *ppvObj = NULL; + return E_NOINTERFACE; +} + +static ULONG WINAPI DataObjectImpl_AddRef(IDataObject* iface) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + ULONG ref = InterlockedIncrement(&This->ref); + TRACE("(%p) ref=%d\n", This, ref); + return ref; +} + +static ULONG WINAPI DataObjectImpl_Release(IDataObject* iface) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + ULONG ref = InterlockedDecrement(&This->ref); + TRACE("(%p) ref=%d\n",This, ref); + + if(!ref) { + if(This->unicode) GlobalFree(This->unicode); + if(This->rtf) GlobalFree(This->rtf); + if(This->fmtetc) GlobalFree(This->fmtetc); + richedit_free(This); + } + + return ref; +} + +static HRESULT WINAPI DataObjectImpl_GetData(IDataObject* iface, FORMATETC *pformatetc, STGMEDIUM *pmedium) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + TRACE("(%p)->(fmt=0x%08x tym=0x%08x)\n", This, pformatetc->cfFormat, pformatetc->tymed); + + if(pformatetc->lindex != -1) + return DV_E_LINDEX; + + if(!(pformatetc->tymed & TYMED_HGLOBAL)) + return DV_E_TYMED; + + if(This->unicode && pformatetc->cfFormat == CF_UNICODETEXT) + pmedium->u.hGlobal = This->unicode; + else if(This->rtf && pformatetc->cfFormat == cfRTF) + pmedium->u.hGlobal = This->rtf; + else + return DV_E_FORMATETC; + + pmedium->tymed = TYMED_HGLOBAL; + pmedium->pUnkForRelease = (LPUNKNOWN)iface; + IUnknown_AddRef(pmedium->pUnkForRelease); + return S_OK; +} + +static HRESULT WINAPI DataObjectImpl_GetDataHere(IDataObject* iface, FORMATETC *pformatetc, STGMEDIUM *pmedium) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + FIXME("(%p): stub\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObjectImpl_QueryGetData(IDataObject* iface, FORMATETC *pformatetc) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + UINT i; + BOOL foundFormat = FALSE; + TRACE("(%p)->(fmt=0x%08x tym=0x%08x)\n", This, pformatetc->cfFormat, pformatetc->tymed); + + if(pformatetc->lindex != -1) + return DV_E_LINDEX; + + for(i=0; ifmtetc_cnt; i++) { + if(This->fmtetc[i].cfFormat == pformatetc->cfFormat) { + foundFormat = TRUE; + if(This->fmtetc[i].tymed == pformatetc->tymed) + return S_OK; + } + } + return foundFormat?DV_E_FORMATETC:DV_E_TYMED; +} + +static HRESULT WINAPI DataObjectImpl_GetCanonicalFormatEtc(IDataObject* iface, FORMATETC *pformatectIn, + FORMATETC *pformatetcOut) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + TRACE("(%p)->(%p,%p)\n", This, pformatectIn, pformatetcOut); + + if(pformatetcOut) { + memcpy(pformatetcOut, pformatectIn, sizeof(FORMATETC)); + pformatetcOut->ptd = NULL; + } + return DATA_S_SAMEFORMATETC; +} + +static HRESULT WINAPI DataObjectImpl_SetData(IDataObject* iface, FORMATETC *pformatetc, + STGMEDIUM *pmedium, BOOL fRelease) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + FIXME("(%p): stub\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObjectImpl_EnumFormatEtc(IDataObject* iface, DWORD dwDirection, + IEnumFORMATETC **ppenumFormatEtc) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + TRACE("(%p)->(%d)\n", This, dwDirection); + + if(dwDirection != DATADIR_GET) { + FIXME("Unsupported direction: %d\n", dwDirection); + /* WinXP riched20 also returns E_NOTIMPL in this case */ + return E_NOTIMPL; + } + return EnumFormatImpl_Create(This->fmtetc, This->fmtetc_cnt, ppenumFormatEtc); +} + +static HRESULT WINAPI DataObjectImpl_DAdvise(IDataObject* iface, FORMATETC *pformatetc, DWORD advf, + IAdviseSink *pAdvSink, DWORD *pdwConnection) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + FIXME("(%p): stub\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObjectImpl_DUnadvise(IDataObject* iface, DWORD dwConnection) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + FIXME("(%p): stub\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObjectImpl_EnumDAdvise(IDataObject* iface, IEnumSTATDATA **ppenumAdvise) +{ + DataObjectImpl *This = (DataObjectImpl*)iface; + FIXME("(%p): stub\n", This); + return E_NOTIMPL; +} + +static const IDataObjectVtbl VT_DataObjectImpl = +{ + DataObjectImpl_QueryInterface, + DataObjectImpl_AddRef, + DataObjectImpl_Release, + DataObjectImpl_GetData, + DataObjectImpl_GetDataHere, + DataObjectImpl_QueryGetData, + DataObjectImpl_GetCanonicalFormatEtc, + DataObjectImpl_SetData, + DataObjectImpl_EnumFormatEtc, + DataObjectImpl_DAdvise, + DataObjectImpl_DUnadvise, + DataObjectImpl_EnumDAdvise +}; + +static HGLOBAL get_unicode_text(ME_TextEditor *editor, CHARRANGE *lpchrg) +{ + int pars, len; + WCHAR *data; + HANDLE ret; + + pars = ME_CountParagraphsBetween(editor, lpchrg->cpMin, lpchrg->cpMax); + len = lpchrg->cpMax-lpchrg->cpMin; + ret = GlobalAlloc(GMEM_MOVEABLE, sizeof(WCHAR)*(len+pars+1)); + data = (WCHAR *)GlobalLock(ret); + len = ME_GetTextW(editor, data, lpchrg->cpMin, len, TRUE); + data[len] = 0; + GlobalUnlock(ret); + return ret; +} + +typedef struct tagME_GlobalDestStruct +{ + HGLOBAL hData; + int nLength; +} ME_GlobalDestStruct; + +static DWORD CALLBACK ME_AppendToHGLOBAL(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb) +{ + ME_GlobalDestStruct *pData = (ME_GlobalDestStruct *)dwCookie; + int nMaxSize; + BYTE *pDest; + + nMaxSize = GlobalSize(pData->hData); + if (pData->nLength+cb+1 >= cb) { + /* round up to 2^17 */ + int nNewSize = (((nMaxSize+cb+1)|0x1FFFF)+1) & 0xFFFE0000; + pData->hData = GlobalReAlloc(pData->hData, nNewSize, 0); + } + pDest = (BYTE *)GlobalLock(pData->hData); + memcpy(pDest + pData->nLength, lpBuff, cb); + pData->nLength += cb; + pDest[pData->nLength] = '\0'; + GlobalUnlock(pData->hData); + *pcb = cb; + + return 0; +} + +static HGLOBAL get_rtf_text(ME_TextEditor *editor, CHARRANGE *lpchrg) +{ + EDITSTREAM es; + ME_GlobalDestStruct gds; + + gds.hData = GlobalAlloc(GMEM_MOVEABLE, 0); + gds.nLength = 0; + es.dwCookie = (DWORD_PTR)&gds; + es.pfnCallback = ME_AppendToHGLOBAL; + ME_StreamOutRange(editor, SF_RTF, lpchrg->cpMin, lpchrg->cpMax, &es); + GlobalReAlloc(gds.hData, gds.nLength+1, 0); + return gds.hData; +} + +HRESULT ME_GetDataObject(ME_TextEditor *editor, CHARRANGE *lpchrg, LPDATAOBJECT *lplpdataobj) +{ + DataObjectImpl *obj; + TRACE("(%p,%d,%d)\n", editor, lpchrg->cpMin, lpchrg->cpMax); + + obj = richedit_alloc(sizeof(DataObjectImpl)); + if(cfRTF == 0) + cfRTF = RegisterClipboardFormatA("Rich Text Format"); + + obj->lpVtbl = &VT_DataObjectImpl; + obj->ref = 1; + obj->unicode = get_unicode_text(editor, lpchrg); + obj->rtf = NULL; + + obj->fmtetc_cnt = 1; + if(editor->mode & TM_RICHTEXT) + obj->fmtetc_cnt++; + obj->fmtetc = GlobalAlloc(GMEM_ZEROINIT, obj->fmtetc_cnt*sizeof(FORMATETC)); + InitFormatEtc(obj->fmtetc[0], CF_UNICODETEXT, TYMED_HGLOBAL); + if(editor->mode & TM_RICHTEXT) { + obj->rtf = get_rtf_text(editor, lpchrg); + InitFormatEtc(obj->fmtetc[1], cfRTF, TYMED_HGLOBAL); + } + + *lplpdataobj = (LPDATAOBJECT)obj; + return S_OK; +} diff --git a/reactos/dll/win32/riched20/context.c b/reactos/dll/win32/riched20/context.c index 0c851e6fabc..7eef5564a8e 100644 --- a/reactos/dll/win32/riched20/context.c +++ b/reactos/dll/win32/riched20/context.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "editor.h" diff --git a/reactos/dll/win32/riched20/editor.c b/reactos/dll/win32/riched20/editor.c index b5e73af60b4..2e2c54911d8 100644 --- a/reactos/dll/win32/riched20/editor.c +++ b/reactos/dll/win32/riched20/editor.c @@ -3,6 +3,7 @@ * * Copyright 2004 by Krzysztof Foltman * Copyright 2005 by Cihan Altinay + * Copyright 2005 by Phil Krylov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -16,14 +17,14 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ /* API implementation status: Messages (ANSI versions not done yet) - - EM_AUTOURLDETECT 2.0 + + EM_AUTOURLDETECT 2.0 + EM_CANPASTE + EM_CANREDO 2.0 + EM_CANUNDO @@ -31,7 +32,7 @@ - EM_DISPLAYBAND + EM_EMPTYUNDOBUFFER + EM_EXGETSEL - - EM_EXLIMITTEXT + + EM_EXLIMITTEXT + EM_EXLINEFROMCHAR + EM_EXSETSEL + EM_FINDTEXT (only FR_DOWN flag implemented) @@ -39,7 +40,7 @@ - EM_FINDWORDBREAK - EM_FMTLINES - EM_FORMATRANGE - - EM_GETAUTOURLDETECT 2.0 + + EM_GETAUTOURLDETECT 2.0 - EM_GETBIDIOPTIONS 3.0 - EM_GETCHARFORMAT (partly done) - EM_GETEDITSTYLE @@ -50,20 +51,20 @@ - EM_GETIMEOPTIONS 1.0asian - EM_GETIMESTATUS - EM_GETLANGOPTIONS 2.0 - - EM_GETLIMITTEXT - - EM_GETLINE + + EM_GETLIMITTEXT + + EM_GETLINE + EM_GETLINECOUNT returns number of rows, not of paragraphs + EM_GETMODIFY - EM_GETOLEINTERFACE - - EM_GETOPTIONS + + EM_GETOPTIONS + EM_GETPARAFORMAT - - EM_GETPASSWORDCHAR 2.0 + + EM_GETPASSWORDCHAR 2.0 - EM_GETPUNCTUATION 1.0asian + EM_GETRECT - EM_GETREDONAME 2.0 + EM_GETSEL + EM_GETSELTEXT (ANSI&Unicode) - - EM_GETSCROLLPOS 3.0 + + EM_GETSCROLLPOS 3.0 (only Y value valid) ! - EM_GETTHUMB - EM_GETTEXTEX 2.0 + EM_GETTEXTLENGTHEX (GTL_PRECISE unimplemented) @@ -71,12 +72,12 @@ ? + EM_GETTEXTRANGE (ANSI&Unicode) - EM_GETTYPOGRAPHYOPTIONS 3.0 - EM_GETUNDONAME - - EM_GETWORDBREAKPROC + + EM_GETWORDBREAKPROC - EM_GETWORDBREAKPROCEX - EM_GETWORDWRAPMODE 1.0asian + EM_GETZOOM 3.0 - - EM_HIDESELECTION - - EM_LIMITTEXT + + EM_HIDESELECTION + + EM_LIMITTEXT (Also called EM_SETLIMITTEXT) + EM_LINEFROMCHAR + EM_LINEINDEX + EM_LINELENGTH @@ -86,12 +87,12 @@ + EM_REDO 2.0 + EM_REQUESTRESIZE + EM_REPLACESEL (proper style?) ANSI&Unicode - - EM_SCROLL - - EM_SCROLLCARET + + EM_SCROLL + + EM_SCROLLCARET - EM_SELECTIONTYPE - EM_SETBIDIOPTIONS 3.0 + EM_SETBKGNDCOLOR - - EM_SETCHARFORMAT (partly done, no ANSI) + + EM_SETCHARFORMAT (partly done, no ANSI) - EM_SETEDITSTYLE + EM_SETEVENTMASK (few notifications supported) - EM_SETFONTSIZE @@ -101,27 +102,27 @@ - EM_SETLIMITTEXT + EM_SETMODIFY (not sure if implementation is correct) - EM_SETOLECALLBACK - - EM_SETOPTIONS + + EM_SETOPTIONS (partially implemented) - EM_SETPALETTE 2.0 + EM_SETPARAFORMAT - - EM_SETPASSWORDCHAR 2.0 + + EM_SETPASSWORDCHAR 2.0 - EM_SETPUNCTUATION 1.0asian + EM_SETREADONLY no beep on modification attempt + EM_SETRECT + EM_SETRECTNP (EM_SETRECT without repainting) + EM_SETSEL - - EM_SETSCROLLPOS 3.0 + + EM_SETSCROLLPOS 3.0 - EM_SETTABSTOPS 3.0 - EM_SETTARGETDEVICE + EM_SETTEXTEX 3.0 (unicode only, no rich text insertion handling, proper style?) - EM_SETTEXTMODE 2.0 - EM_SETTYPOGRAPHYOPTIONS 3.0 - - EM_SETUNDOLIMIT 2.0 - - EM_SETWORDBREAKPROC + + EM_SETUNDOLIMIT 2.0 + + EM_SETWORDBREAKPROC (used only for word movement at the moment) - EM_SETWORDBREAKPROCEX - EM_SETWORDWRAPMODE 1.0asian + EM_SETZOOM 3.0 - - EM_SHOWSCROLLBAR 2.0 + + EM_SHOWSCROLLBAR 2.0 - EM_STOPGROUPTYPING 2.0 + EM_STREAMIN + EM_STREAMOUT @@ -134,7 +135,7 @@ + WM_GETTEXT (ANSI&Unicode) + WM_GETTEXTLENGTH (ANSI version sucks) + WM_PASTE - - WM_SETFONT + + WM_SETFONT + WM_SETTEXT (resets undo stack !) (proper style?) ANSI&Unicode - WM_STYLECHANGING - WM_STYLECHANGED (things like read-only flag) @@ -167,7 +168,7 @@ - ES_AUTOHSCROLL - ES_AUTOVSCROLL - ES_CENTER - - ES_DISABLENOSCROLL (scrollbar is always visible) + + ES_DISABLENOSCROLL (scrollbar is always visible) - ES_EX_NOCALLOLEINIT - ES_LEFT - ES_MULTILINE (currently single line controls aren't supported) @@ -181,7 +182,7 @@ - ES_WANTRETURN (don't know how to do WM_GETDLGCODE part) - WS_SETFONT - WS_HSCROLL - - WS_VSCROLL + + WS_VSCROLL */ /* @@ -191,8 +192,6 @@ * - Undo coalescing * - add remaining CHARFORMAT/PARAFORMAT fields * - right/center align should strip spaces from the beginning - * - more advanced navigation (Ctrl-arrows) - * - tabs * - pictures/OLE objects (not just smiling faces that lack API support ;-) ) * - COM interface (looks like a major pain in the TODO list) * - calculate heights of pictures (half-done) @@ -224,22 +223,38 @@ #include "editor.h" #include "commdlg.h" -#include "ole2.h" -#include "richole.h" #include "winreg.h" #define NO_SHLWAPI_STREAM #include "shlwapi.h" - +#include "imm.h" +#include "textserv.h" #include "rtf.h" + +#define STACK_SIZE_DEFAULT 100 +#define STACK_SIZE_MAX 1000 + +#define TEXT_LIMIT_DEFAULT 32767 WINE_DEFAULT_DEBUG_CHANNEL(richedit); +static BOOL ME_RegisterEditorClass(HINSTANCE); + +static const WCHAR RichEdit20W[] = {'R', 'i', 'c', 'h', 'E', 'd', 'i', 't', '2', '0', 'W', 0}; +static const WCHAR RichEdit50W[] = {'R', 'i', 'c', 'h', 'E', 'd', 'i', 't', '5', '0', 'W', 0}; +static const WCHAR REListBox20W[] = {'R','E','L','i','s','t','B','o','x','2','0','W', 0}; +static const WCHAR REComboBox20W[] = {'R','E','C','o','m','b','o','B','o','x','2','0','W', 0}; + int me_debug = 0; HANDLE me_heap = NULL; static BOOL ME_ListBoxRegistered = FALSE; static BOOL ME_ComboBoxRegistered = FALSE; +static inline int is_version_nt(void) +{ + return !(GetVersion() & 0x80000000); +} + static ME_TextBuffer *ME_MakeText(void) { ME_TextBuffer *buf = ALLOC_OBJ(ME_TextBuffer); @@ -268,7 +283,7 @@ static LRESULT ME_StreamInText(ME_TextEditor *editor, DWORD dwFormat, ME_InStrea WCHAR wszText[STREAMIN_BUFFER_SIZE+1]; WCHAR *pText; - TRACE("%08lx %p\n", dwFormat, stream); + TRACE("%08x %p\n", dwFormat, stream); do { long nWideChars = 0; @@ -300,7 +315,7 @@ static LRESULT ME_StreamInText(ME_TextEditor *editor, DWORD dwFormat, ME_InStrea stream->dwSize = 0; } while(1); ME_CommitUndo(editor); - ME_Repaint(editor); + ME_UpdateRepaint(editor); return 0; } @@ -309,7 +324,8 @@ static void ME_RTFCharAttrHook(RTF_Info *info) CHARFORMAT2W fmt; fmt.cbSize = sizeof(fmt); fmt.dwMask = 0; - + fmt.dwEffects = 0; + switch(info->rtfMinor) { case rtfPlain: @@ -350,6 +366,10 @@ static void ME_RTFCharAttrHook(RTF_Info *info) if (info->rtfMinor == rtfSuperScrShrink) fmt.dwEffects = CFE_SUPERSCRIPT; if (info->rtfMinor == rtfNoSuperSub) fmt.dwEffects = 0; break; + case rtfInvisible: + fmt.dwMask = CFM_HIDDEN; + fmt.dwEffects = info->rtfParam ? fmt.dwMask : 0; + break; case rtfBackColor: fmt.dwMask = CFM_BACKCOLOR; fmt.dwEffects = 0; @@ -369,7 +389,10 @@ static void ME_RTFCharAttrHook(RTF_Info *info) else if (info->rtfParam != rtfNoParam) { RTFColor *c = RTFGetColor(info, info->rtfParam); - fmt.crTextColor = (c->rtfCBlue<<16)|(c->rtfCGreen<<8)|(c->rtfCRed); + if (c) + fmt.crTextColor = (c->rtfCBlue<<16)|(c->rtfCGreen<<8)|(c->rtfCRed); + else + fmt.crTextColor = 0; } break; case rtfFontNum: @@ -412,28 +435,35 @@ static void ME_RTFParAttrHook(RTF_Info *info) switch(info->rtfMinor) { - case rtfParDef: /* I'm not 100% sure what does it do, but I guess it restores default paragraph attributes */ + case rtfParDef: /* restores default paragraph attributes */ fmt.dwMask = PFM_ALIGNMENT | PFM_TABSTOPS | PFM_OFFSET | PFM_STARTINDENT; fmt.wAlignment = PFA_LEFT; fmt.cTabCount = 0; fmt.dxOffset = fmt.dxStartIndent = 0; + RTFFlushOutputBuffer(info); + ME_GetParagraph(info->editor->pCursors[0].pRun)->member.para.bTable = FALSE; break; + case rtfInTable: + { + ME_DisplayItem *para; + + RTFFlushOutputBuffer(info); + para = ME_GetParagraph(info->editor->pCursors[0].pRun); + assert(para->member.para.pCells); + para->member.para.bTable = TRUE; + return; + } case rtfFirstIndent: ME_GetSelectionParaFormat(info->editor, &fmt); - fmt.dwMask = PFM_STARTINDENT; - fmt.dxStartIndent = info->rtfParam + fmt.dxOffset; + fmt.dwMask = PFM_STARTINDENT | PFM_OFFSET; + fmt.dxStartIndent += info->rtfParam + fmt.dxOffset; + fmt.dxOffset = -info->rtfParam; break; case rtfLeftIndent: - { - int first, left; ME_GetSelectionParaFormat(info->editor, &fmt); - first = fmt.dxStartIndent; - left = info->rtfParam; - fmt.dwMask = PFM_STARTINDENT|PFM_OFFSET; - fmt.dxStartIndent = first + left; - fmt.dxOffset = -first; + fmt.dwMask = PFM_STARTINDENT; + fmt.dxStartIndent = -fmt.dxOffset + info->rtfParam; break; - } case rtfRightIndent: fmt.dwMask = PFM_RIGHTINDENT; fmt.dxRightIndent = info->rtfParam; @@ -469,6 +499,41 @@ static void ME_RTFParAttrHook(RTF_Info *info) } } +static void ME_RTFTblAttrHook(RTF_Info *info) +{ + ME_DisplayItem *para; + + switch (info->rtfMinor) + { + case rtfRowDef: + RTFFlushOutputBuffer(info); + para = ME_GetParagraph(info->editor->pCursors[0].pRun); + + /* Release possibly inherited cell definitions */ + ME_DestroyTableCellList(para); + + para->member.para.pCells = ALLOC_OBJ(ME_TableCell); + para->member.para.pCells->nRightBoundary = 0; + para->member.para.pCells->next = NULL; + para->member.para.pLastCell = para->member.para.pCells; + break; + case rtfCellPos: + RTFFlushOutputBuffer(info); + para = ME_GetParagraph(info->editor->pCursors[0].pRun); + + if (para->member.para.pLastCell->nRightBoundary) + { + ME_TableCell *pCell = ALLOC_OBJ(ME_TableCell); + + pCell->next = NULL; + para->member.para.pLastCell->next = pCell; + para->member.para.pLastCell = pCell; + } + para->member.para.pLastCell->nRightBoundary = info->rtfParam; + break; + } +} + static void ME_RTFReadHook(RTF_Info *info) { switch(info->rtfClass) { @@ -516,6 +581,15 @@ static void ME_RTFReadHook(RTF_Info *info) { case rtfParAttr: ME_RTFParAttrHook(info); break; + case rtfTblAttr: + ME_RTFTblAttrHook(info); + break; + case rtfSpecialChar: + if (info->rtfMinor == rtfCell) + { + RTFFlushOutputBuffer(info); + ME_InsertTableCellFromCursor(info->editor, 0); + } } break; } @@ -536,7 +610,6 @@ static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stre RTF_Info parser; ME_Style *style; int from, to, to2, nUndoMode; - ME_UndoItem *pUI; int nEventMask = editor->nEventMask; ME_InStream inStream; @@ -544,7 +617,7 @@ static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stre editor->nEventMask = 0; ME_GetSelection(editor, &from, &to); - if (format & SFF_SELECTION) { + if ((format & SFF_SELECTION) && (editor->mode & TM_RICHTEXT)) { style = ME_GetSelectionInsertStyle(editor); ME_InternalDeleteText(editor, from, to-from); @@ -558,9 +631,14 @@ static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stre ME_ClearTempStyle(editor); /* FIXME restore default paragraph formatting ! */ } - + + + /* Back up undo mode to a local variable */ nUndoMode = editor->nUndoMode; - editor->nUndoMode = umIgnore; + + /* Only create an undo if SFF_SELECTION is set */ + if (!(format & SFF_SELECTION)) + editor->nUndoMode = umIgnore; inStream.editstream = stream; inStream.editstream->dwError = 0; @@ -573,7 +651,7 @@ static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stre ME_StreamInFill(&inStream); if (!inStream.editstream->dwError) { - if (strncmp(inStream.buffer, "{\\rtf1", 6) && strncmp(inStream.buffer, "{\\urtf", 6)) + if (strncmp(inStream.buffer, "{\\rtf", 5) && strncmp(inStream.buffer, "{\\urtf", 6)) { format &= ~SF_RTF; format |= SF_TEXT; @@ -611,26 +689,22 @@ static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stre /* put the cursor at the top */ if (!(format & SFF_SELECTION)) SendMessageA(editor->hWnd, EM_SETSEL, 0, 0); - else - { - /* FIXME where to put cursor now ? */ - } } - + + /* Restore saved undo mode */ editor->nUndoMode = nUndoMode; - pUI = ME_AddUndoItem(editor, diUndoDeleteRun, NULL); - TRACE("from %d to %d\n", from, to); - if (pUI && from < to) - { - pUI->nStart = from; - pUI->nLen = to-from; - } + + /* even if we didn't add an undo, we need to commit anything on the stack */ ME_CommitUndo(editor); - ME_ReleaseStyle(style); + + /* If SFF_SELECTION isn't set, delete any undos from before we started too */ + if (!(format & SFF_SELECTION)) + ME_EmptyUndoStack(editor); + + ME_ReleaseStyle(style); editor->nEventMask = nEventMask; if (editor->bRedraw) { - InvalidateRect(editor->hWnd, NULL, TRUE); ME_UpdateRepaint(editor); } if (!(format & SFF_SELECTION)) { @@ -644,6 +718,40 @@ static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stre } +typedef struct tagME_RTFStringStreamStruct +{ + char *string; + int pos; + int length; +} ME_RTFStringStreamStruct; + +static DWORD CALLBACK ME_ReadFromRTFString(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb) +{ + ME_RTFStringStreamStruct *pStruct = (ME_RTFStringStreamStruct *)dwCookie; + int count; + + count = min(cb, pStruct->length - pStruct->pos); + memmove(lpBuff, pStruct->string + pStruct->pos, count); + pStruct->pos += count; + *pcb = count; + return 0; +} + +static void +ME_StreamInRTFString(ME_TextEditor *editor, BOOL selection, char *string) +{ + EDITSTREAM es; + ME_RTFStringStreamStruct data; + + data.string = string; + data.length = strlen(string); + data.pos = 0; + es.dwCookie = (DWORD)&data; + es.pfnCallback = ME_ReadFromRTFString; + ME_StreamIn(editor, SF_RTF | (selection ? SFF_SELECTION : 0), &es); +} + + ME_DisplayItem * ME_FindItemAtOffset(ME_TextEditor *editor, ME_DIType nItemType, int nOffset, int *nItemOffset) { @@ -675,61 +783,116 @@ ME_FindItemAtOffset(ME_TextEditor *editor, ME_DIType nItemType, int nOffset, int static int -ME_FindText(ME_TextEditor *editor, DWORD flags, CHARRANGE *chrg, WCHAR *text, CHARRANGE *chrgText) +ME_FindText(ME_TextEditor *editor, DWORD flags, CHARRANGE *chrg, const WCHAR *text, CHARRANGE *chrgText) { + const int nLen = lstrlenW(text); + const int nTextLen = ME_GetTextLength(editor); int nStart, nEnd; - int nLen = lstrlenW(text); int nMin, nMax; ME_DisplayItem *item; ME_DisplayItem *para; + WCHAR wLastChar = ' '; - TRACE("flags==0x%08lx, chrg->cpMin==%ld, chrg->cpMax==%ld text==%s\n", + TRACE("flags==0x%08x, chrg->cpMin==%d, chrg->cpMax==%d text==%s\n", flags, chrg->cpMin, chrg->cpMax, debugstr_w(text)); - if (!(flags & FR_MATCHCASE)) - FIXME("Case-insensitive search not implemented\n"); - if (flags & ~(FR_DOWN | FR_MATCHCASE)) - FIXME("Flags 0x%08lx not implemented\n", flags & ~(FR_DOWN | FR_MATCHCASE)); + if (flags & ~(FR_DOWN | FR_MATCHCASE | FR_WHOLEWORD)) + FIXME("Flags 0x%08x not implemented\n", + flags & ~(FR_DOWN | FR_MATCHCASE | FR_WHOLEWORD)); + nMin = chrg->cpMin; if (chrg->cpMax == -1) - { - nMin = chrg->cpMin; - nMax = ME_GetTextLength(editor); - } + nMax = nTextLen; else - { - nMin = min(chrg->cpMin, chrg->cpMax); - nMax = max(chrg->cpMin, chrg->cpMax); - } + nMax = chrg->cpMax > nTextLen ? nTextLen : chrg->cpMax; - if (!nLen) + /* when searching up, if cpMin < cpMax, then instead of searching + * on [cpMin,cpMax], we search on [0,cpMin], otherwise, search on + * [cpMax, cpMin]. The exception is when cpMax is -1, in which + * case, it is always bigger than cpMin. + */ + if (!(flags & FR_DOWN)) + { + int nSwap = nMax; + + nMax = nMin > nTextLen ? nTextLen : nMin; + if (nMin < nSwap || chrg->cpMax == -1) + nMin = 0; + else + nMin = nSwap; + } + + if (!nLen || nMin < 0 || nMax < 0 || nMax < nMin) { if (chrgText) - chrgText->cpMin = chrgText->cpMax = ((flags & FR_DOWN) ? nMin : nMax); - return chrgText->cpMin; + chrgText->cpMin = chrgText->cpMax = -1; + return -1; } if (flags & FR_DOWN) /* Forward search */ { + /* If possible, find the character before where the search starts */ + if ((flags & FR_WHOLEWORD) && nMin) + { + nStart = nMin - 1; + item = ME_FindItemAtOffset(editor, diRun, nStart, &nStart); + if (!item) + { + if (chrgText) + chrgText->cpMin = chrgText->cpMax = -1; + return -1; + } + wLastChar = item->member.run.strText->szData[nStart]; + } + nStart = nMin; item = ME_FindItemAtOffset(editor, diRun, nStart, &nStart); if (!item) + { + if (chrgText) + chrgText->cpMin = chrgText->cpMax = -1; return -1; + } para = ME_GetParagraph(item); while (item - && para->member.para.nCharOfs + item->member.run.nCharOfs + nStart + nLen < nMax) + && para->member.para.nCharOfs + item->member.run.nCharOfs + nStart + nLen <= nMax) { ME_DisplayItem *pCurItem = item; int nCurStart = nStart; int nMatched = 0; - while (pCurItem && pCurItem->member.run.strText->szData[nCurStart + nMatched] == text[nMatched]) + while (pCurItem && ME_CharCompare(pCurItem->member.run.strText->szData[nCurStart + nMatched], text[nMatched], (flags & FR_MATCHCASE))) { + if ((flags & FR_WHOLEWORD) && isalnumW(wLastChar)) + break; + nMatched++; if (nMatched == nLen) { - nStart += para->member.para.nCharOfs + item->member.run.nCharOfs; + ME_DisplayItem *pNextItem = pCurItem; + int nNextStart = nCurStart; + WCHAR wNextChar; + + /* Check to see if next character is a whitespace */ + if (flags & FR_WHOLEWORD) + { + if (nCurStart + nMatched == ME_StrLen(pCurItem->member.run.strText)) + { + pNextItem = ME_FindItemFwd(pCurItem, diRun); + nNextStart = -nMatched; + } + + if (pNextItem) + wNextChar = pNextItem->member.run.strText->szData[nNextStart + nMatched]; + else + wNextChar = ' '; + + if (isalnumW(wNextChar)) + break; + } + + nStart += para->member.para.nCharOfs + pCurItem->member.run.nCharOfs; if (chrgText) { chrgText->cpMin = nStart; @@ -745,6 +908,11 @@ ME_FindText(ME_TextEditor *editor, DWORD flags, CHARRANGE *chrg, WCHAR *text, CH nCurStart = -nMatched; } } + if (pCurItem) + wLastChar = pCurItem->member.run.strText->szData[nCurStart + nMatched]; + else + wLastChar = ' '; + nStart++; if (nStart == ME_StrLen(item->member.run.strText)) { @@ -756,10 +924,28 @@ ME_FindText(ME_TextEditor *editor, DWORD flags, CHARRANGE *chrg, WCHAR *text, CH } else /* Backward search */ { + /* If possible, find the character after where the search ends */ + if ((flags & FR_WHOLEWORD) && nMax < nTextLen - 1) + { + nEnd = nMax + 1; + item = ME_FindItemAtOffset(editor, diRun, nEnd, &nEnd); + if (!item) + { + if (chrgText) + chrgText->cpMin = chrgText->cpMax = -1; + return -1; + } + wLastChar = item->member.run.strText->szData[nEnd]; + } + nEnd = nMax; item = ME_FindItemAtOffset(editor, diRun, nEnd, &nEnd); if (!item) + { + if (chrgText) + chrgText->cpMin = chrgText->cpMax = -1; return -1; + } para = ME_GetParagraph(item); @@ -770,12 +956,45 @@ ME_FindText(ME_TextEditor *editor, DWORD flags, CHARRANGE *chrg, WCHAR *text, CH int nCurEnd = nEnd; int nMatched = 0; - while (pCurItem && pCurItem->member.run.strText->szData[nCurEnd - nMatched - 1] == text[nLen - nMatched - 1]) + if (nCurEnd - nMatched == 0) { + pCurItem = ME_FindItemBack(pCurItem, diRun); + para = ME_GetParagraph(pCurItem); + nCurEnd = ME_StrLen(pCurItem->member.run.strText) + nMatched; + } + + while (pCurItem && ME_CharCompare(pCurItem->member.run.strText->szData[nCurEnd - nMatched - 1], text[nLen - nMatched - 1], (flags & FR_MATCHCASE))) + { + if ((flags & FR_WHOLEWORD) && isalnumW(wLastChar)) + break; + nMatched++; if (nMatched == nLen) { - nStart = para->member.para.nCharOfs + item->member.run.nCharOfs + nCurEnd - nMatched; + ME_DisplayItem *pPrevItem = pCurItem; + int nPrevEnd = nCurEnd; + WCHAR wPrevChar; + + /* Check to see if previous character is a whitespace */ + if (flags & FR_WHOLEWORD) + { + if (nPrevEnd - nMatched == 0) + { + pPrevItem = ME_FindItemBack(pCurItem, diRun); + if (pPrevItem) + nPrevEnd = ME_StrLen(pPrevItem->member.run.strText) + nMatched; + } + + if (pPrevItem) + wPrevChar = pPrevItem->member.run.strText->szData[nPrevEnd - nMatched - 1]; + else + wPrevChar = ' '; + + if (isalnumW(wPrevChar)) + break; + } + + nStart = para->member.para.nCharOfs + pCurItem->member.run.nCharOfs + nCurEnd - nMatched; if (chrgText) { chrgText->cpMin = nStart; @@ -787,10 +1006,17 @@ ME_FindText(ME_TextEditor *editor, DWORD flags, CHARRANGE *chrg, WCHAR *text, CH if (nCurEnd - nMatched == 0) { pCurItem = ME_FindItemBack(pCurItem, diRun); + /* Don't care about pCurItem becoming NULL here; it's already taken + * care of in the exterior loop condition */ para = ME_GetParagraph(pCurItem); nCurEnd = ME_StrLen(pCurItem->member.run.strText) + nMatched; } } + if (pCurItem) + wLastChar = pCurItem->member.run.strText->szData[nCurEnd - nMatched - 1]; + else + wLastChar = ' '; + nEnd--; if (nEnd < 0) { @@ -801,10 +1027,93 @@ ME_FindText(ME_TextEditor *editor, DWORD flags, CHARRANGE *chrg, WCHAR *text, CH } } TRACE("not found\n"); + if (chrgText) + chrgText->cpMin = chrgText->cpMax = -1; return -1; } +static BOOL +ME_KeyDown(ME_TextEditor *editor, WORD nKey) +{ + BOOL ctrl_is_down = GetKeyState(VK_CONTROL) & 0x8000; + BOOL shift_is_down = GetKeyState(VK_SHIFT) & 0x8000; + + switch (nKey) + { + case VK_LEFT: + case VK_RIGHT: + case VK_UP: + case VK_DOWN: + case VK_HOME: + case VK_END: + case VK_PRIOR: + case VK_NEXT: + ME_ArrowKey(editor, nKey, shift_is_down, ctrl_is_down); + return TRUE; + case VK_BACK: + case VK_DELETE: + /* FIXME backspace and delete aren't the same, they act different wrt paragraph style of the merged paragraph */ + if (GetWindowLongW(editor->hWnd, GWL_STYLE) & ES_READONLY) + return FALSE; + if (ME_IsSelection(editor)) + ME_DeleteSelection(editor); + else if (nKey == VK_DELETE || ME_ArrowKey(editor, VK_LEFT, FALSE, FALSE)) + ME_DeleteTextAtCursor(editor, 1, 1); + else + return TRUE; + ME_CommitUndo(editor); + ME_UpdateRepaint(editor); + ME_SendRequestResize(editor, FALSE); + return TRUE; + + default: + if (ctrl_is_down) + { + if (nKey == 'W') + { + CHARFORMAT2W chf; + char buf[2048]; + chf.cbSize = sizeof(chf); + + ME_GetSelectionCharFormat(editor, &chf); + ME_DumpStyleToBuf(&chf, buf); + MessageBoxA(NULL, buf, "Style dump", MB_OK); + } + if (nKey == 'Q') + { + ME_CheckCharOffsets(editor); + } + } + } + return FALSE; +} + +static BOOL ME_ShowContextMenu(ME_TextEditor *editor, int x, int y) +{ + CHARRANGE selrange; + HMENU menu; + int seltype = 0; + if(!editor->lpOleCallback) + return FALSE; + ME_GetSelection(editor, (int *)&selrange.cpMin, (int *)&selrange.cpMax); + if(selrange.cpMin == selrange.cpMax) + seltype |= SEL_EMPTY; + else + { + /* FIXME: Handle objects */ + seltype |= SEL_TEXT; + if(selrange.cpMax-selrange.cpMin > 1) + seltype |= SEL_MULTICHAR; + } + if(SUCCEEDED(IRichEditOleCallback_GetContextMenu(editor->lpOleCallback, seltype, NULL, &selrange, &menu))) + { + TrackPopupMenu(menu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, x, y, 0, GetParent(editor->hWnd), NULL); + DestroyMenu(menu); + } + return TRUE; +} + ME_TextEditor *ME_MakeEditor(HWND hWnd) { ME_TextEditor *ed = ALLOC_OBJ(ME_TextEditor); HDC hDC; @@ -816,7 +1125,7 @@ ME_TextEditor *ME_MakeEditor(HWND hWnd) { ME_MakeFirstParagraph(hDC, ed->pBuffer); ReleaseDC(hWnd, hDC); ed->bCaretShown = FALSE; - ed->nCursors = 3; + ed->nCursors = 2; ed->pCursors = ALLOC_N_OBJ(ME_Cursor, ed->nCursors); ed->pCursors[0].pRun = ME_FindItemFwd(ed->pBuffer->pFirst, diRun); ed->pCursors[0].nOffset = 0; @@ -830,13 +1139,22 @@ ME_TextEditor *ME_MakeEditor(HWND hWnd) { ed->bCaretAtEnd = FALSE; ed->nEventMask = 0; ed->nModifyStep = 0; - ed->pUndoStack = ed->pRedoStack = NULL; + ed->nTextLimit = TEXT_LIMIT_DEFAULT; + ed->pUndoStack = ed->pRedoStack = ed->pUndoStackBottom = NULL; + ed->nUndoStackSize = 0; + ed->nUndoLimit = STACK_SIZE_DEFAULT; ed->nUndoMode = umAddToUndo; ed->nParagraphs = 1; ed->nLastSelStart = ed->nLastSelEnd = 0; - ed->nScrollPosY = 0; + ed->pLastSelStartPara = ed->pLastSelEndPara = ME_FindItemFwd(ed->pBuffer->pFirst, diParagraph); ed->nZoomNumerator = ed->nZoomDenominator = 0; ed->bRedraw = TRUE; + ed->bHideSelection = FALSE; + ed->nInvalidOfs = -1; + ed->pfnWordBreak = NULL; + ed->lpOleCallback = NULL; + ed->mode = TM_RICHTEXT | TM_MULTILEVELUNDO | TM_MULTICODEPAGE; + ed->AutoURLDetect_bEnable = FALSE; GetClientRect(hWnd, &ed->rcFormat); for (i=0; ipFontCache[i].nAge = 0; ed->pFontCache[i].hFont = NULL; } + ME_CheckCharOffsets(ed); + + if (GetWindowLongW(hWnd, GWL_STYLE) & ES_PASSWORD) + ed->cPasswordMask = '*'; + else + ed->cPasswordMask = 0; + return ed; } @@ -854,29 +1179,6 @@ typedef struct tagME_GlobalDestStruct int nLength; } ME_GlobalDestStruct; -static DWORD CALLBACK ME_AppendToHGLOBAL(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb) -{ - ME_GlobalDestStruct *pData = (ME_GlobalDestStruct *)dwCookie; - int nMaxSize; - BYTE *pDest; - - nMaxSize = GlobalSize(pData->hData); - if (pData->nLength+cb+1 >= cb) - { - /* round up to 2^17 */ - int nNewSize = (((nMaxSize+cb+1)|0x1FFFF)+1) & 0xFFFE0000; - pData->hData = GlobalReAlloc(pData->hData, nNewSize, 0); - } - pDest = (BYTE *)GlobalLock(pData->hData); - memcpy(pDest + pData->nLength, lpBuff, cb); - pData->nLength += cb; - pDest[pData->nLength] = '\0'; - GlobalUnlock(pData->hData); - *pcb = cb; - - return 0; -} - static DWORD CALLBACK ME_ReadFromHGLOBALUnicode(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb) { ME_GlobalDestStruct *pData = (ME_GlobalDestStruct *)dwCookie; @@ -918,12 +1220,12 @@ void ME_DestroyEditor(ME_TextEditor *editor) ME_DisplayItem *pFirst = editor->pBuffer->pFirst; ME_DisplayItem *p = pFirst, *pNext = NULL; int i; - + ME_ClearTempStyle(editor); ME_EmptyUndoStack(editor); while(p) { pNext = p->next; - ME_DestroyDisplayItem(p); + ME_DestroyDisplayItem(p); p = pNext; } ME_ReleaseStyle(editor->pBuffer->pDefaultStyle); @@ -933,15 +1235,15 @@ void ME_DestroyEditor(ME_TextEditor *editor) DeleteObject(editor->pFontCache[i].hFont); } DeleteObject(editor->hbrBackground); + if(editor->lpOleCallback) + IUnknown_Release(editor->lpOleCallback); + + FREE_OBJ(editor->pBuffer); + FREE_OBJ(editor->pCursors); FREE_OBJ(editor); } -static WCHAR wszClassName[] = {'R', 'i', 'c', 'h', 'E', 'd', 'i', 't', '2', '0', 'W', 0}; -static WCHAR wszClassName50[] = {'R', 'i', 'c', 'h', 'E', 'd', 'i', 't', '5', '0', 'W', 0}; -static WCHAR wszClassNameListBox[] = {'R','E','L','i','s','t','B','o','x','2','0','W', 0}; -static WCHAR wszClassNameComboBox[] = {'R','E','C','o','m','b','o','B','o','x','2','0','W', 0}; - BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { TRACE("\n"); @@ -950,18 +1252,20 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hinstDLL); me_heap = HeapCreate (0, 0x10000, 0); - ME_RegisterEditorClass(hinstDLL); + if (!ME_RegisterEditorClass(hinstDLL)) return FALSE; + LookupInit(); break; case DLL_PROCESS_DETACH: - UnregisterClassW(wszClassName, 0); - UnregisterClassW(wszClassName50, 0); + UnregisterClassW(RichEdit20W, 0); + UnregisterClassW(RichEdit50W, 0); UnregisterClassA("RichEdit20A", 0); UnregisterClassA("RichEdit50A", 0); if (ME_ListBoxRegistered) - UnregisterClassW(wszClassNameListBox, 0); + UnregisterClassW(REListBox20W, 0); if (ME_ComboBoxRegistered) - UnregisterClassW(wszClassNameComboBox, 0); + UnregisterClassW(REComboBox20W, 0); + LookupCleanup(); HeapDestroy (me_heap); me_heap = NULL; break; @@ -1032,7 +1336,7 @@ static const char * const richedit_messages[] = { "EM_GETOLEINTERFACE", "EM_GETPARAFORMAT", "EM_GETSELTEXT", - "EM_HIDESELECTION", + "EM_HIDESELECTION", "EM_PASTESPECIAL", "EM_REQUESTRESIZE", "EM_SELECTIONTYPE", @@ -1102,73 +1406,54 @@ static const char * const richedit_messages[] = { static const char * get_msg_name(UINT msg) { - if (msg >= EM_GETSEL && msg <= EM_SETLIMITTEXT) + if (msg >= EM_GETSEL && msg <= EM_CHARFROMPOS) return edit_messages[msg - EM_GETSEL]; if (msg >= EM_CANPASTE && msg <= EM_GETIMEMODEBIAS) return richedit_messages[msg - EM_CANPASTE]; return ""; } -/****************************************************************** - * RichEditANSIWndProc (RICHED20.10) - */ -LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { - SCROLLINFO si; - ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongW(hWnd, 0); +static LRESULT RichEditWndProc_common(HWND hWnd, UINT msg, WPARAM wParam, + LPARAM lParam, BOOL unicode) +{ + ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(hWnd, 0); - TRACE("hWnd %p msg %04x (%s) %08x %08lx\n", - hWnd, msg, get_msg_name(msg), wParam, lParam); + TRACE("hwnd %p msg %04x (%s) %x %lx, unicode %d\n", + hWnd, msg, get_msg_name(msg), wParam, lParam, unicode); + if (!editor && msg != WM_NCCREATE && msg != WM_NCDESTROY) { + ERR("called with invalid hWnd %p - application bug?\n", hWnd); + return 0; + } + switch(msg) { - UNSUPPORTED_MSG(EM_AUTOURLDETECT) UNSUPPORTED_MSG(EM_DISPLAYBAND) - UNSUPPORTED_MSG(EM_EXLIMITTEXT) UNSUPPORTED_MSG(EM_FINDWORDBREAK) UNSUPPORTED_MSG(EM_FMTLINES) UNSUPPORTED_MSG(EM_FORMATRANGE) - UNSUPPORTED_MSG(EM_GETAUTOURLDETECT) UNSUPPORTED_MSG(EM_GETBIDIOPTIONS) UNSUPPORTED_MSG(EM_GETEDITSTYLE) UNSUPPORTED_MSG(EM_GETIMECOMPMODE) /* UNSUPPORTED_MSG(EM_GETIMESTATUS) missing in Wine headers */ UNSUPPORTED_MSG(EM_GETLANGOPTIONS) - UNSUPPORTED_MSG(EM_GETLIMITTEXT) - UNSUPPORTED_MSG(EM_GETLINE) /* UNSUPPORTED_MSG(EM_GETOLEINTERFACE) separate stub */ - UNSUPPORTED_MSG(EM_GETOPTIONS) - UNSUPPORTED_MSG(EM_GETPASSWORDCHAR) UNSUPPORTED_MSG(EM_GETREDONAME) - UNSUPPORTED_MSG(EM_GETSCROLLPOS) UNSUPPORTED_MSG(EM_GETTEXTMODE) UNSUPPORTED_MSG(EM_GETTYPOGRAPHYOPTIONS) UNSUPPORTED_MSG(EM_GETUNDONAME) - UNSUPPORTED_MSG(EM_GETWORDBREAKPROC) UNSUPPORTED_MSG(EM_GETWORDBREAKPROCEX) - UNSUPPORTED_MSG(EM_HIDESELECTION) - UNSUPPORTED_MSG(EM_LIMITTEXT) /* also known as EM_SETLIMITTEXT */ UNSUPPORTED_MSG(EM_PASTESPECIAL) - UNSUPPORTED_MSG(EM_SCROLL) - UNSUPPORTED_MSG(EM_SCROLLCARET) UNSUPPORTED_MSG(EM_SELECTIONTYPE) UNSUPPORTED_MSG(EM_SETBIDIOPTIONS) UNSUPPORTED_MSG(EM_SETEDITSTYLE) UNSUPPORTED_MSG(EM_SETFONTSIZE) UNSUPPORTED_MSG(EM_SETLANGOPTIONS) - UNSUPPORTED_MSG(EM_SETOLECALLBACK) - UNSUPPORTED_MSG(EM_SETOPTIONS) UNSUPPORTED_MSG(EM_SETPALETTE) - UNSUPPORTED_MSG(EM_SETPASSWORDCHAR) - UNSUPPORTED_MSG(EM_SETSCROLLPOS) UNSUPPORTED_MSG(EM_SETTABSTOPS) UNSUPPORTED_MSG(EM_SETTARGETDEVICE) - UNSUPPORTED_MSG(EM_SETTEXTMODE) UNSUPPORTED_MSG(EM_SETTYPOGRAPHYOPTIONS) - UNSUPPORTED_MSG(EM_SETUNDOLIMIT) - UNSUPPORTED_MSG(EM_SETWORDBREAKPROC) UNSUPPORTED_MSG(EM_SETWORDBREAKPROCEX) - UNSUPPORTED_MSG(EM_SHOWSCROLLBAR) - UNSUPPORTED_MSG(WM_SETFONT) UNSUPPORTED_MSG(WM_STYLECHANGING) UNSUPPORTED_MSG(WM_STYLECHANGED) /* UNSUPPORTED_MSG(WM_UNICHAR) FIXME missing in Wine headers */ @@ -1182,17 +1467,28 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP case WM_GETDLGCODE: { UINT code = DLGC_WANTCHARS|DLGC_WANTARROWS; - if (GetWindowLongW(hWnd, GWL_STYLE)&ES_WANTRETURN) - code |= 0; /* FIXME what can we do here ? ask for messages and censor them ? */ + if(lParam && (((LPMSG)lParam)->message == WM_KEYDOWN)) + { + int vk = (int)((LPMSG)lParam)->wParam; + /* if style says we want return key */ + if((vk == VK_RETURN) && (GetWindowLongW(hWnd, GWL_STYLE) & ES_WANTRETURN)) + { + code |= DLGC_WANTMESSAGE; + } + /* we always handle ctrl-tab */ + if((vk == VK_TAB) && (GetKeyState(VK_CONTROL) & 0x8000)) + { + code |= DLGC_WANTMESSAGE; + } + } return code; } case WM_NCCREATE: { CREATESTRUCTW *pcs = (CREATESTRUCTW *)lParam; - TRACE("WM_NCCREATE: style 0x%08lx\n", pcs->style); + TRACE("WM_NCCREATE: style 0x%08x\n", pcs->style); editor = ME_MakeEditor(hWnd); - SetWindowLongW(hWnd, 0, (long)editor); - pcs = 0; /* ignore */ + SetWindowLongPtrW(hWnd, 0, (LONG_PTR)editor); return TRUE; } case EM_EMPTYUNDOBUFFER: @@ -1213,9 +1509,20 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP { CHARRANGE *pRange = (CHARRANGE *)lParam; ME_GetSelection(editor, (int *)&pRange->cpMin, (int *)&pRange->cpMax); - TRACE("EM_EXGETSEL = (%ld,%ld)\n", pRange->cpMin, pRange->cpMax); + TRACE("EM_EXGETSEL = (%d,%d)\n", pRange->cpMin, pRange->cpMax); return 0; } + case EM_SETUNDOLIMIT: + { + if ((int)wParam < 0) + editor->nUndoLimit = STACK_SIZE_DEFAULT; + else + editor->nUndoLimit = min(wParam, STACK_SIZE_MAX); + /* Setting a max stack size keeps wine from getting killed + for hogging memory. Windows allocates all this memory at once, so + no program would realistically set a value above our maxiumum. */ + return editor->nUndoLimit; + } case EM_CANUNDO: return editor->pUndoStack != NULL; case EM_CANREDO: @@ -1227,31 +1534,114 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP case EM_REDO: ME_Redo(editor); return 0; + case EM_GETOPTIONS: + { + /* these flags are equivalent to the ES_* counterparts */ + DWORD mask = ECO_VERTICAL | ECO_AUTOHSCROLL | ECO_AUTOVSCROLL | + ECO_NOHIDESEL | ECO_READONLY | ECO_WANTRETURN; + DWORD settings = GetWindowLongW(hWnd, GWL_STYLE) & mask; + + return settings; + } + case EM_SETOPTIONS: + { + /* these flags are equivalent to ES_* counterparts + * ECO_READONLY is already implemented in the code, only requires + * setting the bit to work + */ + DWORD mask = ECO_VERTICAL | ECO_AUTOHSCROLL | ECO_AUTOVSCROLL | + ECO_NOHIDESEL | ECO_READONLY | ECO_WANTRETURN; + DWORD raw = GetWindowLongW(hWnd, GWL_STYLE); + DWORD settings = mask & raw; + + switch(wParam) + { + case ECOOP_SET: + settings = lParam; + break; + case ECOOP_OR: + settings |= lParam; + break; + case ECOOP_AND: + settings &= lParam; + break; + case ECOOP_XOR: + settings ^= lParam; + } + SetWindowLongW(hWnd, GWL_STYLE, (raw & ~mask) | (settings & mask)); + + if (lParam & ECO_AUTOWORDSELECTION) + FIXME("ECO_AUTOWORDSELECTION not implemented yet!\n"); + if (lParam & ECO_SELECTIONBAR) + FIXME("ECO_SELECTIONBAR not implemented yet!\n"); + if (lParam & ECO_VERTICAL) + FIXME("ECO_VERTICAL not implemented yet!\n"); + if (lParam & ECO_AUTOHSCROLL) + FIXME("ECO_AUTOHSCROLL not implemented yet!\n"); + if (lParam & ECO_AUTOVSCROLL) + FIXME("ECO_AUTOVSCROLL not implemented yet!\n"); + if (lParam & ECO_NOHIDESEL) + FIXME("ECO_NOHIDESEL not implemented yet!\n"); + if (lParam & ECO_WANTRETURN) + FIXME("ECO_WANTRETURN not implemented yet!\n"); + + return settings; + } case EM_SETSEL: { + ME_InvalidateSelection(editor); ME_SetSelection(editor, wParam, lParam); - ME_Repaint(editor); + ME_InvalidateSelection(editor); ME_SendSelChange(editor); return 0; } + case EM_SETSCROLLPOS: + { + POINT *point = (POINT *)lParam; + ME_ScrollAbs(editor, point->y); + return 0; + } + case EM_AUTOURLDETECT: + { + if (wParam==1 || wParam ==0) + { + editor->AutoURLDetect_bEnable = (BOOL)wParam; + return 0; + } + return E_INVALIDARG; + } + case EM_GETAUTOURLDETECT: + { + return editor->AutoURLDetect_bEnable; + } case EM_EXSETSEL: { - CHARRANGE *pRange = (CHARRANGE *)lParam; - TRACE("EM_EXSETSEL (%ld,%ld)\n", pRange->cpMin, pRange->cpMax); - ME_SetSelection(editor, pRange->cpMin, pRange->cpMax); - /* FIXME optimize */ - ME_Repaint(editor); + int end; + CHARRANGE range = *(CHARRANGE *)lParam; + + TRACE("EM_EXSETSEL (%d,%d)\n", range.cpMin, range.cpMax); + + ME_InvalidateSelection(editor); + end = ME_SetSelection(editor, range.cpMin, range.cpMax); + ME_InvalidateSelection(editor); ME_SendSelChange(editor); + + return end; + } + case EM_SHOWSCROLLBAR: + { + ShowScrollBar(editor->hWnd, wParam, lParam); return 0; } case EM_SETTEXTEX: { LPWSTR wszText = (LPWSTR)lParam; SETTEXTEX *pStruct = (SETTEXTEX *)wParam; - size_t len = lstrlenW(wszText); + size_t len = wszText ? lstrlenW(wszText) : 0; int from, to; ME_Style *style; - TRACE("EM_SETTEXEX - %s, flags %d, cp %d\n", debugstr_w(wszText), (int)pStruct->flags, pStruct->codepage); + int oldModify = editor->nModifyStep; + TRACE("EM_SETTEXTEX - %s, flags %d, cp %d\n", debugstr_w(wszText), (int)pStruct->flags, pStruct->codepage); if (pStruct->codepage != 1200) { FIXME("EM_SETTEXTEX only supports unicode right now!\n"); return 0; @@ -1266,12 +1656,15 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP } else { ME_InternalDeleteText(editor, 0, ME_GetTextLength(editor)); - ME_InsertTextFromCursor(editor, 0, wszText, -1, editor->pBuffer->pDefaultStyle); + ME_InsertTextFromCursor(editor, 0, wszText, len, editor->pBuffer->pDefaultStyle); len = 1; } ME_CommitUndo(editor); if (!(pStruct->flags & ST_KEEPUNDO)) + { + editor->nModifyStep = oldModify; ME_EmptyUndoStack(editor); + } ME_UpdateRepaint(editor); return len; } @@ -1302,7 +1695,7 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP case EM_SETMODIFY: { if (wParam) - editor->nModifyStep = 0x80000000; + editor->nModifyStep = 1; else editor->nModifyStep = 0; @@ -1316,7 +1709,6 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP else nStyle &= ~ES_READONLY; SetWindowLongW(hWnd, GWL_STYLE, nStyle); - ME_Repaint(editor); return 0; } case EM_SETEVENTMASK: @@ -1333,7 +1725,7 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP CHARFORMAT2W buf, *p; BOOL bRepaint = TRUE; p = ME_ToCF2W(&buf, (CHARFORMAT2W *)lParam); - if (!wParam) + if (!wParam || (editor->mode & TM_PLAINTEXT)) ME_SetDefaultCharFormat(editor, p); else if (wParam == (SCF_WORD | SCF_SELECTION)) FIXME("EM_SETCHARFORMAT: word selection not supported\n"); @@ -1345,9 +1737,10 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP bRepaint = (from != to); ME_SetSelectionCharFormat(editor, p); } + editor->nModifyStep = 1; ME_CommitUndo(editor); if (bRepaint) - ME_UpdateRepaint(editor); + ME_RewrapRepaint(editor); return 0; } case EM_GETCHARFORMAT: @@ -1368,7 +1761,7 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP } case EM_SETPARAFORMAT: ME_SetSelectionParaFormat(editor, (PARAFORMAT2 *)lParam); - ME_UpdateRepaint(editor); + ME_RewrapRepaint(editor); ME_CommitUndo(editor); return 0; case EM_GETPARAFORMAT: @@ -1377,7 +1770,7 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP case EM_GETFIRSTVISIBLELINE: { ME_DisplayItem *p = editor->pBuffer->pFirst; - int y = editor->nScrollPosY; + int y = ME_GetYScrollPos(editor); int ypara = 0; int count = 0; int ystart, yend; @@ -1398,24 +1791,15 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP } return count; } + case EM_HIDESELECTION: + { + editor->bHideSelection = (wParam != 0); + ME_InvalidateSelection(editor); + return 0; + } case EM_LINESCROLL: { - int nPos = editor->nScrollPosY, nEnd= editor->nTotalLength - editor->sizeWindow.cy; - nPos += 8 * lParam; /* FIXME follow the original */ - if (nPos>=nEnd) - nPos = nEnd; - if (nPos<0) - nPos = 0; - if (nPos != editor->nScrollPosY) { - int dy = editor->nScrollPosY - nPos; - editor->nScrollPosY = nPos; - SetScrollPos(hWnd, SB_VERT, nPos, TRUE); - if (editor->bRedraw) - { - ScrollWindow(hWnd, 0, dy, NULL, NULL); - UpdateWindow(hWnd); - } - } + ME_ScrollDown(editor, lParam * 8); /* FIXME follow the original */ return TRUE; /* Should return false if a single line richedit control */ } case WM_CLEAR: @@ -1431,41 +1815,90 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP { int from, to; ME_Style *style; - LPWSTR wszText = ME_ToUnicode(hWnd, (void *)lParam); + LPWSTR wszText = ME_ToUnicode(unicode, (void *)lParam); size_t len = lstrlenW(wszText); TRACE("EM_REPLACESEL - %s\n", debugstr_w(wszText)); - + ME_GetSelection(editor, &from, &to); style = ME_GetSelectionInsertStyle(editor); ME_InternalDeleteText(editor, from, to-from); ME_InsertTextFromCursor(editor, 0, wszText, len, style); ME_ReleaseStyle(style); - ME_EndToUnicode(hWnd, wszText); /* drop temporary style if line end */ - /* FIXME question: does abc\n mean: put abc, clear temp style, put \n? (would require a change) */ + /* + * FIXME question: does abc\n mean: put abc, + * clear temp style, put \n? (would require a change) + */ if (len>0 && wszText[len-1] == '\n') ME_ClearTempStyle(editor); - + ME_EndToUnicode(unicode, wszText); ME_CommitUndo(editor); if (!wParam) ME_EmptyUndoStack(editor); ME_UpdateRepaint(editor); return 0; } + case EM_SCROLLCARET: + { + int top, bottom; /* row's edges relative to document top */ + int nPos; + ME_DisplayItem *para, *row; + + nPos = ME_GetYScrollPos(editor); + row = ME_RowStart(editor->pCursors[0].pRun); + para = ME_GetParagraph(row); + top = para->member.para.nYPos + row->member.row.nYPos; + bottom = top + row->member.row.nHeight; + + if (top < nPos) /* caret above window */ + ME_ScrollAbs(editor, top); + else if (nPos + editor->sizeWindow.cy < bottom) /*below*/ + ME_ScrollAbs(editor, bottom - editor->sizeWindow.cy); + return 0; + } + case WM_SETFONT: + { + LOGFONTW lf; + CHARFORMAT2W fmt; + HDC hDC; + BOOL bRepaint = LOWORD(lParam); + + if (!wParam) + wParam = (WPARAM)GetStockObject(SYSTEM_FONT); + GetObjectW((HGDIOBJ)wParam, sizeof(LOGFONTW), &lf); + hDC = GetDC(hWnd); + ME_CharFormatFromLogFont(hDC, &lf, &fmt); + ReleaseDC(hWnd, hDC); + ME_SetCharFormat(editor, 0, ME_GetTextLength(editor), &fmt); + ME_SetDefaultCharFormat(editor, &fmt); + + ME_CommitUndo(editor); + if (bRepaint) + ME_RewrapRepaint(editor); + return 0; + } case WM_SETTEXT: { ME_InternalDeleteText(editor, 0, ME_GetTextLength(editor)); if (lParam) { - LPWSTR wszText = ME_ToUnicode(hWnd, (void *)lParam); TRACE("WM_SETTEXT lParam==%lx\n",lParam); - TRACE("WM_SETTEXT - %s\n", debugstr_w(wszText)); /* debugstr_w() */ - if (lstrlenW(wszText) > 0) + if (!unicode && !strncmp((char *)lParam, "{\\rtf", 5)) { - /* uses default style! */ - ME_InsertTextFromCursor(editor, 0, wszText, -1, editor->pBuffer->pDefaultStyle); + /* Undocumented: WM_SETTEXT supports RTF text */ + ME_StreamInRTFString(editor, 0, (char *)lParam); + } + else + { + LPWSTR wszText = ME_ToUnicode(unicode, (void *)lParam); + TRACE("WM_SETTEXT - %s\n", debugstr_w(wszText)); /* debugstr_w() */ + if (lstrlenW(wszText) > 0) + { + /* uses default style! */ + ME_InsertTextFromCursor(editor, 0, wszText, -1, editor->pBuffer->pDefaultStyle); + } + ME_EndToUnicode(unicode, wszText); } - ME_EndToUnicode(hWnd, wszText); } else TRACE("WM_SETTEXT - NULL\n"); @@ -1473,7 +1906,7 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP ME_EmptyUndoStack(editor); ME_SetSelection(editor, 0, 0); ME_UpdateRepaint(editor); - return 0; + return 1; } case EM_CANPASTE: { @@ -1505,45 +1938,33 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP gds.nLength = 0; es.dwCookie = (DWORD)&gds; es.pfnCallback = dwFormat == SF_RTF ? ME_ReadFromHGLOBALRTF : ME_ReadFromHGLOBALUnicode; - SendMessageW(hWnd, EM_STREAMIN, dwFormat|SFF_SELECTION, (LPARAM)&es); - + ME_StreamIn(editor, dwFormat|SFF_SELECTION, &es); + CloseClipboard(); return 0; } case WM_CUT: case WM_COPY: { - int from, to, pars; - WCHAR *data; - HANDLE hData; - EDITSTREAM es; - ME_GlobalDestStruct gds; + LPDATAOBJECT dataObj = NULL; + CHARRANGE range; + HRESULT hr = S_OK; - if (!OpenClipboard(hWnd)) - return 0; - - EmptyClipboard(); - ME_GetSelection(editor, &from, &to); - pars = ME_CountParagraphsBetween(editor, from, to); - hData = GlobalAlloc(GMEM_MOVEABLE, sizeof(WCHAR)*(to-from+pars+1)); - data = (WCHAR *)GlobalLock(hData); - ME_GetTextW(editor, data, from, to-from, TRUE); - GlobalUnlock(hData); - - gds.hData = GlobalAlloc(GMEM_MOVEABLE, 0); - gds.nLength = 0; - es.dwCookie = (DWORD)&gds; - es.pfnCallback = ME_AppendToHGLOBAL; - SendMessageW(hWnd, EM_STREAMOUT, SFF_SELECTION|SF_RTF, (LPARAM)&es); - GlobalReAlloc(gds.hData, gds.nLength+1, 0); + if (editor->cPasswordMask) + return 0; /* Copying or Cutting masked text isn't allowed */ - SetClipboardData(CF_UNICODETEXT, hData); - SetClipboardData(RegisterClipboardFormatA("Rich Text Format"), gds.hData); - - CloseClipboard(); - if (msg == WM_CUT) + ME_GetSelection(editor, (int*)&range.cpMin, (int*)&range.cpMax); + if(editor->lpOleCallback) + hr = IRichEditOleCallback_GetClipboardData(editor->lpOleCallback, &range, RECO_COPY, &dataObj); + if(FAILED(hr) || !dataObj) + hr = ME_GetDataObject(editor, &range, &dataObj); + if(SUCCEEDED(hr)) { + hr = OleSetClipboard(dataObj); + IDataObject_Release(dataObj); + } + if (SUCCEEDED(hr) && msg == WM_CUT) { - ME_InternalDeleteText(editor, from, to-from); + ME_InternalDeleteText(editor, range.cpMin, range.cpMax-range.cpMin); ME_CommitUndo(editor); ME_UpdateRepaint(editor); } @@ -1557,9 +1978,9 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP { TEXTRANGEW tr; /* W and A differ only by rng->lpstrText */ tr.chrg.cpMin = 0; - tr.chrg.cpMax = wParam-1; + tr.chrg.cpMax = wParam ? (wParam - 1) : 0; tr.lpstrText = (WCHAR *)lParam; - return RichEditANSIWndProc(hWnd, EM_GETTEXTRANGE, 0, (LPARAM)&tr); + return RichEditWndProc_common(hWnd, EM_GETTEXTRANGE, 0, (LPARAM)&tr, unicode); } case EM_GETTEXTEX: { @@ -1567,7 +1988,7 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP int nStart, nCount; if (ex->flags & ~(GT_SELECTION | GT_USECRLF)) - FIXME("GETTEXTEX flags 0x%08lx not supported\n", ex->flags & ~(GT_SELECTION | GT_USECRLF)); + FIXME("GETTEXTEX flags 0x%08x not supported\n", ex->flags & ~(GT_SELECTION | GT_USECRLF)); if (ex->flags & GT_SELECTION) { @@ -1580,7 +2001,7 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP nStart = 0; nCount = ex->cb - 1; } - if (ex->codepage == 1200 || IsWindowUnicode(hWnd)) + if (ex->codepage == 1200 || unicode) { nCount = min(nCount, ex->cb / sizeof(WCHAR) - 1); return ME_GetTextW(editor, (LPWSTR)lParam, nStart, nCount, ex->flags & GT_USECRLF); @@ -1590,15 +2011,15 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP /* potentially each char may be a CR, why calculate the exact value with O(N) when we can just take a bigger buffer? :) */ int crlfmul = (ex->flags & GT_USECRLF) ? 2 : 1; - LPWSTR buffer = HeapAlloc(GetProcessHeap(), 0, (crlfmul*nCount + 1) * sizeof(WCHAR)); + LPWSTR buffer = richedit_alloc((crlfmul*nCount + 1) * sizeof(WCHAR)); DWORD buflen = ex->cb; LRESULT rc; DWORD flags = 0; buflen = ME_GetTextW(editor, buffer, nStart, nCount, ex->flags & GT_USECRLF); - rc = WideCharToMultiByte(ex->codepage, flags, buffer, buflen, (LPSTR)lParam, ex->cb, ex->lpDefaultChar, ex->lpUsedDefaultChar); + rc = WideCharToMultiByte(ex->codepage, flags, buffer, -1, (LPSTR)lParam, ex->cb, ex->lpDefaultChar, ex->lpUsedDefaultChar); - HeapFree(GetProcessHeap(),0,buffer); + richedit_free(buffer); return rc; } } @@ -1610,15 +2031,22 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP tr.chrg.cpMin = from; tr.chrg.cpMax = to; tr.lpstrText = (WCHAR *)lParam; - return RichEditANSIWndProc(hWnd, EM_GETTEXTRANGE, 0, (LPARAM)&tr); + return RichEditWndProc_common(hWnd, EM_GETTEXTRANGE, 0, (LPARAM)&tr, unicode); + } + case EM_GETSCROLLPOS: + { + POINT *point = (POINT *)lParam; + point->x = 0; /* FIXME side scrolling not implemented */ + point->y = ME_GetYScrollPos(editor); + return 1; } case EM_GETTEXTRANGE: { TEXTRANGEW *rng = (TEXTRANGEW *)lParam; - TRACE("EM_GETTEXTRANGE min=%ld max=%ld unicode=%d emul1.0=%d length=%d\n", - rng->chrg.cpMin, rng->chrg.cpMax, IsWindowUnicode(hWnd), + TRACE("EM_GETTEXTRANGE min=%d max=%d unicode=%d emul1.0=%d length=%d\n", + rng->chrg.cpMin, rng->chrg.cpMax, unicode, editor->bEmulateVersion10, ME_GetTextLength(editor)); - if (IsWindowUnicode(hWnd)) + if (unicode) return ME_GetTextW(editor, rng->lpstrText, rng->chrg.cpMin, rng->chrg.cpMax-rng->chrg.cpMin, editor->bEmulateVersion10); else { @@ -1633,6 +2061,61 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP return nChars; } } + case EM_GETLINE: + { + ME_DisplayItem *run; + const unsigned int nMaxChars = *(WORD *) lParam; + unsigned int nEndChars, nCharsLeft = nMaxChars; + char *dest = (char *) lParam; + /* rich text editor 1.0 uses \r\n for line end, 2.0 uses just \r; + we need to know how if we have the extra \n or not */ + int nLF = editor->bEmulateVersion10; + + TRACE("EM_GETLINE: row=%d, nMaxChars=%d (%s)\n", (int) wParam, nMaxChars, + unicode ? "Unicode" : "Ansi"); + + run = ME_FindRowWithNumber(editor, wParam); + if (run == NULL) + return 0; + + while (nCharsLeft && (run = ME_FindItemFwd(run, diRunOrStartRow)) + && !(run->member.run.nFlags & MERF_ENDPARA)) + { + unsigned int nCopy; + ME_String *strText; + if (run->type != diRun) + break; + strText = run->member.run.strText; + nCopy = min(nCharsLeft, strText->nLen); + + if (unicode) + lstrcpynW((LPWSTR) dest, strText->szData, nCopy); + else + nCopy = WideCharToMultiByte(CP_ACP, 0, strText->szData, nCopy, dest, + nCharsLeft, NULL, NULL); + dest += nCopy * (unicode ? sizeof(WCHAR) : 1); + nCharsLeft -= nCopy; + } + + /* append \r\0 (or \r\n\0 in 1.0), space allowing */ + nEndChars = min(nCharsLeft, 2 + nLF); + nCharsLeft -= nEndChars; + if (unicode) + { + const WCHAR src[] = {'\r', '\0'}; + const WCHAR src10[] = {'\r', '\n', '\0'}; + lstrcpynW((LPWSTR) dest, nLF ? src10 : src, nEndChars); + } + else + lstrcpynA(dest, nLF ? "\r\n" : "\r", nEndChars); + + TRACE("EM_GETLINE: got %u bytes\n", nMaxChars - nCharsLeft); + + if (nEndChars == 2 + nLF) + return nMaxChars - nCharsLeft - 1; /* don't count \0 */ + else + return nMaxChars - nCharsLeft; + } case EM_GETLINECOUNT: { ME_DisplayItem *item = editor->pBuffer->pFirst->next; @@ -1656,7 +2139,10 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP } case EM_EXLINEFROMCHAR: { - return ME_RowNumberFromCharOfs(editor, lParam); + if (lParam == -1) + return ME_RowNumberFromCharOfs(editor, ME_GetCursorOfs(editor,1)); + else + return ME_RowNumberFromCharOfs(editor, lParam); } case EM_LINEINDEX: { @@ -1690,8 +2176,8 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP item = ME_FindItemAtOffset(editor, diRun, wParam, NULL); item = ME_RowStart(item); nThisLineOfs = ME_CharOfsFromRunOfs(editor, ME_FindItemFwd(item, diRun), 0); - item_end = ME_FindItemFwd(item, diStartRow); - if (item_end) + item_end = ME_FindItemFwd(item, diStartRowOrParagraphOrEnd); + if (item_end->type == diStartRow) nNextLineOfs = ME_CharOfsFromRunOfs(editor, ME_FindItemFwd(item_end, diRun), 0); else nNextLineOfs = ME_FindItemFwd(item, diParagraphOrEnd)->member.para.nCharOfs @@ -1700,25 +2186,53 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP TRACE("EM_LINELENGTH(%d)==%d\n",wParam, nChars); return nChars; } + case EM_EXLIMITTEXT: + { + if ((int)lParam < 0) + return 0; + if (lParam == 0) + editor->nTextLimit = 65536; + else + editor->nTextLimit = (int) lParam; + return 0; + } + case EM_LIMITTEXT: + { + if (wParam == 0) + editor->nTextLimit = 65536; + else + editor->nTextLimit = (int) wParam; + return 0; + } + case EM_GETLIMITTEXT: + { + return editor->nTextLimit; + } case EM_FINDTEXT: { FINDTEXTA *ft = (FINDTEXTA *)lParam; int nChars = MultiByteToWideChar(CP_ACP, 0, ft->lpstrText, -1, NULL, 0); WCHAR *tmp; - + LRESULT r; + if ((tmp = ALLOC_N_OBJ(WCHAR, nChars)) != NULL) MultiByteToWideChar(CP_ACP, 0, ft->lpstrText, -1, tmp, nChars); - return ME_FindText(editor, wParam, &ft->chrg, tmp, NULL); + r = ME_FindText(editor, wParam, &ft->chrg, tmp, NULL); + FREE_OBJ( tmp ); + return r; } case EM_FINDTEXTEX: { FINDTEXTEXA *ex = (FINDTEXTEXA *)lParam; int nChars = MultiByteToWideChar(CP_ACP, 0, ex->lpstrText, -1, NULL, 0); WCHAR *tmp; - + LRESULT r; + if ((tmp = ALLOC_N_OBJ(WCHAR, nChars)) != NULL) MultiByteToWideChar(CP_ACP, 0, ex->lpstrText, -1, tmp, nChars); - return ME_FindText(editor, wParam, &ex->chrg, tmp, &ex->chrgText); + r = ME_FindText(editor, wParam, &ex->chrg, tmp, &ex->chrgText); + FREE_OBJ( tmp ); + return r; } case EM_FINDTEXTW: { @@ -1768,26 +2282,41 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP return MAKELONG( pt.x, pt.y ); } case WM_CREATE: + if (GetWindowLongW(hWnd, GWL_STYLE) & WS_HSCROLL) + { /* Squelch the default horizontal scrollbar it would make */ + ShowScrollBar(editor->hWnd, SB_HORZ, FALSE); + } ME_CommitUndo(editor); ME_WrapMarkedParagraphs(editor); ME_MoveCaret(editor); return 0; case WM_DESTROY: ME_DestroyEditor(editor); - SetWindowLongW(hWnd, 0, 0); + SetWindowLongPtrW(hWnd, 0, 0); return 0; case WM_LBUTTONDOWN: SetFocus(hWnd); ME_LButtonDown(editor, (short)LOWORD(lParam), (short)HIWORD(lParam)); SetCapture(hWnd); + ME_LinkNotify(editor,msg,wParam,lParam); break; case WM_MOUSEMOVE: if (GetCapture() == hWnd) ME_MouseMove(editor, (short)LOWORD(lParam), (short)HIWORD(lParam)); + ME_LinkNotify(editor,msg,wParam,lParam); break; case WM_LBUTTONUP: if (GetCapture() == hWnd) ReleaseCapture(); + ME_LinkNotify(editor,msg,wParam,lParam); + break; + case WM_LBUTTONDBLCLK: + ME_LinkNotify(editor,msg,wParam,lParam); + ME_SelectWord(editor); + break; + case WM_CONTEXTMENU: + if (!ME_ShowContextMenu(editor, (short)LOWORD(lParam), (short)HIWORD(lParam))) + goto do_default; break; case WM_PAINT: if (editor->bRedraw) @@ -1825,36 +2354,28 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP TRACE("editor wnd command = %d\n", LOWORD(wParam)); return 0; case WM_KEYDOWN: - if (ME_ArrowKey(editor, LOWORD(wParam), GetKeyState(VK_CONTROL)<0)) { - ME_CommitUndo(editor); - ME_EnsureVisible(editor, editor->pCursors[0].pRun); - HideCaret(hWnd); - ME_MoveCaret(editor); - ShowCaret(hWnd); + if (ME_KeyDown(editor, LOWORD(wParam))) return 0; - } - if (GetKeyState(VK_CONTROL)<0) - { - if (LOWORD(wParam)=='W') - { - CHARFORMAT2W chf; - char buf[2048]; - ME_GetSelectionCharFormat(editor, &chf); - ME_DumpStyleToBuf(&chf, buf); - MessageBoxA(NULL, buf, "Style dump", MB_OK); - } - if (LOWORD(wParam)=='Q') - { - ME_CheckCharOffsets(editor); - } - } goto do_default; case WM_CHAR: { - WCHAR wstr = LOWORD(wParam); + WCHAR wstr; + if (unicode) + wstr = (WCHAR)wParam; + else + { + CHAR charA = wParam; + MultiByteToWideChar(CP_ACP, 0, &charA, 1, &wstr, 1); + } + if (editor->AutoURLDetect_bEnable) + ME_AutoURLDetect(editor, wstr); + switch (wstr) { + case 1: /* Ctrl-A */ + ME_SetSelection(editor, 0, -1); + return 0; case 3: /* Ctrl-C */ SendMessageW(editor->hWnd, WM_COPY, 0, 0); return 0; @@ -1867,9 +2388,6 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP switch (wstr) { - case 1: /* Ctrl-A */ - ME_SetSelection(editor, 0, -1); - return 0; case 22: /* Ctrl-V */ SendMessageW(editor->hWnd, WM_PASTE, 0, 0); return 0; @@ -1894,70 +2412,54 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP } return 0; } + case EM_SCROLL: /* fall through */ case WM_VSCROLL: { - int nPos = editor->nScrollPosY; - si.cbSize = sizeof(SCROLLINFO); - si.fMask = SIF_PAGE|SIF_POS|SIF_RANGE|SIF_TRACKPOS; - GetScrollInfo(hWnd, SB_VERT, &si); - switch(LOWORD(wParam)) { - case SB_LINEUP: - nPos -= 24; /* FIXME follow the original */ - if (nPos<0) nPos = 0; - break; - case SB_LINEDOWN: + int origNPos; + int lineHeight; + + origNPos = ME_GetYScrollPos(editor); + lineHeight = 24; + + if (editor && editor->pBuffer && editor->pBuffer->pDefaultStyle) + lineHeight = editor->pBuffer->pDefaultStyle->tm.tmHeight; + if (lineHeight <= 0) lineHeight = 24; + + switch(LOWORD(wParam)) { - int nEnd = editor->nTotalLength - editor->sizeWindow.cy; - nPos += 24; /* FIXME follow the original */ - if (nPos>=nEnd) nPos = nEnd; - break; - } - case SB_PAGEUP: - nPos -= editor->sizeWindow.cy; - if (nPos<0) nPos = 0; - break; - case SB_PAGEDOWN: - nPos += editor->sizeWindow.cy; - if (nPos>=editor->nTotalLength) nPos = editor->nTotalLength-1; - break; - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - nPos = si.nTrackPos; - break; - } - if (nPos != editor->nScrollPosY) { - int dy = editor->nScrollPosY - nPos; - editor->nScrollPosY = nPos; - SetScrollPos(hWnd, SB_VERT, nPos, TRUE); - if (editor->bRedraw) - { - ScrollWindow(hWnd, 0, dy, NULL, NULL); - UpdateWindow(hWnd); - } + case SB_LINEUP: + ME_ScrollUp(editor,lineHeight); + break; + case SB_LINEDOWN: + ME_ScrollDown(editor,lineHeight); + break; + case SB_PAGEUP: + ME_ScrollUp(editor,editor->sizeWindow.cy); + break; + case SB_PAGEDOWN: + ME_ScrollDown(editor,editor->sizeWindow.cy); + break; + case SB_THUMBTRACK: + case SB_THUMBPOSITION: + ME_ScrollAbs(editor,HIWORD(wParam)); + break; } + if (msg == EM_SCROLL) + return 0x00010000 | (((ME_GetYScrollPos(editor) - origNPos)/lineHeight) & 0xffff); break; } case WM_MOUSEWHEEL: { - int gcWheelDelta = 0, nPos = editor->nScrollPosY, nEnd = editor->nTotalLength - editor->sizeWindow.cy; + int gcWheelDelta; UINT pulScrollLines; + SystemParametersInfoW(SPI_GETWHEELSCROLLLINES,0, &pulScrollLines, 0); - gcWheelDelta -= GET_WHEEL_DELTA_WPARAM(wParam); + gcWheelDelta = -GET_WHEEL_DELTA_WPARAM(wParam); + if (abs(gcWheelDelta) >= WHEEL_DELTA && pulScrollLines) - nPos += pulScrollLines * (gcWheelDelta / WHEEL_DELTA) * 8; /* FIXME follow the original */ - if (nPos>=nEnd) - nPos = nEnd; - if (nPos<0) - nPos = 0; - if (nPos != editor->nScrollPosY) { - int dy = editor->nScrollPosY - nPos; - editor->nScrollPosY = nPos; - SetScrollPos(hWnd, SB_VERT, nPos, TRUE); - if (editor->bRedraw) - { - ScrollWindow(hWnd, 0, dy, NULL, NULL); - UpdateWindow(hWnd); - } + { + /* FIXME follow the original */ + ME_ScrollDown(editor,pulScrollLines * (gcWheelDelta / WHEEL_DELTA) * 8); } break; } @@ -2008,8 +2510,60 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP case EM_GETOLEINTERFACE: { LPVOID *ppvObj = (LPVOID*) lParam; - FIXME("EM_GETOLEINTERFACE %p: stub\n", ppvObj); - return CreateIRichEditOle(ppvObj); + return CreateIRichEditOle(editor, ppvObj); + } + case EM_GETPASSWORDCHAR: + { + return editor->cPasswordMask; + } + case EM_SETOLECALLBACK: + if(editor->lpOleCallback) + IUnknown_Release(editor->lpOleCallback); + editor->lpOleCallback = (LPRICHEDITOLECALLBACK)lParam; + if(editor->lpOleCallback) + IUnknown_AddRef(editor->lpOleCallback); + return TRUE; + case EM_GETWORDBREAKPROC: + return (LRESULT)editor->pfnWordBreak; + case EM_SETWORDBREAKPROC: + { + EDITWORDBREAKPROCW pfnOld = editor->pfnWordBreak; + + editor->pfnWordBreak = (EDITWORDBREAKPROCW)lParam; + return (LRESULT)pfnOld; + } + case EM_SETTEXTMODE: + { + LRESULT ret; + int mask = 0; + int changes = 0; + ret = RichEditWndProc_common(hWnd, WM_GETTEXTLENGTH, 0, 0, unicode); + if (!ret) + { + /*Check for valid wParam*/ + if ((((wParam & TM_RICHTEXT) && ((wParam & TM_PLAINTEXT) << 1))) || + (((wParam & TM_MULTILEVELUNDO) && ((wParam & TM_SINGLELEVELUNDO) << 1))) || + (((wParam & TM_MULTICODEPAGE) && ((wParam & TM_SINGLECODEPAGE) << 1)))) + return 1; + else + { + if (wParam & (TM_RICHTEXT | TM_PLAINTEXT)) + { + mask |= (TM_RICHTEXT | TM_PLAINTEXT); + changes |= (wParam & (TM_RICHTEXT | TM_PLAINTEXT)); + } + /*FIXME: Currently no support for undo level and code page options*/ + editor->mode = (editor->mode & (~mask)) | changes; + return 0; + } + } + return ret; + } + case EM_SETPASSWORDCHAR: + { + editor->cPasswordMask = wParam; + ME_RewrapRepaint(editor); + return 0; } default: do_default: @@ -2018,6 +2572,29 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP return 0L; } +static LRESULT WINAPI RichEditWndProcW(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + BOOL unicode = TRUE; + + /* Under Win9x RichEdit20W returns ANSI strings, see the tests. */ + if (msg == WM_GETTEXT && (GetVersion() & 0x80000000)) + unicode = FALSE; + + return RichEditWndProc_common(hWnd, msg, wParam, lParam, unicode); +} + +static LRESULT WINAPI RichEditWndProcA(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + return RichEditWndProc_common(hWnd, msg, wParam, lParam, FALSE); +} + +/****************************************************************** + * RichEditANSIWndProc (RICHED20.10) + */ +LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + return RichEditWndProcA(hWnd, msg, wParam, lParam); +} /****************************************************************** * RichEdit10ANSIWndProc (RICHED20.9) @@ -2030,7 +2607,7 @@ LRESULT WINAPI RichEdit10ANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM result = RichEditANSIWndProc(hWnd, msg, wParam, lParam); if (msg == WM_NCCREATE) { - ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongW(hWnd, 0); + ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(hWnd, 0); editor->bEmulateVersion10 = TRUE; editor->pBuffer->pLast->member.para.nCharOfs = 2; @@ -2044,6 +2621,38 @@ void ME_SendOldNotify(ME_TextEditor *editor, int nCode) SendMessageA(GetParent(hWnd), WM_COMMAND, (nCode<<16)|GetWindowLongW(hWnd, GWLP_ID), (LPARAM)hWnd); } +void ME_LinkNotify(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam) +{ + int x,y; + ME_Cursor tmpCursor; + int nCharOfs; /* The start of the clicked text. Absolute character offset */ + + ME_Run *tmpRun; + + ENLINK info; + x = (short)LOWORD(lParam); + y = (short)HIWORD(lParam); + nCharOfs = ME_CharFromPos(editor, x, y); + if (nCharOfs < 0) return; + + ME_CursorFromCharOfs(editor, nCharOfs, &tmpCursor); + tmpRun = &tmpCursor.pRun->member.run; + + if ((tmpRun->style->fmt.dwMask & CFM_LINK) + && (tmpRun->style->fmt.dwEffects & CFE_LINK)) + { /* The clicked run has CFE_LINK set */ + info.nmhdr.hwndFrom = editor->hWnd; + info.nmhdr.idFrom = GetWindowLongW(editor->hWnd, GWLP_ID); + info.nmhdr.code = EN_LINK; + info.msg = msg; + info.wParam = wParam; + info.lParam = lParam; + info.chrg.cpMin = ME_CharOfsFromRunOfs(editor,tmpCursor.pRun,0); + info.chrg.cpMax = info.chrg.cpMin + ME_StrVLen(tmpRun->strText); + SendMessageW(GetParent(editor->hWnd), WM_NOTIFY,info.nmhdr.idFrom, (LPARAM)&info); + } +} + int ME_CountParagraphsBetween(ME_TextEditor *editor, int from, int to) { ME_DisplayItem *item = ME_FindItemFwd(editor->pBuffer->pFirst, diParagraph); @@ -2068,7 +2677,7 @@ int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int nStart, int nChars, in WCHAR *pStart = buffer; if (!item) { - *buffer = L'\0'; + *buffer = 0; return 0; } @@ -2092,21 +2701,26 @@ int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int nStart, int nChars, in int nLen = ME_StrLen(item->member.run.strText); if (nLen > nChars) nLen = nChars; - + if (item->member.run.nFlags & MERF_ENDPARA) { - *buffer = '\r'; - if (bCRLF) - { - *(++buffer) = '\n'; - nWritten++; + if (!ME_FindItemFwd(item, diRun)) + /* No '\r' is appended to the last paragraph. */ + nLen = 0; + else { + *buffer = '\r'; + if (bCRLF) + { + *(++buffer) = '\n'; + nWritten++; + } + assert(nLen == 1); + /* our end paragraph consists of 2 characters now */ + if (editor->bEmulateVersion10) + nChars--; } - assert(nLen == 1); - /* our end paragraph consists of 2 characters now */ - if (editor->bEmulateVersion10) - nChars--; } - else + else CopyMemory(buffer, item->member.run.strText->szData, sizeof(WCHAR)*nLen); nChars -= nLen; nWritten += nLen; @@ -2115,68 +2729,62 @@ int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int nStart, int nChars, in if (!nChars) { TRACE("nWritten=%d, actual=%d\n", nWritten, buffer-pStart); - *buffer = L'\0'; + *buffer = 0; return nWritten; } item = ME_FindItemFwd(item, diRun); } - *buffer = L'\0'; + *buffer = 0; TRACE("nWritten=%d, actual=%d\n", nWritten, buffer-pStart); return nWritten; } -void ME_RegisterEditorClass(HINSTANCE hInstance) +static BOOL ME_RegisterEditorClass(HINSTANCE hInstance) { - BOOL bResult; WNDCLASSW wcW; WNDCLASSA wcA; - wcW.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS; - wcW.lpfnWndProc = RichEditANSIWndProc; + wcW.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS; + wcW.lpfnWndProc = RichEditWndProcW; wcW.cbClsExtra = 0; - wcW.cbWndExtra = 4; + wcW.cbWndExtra = sizeof(ME_TextEditor *); wcW.hInstance = NULL; /* hInstance would register DLL-local class */ wcW.hIcon = NULL; - wcW.hCursor = LoadCursorW(NULL, (LPCWSTR) IDC_IBEAM); + wcW.hCursor = LoadCursorW(NULL, MAKEINTRESOURCEW(IDC_IBEAM)); wcW.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH); wcW.lpszMenuName = NULL; - wcW.lpszClassName = wszClassName; - bResult = RegisterClassW(&wcW); - assert(bResult); - wcW.lpszClassName = wszClassName50; - bResult = RegisterClassW(&wcW); - assert(bResult); - wcA.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS; - wcA.lpfnWndProc = RichEditANSIWndProc; + if (is_version_nt()) + { + wcW.lpszClassName = RichEdit20W; + if (!RegisterClassW(&wcW)) return FALSE; + wcW.lpszClassName = RichEdit50W; + if (!RegisterClassW(&wcW)) return FALSE; + } + else + { + /* WNDCLASSA/W have the same layout */ + wcW.lpszClassName = (LPCWSTR)"RichEdit20W"; + if (!RegisterClassA((WNDCLASSA *)&wcW)) return FALSE; + wcW.lpszClassName = (LPCWSTR)"RichEdit50W"; + if (!RegisterClassA((WNDCLASSA *)&wcW)) return FALSE; + } + + wcA.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS; + wcA.lpfnWndProc = RichEditWndProcA; wcA.cbClsExtra = 0; - wcA.cbWndExtra = 4; + wcA.cbWndExtra = sizeof(ME_TextEditor *); wcA.hInstance = NULL; /* hInstance would register DLL-local class */ wcA.hIcon = NULL; - wcA.hCursor = LoadCursorA(NULL, (LPCSTR) IDC_IBEAM); + wcA.hCursor = LoadCursorW(NULL, MAKEINTRESOURCEW(IDC_IBEAM)); wcA.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH); wcA.lpszMenuName = NULL; wcA.lpszClassName = "RichEdit20A"; - bResult = RegisterClassA(&wcA); - assert(bResult); + if (!RegisterClassA(&wcA)) return FALSE; wcA.lpszClassName = "RichEdit50A"; - bResult = RegisterClassA(&wcA); - assert(bResult); -} -/****************************************************************** - * CreateTextServices (RICHED20.4) - * - * FIXME should be ITextHost instead of void* - */ -HRESULT WINAPI CreateTextServices(IUnknown *punkOuter, void *pITextHost, - IUnknown **ppUnk) -{ - FIXME("stub\n"); - /* FIXME should support aggregation */ - if (punkOuter) - return CLASS_E_NOAGGREGATION; - - return E_FAIL; /* E_NOTIMPL isn't allowed by MSDN */ + if (!RegisterClassA(&wcA)) return FALSE; + + return TRUE; } LRESULT WINAPI REComboWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { @@ -2218,7 +2826,7 @@ LRESULT WINAPI REExtendedRegisterClass(void) { wcW.style = CS_PARENTDC | CS_DBLCLKS | CS_GLOBALCLASS; wcW.lpfnWndProc = REListWndProc; - wcW.lpszClassName = wszClassNameListBox; + wcW.lpszClassName = REListBox20W; if (RegisterClassW(&wcW)) ME_ListBoxRegistered = TRUE; } @@ -2226,7 +2834,7 @@ LRESULT WINAPI REExtendedRegisterClass(void) { wcW.style = CS_PARENTDC | CS_DBLCLKS | CS_GLOBALCLASS | CS_VREDRAW | CS_HREDRAW; wcW.lpfnWndProc = REComboWndProc; - wcW.lpszClassName = wszClassNameComboBox; + wcW.lpszClassName = REComboBox20W; if (RegisterClassW(&wcW)) ME_ComboBoxRegistered = TRUE; } @@ -2238,3 +2846,94 @@ LRESULT WINAPI REExtendedRegisterClass(void) return result; } + +int ME_AutoURLDetect(ME_TextEditor *editor, WCHAR curChar) +{ + struct prefix_s { + const char *text; + int length; + } prefixes[12] = { + {"http:", 5}, + {"file:", 6}, + {"mailto:", 8}, + {"ftp:", 5}, + {"https:", 7}, + {"gopher:", 8}, + {"nntp:", 6}, + {"prospero:", 10}, + {"telnet:", 8}, + {"news:", 6}, + {"wais:", 6}, + {"www.", 5} + }; + CHARRANGE ins_pt; + int curf_ef, link_ef, def_ef; + int cur_prefx, prefx_cnt; + int sel_min, sel_max; + int car_pos = 0; + int text_pos=-1; + int URLmin, URLmax = 0; + CHARRANGE url; + FINDTEXTA ft; + CHARFORMAT2W cur_format; + CHARFORMAT2W default_format; + CHARFORMAT2W link; + RichEditANSIWndProc(editor->hWnd, EM_EXGETSEL, (WPARAM) 0, (LPARAM) &ins_pt); + sel_min = ins_pt.cpMin; + sel_max = ins_pt.cpMax; + if (sel_min==sel_max) + car_pos = sel_min; + if (sel_min!=sel_max) + car_pos = ME_GetTextLength(editor)+1; + cur_format.cbSize = sizeof(cur_format); + default_format.cbSize = sizeof(default_format); + RichEditANSIWndProc(editor->hWnd, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM) &cur_format); + RichEditANSIWndProc(editor->hWnd, EM_GETCHARFORMAT, SCF_DEFAULT, (LPARAM) &default_format); + link.cbSize = sizeof(link); + link.dwMask = CFM_LINK; + link.dwEffects = CFE_LINK; + curf_ef = cur_format.dwEffects & link.dwEffects; + def_ef = default_format.dwEffects & link.dwEffects; + link_ef = link.dwEffects & link.dwEffects; + if (curf_ef == link_ef) + { + if( curChar == '\n' || curChar=='\r' || curChar==' ') + { + ME_SetSelection(editor, car_pos, car_pos); + RichEditANSIWndProc(editor->hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &default_format); + text_pos=-1; + return 0; + } + } + if (curf_ef == def_ef) + { + cur_prefx = 0; + prefx_cnt = (sizeof(prefixes)/sizeof(struct prefix_s))-1; + while (cur_prefx<=prefx_cnt) + { + if (text_pos == -1) + { + ft.lpstrText = prefixes[cur_prefx].text; + URLmin=max(0,(car_pos-prefixes[cur_prefx].length)); + URLmax=max(0, car_pos); + if ((car_pos == 0) && (ME_GetTextLength(editor) != 0)) + { + URLmax = ME_GetTextLength(editor)+1; + } + ft.chrg.cpMin = URLmin; + ft.chrg.cpMax = URLmax; + text_pos=RichEditANSIWndProc(editor->hWnd, EM_FINDTEXT, FR_DOWN, (LPARAM)&ft); + cur_prefx++; + } + if (text_pos != -1) + { + url.cpMin=text_pos; + url.cpMax=car_pos-1; + ME_SetCharFormat(editor, text_pos, (URLmax-text_pos), &link); + ME_RewrapRepaint(editor); + break; + } + } + } + return 0; +} diff --git a/reactos/dll/win32/riched20/editor.h b/reactos/dll/win32/riched20/editor.h index 420435fd611..f71842b01db 100644 --- a/reactos/dll/win32/riched20/editor.h +++ b/reactos/dll/win32/riched20/editor.h @@ -15,14 +15,44 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "editstr.h" +#include "wine/unicode.h" -#define ALLOC_OBJ(type) HeapAlloc(me_heap, 0, sizeof(type)) -#define ALLOC_N_OBJ(type, count) HeapAlloc(me_heap, 0, (count)*sizeof(type)) -#define FREE_OBJ(ptr) HeapFree(me_heap, 0, ptr) +extern HANDLE me_heap; + +static inline void *richedit_alloc( size_t len ) +{ + return HeapAlloc( me_heap, 0, len ); +} + +static inline BOOL richedit_free( void *ptr ) +{ + return HeapFree( me_heap, 0, ptr ); +} + +static inline void *richedit_realloc( void *ptr, size_t len ) +{ + return HeapReAlloc( me_heap, 0, ptr, len ); +} + +#define ALLOC_OBJ(type) richedit_alloc(sizeof(type)) +#define ALLOC_N_OBJ(type, count) richedit_alloc((count)*sizeof(type)) +#define FREE_OBJ(ptr) richedit_free(ptr) + +#define RUN_IS_HIDDEN(run) ((run)->style->fmt.dwMask & CFM_HIDDEN \ + && (run)->style->fmt.dwEffects & CFE_HIDDEN) + +#define InitFormatEtc(fe, cf, med) \ + {\ + (fe).cfFormat=cf;\ + (fe).dwAspect=DVASPECT_CONTENT;\ + (fe).ptd=NULL;\ + (fe).tymed=med;\ + (fe).lindex=-1;\ + }; /* style.c */ ME_Style *ME_MakeStyle(CHARFORMAT2W *style); @@ -42,6 +72,7 @@ void ME_CopyToCF2W(CHARFORMAT2W *to, CHARFORMAT2W *from); CHARFORMAT2W *ME_ToCFAny(CHARFORMAT2W *to, CHARFORMAT2W *from); void ME_CopyToCFAny(CHARFORMAT2W *to, CHARFORMAT2W *from); void ME_CopyCharFormat(CHARFORMAT2W *pDest, CHARFORMAT2W *pSrc); /* only works with 2W structs */ +void ME_CharFormatFromLogFont(HDC hDC, LOGFONTW *lf, CHARFORMAT2W *fmt); /* ditto */ /* list.c */ void ME_InsertBefore(ME_DisplayItem *diWhere, ME_DisplayItem *diWhat); @@ -53,6 +84,7 @@ ME_DisplayItem *ME_FindItemFwdOrHere(ME_DisplayItem *di, ME_DIType nTypeOrClass) BOOL ME_DITypesEqual(ME_DIType type, ME_DIType nTypeOrClass); ME_DisplayItem *ME_MakeDI(ME_DIType type); void ME_DestroyDisplayItem(ME_DisplayItem *item); +void ME_DestroyTableCellList(ME_DisplayItem *item); void ME_DumpDocument(ME_TextBuffer *buffer); const char *ME_GetDITypeName(ME_DIType type); @@ -60,6 +92,8 @@ const char *ME_GetDITypeName(ME_DIType type); int ME_GetOptimalBuffer(int nLen); ME_String *ME_MakeString(LPCWSTR szText); ME_String *ME_MakeStringN(LPCWSTR szText, int nMaxChars); +ME_String *ME_MakeStringR(WCHAR cRepeat, int nMaxChars); +ME_String *ME_MakeStringB(int nMaxChars); ME_String *ME_StrDup(ME_String *s); void ME_DestroyString(ME_String *s); void ME_AppendString(ME_String *s1, ME_String *s2); @@ -72,6 +106,7 @@ int ME_StrLen(ME_String *s); int ME_StrVLen(ME_String *s); int ME_FindNonWhitespaceV(ME_String *s, int nVChar); int ME_FindWhitespaceV(ME_String *s, int nVChar); +int ME_CallWordBreakProc(ME_TextEditor *editor, ME_String *str, INT start, INT code); int ME_GetCharFwd(ME_String *s, int nPos); /* get char starting from start */ int ME_GetCharBack(ME_String *s, int nPos); /* get char starting from \0 */ int ME_StrRelPos(ME_String *s, int nVChar, int *pRelChars); @@ -80,16 +115,19 @@ int ME_VPosToPos(ME_String *s, int nVPos); int ME_PosToVPos(ME_String *s, int nPos); void ME_StrDeleteV(ME_String *s, int nVChar, int nChars); /* smart helpers for A<->W conversions, they reserve/free memory and call MultiByte<->WideChar functions */ -LPWSTR ME_ToUnicode(HWND hWnd, LPVOID psz); -void ME_EndToUnicode(HWND hWnd, LPVOID psz); -LPSTR ME_ToAnsi(HWND hWnd, LPVOID psz); -void ME_EndToAnsi(HWND hWnd, LPVOID psz); +LPWSTR ME_ToUnicode(BOOL unicode, LPVOID psz); +void ME_EndToUnicode(BOOL unicode, LPVOID psz); static inline int ME_IsWSpace(WCHAR ch) { return ch > '\0' && ch <= ' '; } +static inline int ME_CharCompare(WCHAR a, WCHAR b, int caseSensitive) +{ + return caseSensitive ? (a == b) : (toupperW(a) == toupperW(b)); +} + /* note: those two really return the first matching offset (starting from EOS)+1 * in other words, an offset of the first trailing white/black */ int ME_ReverseFindNonWhitespaceV(ME_String *s, int nVChar); @@ -107,10 +145,12 @@ int ME_RowNumberFromCharOfs(ME_TextEditor *editor, int nOfs); ME_DisplayItem *ME_MakeRun(ME_Style *s, ME_String *strData, int nFlags); /* note: ME_InsertRun inserts a copy of the specified run - so you need to destroy the original */ ME_DisplayItem *ME_InsertRun(ME_TextEditor *editor, int nCharOfs, ME_DisplayItem *pItem); +ME_DisplayItem *ME_InsertRunAtCursor(ME_TextEditor *editor, ME_Cursor *cursor, + ME_Style *style, const WCHAR *str, int len, int flags); void ME_CheckCharOffsets(ME_TextEditor *editor); void ME_PropagateCharOffset(ME_DisplayItem *p, int shift); void ME_GetGraphicsSize(ME_TextEditor *editor, ME_Run *run, SIZE *pSize); -int ME_CharFromPoint(ME_TextEditor *editor, int cx, ME_Paragraph *para, ME_Run *run); +int ME_CharFromPoint(ME_TextEditor *editor, int cx, ME_Run *run); /* this one accounts for 1/2 char tolerance */ int ME_CharFromPointCursor(ME_TextEditor *editor, int cx, ME_Run *run); int ME_PointFromChar(ME_TextEditor *editor, ME_Run *pRun, int nOffset); @@ -136,7 +176,8 @@ void ME_GetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt); void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod); /* caret.c */ -void ME_SetSelection(ME_TextEditor *editor, int from, int to); +int ME_SetSelection(ME_TextEditor *editor, int from, int to); +void ME_SelectWord(ME_TextEditor *editor); void ME_HideCaret(ME_TextEditor *ed); void ME_ShowCaret(ME_TextEditor *ed); void ME_MoveCaret(ME_TextEditor *ed); @@ -147,13 +188,14 @@ void ME_MouseMove(ME_TextEditor *editor, int x, int y); void ME_DeleteTextAtCursor(ME_TextEditor *editor, int nCursor, int nChars); void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor, const WCHAR *str, int len, ME_Style *style); -void ME_SetCharFormat(ME_TextEditor *editor, int nOfs, int nChars, CHARFORMAT2W *pFmt); -BOOL ME_ArrowKey(ME_TextEditor *ed, int nVKey, int nCtrl); +BOOL ME_ArrowKey(ME_TextEditor *ed, int nVKey, BOOL extend, BOOL ctrl); void ME_InitContext(ME_Context *c, ME_TextEditor *editor, HDC hDC); void ME_DestroyContext(ME_Context *c); ME_Style *GetInsertStyle(ME_TextEditor *editor, int nCursor); void ME_MustBeWrapped(ME_Context *c, ME_DisplayItem *para); +void ME_GetCursorCoordinates(ME_TextEditor *editor, ME_Cursor *pCursor, + int *x, int *y, int *height); int ME_GetCursorOfs(ME_TextEditor *editor, int nCursor); void ME_GetSelection(ME_TextEditor *editor, int *from, int *to); int ME_CountParagraphsBetween(ME_TextEditor *editor, int from, int to); @@ -161,6 +203,7 @@ BOOL ME_IsSelection(ME_TextEditor *editor); void ME_DeleteSelection(ME_TextEditor *editor); void ME_SendSelChange(ME_TextEditor *editor); void ME_InsertGraphicsFromCursor(ME_TextEditor *editor, int nCursor); +void ME_InsertTableCellFromCursor(ME_TextEditor *editor, int nCursor); void ME_InternalDeleteText(ME_TextEditor *editor, int nOfs, int nChars); int ME_GetTextLength(ME_TextEditor *editor); int ME_GetTextLengthEx(ME_TextEditor *editor, GETTEXTLENGTHEX *how); @@ -173,10 +216,12 @@ ME_DisplayItem *ME_MakeRow(int height, int baseline, int width); void ME_InsertRowStart(ME_WrapContext *wc, ME_DisplayItem *pEnd); void ME_WrapTextParagraph(ME_Context *c, ME_DisplayItem *tp); BOOL ME_WrapMarkedParagraphs(ME_TextEditor *editor); +void ME_InvalidateMarkedParagraphs(ME_TextEditor *editor); void ME_SendRequestResize(ME_TextEditor *editor, BOOL force); /* para.c */ ME_DisplayItem *ME_GetParagraph(ME_DisplayItem *run); +void ME_GetSelectionParas(ME_TextEditor *editor, ME_DisplayItem **para, ME_DisplayItem **para_end); void ME_MakeFirstParagraph(HDC hDC, ME_TextBuffer *editor); ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *rp, ME_Style *style); ME_DisplayItem *ME_JoinParagraphs(ME_TextEditor *editor, ME_DisplayItem *tp); @@ -188,6 +233,7 @@ void ME_GetParaFormat(ME_TextEditor *editor, ME_DisplayItem *para, PARAFORMAT2 * void ME_GetSelectionParaFormat(ME_TextEditor *editor, PARAFORMAT2 *pFmt); /* marks from first up to (but not including) last */ void ME_MarkForWrapping(ME_TextEditor *editor, ME_DisplayItem *first, ME_DisplayItem *last); +void ME_MarkForPainting(ME_TextEditor *editor, ME_DisplayItem *first, ME_DisplayItem *last); void ME_MarkAllForWrapping(ME_TextEditor *editor); /* paint.c */ @@ -196,23 +242,32 @@ void ME_Repaint(ME_TextEditor *editor); void ME_RewrapRepaint(ME_TextEditor *editor); void ME_UpdateRepaint(ME_TextEditor *editor); void ME_DrawParagraph(ME_Context *c, ME_DisplayItem *paragraph); -void ME_UpdateScrollBar(ME_TextEditor *editor); -int ME_GetYScrollPos(ME_TextEditor *editor); void ME_EnsureVisible(ME_TextEditor *editor, ME_DisplayItem *pRun); COLORREF ME_GetBackColor(ME_TextEditor *editor); -void ME_Scroll(ME_TextEditor *editor, int cx, int cy); +void ME_InvalidateSelection(ME_TextEditor *editor); +void ME_QueueInvalidateFromCursor(ME_TextEditor *editor, int nCursor); BOOL ME_SetZoom(ME_TextEditor *editor, int numerator, int denominator); +/* scroll functions in paint.c */ + +void ME_ScrollAbs(ME_TextEditor *editor, int absY); +void ME_ScrollUp(ME_TextEditor *editor, int cy); +void ME_ScrollDown(ME_TextEditor *editor, int cy); +void ME_Scroll(ME_TextEditor *editor, int value, int type); +void ME_UpdateScrollBar(ME_TextEditor *editor); +int ME_GetYScrollPos(ME_TextEditor *editor); +BOOL ME_GetYScrollVisible(ME_TextEditor *editor); + /* richole.c */ -extern LRESULT CreateIRichEditOle(LPVOID *); +extern LRESULT CreateIRichEditOle(ME_TextEditor *editor, LPVOID *); /* wintest.c */ /* editor.c */ -void ME_RegisterEditorClass(HINSTANCE hInstance); ME_TextEditor *ME_MakeEditor(HWND hWnd); void ME_DestroyEditor(ME_TextEditor *editor); void ME_SendOldNotify(ME_TextEditor *editor, int nCode); +void ME_LinkNotify(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam); ME_UndoItem *ME_AddUndoItem(ME_TextEditor *editor, ME_DIType type, ME_DisplayItem *di); void ME_CommitUndo(ME_TextEditor *editor); void ME_Undo(ME_TextEditor *editor); @@ -221,10 +276,13 @@ void ME_EmptyUndoStack(ME_TextEditor *editor); int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int nStart, int nChars, BOOL bCRLF); ME_DisplayItem *ME_FindItemAtOffset(ME_TextEditor *editor, ME_DIType nItemType, int nOffset, int *nItemOffset); void ME_StreamInFill(ME_InStream *stream); - +int ME_AutoURLDetect(ME_TextEditor *editor, WCHAR curChar); extern int me_debug; -extern HANDLE me_heap; extern void DoWrap(ME_TextEditor *editor); /* writer.c */ +LRESULT ME_StreamOutRange(ME_TextEditor *editor, DWORD dwFormat, int nStart, int nTo, EDITSTREAM *stream); LRESULT ME_StreamOut(ME_TextEditor *editor, DWORD dwFormat, EDITSTREAM *stream); + +/* clipboard.c */ +HRESULT ME_GetDataObject(ME_TextEditor *editor, CHARRANGE *lpchrg, LPDATAOBJECT *lplpdataobj); diff --git a/reactos/dll/win32/riched20/editstr.h b/reactos/dll/win32/riched20/editstr.h index 7a7398f37fa..9859fe78e8a 100644 --- a/reactos/dll/win32/riched20/editstr.h +++ b/reactos/dll/win32/riched20/editstr.h @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __EDITSTR_H @@ -30,6 +30,10 @@ #include #include +#define COBJMACROS +#define NONAMELESSUNION +#define NONAMELESSSTRUCT + #include #include #include @@ -38,6 +42,8 @@ #include #include #include +#include +#include #include "wine/debug.h" @@ -58,6 +64,7 @@ typedef struct tagME_Style } ME_Style; typedef enum { + diInvalid, diTextStart, /* start of the text buffer */ diParagraph, /* paragraph start */ diRun, /* run (sequence of chars with the same character format) */ @@ -88,6 +95,10 @@ typedef enum { #define MERF_GRAPHICS 1 /* run is a tab (or, in future, any kind of content whose size is dependent on run position) */ #define MERF_TAB 2 +/* run is a cell boundary */ +#define MERF_CELL 4 + +#define MERF_NONTEXT (MERF_GRAPHICS | MERF_TAB | MERF_CELL) /* run is splittable (contains white spaces in the middle or end) */ #define MERF_SPLITTABLE 0x001000 @@ -103,6 +114,8 @@ typedef enum { #define MERF_CALCBYWRAP 0x0F0000 /* the "end of paragraph" run, contains 1 character */ #define MERF_ENDPARA 0x100000 +/* run is hidden */ +#define MERF_HIDDEN 0x200000 /* runs with any of these flags set cannot be joined */ #define MERF_NOJOIN (MERF_GRAPHICS|MERF_TAB|MERF_ENDPARA) @@ -131,6 +144,7 @@ typedef struct tagME_Run int nFlags; int nAscent, nDescent; /* pixels above/below baseline */ POINT pt; /* relative to para's position */ + struct tagME_TableCell *pCell; /* for MERF_CELL: points to respective cell in ME_Paragraph */ } ME_Run; typedef struct tagME_Document { @@ -139,9 +153,20 @@ typedef struct tagME_Document { int last_wrapped_line; } ME_Document; +typedef struct tagME_TableCell +{ + int nRightBoundary; + struct tagME_TableCell *next; +} ME_TableCell; + typedef struct tagME_Paragraph { PARAFORMAT2 *pFmt; + + BOOL bTable; /* this paragraph is a table row */ + struct tagME_TableCell *pCells; /* list of cells and their properties */ + struct tagME_TableCell *pLastCell; /* points to the last cell in the list */ + int nLeftMargin, nRightMargin, nFirstMargin; int nCharOfs; int nFlags; @@ -268,23 +293,34 @@ typedef struct tagME_TextEditor int nTotalLength, nLastTotalLength; int nUDArrowX; int nSequence; - int nOldSelFrom, nOldSelTo; COLORREF rgbBackColor; HBRUSH hbrBackground; BOOL bCaretAtEnd; int nEventMask; int nModifyStep; - ME_DisplayItem *pUndoStack, *pRedoStack; + ME_DisplayItem *pUndoStack, *pRedoStack, *pUndoStackBottom; + int nUndoStackSize; + int nUndoLimit; ME_UndoMode nUndoMode; int nParagraphs; int nLastSelStart, nLastSelEnd; + ME_DisplayItem *pLastSelStartPara, *pLastSelEndPara; ME_FontCacheItem pFontCache[HFONT_CACHE_SIZE]; - ME_OutStream *pStream; - BOOL bScrollX, bScrollY; - int nScrollPosY; int nZoomNumerator, nZoomDenominator; RECT rcFormat; BOOL bRedraw; + int nInvalidOfs; + int nTextLimit; + EDITWORDBREAKPROCW pfnWordBreak; + LPRICHEDITOLECALLBACK lpOleCallback; + /*TEXTMODE variable; contains only one of each of the following options: + *TM_RICHTEXT or TM_PLAINTEXT + *TM_SINGLELEVELUNDO or TM_MULTILEVELUNDO + *TM_SINGLECODEPAGE or TM_MULTICODEPAGE*/ + int mode; + BOOL bHideSelection; + BOOL AutoURLDetect_bEnable; + WCHAR cPasswordMask; } ME_TextEditor; typedef struct tagME_Context diff --git a/reactos/dll/win32/riched20/list.c b/reactos/dll/win32/riched20/list.c index 857fcf3edfa..ad7b4b659e4 100644 --- a/reactos/dll/win32/riched20/list.c +++ b/reactos/dll/win32/riched20/list.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ @@ -112,6 +112,7 @@ void ME_DestroyDisplayItem(ME_DisplayItem *item) { /* TRACE("type=%s\n", ME_GetDITypeName(item->type)); */ if (item->type==diParagraph || item->type == diUndoSetParagraphFormat) { FREE_OBJ(item->member.para.pFmt); + ME_DestroyTableCellList(item); } if (item->type==diRun || item->type == diUndoInsertRun) { ME_ReleaseStyle(item->member.run.style); @@ -120,9 +121,28 @@ void ME_DestroyDisplayItem(ME_DisplayItem *item) { if (item->type==diUndoSetCharFormat || item->type==diUndoSetDefaultCharFormat) { ME_ReleaseStyle(item->member.ustyle); } + if (item->type==diUndoSplitParagraph) + FREE_OBJ(item->member.para.pFmt); FREE_OBJ(item); } +void +ME_DestroyTableCellList(ME_DisplayItem *item) +{ + if (item->member.para.pCells) + { + ME_TableCell *pCell = item->member.para.pCells; + ME_TableCell *pNext; + + while (pCell) { + pNext = pCell->next; + FREE_OBJ(pCell); + pCell = pNext; + } + item->member.para.pCells = NULL; + } +} + ME_DisplayItem *ME_MakeDI(ME_DIType type) { ME_DisplayItem *item = ALLOC_OBJ(ME_DisplayItem); ZeroMemory(item, sizeof(ME_DisplayItem)); @@ -168,20 +188,20 @@ void ME_DumpDocument(ME_TextBuffer *buffer) switch(pItem->type) { case diTextStart: - TRACE("Start"); + TRACE("Start\n"); break; case diParagraph: - TRACE("\nParagraph(ofs=%d)", pItem->member.para.nCharOfs); + TRACE("Paragraph(ofs=%d)\n", pItem->member.para.nCharOfs); break; case diStartRow: - TRACE(" - StartRow"); + TRACE(" - StartRow\n"); break; case diRun: - TRACE(" - Run(\"%s\", %d)", debugstr_w(pItem->member.run.strText->szData), + TRACE(" - Run(\"%s\", %d)\n", debugstr_w(pItem->member.run.strText->szData), pItem->member.run.nCharOfs); break; case diTextEnd: - TRACE("\nEnd(ofs=%d)\n", pItem->member.para.nCharOfs); + TRACE("End(ofs=%d)\n", pItem->member.para.nCharOfs); break; default: break; diff --git a/reactos/dll/win32/riched20/paint.c b/reactos/dll/win32/riched20/paint.c index e1c56b4ffa5..63a0c4c4082 100644 --- a/reactos/dll/win32/riched20/paint.c +++ b/reactos/dll/win32/riched20/paint.c @@ -2,6 +2,7 @@ * RichEdit - painting functions * * Copyright 2004 by Krzysztof Foltman + * Copyright 2005 by Phil Krylov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "editor.h" @@ -93,95 +94,48 @@ void ME_PaintContent(ME_TextEditor *editor, HDC hDC, BOOL bOnlyNew, RECT *rcUpda ME_DestroyContext(&c); } -static void ME_MarkParagraphRange(ME_TextEditor *editor, ME_DisplayItem *p1, - ME_DisplayItem *p2, int nFlags) -{ - ME_DisplayItem *p3; - if (p1 == p2) - { - p1->member.para.nFlags |= nFlags; - return; - } - if (p1->member.para.nCharOfs > p2->member.para.nCharOfs) - p3 = p1, p1 = p2, p2 = p3; - - p1->member.para.nFlags |= nFlags; - do { - p1 = p1->member.para.next_para; - p1->member.para.nFlags |= nFlags; - } while (p1 != p2); -} - -static void ME_MarkOffsetRange(ME_TextEditor *editor, int from, int to, int nFlags) -{ - ME_Cursor c1, c2; - ME_CursorFromCharOfs(editor, from, &c1); - ME_CursorFromCharOfs(editor, to, &c2); - - ME_MarkParagraphRange(editor, ME_GetParagraph(c1.pRun), ME_GetParagraph(c2.pRun), nFlags); -} - -static void ME_MarkSelectionForRepaint(ME_TextEditor *editor) -{ - int from, to, from2, to2, end; - - end = ME_GetTextLength(editor); - ME_GetSelection(editor, &from, &to); - from2 = editor->nLastSelStart; - to2 = editor->nLastSelEnd; - if (fromfrom2) ME_MarkOffsetRange(editor, from2, from, MEPF_REPAINT); - if (toto2) ME_MarkOffsetRange(editor, to2, to, MEPF_REPAINT); - - editor->nLastSelStart = from; - editor->nLastSelEnd = to; -} - void ME_Repaint(ME_TextEditor *editor) { - ME_Cursor *pCursor = &editor->pCursors[0]; - ME_DisplayItem *pRun = NULL; - int nOffset = -1; - HDC hDC; - int nCharOfs = ME_CharOfsFromRunOfs(editor, pCursor->pRun, pCursor->nOffset); - - ME_RunOfsFromCharOfs(editor, nCharOfs, &pRun, &nOffset); - assert(pRun == pCursor->pRun); - assert(nOffset == pCursor->nOffset); - ME_MarkSelectionForRepaint(editor); - if (ME_WrapMarkedParagraphs(editor)) { - ME_UpdateScrollBar(editor); - } - if (editor->bRedraw) + if (ME_WrapMarkedParagraphs(editor)) { - hDC = GetDC(editor->hWnd); - ME_HideCaret(editor); - ME_PaintContent(editor, hDC, TRUE, NULL); - ReleaseDC(editor->hWnd, hDC); - ME_ShowCaret(editor); - ME_EnsureVisible(editor, pCursor->pRun); + ME_UpdateScrollBar(editor); + FIXME("ME_Repaint had to call ME_WrapMarkedParagraphs\n"); } + ME_SendOldNotify(editor, EN_UPDATE); + UpdateWindow(editor->hWnd); } void ME_UpdateRepaint(ME_TextEditor *editor) { -/* - InvalidateRect(editor->hWnd, NULL, TRUE); - */ - ME_SendOldNotify(editor, EN_CHANGE); + /* Should be called whenever the contents of the control have changed */ + ME_Cursor *pCursor; + + if (ME_WrapMarkedParagraphs(editor)) + ME_UpdateScrollBar(editor); + + /* Ensure that the cursor is visible */ + pCursor = &editor->pCursors[0]; + ME_EnsureVisible(editor, pCursor->pRun); + + /* send EN_CHANGE if the event mask asks for it */ + if(editor->nEventMask & ENM_CHANGE) + { + ME_SendOldNotify(editor, EN_CHANGE); + } ME_Repaint(editor); - ME_SendOldNotify(editor, EN_UPDATE); ME_SendSelChange(editor); } - void ME_RewrapRepaint(ME_TextEditor *editor) -{ +{ + /* RewrapRepaint should be called whenever the control has changed in + * looks, but not content. Like resizing. */ + ME_MarkAllForWrapping(editor); ME_WrapMarkedParagraphs(editor); ME_UpdateScrollBar(editor); + ME_Repaint(editor); } @@ -194,7 +148,9 @@ static void ME_DrawTextWithStyle(ME_Context *c, int x, int y, LPCWSTR szText, in int yOffset = 0, yTwipsOffset = 0; hOldFont = ME_SelectStyleFont(c->editor, hDC, s); rgbBack = ME_GetBackColor(c->editor); - if ((s->fmt.dwMask & CFM_COLOR) && (s->fmt.dwEffects & CFE_AUTOCOLOR)) + if ((s->fmt.dwMask & CFM_LINK) && (s->fmt.dwEffects & CFE_LINK)) + rgbOld = SetTextColor(hDC, RGB(0,0,255)); + else if ((s->fmt.dwMask & CFM_COLOR) && (s->fmt.dwEffects & CFE_AUTOCOLOR)) rgbOld = SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT)); else rgbOld = SetTextColor(hDC, s->fmt.crTextColor); @@ -231,7 +187,10 @@ static void ME_DrawTextWithStyle(ME_Context *c, int x, int y, LPCWSTR szText, in GetTextExtentPoint32W(hDC, szText, nSelFrom, &sz); x += sz.cx; GetTextExtentPoint32W(hDC, szText+nSelFrom, nSelTo-nSelFrom, &sz); - PatBlt(hDC, x, ymin, sz.cx, cy, DSTINVERT); + + /* Invert selection if not hidden by EM_HIDESELECTION */ + if (c->editor->bHideSelection == FALSE) + PatBlt(hDC, x, ymin, sz.cx, cy, DSTINVERT); } SetTextColor(hDC, rgbOld); ME_UnselectStyleFont(c->editor, hDC, s, hOldFont); @@ -247,8 +206,8 @@ static void ME_DebugWrite(HDC hDC, POINT *pt, WCHAR *szText) { SetTextColor(hDC, color); } -void ME_DrawGraphics(ME_Context *c, int x, int y, ME_Run *run, - ME_Paragraph *para, BOOL selected) { +static void ME_DrawGraphics(ME_Context *c, int x, int y, ME_Run *run, + ME_Paragraph *para, BOOL selected) { SIZE sz; int xs, ys, xe, ye, h, ym, width, eyes; ME_GetGraphicsSize(c->editor, run, &sz); @@ -275,27 +234,46 @@ void ME_DrawGraphics(ME_Context *c, int x, int y, ME_Run *run, } } -static void ME_DrawRun(ME_Context *c, int x, int y, ME_DisplayItem *rundi, ME_Paragraph *para) { +static void ME_DrawRun(ME_Context *c, int x, int y, ME_DisplayItem *rundi, ME_Paragraph *para) +{ ME_Run *run = &rundi->member.run; + ME_DisplayItem *start = ME_FindItemBack(rundi, diStartRow); int runofs = run->nCharOfs+para->nCharOfs; + int nSelFrom, nSelTo; + const WCHAR wszSpace[] = {' ', 0}; - /* you can always comment it out if you need visible paragraph marks */ - if (run->nFlags & (MERF_ENDPARA|MERF_TAB)) + if (run->nFlags & MERF_HIDDEN) return; - if (run->nFlags & MERF_GRAPHICS) { - int blfrom, blto; - ME_GetSelection(c->editor, &blfrom, &blto); - ME_DrawGraphics(c, x, y, run, para, (runofs >= blfrom) && (runofs < blto)); - } else + + ME_GetSelection(c->editor, &nSelFrom, &nSelTo); + + /* Draw selected end-of-paragraph mark */ + if (run->nFlags & MERF_ENDPARA && runofs >= nSelFrom && runofs < nSelTo) + ME_DrawTextWithStyle(c, x, y, wszSpace, 1, run->style, NULL, 0, 1, + c->pt.y + start->member.row.nYPos, + start->member.row.nHeight); + + /* you can always comment it out if you need visible paragraph marks */ + if (run->nFlags & (MERF_ENDPARA | MERF_TAB | MERF_CELL)) + return; + + if (run->nFlags & MERF_GRAPHICS) + ME_DrawGraphics(c, x, y, run, para, (runofs >= nSelFrom) && (runofs < nSelTo)); + else { - int blfrom, blto; - ME_DisplayItem *start = ME_FindItemBack(rundi, diStartRow); - ME_GetSelection(c->editor, &blfrom, &blto); - - ME_DrawTextWithStyle(c, x, y, - run->strText->szData, ME_StrVLen(run->strText), run->style, NULL, - blfrom-runofs, blto-runofs, c->pt.y+start->member.row.nYPos, start->member.row.nHeight); - } + if (c->editor->cPasswordMask) + { + ME_String *szMasked = ME_MakeStringR(c->editor->cPasswordMask,ME_StrVLen(run->strText)); + ME_DrawTextWithStyle(c, x, y, + szMasked->szData, ME_StrVLen(szMasked), run->style, NULL, + nSelFrom-runofs,nSelTo-runofs, c->pt.y+start->member.row.nYPos, start->member.row.nHeight); + ME_DestroyString(szMasked); + } + else + ME_DrawTextWithStyle(c, x, y, + run->strText->szData, ME_StrVLen(run->strText), run->style, NULL, + nSelFrom-runofs,nSelTo-runofs, c->pt.y+start->member.row.nYPos, start->member.row.nHeight); + } } COLORREF ME_GetBackColor(ME_TextEditor *editor) @@ -378,7 +356,7 @@ void ME_DrawParagraph(ME_Context *c, ME_DisplayItem *paragraph) { rc.right = c->rcView.left+run->pt.x+run->nWidth; rc.top = c->pt.y+run->pt.y; rc.bottom = c->pt.y+run->pt.y+height; - TRACE("rc = (%ld, %ld, %ld, %ld)\n", rc.left, rc.top, rc.right, rc.bottom); + TRACE("rc = (%d, %d, %d, %d)\n", rc.left, rc.top, rc.right, rc.bottom); if (run->nFlags & MERF_SKIPPED) DrawFocusRect(c->hDC, &rc); else @@ -407,80 +385,118 @@ void ME_DrawParagraph(ME_Context *c, ME_DisplayItem *paragraph) { SetTextAlign(c->hDC, align); } -void ME_Scroll(ME_TextEditor *editor, int cx, int cy) +void ME_ScrollAbs(ME_TextEditor *editor, int absY) { - SCROLLINFO si; - HWND hWnd = editor->hWnd; - - si.cbSize = sizeof(SCROLLINFO); - si.fMask = SIF_POS; - GetScrollInfo(hWnd, SB_VERT, &si); - si.nPos = editor->nScrollPosY -= cy; - SetScrollInfo(hWnd, SB_VERT, &si, TRUE); - if (editor->bRedraw) - { - if (abs(cy) > editor->sizeWindow.cy) - InvalidateRect(editor->hWnd, NULL, TRUE); - else - ScrollWindowEx(hWnd, cx, cy, NULL, NULL, NULL, NULL, SW_ERASE|SW_INVALIDATE); - } + ME_Scroll(editor, absY, 1); } -void ME_UpdateScrollBar(ME_TextEditor *editor) +void ME_ScrollUp(ME_TextEditor *editor, int cy) +{ + ME_Scroll(editor, cy, 2); +} + +void ME_ScrollDown(ME_TextEditor *editor, int cy) +{ + ME_Scroll(editor, cy, 3); +} + +void ME_Scroll(ME_TextEditor *editor, int value, int type) { - HWND hWnd = editor->hWnd; SCROLLINFO si; - int nOldLen = editor->nTotalLength; - BOOL bScrollY = (editor->nTotalLength > editor->sizeWindow.cy); - BOOL bUpdateScrollBars; - si.cbSize = sizeof(si); - si.fMask = SIF_POS | SIF_RANGE; - GetScrollInfo(hWnd, SB_VERT, &si); - bUpdateScrollBars = (bScrollY || editor->bScrollY)&& ((si.nMax != nOldLen) || (si.nPage != editor->sizeWindow.cy)); + int nOrigPos, nNewPos, nActualScroll; + + nOrigPos = ME_GetYScrollPos(editor); - if (bScrollY != editor->bScrollY) + si.cbSize = sizeof(SCROLLINFO); + si.fMask = SIF_POS; + + switch (type) { - si.fMask = SIF_RANGE | SIF_PAGE; - si.nMin = 0; - si.nPage = editor->sizeWindow.cy; - if (bScrollY) { - si.nMax = editor->nTotalLength; - } else { - si.nMax = 0; - } - SetScrollInfo(hWnd, SB_VERT, &si, FALSE); - ME_MarkAllForWrapping(editor); - editor->bScrollY = bScrollY; - ME_WrapMarkedParagraphs(editor); - bUpdateScrollBars = TRUE; - } - if (bUpdateScrollBars) { - int nScroll = 0; - si.fMask = SIF_PAGE | SIF_RANGE | SIF_POS; - if (editor->nTotalLength > editor->sizeWindow.cy) { - si.nMax = editor->nTotalLength; - si.nPage = editor->sizeWindow.cy; - if (si.nPos > si.nMax-si.nPage) { - nScroll = (si.nMax-si.nPage)-si.nPos; - si.nPos = si.nMax-si.nPage; - } - } - else { - si.nMax = 0; - si.nPage = 0; + case 1: + /*Scroll absolutly*/ + si.nPos = value; + break; + case 2: + /* Scroll up - towards the beginning of the document */ + si.nPos = nOrigPos - value; + break; + case 3: + /* Scroll down - towards the end of the document */ + si.nPos = nOrigPos + value; + break; + default: + FIXME("ME_Scroll called incorrectly\n"); si.nPos = 0; - } - TRACE("min=%d max=%d page=%d pos=%d shift=%d\n", si.nMin, si.nMax, si.nPage, si.nPos, nScroll); - editor->nScrollPosY = si.nPos; - SetScrollInfo(hWnd, SB_VERT, &si, TRUE); - if (nScroll) - ScrollWindow(hWnd, 0, -nScroll, NULL, NULL); } + + nNewPos = SetScrollInfo(editor->hWnd, SB_VERT, &si, editor->bRedraw); + nActualScroll = nOrigPos - nNewPos; + if (editor->bRedraw) + { + if (abs(nActualScroll) > editor->sizeWindow.cy) + InvalidateRect(editor->hWnd, NULL, TRUE); + else + ScrollWindowEx(editor->hWnd, 0, nActualScroll, NULL, NULL, NULL, NULL, SW_INVALIDATE); + ME_Repaint(editor); + } + + ME_UpdateScrollBar(editor); +} + + + void ME_UpdateScrollBar(ME_TextEditor *editor) +{ + /* Note that this is the only funciton that should ever call SetScrolLInfo + * with SIF_PAGE or SIF_RANGE. SetScrollPos and SetScrollRange should never + * be used at all. */ + + HWND hWnd; + SCROLLINFO si; + BOOL bScrollBarWasVisible,bScrollBarWillBeVisible; + + if (ME_WrapMarkedParagraphs(editor)) + FIXME("ME_UpdateScrollBar had to call ME_WrapMarkedParagraphs\n"); + + hWnd = editor->hWnd; + si.cbSize = sizeof(si); + bScrollBarWasVisible = ME_GetYScrollVisible(editor); + bScrollBarWillBeVisible = editor->nTotalLength > editor->sizeWindow.cy; + + if (bScrollBarWasVisible != bScrollBarWillBeVisible) + { + ShowScrollBar(hWnd, SB_VERT, bScrollBarWillBeVisible); + ME_MarkAllForWrapping(editor); + ME_WrapMarkedParagraphs(editor); + } + + si.fMask = SIF_PAGE | SIF_RANGE; + if (GetWindowLongW(hWnd, GWL_STYLE) & ES_DISABLENOSCROLL) + si.fMask |= SIF_DISABLENOSCROLL; + + si.nMin = 0; + si.nMax = editor->nTotalLength; + + si.nPage = editor->sizeWindow.cy; + + TRACE("min=%d max=%d page=%d\n", si.nMin, si.nMax, si.nPage); + SetScrollInfo(hWnd, SB_VERT, &si, TRUE); } int ME_GetYScrollPos(ME_TextEditor *editor) { - return editor->nScrollPosY; + SCROLLINFO si; + si.cbSize = sizeof(si); + si.fMask = SIF_POS; + GetScrollInfo(editor->hWnd, SB_VERT, &si); + return si.nPos; +} + +BOOL ME_GetYScrollVisible(ME_TextEditor *editor) +{ /* Returns true if the scrollbar is visible */ + SCROLLBARINFO sbi; + sbi.cbSize = sizeof(sbi); + GetScrollBarInfo(editor->hWnd, OBJID_VSCROLL, &sbi); + return ((sbi.rgstate[0] & STATE_SYSTEM_INVISIBLE) == 0); } void ME_EnsureVisible(ME_TextEditor *editor, ME_DisplayItem *pRun) @@ -488,7 +504,6 @@ void ME_EnsureVisible(ME_TextEditor *editor, ME_DisplayItem *pRun) ME_DisplayItem *pRow = ME_FindItemBack(pRun, diStartRow); ME_DisplayItem *pPara = ME_FindItemBack(pRun, diParagraph); int y, yrel, yheight, yold; - HWND hWnd = editor->hWnd; assert(pRow); assert(pPara); @@ -497,26 +512,85 @@ void ME_EnsureVisible(ME_TextEditor *editor, ME_DisplayItem *pRun) yheight = pRow->member.row.nHeight; yold = ME_GetYScrollPos(editor); yrel = y - yold; - if (yrel < 0) { - editor->nScrollPosY = y; - SetScrollPos(hWnd, SB_VERT, y, TRUE); - if (editor->bRedraw) - { - ScrollWindow(hWnd, 0, -yrel, NULL, NULL); - UpdateWindow(hWnd); - } - } else if (yrel + yheight > editor->sizeWindow.cy) { - int newy = y+yheight-editor->sizeWindow.cy; - editor->nScrollPosY = newy; - SetScrollPos(hWnd, SB_VERT, newy, TRUE); - if (editor->bRedraw) - { - ScrollWindow(hWnd, 0, -(newy-yold), NULL, NULL); - UpdateWindow(hWnd); - } - } + + if (y < yold) + ME_ScrollAbs(editor,y); + else if (yrel + yheight > editor->sizeWindow.cy) + ME_ScrollAbs(editor,y+yheight-editor->sizeWindow.cy); } - + + +void +ME_InvalidateFromOfs(ME_TextEditor *editor, int nCharOfs) +{ + RECT rc; + int x, y, height; + ME_Cursor tmp; + + ME_RunOfsFromCharOfs(editor, nCharOfs, &tmp.pRun, &tmp.nOffset); + ME_GetCursorCoordinates(editor, &tmp, &x, &y, &height); + + rc.left = 0; + rc.top = y; + rc.bottom = y + height; + rc.right = editor->rcFormat.right; + InvalidateRect(editor->hWnd, &rc, FALSE); +} + + +void +ME_InvalidateSelection(ME_TextEditor *editor) +{ + ME_DisplayItem *para1, *para2; + int nStart, nEnd; + int len = ME_GetTextLength(editor); + + ME_GetSelection(editor, &nStart, &nEnd); + /* if both old and new selection are 0-char (= caret only), then + there's no (inverted) area to be repainted, neither old nor new */ + if (nStart == nEnd && editor->nLastSelStart == editor->nLastSelEnd) + return; + ME_WrapMarkedParagraphs(editor); + ME_GetSelectionParas(editor, ¶1, ¶2); + assert(para1->type == diParagraph); + assert(para2->type == diParagraph); + /* last selection markers aren't always updated, which means + they can point past the end of the document */ + if (editor->nLastSelStart > len) + editor->nLastSelEnd = len; + if (editor->nLastSelEnd > len) + editor->nLastSelEnd = len; + + /* if the start part of selection is being expanded or contracted... */ + if (nStart < editor->nLastSelStart) { + ME_MarkForPainting(editor, para1, ME_FindItemFwd(editor->pLastSelStartPara, diParagraphOrEnd)); + } else + if (nStart > editor->nLastSelStart) { + ME_MarkForPainting(editor, editor->pLastSelStartPara, ME_FindItemFwd(para1, diParagraphOrEnd)); + } + + /* if the end part of selection is being contracted or expanded... */ + if (nEnd < editor->nLastSelEnd) { + ME_MarkForPainting(editor, para2, ME_FindItemFwd(editor->pLastSelEndPara, diParagraphOrEnd)); + } else + if (nEnd > editor->nLastSelEnd) { + ME_MarkForPainting(editor, editor->pLastSelEndPara, ME_FindItemFwd(para2, diParagraphOrEnd)); + } + + ME_InvalidateMarkedParagraphs(editor); + /* remember the last invalidated position */ + ME_GetSelection(editor, &editor->nLastSelStart, &editor->nLastSelEnd); + ME_GetSelectionParas(editor, &editor->pLastSelStartPara, &editor->pLastSelEndPara); + assert(editor->pLastSelStartPara->type == diParagraph); + assert(editor->pLastSelEndPara->type == diParagraph); +} + +void +ME_QueueInvalidateFromCursor(ME_TextEditor *editor, int nCursor) +{ + editor->nInvalidOfs = ME_GetCursorOfs(editor, nCursor); +} + BOOL ME_SetZoom(ME_TextEditor *editor, int numerator, int denominator) diff --git a/reactos/dll/win32/riched20/para.c b/reactos/dll/win32/riched20/para.c index a6a548f1e5c..1774957bc37 100644 --- a/reactos/dll/win32/riched20/para.c +++ b/reactos/dll/win32/riched20/para.c @@ -2,6 +2,7 @@ * RichEdit - functions working on paragraphs of text (diParagraph). * * Copyright 2004 by Krzysztof Foltman + * Copyright 2006 by Phil Krylov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,14 +16,14 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "editor.h" WINE_DEFAULT_DEBUG_CHANNEL(richedit); -static WCHAR wszParagraphSign[] = {0xB6, 0}; +static const WCHAR wszParagraphSign[] = {0xB6, 0}; void ME_MakeFirstParagraph(HDC hDC, ME_TextBuffer *text) { @@ -91,6 +92,15 @@ void ME_MarkForWrapping(ME_TextEditor *editor, ME_DisplayItem *first, ME_Display } } +void ME_MarkForPainting(ME_TextEditor *editor, ME_DisplayItem *first, ME_DisplayItem *last) +{ + while(first != last) + { + first->member.para.nFlags |= MEPF_REPAINT; + first = first->member.para.next_para; + } +} + /* split paragraph at the beginning of the run */ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run, ME_Style *style) { @@ -133,6 +143,35 @@ ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *run, ME new_para->member.para.nLeftMargin = run_para->member.para.nLeftMargin; new_para->member.para.nRightMargin = run_para->member.para.nRightMargin; new_para->member.para.nFirstMargin = run_para->member.para.nFirstMargin; + + new_para->member.para.bTable = run_para->member.para.bTable; + + /* Inherit previous cell definitions if any */ + new_para->member.para.pCells = NULL; + if (run_para->member.para.pCells) + { + ME_TableCell *pCell, *pNewCell; + + for (pCell = run_para->member.para.pCells; pCell; pCell = pCell->next) + { + pNewCell = ALLOC_OBJ(ME_TableCell); + pNewCell->nRightBoundary = pCell->nRightBoundary; + pNewCell->next = NULL; + if (new_para->member.para.pCells) + new_para->member.para.pLastCell->next = pNewCell; + else + new_para->member.para.pCells = pNewCell; + new_para->member.para.pLastCell = pNewCell; + } + } + + /* fix paragraph properties. FIXME only needed when called from RTF reader */ + if (run_para->member.para.pCells && !run_para->member.para.bTable) + { + /* Paragraph does not have an \intbl keyword, so any table definition + * stored is invalid */ + ME_DestroyTableCellList(run_para); + } /* insert paragraph into paragraph double linked list */ new_para->member.para.prev_para = run_para; @@ -215,6 +254,11 @@ ME_DisplayItem *ME_JoinParagraphs(ME_TextEditor *editor, ME_DisplayItem *tp) ME_Remove(pRun); ME_DestroyDisplayItem(pRun); + if (editor->pLastSelStartPara == pNext) + editor->pLastSelStartPara = tp; + if (editor->pLastSelEndPara == pNext) + editor->pLastSelEndPara = tp; + tp->member.para.next_para = pNext->member.para.next_para; pNext->member.para.next_para->member.para.prev_para = tp; ME_Remove(pNext); @@ -303,21 +347,37 @@ void ME_SetParaFormat(ME_TextEditor *editor, ME_DisplayItem *para, PARAFORMAT2 * para->member.para.nFlags |= MEPF_REWRAP; } + +void +ME_GetSelectionParas(ME_TextEditor *editor, ME_DisplayItem **para, ME_DisplayItem **para_end) +{ + ME_Cursor *pEndCursor = &editor->pCursors[1]; + + *para = ME_GetParagraph(editor->pCursors[0].pRun); + *para_end = ME_GetParagraph(editor->pCursors[1].pRun); + if ((*para_end)->member.para.nCharOfs < (*para)->member.para.nCharOfs) { + ME_DisplayItem *tmp = *para; + + *para = *para_end; + *para_end = tmp; + pEndCursor = &editor->pCursors[0]; + } + + /* selection consists of chars from nFrom up to nTo-1 */ + if ((*para_end)->member.para.nCharOfs > (*para)->member.para.nCharOfs) { + if (!pEndCursor->nOffset) { + *para_end = ME_GetParagraph(ME_FindItemBack(pEndCursor->pRun, diRun)); + } + } +} + + void ME_SetSelectionParaFormat(ME_TextEditor *editor, PARAFORMAT2 *pFmt) { - int nFrom, nTo; - ME_DisplayItem *para, *para_end, *run; - int nOffset; - - ME_GetSelection(editor, &nFrom, &nTo); - if (nTo>nFrom) /* selection consists of chars from nFrom up to nTo-1 */ - nTo--; - - ME_RunOfsFromCharOfs(editor, nFrom, &run, &nOffset); - para = ME_GetParagraph(run); - ME_RunOfsFromCharOfs(editor, nTo, &run, &nOffset); - para_end = ME_GetParagraph(run); + ME_DisplayItem *para, *para_end; + ME_GetSelectionParas(editor, ¶, ¶_end); + do { ME_SetParaFormat(editor, para, pFmt); if (para == para_end) @@ -338,19 +398,10 @@ void ME_GetParaFormat(ME_TextEditor *editor, ME_DisplayItem *para, PARAFORMAT2 * void ME_GetSelectionParaFormat(ME_TextEditor *editor, PARAFORMAT2 *pFmt) { - int nFrom, nTo; - ME_DisplayItem *para, *para_end, *run; - int nOffset; + ME_DisplayItem *para, *para_end; PARAFORMAT2 tmp; - ME_GetSelection(editor, &nFrom, &nTo); - if (nTo>nFrom) /* selection consists of chars from nFrom up to nTo-1 */ - nTo--; - - ME_RunOfsFromCharOfs(editor, nFrom, &run, &nOffset); - para = ME_GetParagraph(run); - ME_RunOfsFromCharOfs(editor, nTo, &run, &nOffset); - para_end = ME_GetParagraph(run); + ME_GetSelectionParas(editor, ¶, ¶_end); ME_GetParaFormat(editor, para, pFmt); if (para == para_end) return; diff --git a/reactos/dll/win32/riched20/reader.c b/reactos/dll/win32/riched20/reader.c index 72cff6567e1..7fb641bd52e 100644 --- a/reactos/dll/win32/riched20/reader.c +++ b/reactos/dll/win32/riched20/reader.c @@ -2,6 +2,7 @@ * WINE RTF file reader * * Portions Copyright 2004 Mike McCormack for CodeWeavers + * Portions Copyright 2006 by Phil Krylov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ /* @@ -63,9 +64,8 @@ static void ReadStyleSheet (RTF_Info *); static void ReadInfoGroup (RTF_Info *); static void ReadPictGroup (RTF_Info *); static void ReadObjGroup (RTF_Info *); -static void LookupInit (void); static void Lookup (RTF_Info *, char *); -static int Hash (char*); +static int Hash (const char *); static void CharAttr(RTF_Info *info); static void CharSet(RTF_Info *info); @@ -85,17 +85,9 @@ static void RTFPutCodePageChar(RTF_Info *info, int c); * Return pointer to block of size bytes, or NULL if there's * not enough memory available. */ -static inline void *RTFAlloc(int size) -{ - return HeapAlloc(me_heap, 0, size); -} - - -static inline void * RTFReAlloc(void *ptr, int size) -{ - return HeapReAlloc(me_heap, 0, ptr, size); -} - +#define RTFAlloc(size) richedit_alloc(size) +#define RTFReAlloc(ptr, size) richedit_realloc(ptr, size) +#define RTFFree(ptr) richedit_free(ptr) /* * Saves a string on the heap and returns a pointer to it. @@ -111,12 +103,6 @@ static inline char *RTFStrSave(char *s) } -static inline void RTFFree(void *p) -{ - HeapFree(me_heap, 0, p); -} - - /* ---------------------------------------------------------------------- */ @@ -125,8 +111,6 @@ int _RTFGetChar(RTF_Info *info) int ch; ME_InStream *stream = info->stream; - TRACE("\n"); - if (stream->dwSize <= stream->dwUsed) { ME_StreamInFill(stream); @@ -145,8 +129,6 @@ int _RTFGetChar(RTF_Info *info) void RTFSetEditStream(RTF_Info *info, ME_InStream *stream) { - TRACE("\n"); - info->stream = stream; } @@ -212,8 +194,6 @@ void RTFInit(RTF_Info *info) { int i; - TRACE("\n"); - if (info->rtfTextBuf == NULL) /* initialize the text buffers */ { info->rtfTextBuf = RTFAlloc (rtfBufSiz); @@ -227,9 +207,6 @@ void RTFInit(RTF_Info *info) RTFFree (info->outputName); info->inputName = info->outputName = NULL; - /* initialize lookup table */ - LookupInit (); - for (i = 0; i < rtfMaxClass; i++) RTFSetClassCallback (info, i, NULL); for (i = 0; i < rtfMaxDestination; i++) @@ -279,8 +256,6 @@ void RTFInit(RTF_Info *info) void RTFSetInputName(RTF_Info *info, char *name) { - TRACE("\n"); - info->inputName = RTFStrSave (name); if (info->inputName == NULL) ERR ("RTFSetInputName: out of memory\n"); @@ -295,8 +270,6 @@ char *RTFGetInputName(RTF_Info *info) void RTFSetOutputName(RTF_Info *info, char *name) { - TRACE("\n"); - info->outputName = RTFStrSave (name); if (info->outputName == NULL) ERR ("RTFSetOutputName: out of memory\n"); @@ -384,8 +357,6 @@ void RTFRouteToken(RTF_Info *info) { RTFFuncPtr p; - TRACE("\n"); - if (info->rtfClass < 0 || info->rtfClass >= rtfMaxClass) /* watchdog */ { ERR( "Unknown class %d: %s (reader malfunction)\n", @@ -419,8 +390,6 @@ void RTFSkipGroup(RTF_Info *info) { int level = 1; - TRACE("\n"); - while (RTFGetToken (info) != rtfEOF) { if (info->rtfClass == rtfGroup) @@ -447,7 +416,6 @@ int RTFGetToken(RTF_Info *info) { RTFFuncPtr p; - TRACE("\n"); /* don't try to return anything once EOF is reached */ if (info->rtfClass == rtfEOF) { return rtfEOF; @@ -487,8 +455,6 @@ RTFFuncPtr RTFGetReadHook(RTF_Info *info) void RTFUngetToken(RTF_Info *info) { - TRACE("\n"); - if (info->pushedClass >= 0) /* there's already an ungotten token */ ERR ("cannot unget two tokens\n"); if (info->rtfClass < 0) @@ -511,8 +477,6 @@ int RTFPeekToken(RTF_Info *info) static void _RTFGetToken(RTF_Info *info) { - TRACE("\n"); - if (info->rtfFormat == SF_TEXT) { info->rtfMajor = GetChar (info); @@ -596,7 +560,7 @@ RTFCharSetToCodePage(RTF_Info *info, int charset) { CHARSETINFO csi; DWORD n = charset; - + /* FIXME: TranslateCharsetInfo does not work as good as it * should, so let's use it only when all else fails */ if (!TranslateCharsetInfo(&n, &csi, TCI_SRCCHARSET)) @@ -616,8 +580,6 @@ static void _RTFGetToken2(RTF_Info *info) int sign; int c; - TRACE("\n"); - /* initialize token vars */ info->rtfClass = rtfUnknown; @@ -787,8 +749,6 @@ static int GetChar(RTF_Info *info) int c; int oldBumpLine; - TRACE("\n"); - if ((c = _RTFGetChar(info)) != EOF) { info->rtfTextBuf[info->rtfTextLen++] = c; @@ -828,8 +788,6 @@ static int GetChar(RTF_Info *info) void RTFSetToken(RTF_Info *info, int class, int major, int minor, int param, const char *text) { - TRACE("\n"); - info->rtfClass = class; info->rtfMajor = major; info->rtfMinor = minor; @@ -877,8 +835,6 @@ static void ReadFontTbl(RTF_Info *info) int old = -1; const char *fn = "ReadFontTbl"; - TRACE("\n"); - for (;;) { RTFGetToken (info); @@ -929,7 +885,7 @@ static void ReadFontTbl(RTF_Info *info) { default: /* ignore token but announce it */ - ERR ("%s: unknown token \"%s\"\n", + WARN ("%s: unknown token \"%s\"\n", fn, info->rtfTextBuf); break; case rtfFontFamily: @@ -999,7 +955,7 @@ static void ReadFontTbl(RTF_Info *info) else { /* ignore token but announce it */ - ERR ( "%s: unknown token \"%s\"\n", + WARN ( "%s: unknown token \"%s\"\n", fn,info->rtfTextBuf); } RTFGetToken (info); @@ -1056,8 +1012,7 @@ static void ReadColorTbl(RTF_Info *info) RTFColor *cp; int cnum = 0; const char *fn = "ReadColorTbl"; - - TRACE("\n"); + int group_level = 1; for (;;) { @@ -1065,7 +1020,18 @@ static void ReadColorTbl(RTF_Info *info) if (info->rtfClass == rtfEOF) break; if (RTFCheckCM (info, rtfGroup, rtfEndGroup)) - break; + { + group_level--; + if (!group_level) + break; + continue; + } + else if (RTFCheckCM(info, rtfGroup, rtfBeginGroup)) + { + group_level++; + continue; + } + cp = New (RTFColor); if (cp == NULL) ERR ( "%s: cannot allocate color entry\n", fn); @@ -1105,8 +1071,6 @@ static void ReadStyleSheet(RTF_Info *info) const char *fn = "ReadStyleSheet"; int real_style; - TRACE("\n"); - for (;;) { RTFGetToken (info); @@ -1229,7 +1193,7 @@ static void ReadStyleSheet(RTF_Info *info) else /* unrecognized */ { /* ignore token but announce it */ - ERR ( "%s: unknown token \"%s\"\n", + WARN ( "%s: unknown token \"%s\"\n", fn, info->rtfTextBuf); } } @@ -1351,8 +1315,6 @@ void RTFExpandStyle(RTF_Info *info, int n) RTFStyle *s; RTFStyleElt *se; - TRACE("\n"); - if (n == -1) return; s = RTFGetStyle (info, n); @@ -1817,7 +1779,7 @@ static RTFKey rtfKey[] = { rtfDocAttr, rtfRTLDoc, "rtldoc", 0 }, { rtfDocAttr, rtfLTRDoc, "ltrdoc", 0 }, - + { rtfDocAttr, rtfAnsiCodePage, "ansicpg", 0 }, { rtfDocAttr, rtfUTF8RTF, "urtf", 0 }, @@ -2326,26 +2288,34 @@ static RTFHashTableEntry rtfHashTable[RTF_KEY_COUNT * 2]; * Initialize lookup table hash values. Only need to do this once. */ -static void LookupInit(void) +void LookupInit(void) { - static int inited = 0; RTFKey *rp; - if (inited == 0) + memset(rtfHashTable, 0, sizeof rtfHashTable); + for (rp = rtfKey; rp->rtfKStr != NULL; rp++) { - memset(rtfHashTable, 0, RTF_KEY_COUNT * 2 * sizeof(*rtfHashTable)); - for (rp = rtfKey; rp->rtfKStr != NULL; rp++) { - int index; - - rp->rtfKHash = Hash ((char*)rp->rtfKStr); - index = rp->rtfKHash % (RTF_KEY_COUNT * 2); - if (!rtfHashTable[index].count) - rtfHashTable[index].value = RTFAlloc(sizeof(RTFKey *)); - else - rtfHashTable[index].value = RTFReAlloc(rtfHashTable[index].value, sizeof(RTFKey *) * (rtfHashTable[index].count + 1)); - rtfHashTable[index].value[rtfHashTable[index].count++] = rp; - } - ++inited; + int index; + + rp->rtfKHash = Hash (rp->rtfKStr); + index = rp->rtfKHash % (RTF_KEY_COUNT * 2); + if (!rtfHashTable[index].count) + rtfHashTable[index].value = RTFAlloc(sizeof(RTFKey *)); + else + rtfHashTable[index].value = RTFReAlloc(rtfHashTable[index].value, sizeof(RTFKey *) * (rtfHashTable[index].count + 1)); + rtfHashTable[index].value[rtfHashTable[index].count++] = rp; + } +} + +void LookupCleanup(void) +{ + int i; + + for (i=0; irtfMajor) { case rtfCharAttr: @@ -2525,7 +2492,7 @@ static void CharAttr(RTF_Info *info) { RTFFont *font; - + switch (info->rtfMinor) { case rtfFontNum: @@ -2578,7 +2545,6 @@ CharSet(RTF_Info *info) static void Destination (RTF_Info *info) { - TRACE("\n"); if (!RTFGetDestinationCallback(info, info->rtfMinor)) RTFSkipGroup (info); } @@ -2611,9 +2577,6 @@ DocAttr(RTF_Info *info) static void SpecialChar (RTF_Info *info) { - - TRACE("\n"); - switch (info->rtfMinor) { case rtfOptDest: @@ -2628,9 +2591,9 @@ static void SpecialChar (RTF_Info *info) case rtfUnicode: { int i; - + RTFPutUnicodeChar(info, info->rtfParam); - + /* After \u we must skip number of character tokens set by \ucN */ for (i = 0; i < info->unicodeLength; i++) { @@ -2652,9 +2615,6 @@ static void SpecialChar (RTF_Info *info) case rtfPar: RTFPutUnicodeChar (info, '\n'); break; - case rtfCell: - RTFPutUnicodeChar (info, ' '); /* make sure cells are separated */ - break; case rtfNoBrkSpace: RTFPutUnicodeChar (info, 0x00A0); break; diff --git a/reactos/dll/win32/riched20/riched20.rbuild b/reactos/dll/win32/riched20/riched20.rbuild index b55c23d237c..911958816b2 100644 --- a/reactos/dll/win32/riched20/riched20.rbuild +++ b/reactos/dll/win32/riched20/riched20.rbuild @@ -7,12 +7,14 @@ 0x600 0x501 0x501 + uuid wine ntdll kernel32 user32 gdi32 + ole32 caret.c context.c editor.c @@ -28,5 +30,8 @@ undo.c wrap.c writer.c + txtsrv.c + clipboard.c riched20.spec + version.rc diff --git a/reactos/dll/win32/riched20/richole.c b/reactos/dll/win32/riched20/richole.c index d45741477d6..0585e43edf8 100644 --- a/reactos/dll/win32/riched20/richole.c +++ b/reactos/dll/win32/riched20/richole.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include @@ -31,37 +31,58 @@ #include "winuser.h" #include "ole2.h" #include "richole.h" +#include "editor.h" +#include "tom.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(richedit); -typedef struct IRichEditOleImpl { - const IRichEditOleVtbl *lpVtbl; - LONG ref; -} IRichEditOleImpl; - /* there is no way to be consistent across different sets of headers - mingw, Wine, Win32 SDK*/ /* FIXME: the next 6 lines should be in textserv.h */ +#include "initguid.h" #define TEXTSERV_GUID(name, l, w1, w2, b1, b2) \ - GUID name = { l, w1, w2, {b1, b2, 0x00, 0xaa, 0x00, 0x6c, 0xad, 0xc5}} + DEFINE_GUID(name, l, w1, w2, b1, b2, 0x00, 0xaa, 0x00, 0x6c, 0xad, 0xc5) TEXTSERV_GUID(IID_ITextServices, 0x8d33f740, 0xcf58, 0x11ce, 0xa8, 0x9d); TEXTSERV_GUID(IID_ITextHost, 0xc5bdd8d0, 0xd26e, 0x11ce, 0xa8, 0x9e); TEXTSERV_GUID(IID_ITextHost2, 0xc5bdd8d0, 0xd26e, 0x11ce, 0xa8, 0x9e); +DEFINE_GUID(IID_ITextDocument, 0x8cc497c0, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xaa, 0x00, 0x47, 0xbe, 0x5d); + +typedef struct IRichEditOleImpl { + const IRichEditOleVtbl *lpRichEditOleVtbl; + const ITextDocumentVtbl *lpTextDocumentVtbl; + LONG ref; + + ME_TextEditor *editor; +} IRichEditOleImpl; + +static inline IRichEditOleImpl *impl_from_IRichEditOle(IRichEditOle *iface) +{ + return (IRichEditOleImpl *)((BYTE*)iface - FIELD_OFFSET(IRichEditOleImpl, lpRichEditOleVtbl)); +} + +static inline IRichEditOleImpl *impl_from_ITextDocument(ITextDocument *iface) +{ + return (IRichEditOleImpl *)((BYTE*)iface - FIELD_OFFSET(IRichEditOleImpl, lpTextDocumentVtbl)); +} static HRESULT WINAPI IRichEditOle_fnQueryInterface(IRichEditOle *me, REFIID riid, LPVOID *ppvObj) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); TRACE("%p %s\n", This, debugstr_guid(riid) ); + *ppvObj = NULL; if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IRichEditOle)) + *ppvObj = &This->lpRichEditOleVtbl; + else if (IsEqualGUID(riid, &IID_ITextDocument)) + *ppvObj = &This->lpTextDocumentVtbl; + if (*ppvObj) { IRichEditOle_AddRef(me); - *ppvObj = (LPVOID) This; return S_OK; } FIXME("%p: unhandled interface %s\n", This, debugstr_guid(riid) ); @@ -72,10 +93,10 @@ IRichEditOle_fnQueryInterface(IRichEditOle *me, REFIID riid, LPVOID *ppvObj) static ULONG WINAPI IRichEditOle_fnAddRef(IRichEditOle *me) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); ULONG ref = InterlockedIncrement( &This->ref ); - TRACE("%p ref = %lu\n", This, ref); + TRACE("%p ref = %u\n", This, ref); return ref; } @@ -83,15 +104,15 @@ IRichEditOle_fnAddRef(IRichEditOle *me) static ULONG WINAPI IRichEditOle_fnRelease(IRichEditOle *me) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); ULONG ref = InterlockedDecrement(&This->ref); - TRACE ("%p ref=%lu\n", This, ref); + TRACE ("%p ref=%u\n", This, ref); if (!ref) { TRACE ("Destroying %p\n", This); - HeapFree(GetProcessHeap(),0,This); + richedit_free(This); } return ref; } @@ -99,7 +120,7 @@ IRichEditOle_fnRelease(IRichEditOle *me) static HRESULT WINAPI IRichEditOle_fnActivateAs(IRichEditOle *me, REFCLSID rclsid, REFCLSID rclsidAs) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -107,7 +128,7 @@ IRichEditOle_fnActivateAs(IRichEditOle *me, REFCLSID rclsid, REFCLSID rclsidAs) static HRESULT WINAPI IRichEditOle_fnContextSensitiveHelp(IRichEditOle *me, BOOL fEnterMode) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -116,7 +137,7 @@ static HRESULT WINAPI IRichEditOle_fnConvertObject(IRichEditOle *me, LONG iob, REFCLSID rclsidNew, LPCSTR lpstrUserTypeNew) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -125,7 +146,7 @@ static HRESULT WINAPI IRichEditOle_fnGetClientSite(IRichEditOle *me, LPOLECLIENTSITE *lplpolesite) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -134,14 +155,22 @@ static HRESULT WINAPI IRichEditOle_fnGetClipboardData(IRichEditOle *me, CHARRANGE *lpchrg, DWORD reco, LPDATAOBJECT *lplpdataobj) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; - FIXME("stub %p\n",This); - return E_NOTIMPL; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); + CHARRANGE tmpchrg; + + TRACE("(%p,%p,%d)\n",This, lpchrg, reco); + if(!lplpdataobj) + return E_INVALIDARG; + if(!lpchrg) { + ME_GetSelection(This->editor, (int*)&tmpchrg.cpMin, (int*)&tmpchrg.cpMax); + lpchrg = &tmpchrg; + } + return ME_GetDataObject(This->editor, lpchrg, lplpdataobj); } static LONG WINAPI IRichEditOle_fnGetLinkCount(IRichEditOle *me) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -150,7 +179,7 @@ static HRESULT WINAPI IRichEditOle_fnGetObject(IRichEditOle *me, LONG iob, REOBJECT *lpreobject, DWORD dwFlags) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -158,7 +187,7 @@ IRichEditOle_fnGetObject(IRichEditOle *me, LONG iob, static LONG WINAPI IRichEditOle_fnGetObjectCount(IRichEditOle *me) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -166,7 +195,7 @@ IRichEditOle_fnGetObjectCount(IRichEditOle *me) static HRESULT WINAPI IRichEditOle_fnHandsOffStorage(IRichEditOle *me, LONG iob) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -175,7 +204,7 @@ static HRESULT WINAPI IRichEditOle_fnImportDataObject(IRichEditOle *me, LPDATAOBJECT lpdataobj, CLIPFORMAT cf, HGLOBAL hMetaPict) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -183,7 +212,7 @@ IRichEditOle_fnImportDataObject(IRichEditOle *me, LPDATAOBJECT lpdataobj, static HRESULT WINAPI IRichEditOle_fnInPlaceDeactivate(IRichEditOle *me) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -191,7 +220,7 @@ IRichEditOle_fnInPlaceDeactivate(IRichEditOle *me) static HRESULT WINAPI IRichEditOle_fnInsertObject(IRichEditOle *me, REOBJECT *lpreobject) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -199,7 +228,7 @@ IRichEditOle_fnInsertObject(IRichEditOle *me, REOBJECT *lpreobject) static HRESULT WINAPI IRichEditOle_fnSaveCompleted(IRichEditOle *me, LONG iob, LPSTORAGE lpstg) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -207,7 +236,7 @@ static HRESULT WINAPI IRichEditOle_fnSaveCompleted(IRichEditOle *me, LONG iob, static HRESULT WINAPI IRichEditOle_fnSetDvaspect(IRichEditOle *me, LONG iob, DWORD dvaspect) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -215,7 +244,7 @@ IRichEditOle_fnSetDvaspect(IRichEditOle *me, LONG iob, DWORD dvaspect) static HRESULT WINAPI IRichEditOle_fnSetHostNames(IRichEditOle *me, LPCSTR lpstrContainerApp, LPCSTR lpstrContainerObj) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p %s %s\n",This, lpstrContainerApp, lpstrContainerObj); return E_NOTIMPL; } @@ -223,7 +252,7 @@ static HRESULT WINAPI IRichEditOle_fnSetHostNames(IRichEditOle *me, static HRESULT WINAPI IRichEditOle_fnSetLinkAvailable(IRichEditOle *me, LONG iob, BOOL fAvailable) { - IRichEditOleImpl *This = (IRichEditOleImpl *)me; + IRichEditOleImpl *This = impl_from_IRichEditOle(me); FIXME("stub %p\n",This); return E_NOTIMPL; } @@ -250,16 +279,264 @@ static const IRichEditOleVtbl revt = { IRichEditOle_fnImportDataObject }; -LRESULT CreateIRichEditOle(LPVOID *ppObj) +static HRESULT WINAPI +ITextDocument_fnQueryInterface(ITextDocument* me, REFIID riid, + void** ppvObject) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + return IRichEditOle_fnQueryInterface((IRichEditOle*)&This->lpRichEditOleVtbl, + riid, ppvObject); +} + +static ULONG WINAPI +ITextDocument_fnAddRef(ITextDocument* me) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + return IRichEditOle_fnAddRef((IRichEditOle*)&This->lpRichEditOleVtbl); +} + +static ULONG WINAPI +ITextDocument_fnRelease(ITextDocument* me) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + return IRichEditOle_fnRelease((IRichEditOle*)&This->lpRichEditOleVtbl); +} + +static HRESULT WINAPI +ITextDocument_fnGetTypeInfoCount(ITextDocument* me, + UINT* pctinfo) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnGetTypeInfo(ITextDocument* me, UINT iTInfo, LCID lcid, + ITypeInfo** ppTInfo) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnGetIDsOfNames(ITextDocument* me, REFIID riid, + LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnInvoke(ITextDocument* me, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, + VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnGetName(ITextDocument* me, BSTR* pName) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnGetSelection(ITextDocument* me, ITextSelection** ppSel) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnGetStoryCount(ITextDocument* me, long* pCount) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnGetStoryRanges(ITextDocument* me, + ITextStoryRanges** ppStories) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnGetSaved(ITextDocument* me, long* pValue) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnSetSaved(ITextDocument* me, long Value) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnGetDefaultTabStop(ITextDocument* me, float* pValue) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnSetDefaultTabStop(ITextDocument* me, float Value) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnNew(ITextDocument* me) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnOpen(ITextDocument* me, VARIANT* pVar, long Flags, + long CodePage) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnSave(ITextDocument* me, VARIANT* pVar, long Flags, + long CodePage) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnFreeze(ITextDocument* me, long* pCount) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnUnfreeze(ITextDocument* me, long* pCount) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnBeginEditCollection(ITextDocument* me) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnEndEditCollection(ITextDocument* me) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnUndo(ITextDocument* me, long Count, long* prop) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnRedo(ITextDocument* me, long Count, long* prop) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnRange(ITextDocument* me, long cp1, long cp2, + ITextRange** ppRange) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static HRESULT WINAPI +ITextDocument_fnRangeFromPoint(ITextDocument* me, long x, long y, + ITextRange** ppRange) +{ + IRichEditOleImpl *This = impl_from_ITextDocument(me); + FIXME("stub %p\n",This); + return E_NOTIMPL; +} + +static const ITextDocumentVtbl tdvt = { + ITextDocument_fnQueryInterface, + ITextDocument_fnAddRef, + ITextDocument_fnRelease, + ITextDocument_fnGetTypeInfoCount, + ITextDocument_fnGetTypeInfo, + ITextDocument_fnGetIDsOfNames, + ITextDocument_fnInvoke, + ITextDocument_fnGetName, + ITextDocument_fnGetSelection, + ITextDocument_fnGetStoryCount, + ITextDocument_fnGetStoryRanges, + ITextDocument_fnGetSaved, + ITextDocument_fnSetSaved, + ITextDocument_fnGetDefaultTabStop, + ITextDocument_fnSetDefaultTabStop, + ITextDocument_fnNew, + ITextDocument_fnOpen, + ITextDocument_fnSave, + ITextDocument_fnFreeze, + ITextDocument_fnUnfreeze, + ITextDocument_fnBeginEditCollection, + ITextDocument_fnEndEditCollection, + ITextDocument_fnUndo, + ITextDocument_fnRedo, + ITextDocument_fnRange, + ITextDocument_fnRangeFromPoint +}; + +LRESULT CreateIRichEditOle(ME_TextEditor *editor, LPVOID *ppObj) { IRichEditOleImpl *reo; - reo = HeapAlloc(GetProcessHeap(), 0, sizeof(IRichEditOleImpl)); + reo = richedit_alloc(sizeof(IRichEditOleImpl)); if (!reo) return 0; - reo->lpVtbl = &revt; + reo->lpRichEditOleVtbl = &revt; + reo->lpTextDocumentVtbl = &tdvt; reo->ref = 1; + reo->editor = editor; TRACE("Created %p\n",reo); *ppObj = (LPVOID) reo; diff --git a/reactos/dll/win32/riched20/row.c b/reactos/dll/win32/riched20/row.c index f3e3cc1b5f3..3abff5f7a51 100644 --- a/reactos/dll/win32/riched20/row.c +++ b/reactos/dll/win32/riched20/row.c @@ -18,7 +18,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ @@ -28,8 +28,8 @@ ME_DisplayItem *ME_FindRowStart(ME_Context *c, ME_DisplayItem *item, int nRelPos) { ME_DisplayItem *para = ME_GetParagraph(item); ME_MustBeWrapped(c, para); - if(nRelPos>=0) { /* if this or preceding row */ - while(nRelPos<=0) { + if(nRelPos<=0) { /* if this or preceding row */ + do { ME_DisplayItem *item2 = ME_FindItemBack(item, diStartRowOrParagraph); if (item2->type == diParagraph) { @@ -50,8 +50,7 @@ ME_DisplayItem *ME_FindRowStart(ME_Context *c, ME_DisplayItem *item, } assert(0 == "bug in FindItemBack(item, diStartRowOrParagraph)"); item = item2; - } - return item; + } while(1); } while(nRelPos>0) { /* if one of the next rows */ ME_DisplayItem *item2 = ME_FindItemFwd(item, diStartRowOrParagraph); diff --git a/reactos/dll/win32/riched20/rtf.h b/reactos/dll/win32/riched20/rtf.h index 611ce9aa9c1..be36a93e0e1 100644 --- a/reactos/dll/win32/riched20/rtf.h +++ b/reactos/dll/win32/riched20/rtf.h @@ -1147,4 +1147,7 @@ int BeginFile (RTF_Info *); int RTFCharSetToCodePage(RTF_Info *info, int charset); +void LookupInit (void); +void LookupCleanup (void); + #endif diff --git a/reactos/dll/win32/riched20/run.c b/reactos/dll/win32/riched20/run.c index 568472c62f2..29fc309ce21 100644 --- a/reactos/dll/win32/riched20/run.c +++ b/reactos/dll/win32/riched20/run.c @@ -4,6 +4,7 @@ * Character/pixel conversions. * * Copyright 2004 by Krzysztof Foltman + * Copyright 2006 by Phil Krylov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -17,7 +18,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "editor.h" @@ -26,6 +27,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(richedit); WINE_DECLARE_DEBUG_CHANNEL(richedit_check); WINE_DECLARE_DEBUG_CHANNEL(richedit_lists); +/****************************************************************************** + * ME_CanJoinRuns + * + * Returns 1 if two runs can be safely merged into one, 0 otherwise. + */ int ME_CanJoinRuns(ME_Run *run1, ME_Run *run2) { if ((run1->nFlags | run2->nFlags) & MERF_NOJOIN) @@ -44,8 +50,18 @@ void ME_SkipAndPropagateCharOffset(ME_DisplayItem *p, int shift) ME_PropagateCharOffset(p, shift); } +/****************************************************************************** + * ME_PropagateCharOffsets + * + * Shifts (increases or decreases) character offset (relative to beginning of + * the document) of the part of the text starting from given place. + */ void ME_PropagateCharOffset(ME_DisplayItem *p, int shift) { + /* Runs in one paragraph contain character offset relative to their owning + * paragraph. If we start the shifting from the run, we need to shift + * all the relative offsets until the end of the paragraph + */ if (p->type == diRun) /* propagate in all runs in this para */ { TRACE("PropagateCharOffset(%s, %d)\n", debugstr_w(p->member.run.strText->szData), shift); @@ -55,6 +71,10 @@ void ME_PropagateCharOffset(ME_DisplayItem *p, int shift) p = ME_FindItemFwd(p, diRunOrParagraphOrEnd); } while(p->type == diRun); } + /* Runs in next paragraphs don't need their offsets updated, because they, + * again, those offsets are relative to their respective paragraphs. + * Instead of that, we're updating paragraphs' character offsets. + */ if (p->type == diParagraph) /* propagate in all next paras */ { do { @@ -63,6 +83,9 @@ void ME_PropagateCharOffset(ME_DisplayItem *p, int shift) p = p->member.para.next_para; } while(p->type == diParagraph); } + /* diTextEnd also has character offset in it, which makes finding text length + * easier. But it needs to be up to date first. + */ if (p->type == diTextEnd) { p->member.para.nCharOfs += shift; @@ -70,6 +93,11 @@ void ME_PropagateCharOffset(ME_DisplayItem *p, int shift) } } +/****************************************************************************** + * ME_CheckCharOffsets + * + * Checks if editor lists' validity and optionally dumps the document structure + */ void ME_CheckCharOffsets(ME_TextEditor *editor) { ME_DisplayItem *p = editor->pBuffer->pFirst; @@ -93,7 +121,7 @@ void ME_CheckCharOffsets(ME_TextEditor *editor) ofs = 0; break; case diRun: - TRACE_(richedit_check)("run, real ofs = %d (+ofsp = %d), counted = %d, len = %d, txt = \"%s\", flags=%08x, fx&mask = %08lx\n", + TRACE_(richedit_check)("run, real ofs = %d (+ofsp = %d), counted = %d, len = %d, txt = \"%s\", flags=%08x, fx&mask = %08x\n", p->member.run.nCharOfs, p->member.run.nCharOfs+ofsp, ofsp+ofs, p->member.run.strText->nLen, debugstr_w(p->member.run.strText->szData), p->member.run.nFlags, @@ -110,6 +138,13 @@ void ME_CheckCharOffsets(ME_TextEditor *editor) } while(1); } +/****************************************************************************** + * ME_CharOfsFromRunOfs + * + * Converts a character position relative to the start of the run, to a + * character position relative to the start of the document. + * Kind of a "local to global" offset conversion. + */ int ME_CharOfsFromRunOfs(ME_TextEditor *editor, ME_DisplayItem *pRun, int nOfs) { ME_DisplayItem *pPara; @@ -124,11 +159,25 @@ int ME_CharOfsFromRunOfs(ME_TextEditor *editor, ME_DisplayItem *pRun, int nOfs) + ME_VPosToPos(pRun->member.run.strText, nOfs); } +/****************************************************************************** + * ME_CursorFromCharOfs + * + * Converts a character offset (relative to the start of the document) to + * a cursor structure (which contains a run and a position relative to that + * run). + */ void ME_CursorFromCharOfs(ME_TextEditor *editor, int nCharOfs, ME_Cursor *pCursor) { ME_RunOfsFromCharOfs(editor, nCharOfs, &pCursor->pRun, &pCursor->nOffset); } +/****************************************************************************** + * ME_RunOfsFromCharOfs + * + * Find a run and relative character offset given an absolute character offset + * (absolute offset being an offset relative to the start of the document). + * Kind of a "global to local" offset conversion. + */ void ME_RunOfsFromCharOfs(ME_TextEditor *editor, int nCharOfs, ME_DisplayItem **ppRun, int *pOfs) { ME_DisplayItem *pPara; @@ -175,6 +224,11 @@ void ME_RunOfsFromCharOfs(ME_TextEditor *editor, int nCharOfs, ME_DisplayItem ** assert((*ppRun)->member.run.nFlags & MERF_ENDPARA); } +/****************************************************************************** + * ME_JoinRuns + * + * Merges two adjacent runs, the one given as a parameter and the next one. + */ void ME_JoinRuns(ME_TextEditor *editor, ME_DisplayItem *p) { ME_DisplayItem *pNext = p->next; @@ -183,8 +237,11 @@ void ME_JoinRuns(ME_TextEditor *editor, ME_DisplayItem *p) assert(p->member.run.nCharOfs != -1); ME_GetParagraph(p)->member.para.nFlags |= MEPF_REWRAP; - if (editor->bCaretAtEnd && editor->pCursors[0].pRun == pNext) + /* if we were at the end of screen line, and the next run is in the new + * line, then it's not the end of the line anymore */ + if (editor->bCaretAtEnd && editor->pCursors[0].pRun == pNext) editor->bCaretAtEnd = FALSE; + /* Update all cursors so that they don't contain the soon deleted run */ for (i=0; inCursors; i++) { if (editor->pCursors[i].pRun == pNext) { editor->pCursors[i].pRun = p; @@ -204,6 +261,12 @@ void ME_JoinRuns(ME_TextEditor *editor, ME_DisplayItem *p) } } +/****************************************************************************** + * ME_SplitRun + * + * Splits a run into two in a given place. It also updates the screen position + * and size (extent) of the newly generated runs. + */ ME_DisplayItem *ME_SplitRun(ME_Context *c, ME_DisplayItem *item, int nVChar) { ME_TextEditor *editor = c->editor; @@ -221,7 +284,7 @@ ME_DisplayItem *ME_SplitRun(ME_Context *c, ME_DisplayItem *item, int nVChar) run = &item->member.run; - TRACE("Before split: %s(%ld, %ld)\n", debugstr_w(run->strText->szData), + TRACE("Before split: %s(%d, %d)\n", debugstr_w(run->strText->szData), run->pt.x, run->pt.y); item2 = ME_SplitRunSimple(editor, item, nVChar); @@ -239,7 +302,7 @@ ME_DisplayItem *ME_SplitRun(ME_Context *c, ME_DisplayItem *item, int nVChar) TRACE("Before check after split\n"); ME_CheckCharOffsets(editor); TRACE("After check after split\n"); - TRACE("After split: %s(%ld, %ld), %s(%ld, %ld)\n", + TRACE("After split: %s(%d, %d), %s(%d, %d)\n", debugstr_w(run->strText->szData), run->pt.x, run->pt.y, debugstr_w(run2->strText->szData), run2->pt.x, run2->pt.y); } @@ -247,7 +310,12 @@ ME_DisplayItem *ME_SplitRun(ME_Context *c, ME_DisplayItem *item, int nVChar) return item2; } -/* split a run starting from voffset */ +/****************************************************************************** + * ME_SplitRunSimple + * + * Does the most basic job of splitting a run into two - it does not + * update the positions and extents. + */ ME_DisplayItem *ME_SplitRunSimple(ME_TextEditor *editor, ME_DisplayItem *item, int nVChar) { ME_Run *run = &item->member.run; @@ -256,7 +324,7 @@ ME_DisplayItem *ME_SplitRunSimple(ME_TextEditor *editor, ME_DisplayItem *item, i int i; assert(nVChar > 0 && nVChar < ME_StrVLen(run->strText)); assert(item->type == diRun); - assert(!(item->member.run.nFlags & (MERF_GRAPHICS | MERF_TAB))); + assert(!(item->member.run.nFlags & MERF_NONTEXT)); assert(item->member.run.nCharOfs != -1); item2 = ME_MakeRun(run->style, @@ -282,6 +350,11 @@ ME_DisplayItem *ME_SplitRunSimple(ME_TextEditor *editor, ME_DisplayItem *item, i return item2; } +/****************************************************************************** + * ME_MakeRun + * + * A helper function to create run structures quickly. + */ ME_DisplayItem *ME_MakeRun(ME_Style *s, ME_String *strData, int nFlags) { ME_DisplayItem *item = ME_MakeDI(diRun); @@ -293,37 +366,80 @@ ME_DisplayItem *ME_MakeRun(ME_Style *s, ME_String *strData, int nFlags) return item; } +/****************************************************************************** + * ME_InsertRun + * + * Inserts a run at a given character position (offset). + */ ME_DisplayItem *ME_InsertRun(ME_TextEditor *editor, int nCharOfs, ME_DisplayItem *pItem) { ME_Cursor tmp; ME_DisplayItem *pDI; - ME_UndoItem *pUI; assert(pItem->type == diRun || pItem->type == diUndoInsertRun); - pUI = ME_AddUndoItem(editor, diUndoDeleteRun, NULL); - if (pUI) { - pUI->nStart = nCharOfs; - pUI->nLen = pItem->member.run.strText->nLen; - } ME_CursorFromCharOfs(editor, nCharOfs, &tmp); - if (tmp.nOffset) { - tmp.pRun = ME_SplitRunSimple(editor, tmp.pRun, tmp.nOffset); - tmp.nOffset = 0; - } - pDI = ME_MakeRun(pItem->member.run.style, ME_StrDup(pItem->member.run.strText), pItem->member.run.nFlags); - pDI->member.run.nCharOfs = tmp.pRun->member.run.nCharOfs; - ME_InsertBefore(tmp.pRun, pDI); - TRACE("Shift length:%d\n", pDI->member.run.strText->nLen); - ME_PropagateCharOffset(tmp.pRun, pDI->member.run.strText->nLen); - ME_GetParagraph(tmp.pRun)->member.para.nFlags |= MEPF_REWRAP; - + pDI = ME_InsertRunAtCursor(editor, &tmp, pItem->member.run.style, + pItem->member.run.strText->szData, + pItem->member.run.strText->nLen, + pItem->member.run.nFlags); + return pDI; } +/****************************************************************************** + * ME_InsertRunAtCursor + * + * Inserts a new run with given style, flags and content at a given position, + * which is passed as a cursor structure (which consists of a run and + * a run-relative character offset). + */ +ME_DisplayItem * +ME_InsertRunAtCursor(ME_TextEditor *editor, ME_Cursor *cursor, ME_Style *style, + const WCHAR *str, int len, int flags) +{ + ME_DisplayItem *pDI; + ME_UndoItem *pUI; + + if (cursor->nOffset) { + /* We're inserting at the middle of the existing run, which means that + * that run must be split. It isn't always necessary, but */ + cursor->pRun = ME_SplitRunSimple(editor, cursor->pRun, cursor->nOffset); + cursor->nOffset = 0; + } + + pUI = ME_AddUndoItem(editor, diUndoDeleteRun, NULL); + if (pUI) { + pUI->nStart = (ME_GetParagraph(cursor->pRun)->member.para.nCharOfs + + cursor->pRun->member.run.nCharOfs); + pUI->nLen = len; + } + + pDI = ME_MakeRun(style, ME_MakeStringN(str, len), flags); + pDI->member.run.nCharOfs = cursor->pRun->member.run.nCharOfs; + ME_InsertBefore(cursor->pRun, pDI); + TRACE("Shift length:%d\n", len); + ME_PropagateCharOffset(cursor->pRun, len); + ME_GetParagraph(cursor->pRun)->member.para.nFlags |= MEPF_REWRAP; + return pDI; +} + +/****************************************************************************** + * ME_UpdateRunFlags + * + * Determine some of run attributes given its content (style, text content). + * Some flags cannot be determined by this function (MERF_GRAPHICS, + * MERF_ENDPARA) + */ void ME_UpdateRunFlags(ME_TextEditor *editor, ME_Run *run) { assert(run->nCharOfs != -1); + + if (RUN_IS_HIDDEN(run)) + run->nFlags |= MERF_HIDDEN; + else + run->nFlags &= ~MERF_HIDDEN; + if (ME_IsSplitable(run->strText)) run->nFlags |= MERF_SPLITTABLE; else @@ -351,6 +467,12 @@ void ME_UpdateRunFlags(ME_TextEditor *editor, ME_Run *run) run->nFlags &= ~(MERF_WHITESPACE | MERF_STARTWHITE | MERF_ENDWHITE); } +/****************************************************************************** + * ME_GetGraphicsSize + * + * Sets run extent for graphics runs. This functionality is just a placeholder + * for future OLE object support, and will be removed. + */ void ME_GetGraphicsSize(ME_TextEditor *editor, ME_Run *run, SIZE *pSize) { assert(run->nFlags & MERF_GRAPHICS); @@ -358,7 +480,14 @@ void ME_GetGraphicsSize(ME_TextEditor *editor, ME_Run *run, SIZE *pSize) pSize->cy = 64; } -int ME_CharFromPoint(ME_TextEditor *editor, int cx, ME_Paragraph *para, ME_Run *run) +/****************************************************************************** + * ME_CharFromPoint + * + * Returns a character position inside the run given a run-relative + * pixel horizontal position. This version rounds left (ie. if the second + * character is at pixel position 8, then for cx=0..7 it returns 0). + */ +int ME_CharFromPoint(ME_TextEditor *editor, int cx, ME_Run *run) { int fit = 0; HGDIOBJ hOldFont; @@ -367,9 +496,9 @@ int ME_CharFromPoint(ME_TextEditor *editor, int cx, ME_Paragraph *para, ME_Run * if (!run->strText->nLen) return 0; - if (run->nFlags & MERF_TAB) + if (run->nFlags & (MERF_TAB | MERF_CELL)) { - if (cx < run->nWidth/2) + if (cx < run->nWidth/2) return 0; return 1; } @@ -383,15 +512,41 @@ int ME_CharFromPoint(ME_TextEditor *editor, int cx, ME_Paragraph *para, ME_Run * } hDC = GetDC(editor->hWnd); hOldFont = ME_SelectStyleFont(editor, hDC, run->style); - GetTextExtentExPointW(hDC, run->strText->szData, run->strText->nLen, - cx, &fit, NULL, &sz); + + if (editor->cPasswordMask) + { + ME_String *strMasked = ME_MakeStringR(editor->cPasswordMask,ME_StrVLen(run->strText)); + GetTextExtentExPointW(hDC, strMasked->szData, run->strText->nLen, + cx, &fit, NULL, &sz); + ME_DestroyString(strMasked); + } + else + { + GetTextExtentExPointW(hDC, run->strText->szData, run->strText->nLen, + cx, &fit, NULL, &sz); + } + ME_UnselectStyleFont(editor, hDC, run->style, hOldFont); ReleaseDC(editor->hWnd, hDC); return fit; } +/****************************************************************************** + * ME_CharFromPointCursor + * + * Returns a character position inside the run given a run-relative + * pixel horizontal position. This version rounds to the nearest character edge + * (ie. if the second character is at pixel position 8, then for cx=0..3 + * it returns 0, and for cx=4..7 it returns 1). + * + * It is used for mouse click handling, for better usability (and compatibility + * with the native control). + */ int ME_CharFromPointCursor(ME_TextEditor *editor, int cx, ME_Run *run) { + ME_String *strRunText; + /* This could point to either the run's real text, or it's masked form in a password control */ + int fit = 0, fit1 = 0; HGDIOBJ hOldFont; HDC hDC; @@ -399,7 +554,7 @@ int ME_CharFromPointCursor(ME_TextEditor *editor, int cx, ME_Run *run) if (!run->strText->nLen) return 0; - if (run->nFlags & MERF_TAB) + if (run->nFlags & (MERF_TAB | MERF_CELL)) { if (cx < run->nWidth/2) return 0; @@ -413,31 +568,48 @@ int ME_CharFromPointCursor(ME_TextEditor *editor, int cx, ME_Run *run) return 0; return 1; } + + if (editor->cPasswordMask) + strRunText = ME_MakeStringR(editor->cPasswordMask,ME_StrVLen(run->strText)); + else + strRunText = run->strText; hDC = GetDC(editor->hWnd); hOldFont = ME_SelectStyleFont(editor, hDC, run->style); - GetTextExtentExPointW(hDC, run->strText->szData, run->strText->nLen, + GetTextExtentExPointW(hDC, strRunText->szData, strRunText->nLen, cx, &fit, NULL, &sz); - if (fit != run->strText->nLen) + if (fit != strRunText->nLen) { int chars = 1; - GetTextExtentPoint32W(hDC, run->strText->szData, fit, &sz2); - fit1 = ME_StrRelPos(run->strText, fit, &chars); - GetTextExtentPoint32W(hDC, run->strText->szData, fit1, &sz3); + GetTextExtentPoint32W(hDC, strRunText->szData, fit, &sz2); + fit1 = ME_StrRelPos(strRunText, fit, &chars); + GetTextExtentPoint32W(hDC, strRunText->szData, fit1, &sz3); if (cx >= (sz2.cx+sz3.cx)/2) fit = fit1; } + + if (editor->cPasswordMask) + ME_DestroyString(strRunText); + ME_UnselectStyleFont(editor, hDC, run->style, hOldFont); ReleaseDC(editor->hWnd, hDC); return fit; } +/****************************************************************************** + * ME_PointFromChar + * + * Returns a run-relative pixel position given a run-relative character + * position (character offset) + */ int ME_PointFromChar(ME_TextEditor *editor, ME_Run *pRun, int nOffset) { SIZE size; HDC hDC = GetDC(editor->hWnd); HGDIOBJ hOldFont; + ME_String *strRunText; + /* This could point to either the run's real text, or it's masked form in a password control */ if (pRun->nFlags & MERF_GRAPHICS) { @@ -445,15 +617,27 @@ int ME_PointFromChar(ME_TextEditor *editor, ME_Run *pRun, int nOffset) ME_GetGraphicsSize(editor, pRun, &size); return 1; } + + if (editor->cPasswordMask) + strRunText = ME_MakeStringR(editor->cPasswordMask,ME_StrVLen(pRun->strText)); + else + strRunText = pRun->strText; + hOldFont = ME_SelectStyleFont(editor, hDC, pRun->style); - GetTextExtentPoint32W(hDC, pRun->strText->szData, nOffset, &size); + GetTextExtentPoint32W(hDC, strRunText->szData, nOffset, &size); ME_UnselectStyleFont(editor, hDC, pRun->style, hOldFont); ReleaseDC(editor->hWnd, hDC); + if (editor->cPasswordMask) + ME_DestroyString(strRunText); return size.cx; } -void ME_GetTextExtent(ME_Context *c, LPCWSTR szText, int nChars, ME_Style *s, - SIZE *size) +/****************************************************************************** + * ME_GetTextExtent + * + * Finds a width and a height of the text using a specified style + */ +static void ME_GetTextExtent(ME_Context *c, LPCWSTR szText, int nChars, ME_Style *s, SIZE *size) { HDC hDC = c->hDC; HGDIOBJ hOldFont; @@ -462,7 +646,14 @@ void ME_GetTextExtent(ME_Context *c, LPCWSTR szText, int nChars, ME_Style *s, ME_UnselectStyleFont(c->editor, hDC, s, hOldFont); } -SIZE ME_GetRunSizeCommon(ME_Context *c, ME_Paragraph *para, ME_Run *run, int nLen, int *pAscent, int *pDescent) +/****************************************************************************** + * ME_GetRunSizeCommon + * + * Finds width, height, ascent and descent of a run, up to given character + * (nLen). + */ +static SIZE ME_GetRunSizeCommon(ME_Context *c, ME_Paragraph *para, ME_Run *run, int nLen, + int *pAscent, int *pDescent) { SIZE size; int nMaxLen = ME_StrVLen(run->strText); @@ -471,10 +662,20 @@ SIZE ME_GetRunSizeCommon(ME_Context *c, ME_Paragraph *para, ME_Run *run, int nLe nLen = nMaxLen; /* FIXME the following call also ensures that TEXTMETRIC structure is filled - * this is wasteful for graphics and TAB runs, but that shouldn't matter + * this is wasteful for MERF_NONTEXT runs, but that shouldn't matter * in practice */ - ME_GetTextExtent(c, run->strText->szData, nLen, run->style, &size); + + if (c->editor->cPasswordMask) + { + ME_String *szMasked = ME_MakeStringR(c->editor->cPasswordMask,nLen); + ME_GetTextExtent(c, szMasked->szData, nLen,run->style, &size); + ME_DestroyString(szMasked); + } + else + { + ME_GetTextExtent(c, run->strText->szData, nLen, run->style, &size); + } *pAscent = run->style->tm.tmAscent; *pDescent = run->style->tm.tmDescent; size.cy = *pAscent + *pDescent; @@ -511,31 +712,67 @@ SIZE ME_GetRunSizeCommon(ME_Context *c, ME_Paragraph *para, ME_Run *run, int nLe /* descent is unchanged */ return size; } + if (run->nFlags & MERF_CELL) + { + int lpsx = GetDeviceCaps(c->hDC, LOGPIXELSX); + size.cx = run->pCell->nRightBoundary * lpsx / 1440 - run->pt.x; + return size; + } return size; } +/****************************************************************************** + * ME_GetRunSize + * + * Finds width and height (but not ascent and descent) of a part of the run + * up to given character. + */ SIZE ME_GetRunSize(ME_Context *c, ME_Paragraph *para, ME_Run *run, int nLen) { int asc, desc; return ME_GetRunSizeCommon(c, para, run, nLen, &asc, &desc); } +/****************************************************************************** + * ME_CalcRunExtent + * + * Updates the size of the run (fills width, ascent and descent). The height + * is calculated based on whole row's ascent and descent anyway, so no need + * to use it here. + */ void ME_CalcRunExtent(ME_Context *c, ME_Paragraph *para, ME_Run *run) { - int nEnd = ME_StrVLen(run->strText); - SIZE size = ME_GetRunSizeCommon(c, para, run, nEnd, &run->nAscent, &run->nDescent); - run->nWidth = size.cx; - if (!size.cx) - WARN("size.cx == 0\n"); + if (run->nFlags & MERF_HIDDEN) + run->nWidth = 0; + else + { + int nEnd = ME_StrVLen(run->strText); + SIZE size = ME_GetRunSizeCommon(c, para, run, nEnd, &run->nAscent, &run->nDescent); + run->nWidth = size.cx; + if (!size.cx) + WARN("size.cx == 0\n"); + } } +/****************************************************************************** + * ME_MustBeWrapped + * + * This should ensure that the given paragraph is wrapped so that its screen + * row structure may be used. But it doesn't, yet. + */ void ME_MustBeWrapped(ME_Context *c, ME_DisplayItem *para) { assert(para->type == diParagraph); /* FIXME */ } +/****************************************************************************** + * ME_SetSelectionCharFormat + * + * Applies a style change, either to a current selection, or to insert cursor + * (ie. the style next typed characters will use). + */ void ME_SetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) { int nFrom, nTo; @@ -553,6 +790,11 @@ void ME_SetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) ME_SetCharFormat(editor, nFrom, nTo-nFrom, pFmt); } +/****************************************************************************** + * ME_SetCharFormat + * + * Applies a style change to the specified part of the text + */ void ME_SetCharFormat(ME_TextEditor *editor, int nOfs, int nChars, CHARFORMAT2W *pFmt) { ME_Cursor tmp, tmp2; @@ -597,6 +839,11 @@ void ME_SetCharFormat(ME_TextEditor *editor, int nOfs, int nChars, CHARFORMAT2W } } +/****************************************************************************** + * ME_SetDefaultCharFormat + * + * Applies a style change to the default character style. + */ void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod) { ME_Style *style; @@ -618,11 +865,17 @@ void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod) /* pcf = editor->pBuffer->pDefaultStyle->fmt; */ } -void ME_GetRunCharFormat(ME_TextEditor *editor, ME_DisplayItem *run, CHARFORMAT2W *pFmt) +static void ME_GetRunCharFormat(ME_TextEditor *editor, ME_DisplayItem *run, CHARFORMAT2W *pFmt) { ME_CopyCharFormat(pFmt, &run->member.run.style->fmt); } +/****************************************************************************** + * ME_GetDefaultCharFormat + * + * Retrieves the current default character style (the one applied where no + * other style was applied) . + */ void ME_GetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) { int nFrom, nTo; @@ -630,6 +883,12 @@ void ME_GetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) ME_CopyCharFormat(pFmt, &editor->pBuffer->pDefaultStyle->fmt); } +/****************************************************************************** + * ME_GetSelectionCharFormat + * + * If selection exists, it returns all style elements that are set consistently + * in the whole selection. If not, it just returns the current style. + */ void ME_GetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) { int nFrom, nTo; @@ -642,6 +901,12 @@ void ME_GetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) ME_GetCharFormat(editor, nFrom, nTo, pFmt); } +/****************************************************************************** + * ME_GetCharFormat + * + * Returns the style consisting of those attributes which are consistently set + * in the whole character range. + */ void ME_GetCharFormat(ME_TextEditor *editor, int nFrom, int nTo, CHARFORMAT2W *pFmt) { ME_DisplayItem *run, *run_end; diff --git a/reactos/dll/win32/riched20/string.c b/reactos/dll/win32/riched20/string.c index 6abd22a5ff8..4c4491158d5 100644 --- a/reactos/dll/win32/riched20/string.c +++ b/reactos/dll/win32/riched20/string.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "editor.h" @@ -40,13 +40,39 @@ ME_String *ME_MakeString(LPCWSTR szText) ME_String *ME_MakeStringN(LPCWSTR szText, int nMaxChars) { ME_String *s = ALLOC_OBJ(ME_String); - int i; - for (i=0; inLen = i; + + s->nLen = nMaxChars; s->nBuffer = ME_GetOptimalBuffer(s->nLen+1); s->szData = ALLOC_N_OBJ(WCHAR, s->nBuffer); - lstrcpynW(s->szData, szText, s->nLen+1); + /* Native allows NUL chars */ + memmove(s->szData, szText, s->nLen * sizeof(WCHAR)); + s->szData[s->nLen] = 0; + return s; +} + +ME_String *ME_MakeStringR(WCHAR cRepeat, int nMaxChars) +{ /* Make a string by repeating a char nMaxChars times */ + int i; + ME_String *s = ALLOC_OBJ(ME_String); + + s->nLen = nMaxChars; + s->nBuffer = ME_GetOptimalBuffer(s->nLen+1); + s->szData = ALLOC_N_OBJ(WCHAR, s->nBuffer); + + for (i = 0;iszData[i] = cRepeat; + s->szData[s->nLen] = 0; + return s; +} + +ME_String *ME_MakeStringB(int nMaxChars) +{ /* Create a buffer (uninitialized string) of size nMaxChars */ + ME_String *s = ALLOC_OBJ(ME_String); + + s->nLen = nMaxChars; + s->nBuffer = ME_GetOptimalBuffer(s->nLen+1); + s->szData = ALLOC_N_OBJ(WCHAR, s->nBuffer); + s->szData[s->nLen] = 0; return s; } @@ -155,29 +181,22 @@ int ME_StrVLen(ME_String *s) { return s->nLen; } -/* FIXME we use widechars, not multibytes, inside, no need for complex logic anymore */ int ME_StrRelPos(ME_String *s, int nVChar, int *pRelChars) { + int nRelChars = *pRelChars; + TRACE("%s,%d,&%d\n", debugstr_w(s->szData), nVChar, *pRelChars); assert(*pRelChars); - if (!*pRelChars) return nVChar; - - if (*pRelChars>0) - { - while(nVCharnLen && *pRelChars>0) - { - nVChar++; - (*pRelChars)--; - } + if (!nRelChars) return nVChar; - } - - while(nVChar>0 && *pRelChars<0) - { - nVChar--; - (*pRelChars)++; - } + + if (nRelChars>0) + nRelChars = min(*pRelChars, s->nLen - nVChar); + else + nRelChars = max(*pRelChars, -nVChar); + nVChar += nRelChars; + *pRelChars -= nRelChars; return nVChar; } @@ -278,9 +297,57 @@ int ME_ReverseFindWhitespaceV(ME_String *s, int nVChar) { return i; } -LPWSTR ME_ToUnicode(HWND hWnd, LPVOID psz) + +static int +ME_WordBreakProc(LPWSTR s, INT start, INT len, INT code) { - if (IsWindowUnicode(hWnd)) + /* FIXME: Native also knows about punctuation */ + TRACE("s==%s, start==%d, len==%d, code==%d\n", + debugstr_wn(s, len), start, len, code); + switch (code) + { + case WB_ISDELIMITER: + return ME_IsWSpace(s[start]); + case WB_LEFT: + case WB_MOVEWORDLEFT: + while (start && ME_IsWSpace(s[start - 1])) + start--; + while (start && !ME_IsWSpace(s[start - 1])) + start--; + return start; + case WB_RIGHT: + case WB_MOVEWORDRIGHT: + if (start && ME_IsWSpace(s[start - 1])) + { + while (start < len && ME_IsWSpace(s[start])) + start++; + } + else + { + while (start < len && !ME_IsWSpace(s[start])) + start++; + while (start < len && ME_IsWSpace(s[start])) + start++; + } + return start; + } + return 0; +} + + +int +ME_CallWordBreakProc(ME_TextEditor *editor, ME_String *str, INT start, INT code) +{ + /* FIXME: ANSIfy the string when bEmulateVersion10 is TRUE */ + if (!editor->pfnWordBreak) + return ME_WordBreakProc(str->szData, start, str->nLen, code); + else + return editor->pfnWordBreak(str->szData, start, str->nLen, code); +} + +LPWSTR ME_ToUnicode(BOOL unicode, LPVOID psz) +{ + if (unicode) return (LPWSTR)psz; else { WCHAR *tmp; @@ -291,27 +358,8 @@ LPWSTR ME_ToUnicode(HWND hWnd, LPVOID psz) } } -void ME_EndToUnicode(HWND hWnd, LPVOID psz) +void ME_EndToUnicode(BOOL unicode, LPVOID psz) { - if (IsWindowUnicode(hWnd)) - FREE_OBJ(psz); -} - -LPSTR ME_ToAnsi(HWND hWnd, LPVOID psz) -{ - if (!IsWindowUnicode(hWnd)) - return (LPSTR)psz; - else { - char *tmp; - int nChars = WideCharToMultiByte(CP_ACP, 0, (WCHAR *)psz, -1, NULL, 0, NULL, NULL); - if((tmp = ALLOC_N_OBJ(char, nChars)) != NULL) - WideCharToMultiByte(CP_ACP, 0, (WCHAR *)psz, -1, tmp, nChars, NULL, NULL); - return tmp; - } -} - -void ME_EndToAnsi(HWND hWnd, LPVOID psz) -{ - if (!IsWindowUnicode(hWnd)) + if (!unicode) FREE_OBJ(psz); } diff --git a/reactos/dll/win32/riched20/style.c b/reactos/dll/win32/riched20/style.c index 11fd56b02c8..1dfdef1d64a 100644 --- a/reactos/dll/win32/riched20/style.c +++ b/reactos/dll/win32/riched20/style.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "editor.h" @@ -237,6 +237,7 @@ void ME_DumpStyleToBuf(CHARFORMAT2W *pFmt, char buf[2048]) ME_DumpStyleEffect(&p, "Font italic:", pFmt, CFM_ITALIC); ME_DumpStyleEffect(&p, "Font underline:", pFmt, CFM_UNDERLINE); ME_DumpStyleEffect(&p, "Font strikeout:", pFmt, CFM_STRIKEOUT); + ME_DumpStyleEffect(&p, "Hidden text:", pFmt, CFM_HIDDEN); p += sprintf(p, "Text color: "); if (pFmt->dwMask & CFM_COLOR) { @@ -274,7 +275,7 @@ ME_LogFontFromStyle(HDC hDC, LOGFONTW *lf, ME_Style *s, int nZoomNumerator, int lf->lfWeight = s->fmt.wWeight; if (s->fmt.dwEffects & s->fmt.dwMask & CFM_ITALIC) lf->lfItalic = 1; - if (s->fmt.dwEffects & s->fmt.dwMask & CFM_UNDERLINE) + if (s->fmt.dwEffects & s->fmt.dwMask & (CFM_UNDERLINE | CFE_LINK)) lf->lfUnderline = 1; if (s->fmt.dwEffects & s->fmt.dwMask & CFM_STRIKEOUT) lf->lfStrikeOut = 1; @@ -285,8 +286,29 @@ ME_LogFontFromStyle(HDC hDC, LOGFONTW *lf, ME_Style *s, int nZoomNumerator, int lf->lfCharSet = s->fmt.bCharSet; } +void ME_CharFormatFromLogFont(HDC hDC, LOGFONTW *lf, CHARFORMAT2W *fmt) +{ + int rx, ry; + + ME_InitCharFormat2W(fmt); + rx = GetDeviceCaps(hDC, LOGPIXELSX); + ry = GetDeviceCaps(hDC, LOGPIXELSY); + lstrcpyW(fmt->szFaceName, lf->lfFaceName); + fmt->dwEffects = 0; + fmt->dwMask = CFM_WEIGHT|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT|CFM_SIZE|CFM_FACE|CFM_CHARSET; + fmt->wWeight = lf->lfWeight; + fmt->yHeight = -lf->lfHeight*1440/ry; + if (lf->lfWeight>400) fmt->dwEffects |= CFM_BOLD; + if (lf->lfItalic) fmt->dwEffects |= CFM_ITALIC; + if (lf->lfUnderline) fmt->dwEffects |= CFM_UNDERLINE; + /* notice that if a logfont was created with underline due to CFM_LINK, this + would add an erronious CFM_UNDERLINE. This isn't currently ever a problem */ + if (lf->lfStrikeOut) fmt->dwEffects |= CFM_STRIKEOUT; + fmt->bPitchAndFamily = lf->lfPitchAndFamily; + fmt->bCharSet = lf->lfCharSet; +} -BOOL ME_IsFontEqual(LOGFONTW *p1, LOGFONTW *p2) +static BOOL ME_IsFontEqual(LOGFONTW *p1, LOGFONTW *p2) { if (memcmp(p1, p2, sizeof(LOGFONTW)-sizeof(p1->lfFaceName))) return FALSE; @@ -316,7 +338,7 @@ HFONT ME_SelectStyleFont(ME_TextEditor *editor, HDC hDC, ME_Style *s) if (item->nAge > nAge) nEmpty = i, nAge = item->nAge; } - if (ME_IsFontEqual(&item->lfSpecs, &lf)) + if (item->hFont && ME_IsFontEqual(&item->lfSpecs, &lf)) break; } if (i < HFONT_CACHE_SIZE) /* found */ @@ -371,7 +393,7 @@ void ME_UnselectStyleFont(ME_TextEditor *editor, HDC hDC, ME_Style *s, HFONT hOl assert(0 == "UnselectStyleFont without SelectStyleFont"); } -void ME_DestroyStyle(ME_Style *s) { +static void ME_DestroyStyle(ME_Style *s) { if (s->hFont) { DeleteObject(s->hFont); diff --git a/reactos/dll/win32/riched20/txtsrv.c b/reactos/dll/win32/riched20/txtsrv.c new file mode 100644 index 00000000000..069c916534e --- /dev/null +++ b/reactos/dll/win32/riched20/txtsrv.c @@ -0,0 +1,393 @@ +/* + * RichEdit - functions and interfaces around CreateTextServices + * + * Copyright 2005, 2006, Maarten Lankhorst + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "config.h" +#include "wine/port.h" + +#define NONAMELESSSTRUCT +#define NONAMELESSUNION +#define COBJMACROS + +#include "editor.h" +#include "ole2.h" +#include "richole.h" +#include "winreg.h" +#include "imm.h" +#include "textserv.h" +#include "wine/debug.h" +#include "editstr.h" + +#ifdef __i386__ /* thiscall functions are i386-specific */ + +#define THISCALL(func) __thiscall_ ## func +#define DEFINE_THISCALL_WRAPPER(func) \ + extern typeof(func) THISCALL(func); \ + __ASM_GLOBAL_FUNC(__thiscall_ ## func, \ + "popl %eax\n\t" \ + "pushl %ecx\n\t" \ + "pushl %eax\n\t" \ + "jmp " __ASM_NAME(#func) ) +#else /* __i386__ */ + +#define THISCALL(func) func +#define DEFINE_THISCALL_WRAPPER(func) /* nothing */ + +#endif /* __i386__ */ + +WINE_DEFAULT_DEBUG_CHANNEL(richedit); + +typedef struct ITextServicesImpl { + const ITextServicesVtbl *lpVtbl; + ITextHost *pMyHost; + LONG ref; + CRITICAL_SECTION csTxtSrv; +} ITextServicesImpl; + +static const ITextServicesVtbl textservices_Vtbl; + +/****************************************************************** + * CreateTextServices (RICHED20.4) + */ +HRESULT WINAPI CreateTextServices(IUnknown * pUnkOuter, + ITextHost * pITextHost, + IUnknown **ppUnk) +{ + ITextServicesImpl *ITextImpl; + TRACE("%p %p --> %p\n", pUnkOuter, pITextHost, ppUnk); + if (pITextHost == NULL) + return E_POINTER; + + ITextImpl = CoTaskMemAlloc(sizeof(*ITextImpl)); + if (ITextImpl == NULL) + return E_OUTOFMEMORY; + InitializeCriticalSection(&ITextImpl->csTxtSrv); + ITextImpl->csTxtSrv.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": ITextServicesImpl.csTxtSrv"); + ITextImpl->ref = 1; + ITextHost_AddRef(pITextHost); + ITextImpl->pMyHost = pITextHost; + ITextImpl->lpVtbl = &textservices_Vtbl; + + if (pUnkOuter) + { + FIXME("Support aggregation\n"); + return CLASS_E_NOAGGREGATION; + } + + *ppUnk = (IUnknown *)ITextImpl; + return S_OK; +} + +#define ICOM_THIS_MULTI(impl,field,iface) \ + impl* const This=(impl*)((char*)(iface) - offsetof(impl,field)) + +static HRESULT WINAPI fnTextSrv_QueryInterface(ITextServices * iface, + REFIID riid, + LPVOID * ppv) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + TRACE("(%p/%p)->(%s, %p)\n", This, iface, debugstr_guid(riid), ppv); + *ppv = NULL; + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_ITextServices)) + *ppv = (LPVOID)This; + + if (*ppv) + { + IUnknown_AddRef((IUnknown *)(*ppv)); + TRACE ("-- Interface = %p\n", *ppv); + return S_OK; + } + FIXME("Unknown interface: %s\n", debugstr_guid(riid)); + return E_NOINTERFACE; +} + +static ULONG WINAPI fnTextSrv_AddRef(ITextServices *iface) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + DWORD ref = InterlockedIncrement(&This->ref); + + TRACE("(%p/%p)->() AddRef from %d\n", This, iface, ref - 1); + return ref; +} + +static ULONG WINAPI fnTextSrv_Release(ITextServices *iface) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + DWORD ref = InterlockedDecrement(&This->ref); + + TRACE("(%p/%p)->() Release from %d\n", This, iface, ref + 1); + + if (!ref) + { + ITextHost_Release(This->pMyHost); + This->csTxtSrv.DebugInfo->Spare[0] = 0; + DeleteCriticalSection(&This->csTxtSrv); + CoTaskMemFree(This); + } + return ref; +} + +HRESULT WINAPI fnTextSrv_TxSendMessage(ITextServices *iface, + UINT msg, + WPARAM wparam, + LPARAM lparam, + LRESULT* plresult) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxDraw(ITextServices *iface, + DWORD dwDrawAspect, + LONG lindex, + void* pvAspect, + DVTARGETDEVICE* ptd, + HDC hdcDraw, + HDC hdcTargetDev, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + LPRECT lprcUpdate, + BOOL (CALLBACK * pfnContinue)(DWORD), + DWORD dwContinue, + LONG lViewId) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxGetHScroll(ITextServices *iface, + LONG* plMin, + LONG* plMax, + LONG* plPos, + LONG* plPage, + BOOL* pfEnabled) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxGetVScroll(ITextServices *iface, + LONG* plMin, + LONG* plMax, + LONG* plPos, + LONG* plPage, + BOOL* pfEnabled) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_OnTxSetCursor(ITextServices *iface, + DWORD dwDrawAspect, + LONG lindex, + void* pvAspect, + DVTARGETDEVICE* ptd, + HDC hdcDraw, + HDC hicTargetDev, + LPCRECT lprcClient, + INT x, INT y) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxQueryHitPoint(ITextServices *iface, + DWORD dwDrawAspect, + LONG lindex, + void* pvAspect, + DVTARGETDEVICE* ptd, + HDC hdcDraw, + HDC hicTargetDev, + LPCRECT lprcClient, + INT x, INT y, + DWORD* pHitResult) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_OnTxInplaceActivate(ITextServices *iface, + LPCRECT prcClient) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_OnTxInplaceDeactivate(ITextServices *iface) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_OnTxUIActivate(ITextServices *iface) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_OnTxUIDeactivate(ITextServices *iface) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxGetText(ITextServices *iface, + BSTR* pbstrText) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxSetText(ITextServices *iface, + LPCWSTR pszText) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxGetCurrentTargetX(ITextServices *iface, + LONG* x) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxGetBaseLinePos(ITextServices *iface, + LONG* x) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxGetNaturalSize(ITextServices *iface, + DWORD dwAspect, + HDC hdcDraw, + HDC hicTargetDev, + DVTARGETDEVICE* ptd, + DWORD dwMode, + const SIZEL* psizelExtent, + LONG* pwidth, + LONG* pheight) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxGetDropTarget(ITextServices *iface, + IDropTarget** ppDropTarget) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_OnTxPropertyBitsChange(ITextServices *iface, + DWORD dwMask, + DWORD dwBits) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +HRESULT WINAPI fnTextSrv_TxGetCachedSize(ITextServices *iface, + DWORD* pdwWidth, + DWORD* pdwHeight) +{ + ICOM_THIS_MULTI(ITextServicesImpl, lpVtbl, iface); + + FIXME("%p: STUB\n", This); + return E_NOTIMPL; +} + +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxSendMessage) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxDraw) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetHScroll) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetVScroll) +DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxSetCursor) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxQueryHitPoint) +DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxInplaceActivate) +DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxInplaceDeactivate) +DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxUIActivate) +DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxUIDeactivate) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetText) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxSetText) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetCurrentTargetX) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetBaseLinePos) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetNaturalSize) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetDropTarget) +DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxPropertyBitsChange) +DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetCachedSize) + +static const ITextServicesVtbl textservices_Vtbl = +{ + fnTextSrv_QueryInterface, + fnTextSrv_AddRef, + fnTextSrv_Release, + THISCALL(fnTextSrv_TxSendMessage), + THISCALL(fnTextSrv_TxDraw), + THISCALL(fnTextSrv_TxGetHScroll), + THISCALL(fnTextSrv_TxGetVScroll), + THISCALL(fnTextSrv_OnTxSetCursor), + THISCALL(fnTextSrv_TxQueryHitPoint), + THISCALL(fnTextSrv_OnTxInplaceActivate), + THISCALL(fnTextSrv_OnTxInplaceDeactivate), + THISCALL(fnTextSrv_OnTxUIActivate), + THISCALL(fnTextSrv_OnTxUIDeactivate), + THISCALL(fnTextSrv_TxGetText), + THISCALL(fnTextSrv_TxSetText), + THISCALL(fnTextSrv_TxGetCurrentTargetX), + THISCALL(fnTextSrv_TxGetBaseLinePos), + THISCALL(fnTextSrv_TxGetNaturalSize), + THISCALL(fnTextSrv_TxGetDropTarget), + THISCALL(fnTextSrv_OnTxPropertyBitsChange), + THISCALL(fnTextSrv_TxGetCachedSize) +}; diff --git a/reactos/dll/win32/riched20/undo.c b/reactos/dll/win32/riched20/undo.c index 916dcb37628..2a9d9156033 100644 --- a/reactos/dll/win32/riched20/undo.c +++ b/reactos/dll/win32/riched20/undo.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "editor.h" @@ -32,7 +32,8 @@ void ME_EmptyUndoStack(ME_TextEditor *editor) TRACE("Emptying undo stack\n"); p = editor->pUndoStack; - editor->pUndoStack = NULL; + editor->pUndoStack = editor->pUndoStackBottom = NULL; + editor->nUndoStackSize = 0; while(p) { pNext = p->next; ME_DestroyDisplayItem(p); @@ -50,6 +51,8 @@ void ME_EmptyUndoStack(ME_TextEditor *editor) ME_UndoItem *ME_AddUndoItem(ME_TextEditor *editor, ME_DIType type, ME_DisplayItem *pdi) { if (editor->nUndoMode == umIgnore) return NULL; + else if (editor->nUndoLimit == 0) + return NULL; else { ME_DisplayItem *pItem = (ME_DisplayItem *)ALLOC_OBJ(ME_UndoItem); @@ -93,10 +96,31 @@ ME_UndoItem *ME_AddUndoItem(ME_TextEditor *editor, ME_DIType type, ME_DisplayIte TRACE("Pushing id=%s to undo stack, deleting redo stack\n", ME_GetDITypeName(type)); else TRACE("Pushing id=%s to undo stack\n", ME_GetDITypeName(type)); + pItem->next = editor->pUndoStack; + if (type == diUndoEndTransaction) + editor->nUndoStackSize++; if (editor->pUndoStack) editor->pUndoStack->prev = pItem; + else + editor->pUndoStackBottom = pItem; editor->pUndoStack = pItem; + + if (editor->nUndoStackSize > editor->nUndoLimit) + { /* remove oldest undo from stack */ + ME_DisplayItem *p = editor->pUndoStackBottom; + while (p->type !=diUndoEndTransaction) + p = p->prev; /*find new stack bottom */ + editor->pUndoStackBottom = p->prev; + editor->pUndoStackBottom->next = NULL; + do + { + ME_DisplayItem *pp = p->next; + ME_DestroyDisplayItem(p); + p = pp; + } while (p); + editor->nUndoStackSize--; + } /* any new operation (not redo) clears the redo stack */ if (editor->nUndoMode == umAddToUndo) { ME_DisplayItem *p = editor->pRedoStack; @@ -124,7 +148,6 @@ ME_UndoItem *ME_AddUndoItem(ME_TextEditor *editor, ME_DIType type, ME_DisplayIte } void ME_CommitUndo(ME_TextEditor *editor) { - if (editor->nUndoMode == umIgnore) return; @@ -140,10 +163,9 @@ void ME_CommitUndo(ME_TextEditor *editor) { ME_AddUndoItem(editor, diUndoEndTransaction, NULL); ME_SendSelChange(editor); - editor->nModifyStep++; } -void ME_PlayUndoItem(ME_TextEditor *editor, ME_DisplayItem *pItem) +static void ME_PlayUndoItem(ME_TextEditor *editor, ME_DisplayItem *pItem) { ME_UndoItem *pUItem = (ME_UndoItem *)pItem; @@ -233,10 +255,10 @@ void ME_Undo(ME_TextEditor *editor) { } while(p && p->type != diUndoEndTransaction); ME_AddUndoItem(editor, diUndoEndTransaction, NULL); editor->pUndoStack = p; + editor->nUndoStackSize--; if (p) p->prev = NULL; editor->nUndoMode = nMode; - editor->nModifyStep--; ME_UpdateRepaint(editor); } @@ -269,6 +291,5 @@ void ME_Redo(ME_TextEditor *editor) { if (p) p->prev = NULL; editor->nUndoMode = nMode; - editor->nModifyStep++; ME_UpdateRepaint(editor); } diff --git a/reactos/dll/win32/riched20/version.rc b/reactos/dll/win32/riched20/version.rc new file mode 100644 index 00000000000..73bae3dc292 --- /dev/null +++ b/reactos/dll/win32/riched20/version.rc @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2006 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define WINE_FILEDESCRIPTION_STR "Wine Richedit dll" +#define WINE_FILENAME_STR "riched20.dll" +#define WINE_FILEVERSION 5,30,23,1215 +#define WINE_FILEVERSION_STR "5,30,23,1215" +#define WINE_PRODUCTVERSION 5,30,23,1215 +#define WINE_PRODUCTVERSION_STR "5,30,23,1215" + +#include "wine/wine_common_ver.rc" diff --git a/reactos/dll/win32/riched20/wrap.c b/reactos/dll/win32/riched20/wrap.c index 4ea9ac45e2c..af6e9a9152e 100644 --- a/reactos/dll/win32/riched20/wrap.c +++ b/reactos/dll/win32/riched20/wrap.c @@ -16,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ @@ -168,7 +168,7 @@ static ME_DisplayItem *ME_SplitByBacktracking(ME_WrapContext *wc, ME_DisplayItem int i, idesp, len; ME_Run *run = &p->member.run; - idesp = i = ME_CharFromPoint(wc->context->editor, loc, &ME_GetParagraph(p)->member.para, run); + idesp = i = ME_CharFromPoint(wc->context->editor, loc, run); len = ME_StrVLen(run->strText); assert(len>0); assert(imember.para.nRows = 0; for (p = tp->next; p!=tp->member.para.next_para; p = p->next) { switch(p->type) { case diStartRow: + pRow = p; p = p->prev; - ME_Remove(p->next); + ME_Remove(pRow); + ME_DestroyDisplayItem(pRow); break; default: break; @@ -422,6 +424,7 @@ BOOL ME_WrapMarkedParagraphs(ME_TextEditor *editor) { ME_DisplayItem *item; ME_Context c; BOOL bModified = FALSE; + int yStart = -1, yEnd = -1; ME_InitContext(&c, editor, hDC); c.pt.x = 0; @@ -439,11 +442,17 @@ BOOL ME_WrapMarkedParagraphs(ME_TextEditor *editor) { ME_WrapTextParagraph(&c, item); if (bRedraw) + { item->member.para.nFlags |= MEPF_REPAINT; + if (yStart == -1) + yStart = c.pt.y; + } bModified = bModified | bRedraw; c.pt.y += item->member.para.nHeight; + if (bRedraw) + yEnd = c.pt.y; item = item->member.para.next_para; } editor->sizeWindow.cx = c.rcView.right-c.rcView.left; @@ -453,9 +462,42 @@ BOOL ME_WrapMarkedParagraphs(ME_TextEditor *editor) { ME_DestroyContext(&c); ReleaseDC(hWnd, hDC); + + if (bModified || editor->nTotalLength < editor->nLastTotalLength) + ME_InvalidateMarkedParagraphs(editor); return bModified; } +void ME_InvalidateMarkedParagraphs(ME_TextEditor *editor) { + ME_Context c; + HDC hDC = GetDC(editor->hWnd); + + ME_InitContext(&c, editor, hDC); + if (editor->bRedraw) + { + RECT rc = c.rcView; + int ofs = ME_GetYScrollPos(editor); + + ME_DisplayItem *item = editor->pBuffer->pFirst; + while(item != editor->pBuffer->pLast) { + if (item->member.para.nFlags & MEPF_REPAINT) { + rc.top = item->member.para.nYPos - ofs; + rc.bottom = item->member.para.nYPos + item->member.para.nHeight - ofs; + InvalidateRect(editor->hWnd, &rc, TRUE); + } + item = item->member.para.next_para; + } + if (editor->nTotalLength < editor->nLastTotalLength) + { + rc.top = editor->nTotalLength - ofs; + rc.bottom = editor->nLastTotalLength - ofs; + InvalidateRect(editor->hWnd, &rc, TRUE); + } + } + ME_DestroyContext(&c); + ReleaseDC(editor->hWnd, hDC); +} + void ME_SendRequestResize(ME_TextEditor *editor, BOOL force) diff --git a/reactos/dll/win32/riched20/writer.c b/reactos/dll/win32/riched20/writer.c index 3054e2fec9e..e964ce76836 100644 --- a/reactos/dll/win32/riched20/writer.c +++ b/reactos/dll/win32/riched20/writer.c @@ -15,7 +15,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "editor.h" @@ -25,71 +25,69 @@ WINE_DEFAULT_DEBUG_CHANNEL(richedit); static BOOL -ME_StreamOutRTFText(ME_TextEditor *editor, WCHAR *text, LONG nChars); +ME_StreamOutRTFText(ME_OutStream *pStream, WCHAR *text, LONG nChars); -static void +static ME_OutStream* ME_StreamOutInit(ME_TextEditor *editor, EDITSTREAM *stream) { - editor->pStream = ALLOC_OBJ(ME_OutStream); - editor->pStream->stream = stream; - editor->pStream->stream->dwError = 0; - editor->pStream->pos = 0; - editor->pStream->written = 0; - editor->pStream->nFontTblLen = 0; - editor->pStream->nColorTblLen = 1; + ME_OutStream *pStream = ALLOC_OBJ(ME_OutStream); + pStream->stream = stream; + pStream->stream->dwError = 0; + pStream->pos = 0; + pStream->written = 0; + pStream->nFontTblLen = 0; + pStream->nColorTblLen = 1; + return pStream; } static BOOL -ME_StreamOutFlush(ME_TextEditor *editor) +ME_StreamOutFlush(ME_OutStream *pStream) { LONG nStart = 0; LONG nWritten = 0; LONG nRemaining = 0; - EDITSTREAM *stream = editor->pStream->stream; + EDITSTREAM *stream = pStream->stream; do { - TRACE("sending %lu bytes\n", editor->pStream->pos - nStart); + TRACE("sending %u bytes\n", pStream->pos - nStart); /* Some apps seem not to set *pcb unless a problem arises, relying on initial random nWritten value, which is usually >STREAMOUT_BUFFER_SIZE */ - nRemaining = editor->pStream->pos - nStart; + nRemaining = pStream->pos - nStart; nWritten = 0xDEADBEEF; - stream->dwError = stream->pfnCallback(stream->dwCookie, (LPBYTE)editor->pStream->buffer + nStart, - editor->pStream->pos - nStart, &nWritten); - TRACE("error=%lu written=%lu\n", stream->dwError, nWritten); - if (nWritten > (editor->pStream->pos - nStart) || nWritten<0) { - FIXME("Invalid returned written size *pcb: 0x%x (%ld) instead of %ld\n", + stream->dwError = stream->pfnCallback(stream->dwCookie, (LPBYTE)pStream->buffer + nStart, + pStream->pos - nStart, &nWritten); + TRACE("error=%u written=%u\n", stream->dwError, nWritten); + if (nWritten > (pStream->pos - nStart) || nWritten<0) { + FIXME("Invalid returned written size *pcb: 0x%x (%d) instead of %d\n", (unsigned)nWritten, nWritten, nRemaining); nWritten = nRemaining; } if (nWritten == 0 || stream->dwError) return FALSE; - editor->pStream->written += nWritten; + pStream->written += nWritten; nStart += nWritten; - } while (nStart < editor->pStream->pos); - editor->pStream->pos = 0; + } while (nStart < pStream->pos); + pStream->pos = 0; return TRUE; } static LONG -ME_StreamOutFree(ME_TextEditor *editor) +ME_StreamOutFree(ME_OutStream *pStream) { - LONG written = editor->pStream->written; - TRACE("total length = %lu\n", written); + LONG written = pStream->written; + TRACE("total length = %u\n", written); - FREE_OBJ(editor->pStream); - editor->pStream = NULL; + FREE_OBJ(pStream); return written; } static BOOL -ME_StreamOutMove(ME_TextEditor *editor, const char *buffer, int len) +ME_StreamOutMove(ME_OutStream *pStream, const char *buffer, int len) { - ME_OutStream *pStream = editor->pStream; - while (len) { int space = STREAMOUT_BUFFER_SIZE - pStream->pos; int fit = min(space, len); @@ -100,7 +98,7 @@ ME_StreamOutMove(ME_TextEditor *editor, const char *buffer, int len) buffer += fit; pStream->pos += fit; if (pStream->pos == STREAMOUT_BUFFER_SIZE) { - if (!ME_StreamOutFlush(editor)) + if (!ME_StreamOutFlush(pStream)) return FALSE; } } @@ -109,22 +107,22 @@ ME_StreamOutMove(ME_TextEditor *editor, const char *buffer, int len) static BOOL -ME_StreamOutPrint(ME_TextEditor *editor, const char *format, ...) +ME_StreamOutPrint(ME_OutStream *pStream, const char *format, ...) { char string[STREAMOUT_BUFFER_SIZE]; /* This is going to be enough */ int len; va_list valist; va_start(valist, format); - len = _vsnprintf(string, sizeof(string), format, valist); + len = vsnprintf(string, sizeof(string), format, valist); va_end(valist); - return ME_StreamOutMove(editor, string, len); + return ME_StreamOutMove(pStream, string, len); } static BOOL -ME_StreamOutRTFHeader(ME_TextEditor *editor, int dwFormat) +ME_StreamOutRTFHeader(ME_OutStream *pStream, int dwFormat) { const char *cCharSet = NULL; UINT nCodePage; @@ -171,33 +169,33 @@ ME_StreamOutRTFHeader(ME_TextEditor *editor, int dwFormat) nCodePage = GetACP(); } if (nCodePage == CP_UTF8) - success = ME_StreamOutPrint(editor, "{\\urtf"); + success = ME_StreamOutPrint(pStream, "{\\urtf"); else - success = ME_StreamOutPrint(editor, "{\\rtf1\\%s\\ansicpg%u\\uc1", cCharSet, nCodePage); + success = ME_StreamOutPrint(pStream, "{\\rtf1\\%s\\ansicpg%u\\uc1", cCharSet, nCodePage); if (!success) return FALSE; - editor->pStream->nDefaultCodePage = nCodePage; + pStream->nDefaultCodePage = nCodePage; /* FIXME: This should be a document property */ /* TODO: handle SFF_PLAINRTF */ language = GetUserDefaultLangID(); - if (!ME_StreamOutPrint(editor, "\\deff0\\deflang%u\\deflangfe%u", language, language)) + if (!ME_StreamOutPrint(pStream, "\\deff0\\deflang%u\\deflangfe%u", language, language)) return FALSE; /* FIXME: This should be a document property */ - editor->pStream->nDefaultFont = 0; + pStream->nDefaultFont = 0; return TRUE; } static BOOL -ME_StreamOutRTFFontAndColorTbl(ME_TextEditor *editor, ME_DisplayItem *pFirstRun, ME_DisplayItem *pLastRun) +ME_StreamOutRTFFontAndColorTbl(ME_OutStream *pStream, ME_DisplayItem *pFirstRun, ME_DisplayItem *pLastRun) { ME_DisplayItem *item = pFirstRun; - ME_FontTableItem *table = editor->pStream->fonttbl; + ME_FontTableItem *table = pStream->fonttbl; int i; do { @@ -208,35 +206,35 @@ ME_StreamOutRTFFontAndColorTbl(ME_TextEditor *editor, ME_DisplayItem *pFirstRun, WCHAR *face = fmt->szFaceName; BYTE bCharSet = (fmt->dwMask & CFM_CHARSET) ? fmt->bCharSet : DEFAULT_CHARSET; - for (i = 0; i < editor->pStream->nFontTblLen; i++) + for (i = 0; i < pStream->nFontTblLen; i++) if (table[i].bCharSet == bCharSet && (table[i].szFaceName == face || !lstrcmpW(table[i].szFaceName, face))) break; - if (i == editor->pStream->nFontTblLen) { + if (i == pStream->nFontTblLen) { table[i].bCharSet = bCharSet; table[i].szFaceName = face; - editor->pStream->nFontTblLen++; + pStream->nFontTblLen++; } } if (fmt->dwMask & CFM_COLOR && !(fmt->dwEffects & CFE_AUTOCOLOR)) { crColor = fmt->crTextColor; - for (i = 1; i < editor->pStream->nColorTblLen; i++) - if (editor->pStream->colortbl[i] == crColor) + for (i = 1; i < pStream->nColorTblLen; i++) + if (pStream->colortbl[i] == crColor) break; - if (i == editor->pStream->nColorTblLen) { - editor->pStream->colortbl[i] = crColor; - editor->pStream->nColorTblLen++; + if (i == pStream->nColorTblLen) { + pStream->colortbl[i] = crColor; + pStream->nColorTblLen++; } } if (fmt->dwMask & CFM_BACKCOLOR && !(fmt->dwEffects & CFE_AUTOBACKCOLOR)) { crColor = fmt->crBackColor; - for (i = 1; i < editor->pStream->nColorTblLen; i++) - if (editor->pStream->colortbl[i] == crColor) + for (i = 1; i < pStream->nColorTblLen; i++) + if (pStream->colortbl[i] == crColor) break; - if (i == editor->pStream->nColorTblLen) { - editor->pStream->colortbl[i] = crColor; - editor->pStream->nColorTblLen++; + if (i == pStream->nColorTblLen) { + pStream->colortbl[i] = crColor; + pStream->nColorTblLen++; } } @@ -245,37 +243,37 @@ ME_StreamOutRTFFontAndColorTbl(ME_TextEditor *editor, ME_DisplayItem *pFirstRun, item = ME_FindItemFwd(item, diRun); } while (item); - if (!ME_StreamOutPrint(editor, "{\\fonttbl")) + if (!ME_StreamOutPrint(pStream, "{\\fonttbl")) return FALSE; - for (i = 0; i < editor->pStream->nFontTblLen; i++) { + for (i = 0; i < pStream->nFontTblLen; i++) { if (table[i].bCharSet != DEFAULT_CHARSET) { - if (!ME_StreamOutPrint(editor, "{\\f%u\\fcharset%u ", i, table[i].bCharSet)) + if (!ME_StreamOutPrint(pStream, "{\\f%u\\fcharset%u ", i, table[i].bCharSet)) return FALSE; } else { - if (!ME_StreamOutPrint(editor, "{\\f%u ", i)) + if (!ME_StreamOutPrint(pStream, "{\\f%u ", i)) return FALSE; } - if (!ME_StreamOutRTFText(editor, table[i].szFaceName, -1)) + if (!ME_StreamOutRTFText(pStream, table[i].szFaceName, -1)) return FALSE; - if (!ME_StreamOutPrint(editor, ";}\r\n")) + if (!ME_StreamOutPrint(pStream, ";}\r\n")) return FALSE; } - if (!ME_StreamOutPrint(editor, "}")) + if (!ME_StreamOutPrint(pStream, "}")) return FALSE; /* Output colors table if not empty */ - if (editor->pStream->nColorTblLen > 1) { - if (!ME_StreamOutPrint(editor, "{\\colortbl;")) + if (pStream->nColorTblLen > 1) { + if (!ME_StreamOutPrint(pStream, "{\\colortbl;")) return FALSE; - for (i = 1; i < editor->pStream->nColorTblLen; i++) { - if (!ME_StreamOutPrint(editor, "\\red%u\\green%u\\blue%u;", - editor->pStream->colortbl[i] & 0xFF, - (editor->pStream->colortbl[i] >> 8) & 0xFF, - (editor->pStream->colortbl[i] >> 16) & 0xFF)) + for (i = 1; i < pStream->nColorTblLen; i++) { + if (!ME_StreamOutPrint(pStream, "\\red%u\\green%u\\blue%u;", + pStream->colortbl[i] & 0xFF, + (pStream->colortbl[i] >> 8) & 0xFF, + (pStream->colortbl[i] >> 16) & 0xFF)) return FALSE; } - if (!ME_StreamOutPrint(editor, "}")) + if (!ME_StreamOutPrint(pStream, "}")) return FALSE; } @@ -284,15 +282,33 @@ ME_StreamOutRTFFontAndColorTbl(ME_TextEditor *editor, ME_DisplayItem *pFirstRun, static BOOL -ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_DisplayItem *para) +ME_StreamOutRTFParaProps(ME_OutStream *pStream, ME_DisplayItem *para) { PARAFORMAT2 *fmt = para->member.para.pFmt; char props[STREAMOUT_BUFFER_SIZE] = ""; int i; + if (para->member.para.pCells) + { + ME_TableCell *cell = para->member.para.pCells; + + if (!ME_StreamOutPrint(pStream, "\\trowd")) + return FALSE; + do { + sprintf(props, "\\cellx%d", cell->nRightBoundary); + if (!ME_StreamOutPrint(pStream, props)) + return FALSE; + cell = cell->next; + } while (cell); + props[0] = '\0'; + } + /* TODO: Don't emit anything if the last PARAFORMAT2 is inherited */ - if (!ME_StreamOutPrint(editor, "\\pard")) + if (!ME_StreamOutPrint(pStream, "\\pard")) return FALSE; + + if (para->member.para.bTable) + strcat(props, "\\intbl"); /* TODO: PFM_BORDER. M$ does not emit any keywords for these properties, and * when streaming border keywords in, PFM_BORDER is set, but wBorder field is @@ -330,13 +346,13 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_DisplayItem *para) strcat(props, "\\sl-480\\slmult1"); break; case 3: - sprintf(props + strlen(props), "\\sl%ld\\slmult0", fmt->dyLineSpacing); + sprintf(props + strlen(props), "\\sl%d\\slmult0", fmt->dyLineSpacing); break; case 4: - sprintf(props + strlen(props), "\\sl-%ld\\slmult0", fmt->dyLineSpacing); + sprintf(props + strlen(props), "\\sl-%d\\slmult0", fmt->dyLineSpacing); break; case 5: - sprintf(props + strlen(props), "\\sl-%ld\\slmult1", fmt->dyLineSpacing * 240 / 20); + sprintf(props + strlen(props), "\\sl-%d\\slmult1", fmt->dyLineSpacing * 240 / 20); break; } } @@ -361,20 +377,20 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_DisplayItem *para) strcat(props, "\\intbl"); if (fmt->dwMask & PFM_OFFSET) - sprintf(props + strlen(props), "\\li%ld", fmt->dxOffset); + sprintf(props + strlen(props), "\\li%d", fmt->dxOffset); if (fmt->dwMask & PFM_OFFSETINDENT || fmt->dwMask & PFM_STARTINDENT) - sprintf(props + strlen(props), "\\fi%ld", fmt->dxStartIndent); + sprintf(props + strlen(props), "\\fi%d", fmt->dxStartIndent); if (fmt->dwMask & PFM_RIGHTINDENT) - sprintf(props + strlen(props), "\\ri%ld", fmt->dxRightIndent); + sprintf(props + strlen(props), "\\ri%d", fmt->dxRightIndent); if (fmt->dwMask & PFM_SPACEAFTER) - sprintf(props + strlen(props), "\\sa%ld", fmt->dySpaceAfter); + sprintf(props + strlen(props), "\\sa%d", fmt->dySpaceAfter); if (fmt->dwMask & PFM_SPACEBEFORE) - sprintf(props + strlen(props), "\\sb%ld", fmt->dySpaceBefore); + sprintf(props + strlen(props), "\\sb%d", fmt->dySpaceBefore); if (fmt->dwMask & PFM_STYLE) sprintf(props + strlen(props), "\\s%d", fmt->sStyle); if (fmt->dwMask & PFM_TABSTOPS) { - static const char *leader[6] = { "", "\\tldot", "\\tlhyph", "\\tlul", "\\tlth", "\\tleq" }; + static const char * const leader[6] = { "", "\\tldot", "\\tlhyph", "\\tlul", "\\tlth", "\\tleq" }; for (i = 0; i < fmt->cTabCount; i++) { switch ((fmt->rgxTabs[i] >> 24) & 0xF) { @@ -393,13 +409,13 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_DisplayItem *para) } if (fmt->rgxTabs[i] >> 28 <= 5) strcat(props, leader[fmt->rgxTabs[i] >> 28]); - sprintf(props+strlen(props), "\\tx%ld", fmt->rgxTabs[i]&0x00FFFFFF); + sprintf(props+strlen(props), "\\tx%d", fmt->rgxTabs[i]&0x00FFFFFF); } } if (fmt->dwMask & PFM_SHADING) { - static const char *style[16] = { "", "\\bgdkhoriz", "\\bgdkvert", "\\bgdkfdiag", + static const char * const style[16] = { "", "\\bgdkhoriz", "\\bgdkvert", "\\bgdkfdiag", "\\bgdkbdiag", "\\bgdkcross", "\\bgdkdcross", "\\bghoriz", "\\bgvert", "\\bgfdiag", "\\bgbdiag", "\\bgcross", "\\bgdcross", @@ -412,7 +428,7 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_DisplayItem *para) (fmt->wShadingStyle >> 4) & 0xF, (fmt->wShadingStyle >> 8) & 0xF); } - if (*props && !ME_StreamOutPrint(editor, props)) + if (*props && !ME_StreamOutPrint(pStream, props)) return FALSE; return TRUE; @@ -420,7 +436,7 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_DisplayItem *para) static BOOL -ME_StreamOutRTFCharProps(ME_TextEditor *editor, CHARFORMAT2W *fmt) +ME_StreamOutRTFCharProps(ME_OutStream *pStream, CHARFORMAT2W *fmt) { char props[STREAMOUT_BUFFER_SIZE] = ""; int i; @@ -431,8 +447,8 @@ ME_StreamOutRTFCharProps(ME_TextEditor *editor, CHARFORMAT2W *fmt) sprintf(props + strlen(props), "\\animtext%u", fmt->bAnimation); if (fmt->dwMask & CFM_BACKCOLOR) { if (!(fmt->dwEffects & CFE_AUTOBACKCOLOR)) { - for (i = 1; i < editor->pStream->nColorTblLen; i++) - if (editor->pStream->colortbl[i] == fmt->crBackColor) { + for (i = 1; i < pStream->nColorTblLen; i++) + if (pStream->colortbl[i] == fmt->crBackColor) { sprintf(props + strlen(props), "\\cb%u", i); break; } @@ -442,8 +458,8 @@ ME_StreamOutRTFCharProps(ME_TextEditor *editor, CHARFORMAT2W *fmt) strcat(props, "\\b"); if (fmt->dwMask & CFM_COLOR) { if (!(fmt->dwEffects & CFE_AUTOCOLOR)) { - for (i = 1; i < editor->pStream->nColorTblLen; i++) - if (editor->pStream->colortbl[i] == fmt->crTextColor) { + for (i = 1; i < pStream->nColorTblLen; i++) + if (pStream->colortbl[i] == fmt->crTextColor) { sprintf(props + strlen(props), "\\cf%u", i); break; } @@ -470,9 +486,9 @@ ME_StreamOutRTFCharProps(ME_TextEditor *editor, CHARFORMAT2W *fmt) /* CFM_LINK is not streamed out by M$ */ if (fmt->dwMask & CFM_OFFSET) { if (fmt->yOffset >= 0) - sprintf(props + strlen(props), "\\up%ld", fmt->yOffset); + sprintf(props + strlen(props), "\\up%d", fmt->yOffset); else - sprintf(props + strlen(props), "\\dn%ld", -fmt->yOffset); + sprintf(props + strlen(props), "\\dn%d", -fmt->yOffset); } if (fmt->dwMask & CFM_OUTLINE && fmt->dwEffects & CFE_OUTLINE) strcat(props, "\\outl"); @@ -482,7 +498,7 @@ ME_StreamOutRTFCharProps(ME_TextEditor *editor, CHARFORMAT2W *fmt) if (fmt->dwMask & CFM_SHADOW && fmt->dwEffects & CFE_SHADOW) strcat(props, "\\shad"); if (fmt->dwMask & CFM_SIZE) - sprintf(props + strlen(props), "\\fs%ld", fmt->yHeight / 10); + sprintf(props + strlen(props), "\\fs%d", fmt->yHeight / 10); if (fmt->dwMask & CFM_SMALLCAPS && fmt->dwEffects & CFE_SMALLCAPS) strcat(props, "\\scaps"); if (fmt->dwMask & CFM_SPACING) @@ -531,40 +547,39 @@ ME_StreamOutRTFCharProps(ME_TextEditor *editor, CHARFORMAT2W *fmt) if (fmt->dwMask & CFM_FACE) szFaceName = fmt->szFaceName; else - szFaceName = editor->pStream->fonttbl[0].szFaceName; - for (i = 0; i < editor->pStream->nFontTblLen; i++) { - if (szFaceName == editor->pStream->fonttbl[i].szFaceName - || !lstrcmpW(szFaceName, editor->pStream->fonttbl[i].szFaceName)) + szFaceName = pStream->fonttbl[0].szFaceName; + for (i = 0; i < pStream->nFontTblLen; i++) { + if (szFaceName == pStream->fonttbl[i].szFaceName + || !lstrcmpW(szFaceName, pStream->fonttbl[i].szFaceName)) if (!(fmt->dwMask & CFM_CHARSET) - || fmt->bCharSet == editor->pStream->fonttbl[i].bCharSet) + || fmt->bCharSet == pStream->fonttbl[i].bCharSet) break; } - if (i < editor->pStream->nFontTblLen) + if (i < pStream->nFontTblLen) { - if (i != editor->pStream->nDefaultFont) + if (i != pStream->nDefaultFont) sprintf(props + strlen(props), "\\f%u", i); /* In UTF-8 mode, charsets/codepages are not used */ - if (editor->pStream->nDefaultCodePage != CP_UTF8) + if (pStream->nDefaultCodePage != CP_UTF8) { - if (editor->pStream->fonttbl[i].bCharSet == DEFAULT_CHARSET) - editor->pStream->nCodePage = editor->pStream->nDefaultCodePage; + if (pStream->fonttbl[i].bCharSet == DEFAULT_CHARSET) + pStream->nCodePage = pStream->nDefaultCodePage; else - editor->pStream->nCodePage = RTFCharSetToCodePage(NULL, - editor->pStream->fonttbl[i].bCharSet); + pStream->nCodePage = RTFCharSetToCodePage(NULL, pStream->fonttbl[i].bCharSet); } } } if (*props) strcat(props, " "); - if (!ME_StreamOutPrint(editor, props)) + if (!ME_StreamOutPrint(pStream, props)) return FALSE; return TRUE; } static BOOL -ME_StreamOutRTFText(ME_TextEditor *editor, WCHAR *text, LONG nChars) +ME_StreamOutRTFText(ME_OutStream *pStream, WCHAR *text, LONG nChars) { char buffer[STREAMOUT_BUFFER_SIZE]; int pos = 0; @@ -575,7 +590,7 @@ ME_StreamOutRTFText(ME_TextEditor *editor, WCHAR *text, LONG nChars) while (nChars) { /* In UTF-8 mode, font charsets are not used. */ - if (editor->pStream->nDefaultCodePage == CP_UTF8) { + if (pStream->nDefaultCodePage == CP_UTF8) { /* 6 is the maximum character length in UTF-8 */ fit = min(nChars, STREAMOUT_BUFFER_SIZE / 6); nBytes = WideCharToMultiByte(CP_UTF8, 0, text, fit, buffer, @@ -584,12 +599,12 @@ ME_StreamOutRTFText(ME_TextEditor *editor, WCHAR *text, LONG nChars) text += fit; for (i = 0; i < nBytes; i++) if (buffer[i] == '{' || buffer[i] == '}' || buffer[i] == '\\') { - if (!ME_StreamOutPrint(editor, "%.*s\\", i - pos, buffer + pos)) + if (!ME_StreamOutPrint(pStream, "%.*s\\", i - pos, buffer + pos)) return FALSE; pos = i; } if (pos < nBytes) - if (!ME_StreamOutMove(editor, buffer + pos, nBytes - pos)) + if (!ME_StreamOutMove(pStream, buffer + pos, nBytes - pos)) return FALSE; pos = 0; } else if (*text < 128) { @@ -605,9 +620,9 @@ ME_StreamOutRTFText(ME_TextEditor *editor, WCHAR *text, LONG nChars) * codepages including CP_SYMBOL for which the last parameter must be set * to NULL for the function to succeed. But in Wine we need to care only * about CP_SYMBOL */ - nBytes = WideCharToMultiByte(editor->pStream->nCodePage, 0, text, 1, + nBytes = WideCharToMultiByte(pStream->nCodePage, 0, text, 1, letter, 3, NULL, - (editor->pStream->nCodePage == CP_SYMBOL) ? NULL : &unknown); + (pStream->nCodePage == CP_SYMBOL) ? NULL : &unknown); if (unknown) pos += sprintf(buffer + pos, "\\u%d?", (short)*text); else if ((BYTE)*letter < 128) { @@ -622,33 +637,36 @@ ME_StreamOutRTFText(ME_TextEditor *editor, WCHAR *text, LONG nChars) nChars--; } if (pos >= STREAMOUT_BUFFER_SIZE - 11) { - if (!ME_StreamOutMove(editor, buffer, pos)) + if (!ME_StreamOutMove(pStream, buffer, pos)) return FALSE; pos = 0; } } - return ME_StreamOutMove(editor, buffer, pos); + return ME_StreamOutMove(pStream, buffer, pos); } static BOOL -ME_StreamOutRTF(ME_TextEditor *editor, int nStart, int nChars, int dwFormat) +ME_StreamOutRTF(ME_TextEditor *editor, ME_OutStream *pStream, int nStart, int nChars, int dwFormat) { - ME_DisplayItem *p, *pEnd; - int nOffset, nEndLen; + ME_DisplayItem *p, *pEnd, *pPara; + int nOffset, nEndLen; + ME_RunOfsFromCharOfs(editor, nStart, &p, &nOffset); ME_RunOfsFromCharOfs(editor, nStart+nChars, &pEnd, &nEndLen); - if (!ME_StreamOutRTFHeader(editor, dwFormat)) + pPara = ME_GetParagraph(p); + + if (!ME_StreamOutRTFHeader(pStream, dwFormat)) return FALSE; - if (!ME_StreamOutRTFFontAndColorTbl(editor, p, pEnd)) + if (!ME_StreamOutRTFFontAndColorTbl(pStream, p, pEnd)) return FALSE; /* TODO: stylesheet table */ /* FIXME: maybe emit something smarter for the generator? */ - if (!ME_StreamOutPrint(editor, "{\\*\\generator Wine Riched20 2.0.????;}")) + if (!ME_StreamOutPrint(pStream, "{\\*\\generator Wine Riched20 2.0.????;}")) return FALSE; /* TODO: information group */ @@ -659,7 +677,7 @@ ME_StreamOutRTF(ME_TextEditor *editor, int nStart, int nChars, int dwFormat) /* TODO: section formatting properties */ - if (!ME_StreamOutRTFParaProps(editor, ME_GetParagraph(p))) + if (!ME_StreamOutRTFParaProps(pStream, ME_GetParagraph(p))) return FALSE; while(1) @@ -667,8 +685,9 @@ ME_StreamOutRTF(ME_TextEditor *editor, int nStart, int nChars, int dwFormat) switch(p->type) { case diParagraph: - if (!ME_StreamOutRTFParaProps(editor, p)) + if (!ME_StreamOutRTFParaProps(pStream, p)) return FALSE; + pPara = p; break; case diRun: if (p == pEnd && !nEndLen) @@ -677,26 +696,35 @@ ME_StreamOutRTF(ME_TextEditor *editor, int nStart, int nChars, int dwFormat) /* TODO: emit embedded objects */ if (p->member.run.nFlags & MERF_GRAPHICS) FIXME("embedded objects are not handled\n"); - if (p->member.run.nFlags & MERF_ENDPARA) { - if (!ME_StreamOutPrint(editor, "\r\n\\par")) + if (p->member.run.nFlags & MERF_CELL) { + if (!ME_StreamOutPrint(pStream, "\\cell ")) return FALSE; nChars--; + } else if (p->member.run.nFlags & MERF_ENDPARA) { + if (pPara->member.para.bTable) { + if (!ME_StreamOutPrint(pStream, "\\row \r\n")) + return FALSE; + } else { + if (!ME_StreamOutPrint(pStream, "\r\n\\par")) + return FALSE; + } + nChars--; if (editor->bEmulateVersion10 && nChars) nChars--; } else { int nEnd; - if (!ME_StreamOutPrint(editor, "{")) + if (!ME_StreamOutPrint(pStream, "{")) return FALSE; TRACE("style %p\n", p->member.run.style); - if (!ME_StreamOutRTFCharProps(editor, &p->member.run.style->fmt)) + if (!ME_StreamOutRTFCharProps(pStream, &p->member.run.style->fmt)) return FALSE; nEnd = (p == pEnd) ? nEndLen : ME_StrLen(p->member.run.strText); - if (!ME_StreamOutRTFText(editor, p->member.run.strText->szData + nOffset, nEnd - nOffset)) + if (!ME_StreamOutRTFText(pStream, p->member.run.strText->szData + nOffset, nEnd - nOffset)) return FALSE; nOffset = 0; - if (!ME_StreamOutPrint(editor, "}")) + if (!ME_StreamOutPrint(pStream, "}")) return FALSE; } break; @@ -707,14 +735,14 @@ ME_StreamOutRTF(ME_TextEditor *editor, int nStart, int nChars, int dwFormat) break; p = ME_FindItemFwd(p, diRunOrParagraphOrEnd); } - if (!ME_StreamOutPrint(editor, "}")) + if (!ME_StreamOutPrint(pStream, "}")) return FALSE; return TRUE; } static BOOL -ME_StreamOutText(ME_TextEditor *editor, int nStart, int nChars, DWORD dwFormat) +ME_StreamOutText(ME_TextEditor *editor, ME_OutStream *pStream, int nStart, int nChars, DWORD dwFormat) { /* FIXME: use ME_RunOfsFromCharOfs */ ME_DisplayItem *item = ME_FindItemAtOffset(editor, diRun, nStart, &nStart); @@ -741,12 +769,12 @@ ME_StreamOutText(ME_TextEditor *editor, int nStart, int nChars, DWORD dwFormat) static const WCHAR szEOL[2] = { '\r', '\n' }; if (dwFormat & SF_UNICODE) - success = ME_StreamOutMove(editor, (const char *)szEOL, sizeof(szEOL)); + success = ME_StreamOutMove(pStream, (const char *)szEOL, sizeof(szEOL)); else - success = ME_StreamOutMove(editor, "\r\n", 2); + success = ME_StreamOutMove(pStream, "\r\n", 2); } else { if (dwFormat & SF_UNICODE) - success = ME_StreamOutMove(editor, (const char *)(item->member.run.strText->szData + nStart), + success = ME_StreamOutMove(pStream, (const char *)(item->member.run.strText->szData + nStart), sizeof(WCHAR) * nLen); else { int nSize; @@ -754,14 +782,13 @@ ME_StreamOutText(ME_TextEditor *editor, int nStart, int nChars, DWORD dwFormat) nSize = WideCharToMultiByte(nCodePage, 0, item->member.run.strText->szData + nStart, nLen, NULL, 0, NULL, NULL); if (nSize > nBufLen) { - if (buffer) - FREE_OBJ(buffer); + FREE_OBJ(buffer); buffer = ALLOC_N_OBJ(char, nSize); nBufLen = nSize; } WideCharToMultiByte(nCodePage, 0, item->member.run.strText->szData + nStart, nLen, buffer, nSize, NULL, NULL); - success = ME_StreamOutMove(editor, buffer, nSize); + success = ME_StreamOutMove(pStream, buffer, nSize); } } @@ -772,25 +799,16 @@ ME_StreamOutText(ME_TextEditor *editor, int nStart, int nChars, DWORD dwFormat) item = ME_FindItemFwd(item, diRun); } - if (buffer) - FREE_OBJ(buffer); + FREE_OBJ(buffer); return success; } LRESULT -ME_StreamOut(ME_TextEditor *editor, DWORD dwFormat, EDITSTREAM *stream) +ME_StreamOutRange(ME_TextEditor *editor, DWORD dwFormat, int nStart, int nTo, EDITSTREAM *stream) { - int nStart, nTo; - - ME_StreamOutInit(editor, stream); + ME_OutStream *pStream = ME_StreamOutInit(editor, stream); - if (dwFormat & SFF_SELECTION) - ME_GetSelection(editor, &nStart, &nTo); - else { - nStart = 0; - nTo = -1; - } if (nTo == -1) { nTo = ME_GetTextLength(editor); @@ -799,12 +817,26 @@ ME_StreamOut(ME_TextEditor *editor, DWORD dwFormat, EDITSTREAM *stream) nTo++; } TRACE("from %d to %d\n", nStart, nTo); - + if (dwFormat & SF_RTF) - ME_StreamOutRTF(editor, nStart, nTo - nStart, dwFormat); + ME_StreamOutRTF(editor, pStream, nStart, nTo - nStart, dwFormat); else if (dwFormat & SF_TEXT || dwFormat & SF_TEXTIZED) - ME_StreamOutText(editor, nStart, nTo - nStart, dwFormat); - if (!editor->pStream->stream->dwError) - ME_StreamOutFlush(editor); - return ME_StreamOutFree(editor); + ME_StreamOutText(editor, pStream, nStart, nTo - nStart, dwFormat); + if (!pStream->stream->dwError) + ME_StreamOutFlush(pStream); + return ME_StreamOutFree(pStream); +} + +LRESULT +ME_StreamOut(ME_TextEditor *editor, DWORD dwFormat, EDITSTREAM *stream) +{ + int nStart, nTo; + + if (dwFormat & SFF_SELECTION) + ME_GetSelection(editor, &nStart, &nTo); + else { + nStart = 0; + nTo = -1; + } + return ME_StreamOutRange(editor, dwFormat, nStart, nTo, stream); } diff --git a/reactos/dll/win32/setupapi/cfgmgr.c b/reactos/dll/win32/setupapi/cfgmgr.c index c9d196fa52a..1fffe5be4c7 100644 --- a/reactos/dll/win32/setupapi/cfgmgr.c +++ b/reactos/dll/win32/setupapi/cfgmgr.c @@ -70,7 +70,7 @@ static BOOL GuidToString(LPGUID Guid, LPWSTR String) String[MAX_GUID_STRING_LEN - 2] = L'}'; String[MAX_GUID_STRING_LEN - 1] = 0; - RpcStringFree(&lpString); + RpcStringFreeW(&lpString); return TRUE; } diff --git a/reactos/dll/win32/shlwapi/url.c b/reactos/dll/win32/shlwapi/url.c index 19a6e856b43..3707e2fd824 100644 --- a/reactos/dll/win32/shlwapi/url.c +++ b/reactos/dll/win32/shlwapi/url.c @@ -1376,8 +1376,8 @@ INT WINAPI UrlCompareW( * Success: TRUE. lpDest is filled with the computed hash value. * Failure: FALSE, if any argument is invalid. */ -HRESULT WINAPI HashData(LPBYTE lpSrc, DWORD nSrcLen, - LPBYTE lpDest, DWORD nDestLen) +HRESULT WINAPI HashData(const unsigned char *lpSrc, DWORD nSrcLen, + unsigned char *lpDest, DWORD nDestLen) { INT srcCount = nSrcLen - 1, destCount = nDestLen - 1; @@ -1423,7 +1423,7 @@ HRESULT WINAPI UrlHashA(LPCSTR pszUrl, unsigned char *lpDest, DWORD nDestLen) if (IsBadStringPtrA(pszUrl, -1) || IsBadWritePtr(lpDest, nDestLen)) return E_INVALIDARG; - HashData((LPSTR)pszUrl, (int)strlen(pszUrl), lpDest, nDestLen); + HashData((const BYTE*)pszUrl, (int)strlen(pszUrl), lpDest, nDestLen); return S_OK; } diff --git a/reactos/drivers/drivers.rbuild b/reactos/drivers/drivers.rbuild index 14a60c9f5f5..f15a4d3f882 100644 --- a/reactos/drivers/drivers.rbuild +++ b/reactos/drivers/drivers.rbuild @@ -11,9 +11,6 @@ - - - @@ -38,9 +35,6 @@ - - - diff --git a/reactos/drivers/usb/nt4compat/usbdriver/td.h b/reactos/drivers/usb/nt4compat/usbdriver/td.h index f341e557de5..8897c18ceee 100644 --- a/reactos/drivers/usb/nt4compat/usbdriver/td.h +++ b/reactos/drivers/usb/nt4compat/usbdriver/td.h @@ -180,7 +180,9 @@ struct URB; #define UHCI_ITEM_FLAG_TD 0x0 #define UHCI_ITEM_FLAG_QH 0x1 +#ifndef offsetof #define offsetof( s, m ) ( ( ULONG )( &( ( s* )0 )->m ) ) +#endif #define struct_ptr( meMBER_ptr, stRUCT_name, meMBER_name ) \ ( ( stRUCT_name* ) ( ( (CHAR*)( meMBER_ptr ) ) - offsetof( stRUCT_name, meMBER_name ) ) ) diff --git a/reactos/include/ddk/cfgmgr32.h b/reactos/include/ddk/cfgmgr32.h index 9712d3abbb2..b55563f2825 100644 --- a/reactos/include/ddk/cfgmgr32.h +++ b/reactos/include/ddk/cfgmgr32.h @@ -662,8 +662,7 @@ WINAPI CM_Add_IDA( IN DEVINST dnDevInst, IN PSTR pszID, - IN ULONG ulFlags, - IN HMACHINE hMachine); + IN ULONG ulFlags); CMAPI CONFIGRET @@ -689,8 +688,7 @@ WINAPI CM_Add_IDW( IN DEVINST dnDevInst, IN PWSTR pszID, - IN ULONG ulFlags, - IN HMACHINE hMachine); + IN ULONG ulFlags); #ifdef UNICODE #define CM_Add_ID CM_Add_IDW diff --git a/reactos/include/ddk/drmk.h b/reactos/include/ddk/drmk.h index 66fd6e67cab..d5d61119f06 100644 --- a/reactos/include/ddk/drmk.h +++ b/reactos/include/ddk/drmk.h @@ -8,10 +8,6 @@ #ifndef DRMK_H #define DRMK_H -#include -#include -#include - typedef struct { DWORD Flags; diff --git a/reactos/include/ddk/ks.h b/reactos/include/ddk/ks.h index 2faa0fb5a9d..f038f969cc6 100644 --- a/reactos/include/ddk/ks.h +++ b/reactos/include/ddk/ks.h @@ -44,9 +44,6 @@ extern "C" { #define KSDDKAPI DECLSPEC_IMPORT #endif -#include -#include - /* TODO */ #define KSDDKAPI diff --git a/reactos/include/ddk/ntddk.h b/reactos/include/ddk/ntddk.h index e6a721ffa08..b049f287676 100644 --- a/reactos/include/ddk/ntddk.h +++ b/reactos/include/ddk/ntddk.h @@ -37,6 +37,8 @@ #include #include +typedef GUID UUID; + /* Base types, structures and definitions */ typedef short CSHORT; typedef ULONG CLONG; diff --git a/reactos/include/ddk/portcls.h b/reactos/include/ddk/portcls.h index abd1e0090fb..b120b0939ae 100644 --- a/reactos/include/ddk/portcls.h +++ b/reactos/include/ddk/portcls.h @@ -125,9 +125,10 @@ #include -/*#include */ +#include #include #include +#include /* TODO */ #define PORTCLASSAPI EXTERN_C diff --git a/reactos/include/ddk/punknown.h b/reactos/include/ddk/punknown.h index 274a7111f48..77a7b65ba6f 100644 --- a/reactos/include/ddk/punknown.h +++ b/reactos/include/ddk/punknown.h @@ -8,8 +8,8 @@ #ifndef _UNKNOWN_H_ #define _UNKNOWN_H_ -//#include -#include +#include +//#include #define COM_NO_WINDOWS_H #include diff --git a/reactos/include/directory.rbuild b/reactos/include/directory.rbuild index 57b4f070963..fdde2e5ba59 100644 --- a/reactos/include/directory.rbuild +++ b/reactos/include/directory.rbuild @@ -1,3 +1,6 @@ + + + diff --git a/reactos/include/psdk/activscp.h b/reactos/include/psdk/activscp.h new file mode 100644 index 00000000000..0c9a483fa78 --- /dev/null +++ b/reactos/include/psdk/activscp.h @@ -0,0 +1,1345 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\activscp.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_ACTIVSCP_H +#define __WIDL_INCLUDE_PSDK_ACTIVSCP_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#include +typedef enum tagSCRIPTSTATE { + SCRIPTSTATE_UNINITIALIZED = 0, + SCRIPTSTATE_STARTED = 1, + SCRIPTSTATE_CONNECTED = 2, + SCRIPTSTATE_DISCONNECTED = 3, + SCRIPTSTATE_CLOSED = 4, + SCRIPTSTATE_INITIALIZED = 5 +} SCRIPTSTATE; +typedef enum tagSCRIPTTHREADSTATE { + SCRIPTTHREADSTATE_NOTINSCRIPT = 0, + SCRIPTTHREADSTATE_RUNNING = 1 +} SCRIPTTHREADSTATE; +typedef DWORD SCRIPTTHREADID; +#define SCRIPTTHREADID_CURRENT ((SCRIPTTHREADID)-1) +#define SCRIPTTHREADID_BASE ((SCRIPTTHREADID)-2) +#define SCRIPTTHREADID_ALL ((SCRIPTTHREADID)-3) +#define SCRIPTITEM_ISVISIBLE 0x00000002 +#define SCRIPTITEM_ISSOURCE 0x00000004 +#define SCRIPTITEM_GLOBALMEMBERS 0x00000008 +#define SCRIPTITEM_ISPERSISTENT 0x00000040 +#define SCRIPTITEM_CODEONLY 0x00000200 +#define SCRIPTITEM_NOCODE 0x00000400 +#define SCRIPTITEM_ALL_FLAGS (SCRIPTITEM_ISSOURCE | \ + SCRIPTITEM_ISVISIBLE | \ + SCRIPTITEM_ISPERSISTENT | \ + SCRIPTITEM_GLOBALMEMBERS | \ + SCRIPTITEM_NOCODE | \ + SCRIPTITEM_CODEONLY) +#define SCRIPTTYPELIB_ISCONTROL 0x00000010 +#define SCRIPTTYPELIB_ISPERSISTENT 0x00000040 +#define SCRIPTTYPELIB_ALL_FLAGS (SCRIPTTEXT_ISCONTROL | SCRIPTTYPELIB_ISPERSISTENT) +#define SCRIPTTEXT_DELAYEXECUTION 0x00000001 +#define SCRIPTTEXT_ISVISIBLE 0x00000002 +#define SCRIPTTEXT_ISEXPRESSION 0x00000020 +#define SCRIPTTEXT_ISPERSISTENT 0x00000040 +#define SCRIPTTEXT_HOSTMANAGESSOURCE 0x00000080 +#define SCRIPTTEXT_ALL_FLAGS (SCRIPTTEXT_DELAYEXECUTION | \ + SCRIPTTEXT_ISVISIBLE | \ + SCRIPTTEXT_ISEXPRESSION | \ + SCRIPTTEXT_ISPERSISTENT | \ + SCRIPTTEXT_HOSTMANAGESSOURCE) +#define SCRIPTPROC_HOSTMANAGESSOURCE 0x00000080 +#define SCRIPTPROC_IMPLICIT_THIS 0x00000100 +#define SCRIPTPROC_IMPLICIT_PARENTS 0x00000200 +#define SCRIPTPROC_ALL_FLAGS (SCRIPTPROC_HOSTMANAGESSOURCE | \ + SCRIPTPROC_IMPLICIT_THIS | \ + SCRIPTPROC_IMPLICIT_PARENTS) +#define SCRIPTINFO_IUNKNOWN 0x00000001 +#define SCRIPTINFO_ITYPEINFO 0x00000002 +#define SCRIPTINFO_ALL_FLAGS (SCRIPTINFO_IUNKNOWN | SCRIPTINFO_ITYPEINFO) +#define SCRIPTINTERRUPT_DEBUG 0x00000001 +#define SCRIPTINTERRUPT_RAISEEXCEPTION 0x00000002 +#define SCRIPTINTERRUPT_ALL_FLAGS (SCRIPTINTERRUPT_DEBUG | SCRIPTINTERRUPT_RAISEEXCEPTION) +#define SCRIPTSTAT_STATEMENT_COUNT 1 +#define SCRIPTSTAT_INSTRUCTION_COUNT 2 +#define SCRIPTSTAT_INTSTRUCTION_TIME 3 +#define SCRIPTSTAT_TOTAL_TIME 4 +#ifndef __IActiveScriptError_FWD_DEFINED__ +#define __IActiveScriptError_FWD_DEFINED__ +typedef interface IActiveScriptError IActiveScriptError; +#endif + +/***************************************************************************** + * IActiveScriptError interface + */ +#ifndef __IActiveScriptError_INTERFACE_DEFINED__ +#define __IActiveScriptError_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActiveScriptError, 0xeae1ba61, 0xa4ed, 0x11cf, 0x8f,0x20, 0x00,0x80,0x5f,0x2c,0xd0,0x64); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IActiveScriptError : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetExceptionInfo( + EXCEPINFO* pexcepinfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourcePosition( + DWORD* pdwSourceContext, + ULONG* pulLineNumber, + LONG* plCharacterPosition) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceLineText( + BSTR* pbstrSourceLine) = 0; + +}; +#else +typedef struct IActiveScriptErrorVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActiveScriptError* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActiveScriptError* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActiveScriptError* This); + + /*** IActiveScriptError methods ***/ + HRESULT (STDMETHODCALLTYPE *GetExceptionInfo)( + IActiveScriptError* This, + EXCEPINFO* pexcepinfo); + + HRESULT (STDMETHODCALLTYPE *GetSourcePosition)( + IActiveScriptError* This, + DWORD* pdwSourceContext, + ULONG* pulLineNumber, + LONG* plCharacterPosition); + + HRESULT (STDMETHODCALLTYPE *GetSourceLineText)( + IActiveScriptError* This, + BSTR* pbstrSourceLine); + + END_INTERFACE +} IActiveScriptErrorVtbl; +interface IActiveScriptError { + const IActiveScriptErrorVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IActiveScriptError_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IActiveScriptError_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IActiveScriptError_Release(p) (p)->lpVtbl->Release(p) +/*** IActiveScriptError methods ***/ +#define IActiveScriptError_GetExceptionInfo(p,a) (p)->lpVtbl->GetExceptionInfo(p,a) +#define IActiveScriptError_GetSourcePosition(p,a,b,c) (p)->lpVtbl->GetSourcePosition(p,a,b,c) +#define IActiveScriptError_GetSourceLineText(p,a) (p)->lpVtbl->GetSourceLineText(p,a) +#endif + +#endif + +HRESULT CALLBACK IActiveScriptError_GetExceptionInfo_Proxy( + IActiveScriptError* This, + EXCEPINFO* pexcepinfo); +void __RPC_STUB IActiveScriptError_GetExceptionInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptError_GetSourcePosition_Proxy( + IActiveScriptError* This, + DWORD* pdwSourceContext, + ULONG* pulLineNumber, + LONG* plCharacterPosition); +void __RPC_STUB IActiveScriptError_GetSourcePosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptError_GetSourceLineText_Proxy( + IActiveScriptError* This, + BSTR* pbstrSourceLine); +void __RPC_STUB IActiveScriptError_GetSourceLineText_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IActiveScriptError_INTERFACE_DEFINED__ */ + +#ifndef __IActiveScriptSite_FWD_DEFINED__ +#define __IActiveScriptSite_FWD_DEFINED__ +typedef interface IActiveScriptSite IActiveScriptSite; +#endif + +/***************************************************************************** + * IActiveScriptSite interface + */ +#ifndef __IActiveScriptSite_INTERFACE_DEFINED__ +#define __IActiveScriptSite_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActiveScriptSite, 0xdb01a1e3, 0xa42b, 0x11cf, 0x8f,0x20, 0x00,0x80,0x5f,0x2c,0xd0,0x64); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IActiveScriptSite : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetLCID( + LCID* plcid) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetItemInfo( + LPCOLESTR pstrName, + DWORD dwReturnMask, + IUnknown** ppiunkItem, + ITypeInfo** ppti) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDocVersionString( + BSTR* pbstrVersion) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnScriptTerminate( + const VARIANT* pvarResult, + const EXCEPINFO* pexcepinfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnStateChange( + SCRIPTSTATE ssScriptState) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnScriptError( + IActiveScriptError* pscripterror) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnEnterScript( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnLeaveScript( + ) = 0; + +}; +#else +typedef struct IActiveScriptSiteVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActiveScriptSite* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActiveScriptSite* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActiveScriptSite* This); + + /*** IActiveScriptSite methods ***/ + HRESULT (STDMETHODCALLTYPE *GetLCID)( + IActiveScriptSite* This, + LCID* plcid); + + HRESULT (STDMETHODCALLTYPE *GetItemInfo)( + IActiveScriptSite* This, + LPCOLESTR pstrName, + DWORD dwReturnMask, + IUnknown** ppiunkItem, + ITypeInfo** ppti); + + HRESULT (STDMETHODCALLTYPE *GetDocVersionString)( + IActiveScriptSite* This, + BSTR* pbstrVersion); + + HRESULT (STDMETHODCALLTYPE *OnScriptTerminate)( + IActiveScriptSite* This, + const VARIANT* pvarResult, + const EXCEPINFO* pexcepinfo); + + HRESULT (STDMETHODCALLTYPE *OnStateChange)( + IActiveScriptSite* This, + SCRIPTSTATE ssScriptState); + + HRESULT (STDMETHODCALLTYPE *OnScriptError)( + IActiveScriptSite* This, + IActiveScriptError* pscripterror); + + HRESULT (STDMETHODCALLTYPE *OnEnterScript)( + IActiveScriptSite* This); + + HRESULT (STDMETHODCALLTYPE *OnLeaveScript)( + IActiveScriptSite* This); + + END_INTERFACE +} IActiveScriptSiteVtbl; +interface IActiveScriptSite { + const IActiveScriptSiteVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IActiveScriptSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IActiveScriptSite_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IActiveScriptSite_Release(p) (p)->lpVtbl->Release(p) +/*** IActiveScriptSite methods ***/ +#define IActiveScriptSite_GetLCID(p,a) (p)->lpVtbl->GetLCID(p,a) +#define IActiveScriptSite_GetItemInfo(p,a,b,c,d) (p)->lpVtbl->GetItemInfo(p,a,b,c,d) +#define IActiveScriptSite_GetDocVersionString(p,a) (p)->lpVtbl->GetDocVersionString(p,a) +#define IActiveScriptSite_OnScriptTerminate(p,a,b) (p)->lpVtbl->OnScriptTerminate(p,a,b) +#define IActiveScriptSite_OnStateChange(p,a) (p)->lpVtbl->OnStateChange(p,a) +#define IActiveScriptSite_OnScriptError(p,a) (p)->lpVtbl->OnScriptError(p,a) +#define IActiveScriptSite_OnEnterScript(p) (p)->lpVtbl->OnEnterScript(p) +#define IActiveScriptSite_OnLeaveScript(p) (p)->lpVtbl->OnLeaveScript(p) +#endif + +#endif + +HRESULT CALLBACK IActiveScriptSite_GetLCID_Proxy( + IActiveScriptSite* This, + LCID* plcid); +void __RPC_STUB IActiveScriptSite_GetLCID_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptSite_GetItemInfo_Proxy( + IActiveScriptSite* This, + LPCOLESTR pstrName, + DWORD dwReturnMask, + IUnknown** ppiunkItem, + ITypeInfo** ppti); +void __RPC_STUB IActiveScriptSite_GetItemInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptSite_GetDocVersionString_Proxy( + IActiveScriptSite* This, + BSTR* pbstrVersion); +void __RPC_STUB IActiveScriptSite_GetDocVersionString_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptSite_OnScriptTerminate_Proxy( + IActiveScriptSite* This, + const VARIANT* pvarResult, + const EXCEPINFO* pexcepinfo); +void __RPC_STUB IActiveScriptSite_OnScriptTerminate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptSite_OnStateChange_Proxy( + IActiveScriptSite* This, + SCRIPTSTATE ssScriptState); +void __RPC_STUB IActiveScriptSite_OnStateChange_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptSite_OnScriptError_Proxy( + IActiveScriptSite* This, + IActiveScriptError* pscripterror); +void __RPC_STUB IActiveScriptSite_OnScriptError_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptSite_OnEnterScript_Proxy( + IActiveScriptSite* This); +void __RPC_STUB IActiveScriptSite_OnEnterScript_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptSite_OnLeaveScript_Proxy( + IActiveScriptSite* This); +void __RPC_STUB IActiveScriptSite_OnLeaveScript_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IActiveScriptSite_INTERFACE_DEFINED__ */ + +typedef IActiveScriptSite *PIActiveScriptSite; +#ifndef __IActiveScriptSiteWindow_FWD_DEFINED__ +#define __IActiveScriptSiteWindow_FWD_DEFINED__ +typedef interface IActiveScriptSiteWindow IActiveScriptSiteWindow; +#endif + +/***************************************************************************** + * IActiveScriptSiteWindow interface + */ +#ifndef __IActiveScriptSiteWindow_INTERFACE_DEFINED__ +#define __IActiveScriptSiteWindow_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActiveScriptSiteWindow, 0xd10f6761, 0x83e9, 0x11cf, 0x8f,0x20, 0x00,0x80,0x5f,0x2c,0xd0,0x64); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IActiveScriptSiteWindow : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetWindow( + HWND* phwnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableModeless( + BOOL fEnable) = 0; + +}; +#else +typedef struct IActiveScriptSiteWindowVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActiveScriptSiteWindow* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActiveScriptSiteWindow* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActiveScriptSiteWindow* This); + + /*** IActiveScriptSiteWindow methods ***/ + HRESULT (STDMETHODCALLTYPE *GetWindow)( + IActiveScriptSiteWindow* This, + HWND* phwnd); + + HRESULT (STDMETHODCALLTYPE *EnableModeless)( + IActiveScriptSiteWindow* This, + BOOL fEnable); + + END_INTERFACE +} IActiveScriptSiteWindowVtbl; +interface IActiveScriptSiteWindow { + const IActiveScriptSiteWindowVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IActiveScriptSiteWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IActiveScriptSiteWindow_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IActiveScriptSiteWindow_Release(p) (p)->lpVtbl->Release(p) +/*** IActiveScriptSiteWindow methods ***/ +#define IActiveScriptSiteWindow_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) +#define IActiveScriptSiteWindow_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a) +#endif + +#endif + +HRESULT CALLBACK IActiveScriptSiteWindow_GetWindow_Proxy( + IActiveScriptSiteWindow* This, + HWND* phwnd); +void __RPC_STUB IActiveScriptSiteWindow_GetWindow_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptSiteWindow_EnableModeless_Proxy( + IActiveScriptSiteWindow* This, + BOOL fEnable); +void __RPC_STUB IActiveScriptSiteWindow_EnableModeless_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IActiveScriptSiteWindow_INTERFACE_DEFINED__ */ + +#ifndef __IActiveScriptSiteInterruptPoll_FWD_DEFINED__ +#define __IActiveScriptSiteInterruptPoll_FWD_DEFINED__ +typedef interface IActiveScriptSiteInterruptPoll IActiveScriptSiteInterruptPoll; +#endif + +/***************************************************************************** + * IActiveScriptSiteInterruptPoll interface + */ +#ifndef __IActiveScriptSiteInterruptPoll_INTERFACE_DEFINED__ +#define __IActiveScriptSiteInterruptPoll_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActiveScriptSiteInterruptPoll, 0x539698a0, 0xcdca, 0x11cf, 0xa5,0xeb, 0x00,0xaa,0x00,0x47,0xa0,0x63); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IActiveScriptSiteInterruptPoll : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE QueryContinue( + ) = 0; + +}; +#else +typedef struct IActiveScriptSiteInterruptPollVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActiveScriptSiteInterruptPoll* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActiveScriptSiteInterruptPoll* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActiveScriptSiteInterruptPoll* This); + + /*** IActiveScriptSiteInterruptPoll methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryContinue)( + IActiveScriptSiteInterruptPoll* This); + + END_INTERFACE +} IActiveScriptSiteInterruptPollVtbl; +interface IActiveScriptSiteInterruptPoll { + const IActiveScriptSiteInterruptPollVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IActiveScriptSiteInterruptPoll_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IActiveScriptSiteInterruptPoll_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IActiveScriptSiteInterruptPoll_Release(p) (p)->lpVtbl->Release(p) +/*** IActiveScriptSiteInterruptPoll methods ***/ +#define IActiveScriptSiteInterruptPoll_QueryContinue(p) (p)->lpVtbl->QueryContinue(p) +#endif + +#endif + +HRESULT CALLBACK IActiveScriptSiteInterruptPoll_QueryContinue_Proxy( + IActiveScriptSiteInterruptPoll* This); +void __RPC_STUB IActiveScriptSiteInterruptPoll_QueryContinue_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IActiveScriptSiteInterruptPoll_INTERFACE_DEFINED__ */ + +#ifndef __IActiveScript_FWD_DEFINED__ +#define __IActiveScript_FWD_DEFINED__ +typedef interface IActiveScript IActiveScript; +#endif + +/***************************************************************************** + * IActiveScript interface + */ +#ifndef __IActiveScript_INTERFACE_DEFINED__ +#define __IActiveScript_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActiveScript, 0xbb1a2ae1, 0xa4f9, 0x11cf, 0x8f,0x20, 0x00,0x80,0x5f,0x2c,0xd0,0x64); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IActiveScript : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE SetScriptSite( + IActiveScriptSite* pass) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScriptSite( + REFIID riid, + void** ppvObject) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScriptState( + SCRIPTSTATE ss) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScriptState( + SCRIPTSTATE* pssState) = 0; + + virtual HRESULT STDMETHODCALLTYPE Close( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddNamedItem( + LPCOLESTR pstrName, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddTypeLib( + REFGUID rguidTypeLib, + DWORD dwMajor, + DWORD dwMinor, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScriptDispatch( + LPCOLESTR pstrItemName, + IDispatch** ppdisp) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentScriptThreadID( + SCRIPTTHREADID* pstidThread) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScriptThreadID( + DWORD dwWin32ThreadId, + SCRIPTTHREADID* pstidThread) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScriptThreadState( + SCRIPTTHREADID stidThread, + SCRIPTTHREADSTATE* pstsState) = 0; + + virtual HRESULT STDMETHODCALLTYPE InterruptScriptThread( + SCRIPTTHREADID stidThread, + const EXCEPINFO* pexcepinfo, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IActiveScript** ppscript) = 0; + +}; +#else +typedef struct IActiveScriptVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActiveScript* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActiveScript* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActiveScript* This); + + /*** IActiveScript methods ***/ + HRESULT (STDMETHODCALLTYPE *SetScriptSite)( + IActiveScript* This, + IActiveScriptSite* pass); + + HRESULT (STDMETHODCALLTYPE *GetScriptSite)( + IActiveScript* This, + REFIID riid, + void** ppvObject); + + HRESULT (STDMETHODCALLTYPE *SetScriptState)( + IActiveScript* This, + SCRIPTSTATE ss); + + HRESULT (STDMETHODCALLTYPE *GetScriptState)( + IActiveScript* This, + SCRIPTSTATE* pssState); + + HRESULT (STDMETHODCALLTYPE *Close)( + IActiveScript* This); + + HRESULT (STDMETHODCALLTYPE *AddNamedItem)( + IActiveScript* This, + LPCOLESTR pstrName, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *AddTypeLib)( + IActiveScript* This, + REFGUID rguidTypeLib, + DWORD dwMajor, + DWORD dwMinor, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *GetScriptDispatch)( + IActiveScript* This, + LPCOLESTR pstrItemName, + IDispatch** ppdisp); + + HRESULT (STDMETHODCALLTYPE *GetCurrentScriptThreadID)( + IActiveScript* This, + SCRIPTTHREADID* pstidThread); + + HRESULT (STDMETHODCALLTYPE *GetScriptThreadID)( + IActiveScript* This, + DWORD dwWin32ThreadId, + SCRIPTTHREADID* pstidThread); + + HRESULT (STDMETHODCALLTYPE *GetScriptThreadState)( + IActiveScript* This, + SCRIPTTHREADID stidThread, + SCRIPTTHREADSTATE* pstsState); + + HRESULT (STDMETHODCALLTYPE *InterruptScriptThread)( + IActiveScript* This, + SCRIPTTHREADID stidThread, + const EXCEPINFO* pexcepinfo, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IActiveScript* This, + IActiveScript** ppscript); + + END_INTERFACE +} IActiveScriptVtbl; +interface IActiveScript { + const IActiveScriptVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IActiveScript_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IActiveScript_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IActiveScript_Release(p) (p)->lpVtbl->Release(p) +/*** IActiveScript methods ***/ +#define IActiveScript_SetScriptSite(p,a) (p)->lpVtbl->SetScriptSite(p,a) +#define IActiveScript_GetScriptSite(p,a,b) (p)->lpVtbl->GetScriptSite(p,a,b) +#define IActiveScript_SetScriptState(p,a) (p)->lpVtbl->SetScriptState(p,a) +#define IActiveScript_GetScriptState(p,a) (p)->lpVtbl->GetScriptState(p,a) +#define IActiveScript_Close(p) (p)->lpVtbl->Close(p) +#define IActiveScript_AddNamedItem(p,a,b) (p)->lpVtbl->AddNamedItem(p,a,b) +#define IActiveScript_AddTypeLib(p,a,b,c,d) (p)->lpVtbl->AddTypeLib(p,a,b,c,d) +#define IActiveScript_GetScriptDispatch(p,a,b) (p)->lpVtbl->GetScriptDispatch(p,a,b) +#define IActiveScript_GetCurrentScriptThreadID(p,a) (p)->lpVtbl->GetCurrentScriptThreadID(p,a) +#define IActiveScript_GetScriptThreadID(p,a,b) (p)->lpVtbl->GetScriptThreadID(p,a,b) +#define IActiveScript_GetScriptThreadState(p,a,b) (p)->lpVtbl->GetScriptThreadState(p,a,b) +#define IActiveScript_InterruptScriptThread(p,a,b,c) (p)->lpVtbl->InterruptScriptThread(p,a,b,c) +#define IActiveScript_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#endif + +HRESULT CALLBACK IActiveScript_SetScriptSite_Proxy( + IActiveScript* This, + IActiveScriptSite* pass); +void __RPC_STUB IActiveScript_SetScriptSite_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_GetScriptSite_Proxy( + IActiveScript* This, + REFIID riid, + void** ppvObject); +void __RPC_STUB IActiveScript_GetScriptSite_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_SetScriptState_Proxy( + IActiveScript* This, + SCRIPTSTATE ss); +void __RPC_STUB IActiveScript_SetScriptState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_GetScriptState_Proxy( + IActiveScript* This, + SCRIPTSTATE* pssState); +void __RPC_STUB IActiveScript_GetScriptState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_Close_Proxy( + IActiveScript* This); +void __RPC_STUB IActiveScript_Close_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_AddNamedItem_Proxy( + IActiveScript* This, + LPCOLESTR pstrName, + DWORD dwFlags); +void __RPC_STUB IActiveScript_AddNamedItem_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_AddTypeLib_Proxy( + IActiveScript* This, + REFGUID rguidTypeLib, + DWORD dwMajor, + DWORD dwMinor, + DWORD dwFlags); +void __RPC_STUB IActiveScript_AddTypeLib_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_GetScriptDispatch_Proxy( + IActiveScript* This, + LPCOLESTR pstrItemName, + IDispatch** ppdisp); +void __RPC_STUB IActiveScript_GetScriptDispatch_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_GetCurrentScriptThreadID_Proxy( + IActiveScript* This, + SCRIPTTHREADID* pstidThread); +void __RPC_STUB IActiveScript_GetCurrentScriptThreadID_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_GetScriptThreadID_Proxy( + IActiveScript* This, + DWORD dwWin32ThreadId, + SCRIPTTHREADID* pstidThread); +void __RPC_STUB IActiveScript_GetScriptThreadID_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_GetScriptThreadState_Proxy( + IActiveScript* This, + SCRIPTTHREADID stidThread, + SCRIPTTHREADSTATE* pstsState); +void __RPC_STUB IActiveScript_GetScriptThreadState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_InterruptScriptThread_Proxy( + IActiveScript* This, + SCRIPTTHREADID stidThread, + const EXCEPINFO* pexcepinfo, + DWORD dwFlags); +void __RPC_STUB IActiveScript_InterruptScriptThread_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScript_Clone_Proxy( + IActiveScript* This, + IActiveScript** ppscript); +void __RPC_STUB IActiveScript_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IActiveScript_INTERFACE_DEFINED__ */ + +typedef IActiveScript *PIActiveScript; +#ifndef __IActiveScriptParse_FWD_DEFINED__ +#define __IActiveScriptParse_FWD_DEFINED__ +typedef interface IActiveScriptParse IActiveScriptParse; +#endif + +/***************************************************************************** + * IActiveScriptParse interface + */ +#ifndef __IActiveScriptParse_INTERFACE_DEFINED__ +#define __IActiveScriptParse_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActiveScriptParse, 0xbb1a2ae2, 0xa4f9, 0x11cf, 0x8f,0x20, 0x00,0x80,0x5f,0x2c,0xd0,0x64); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IActiveScriptParse : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE InitNew( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddScriptlet( + LPCOLESTR pstrDefaultName, + LPCOLESTR pstrCode, + LPCOLESTR pstrItemName, + LPCOLESTR pstrSubItemName, + LPCOLESTR pstrEventName, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + BSTR* pbstrName, + EXCEPINFO* pexcepinfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE ParseScriptText( + LPCOLESTR pstrCode, + LPCOLESTR pstrItemName, + IUnknown* punkContext, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + VARIANT* pvarResult, + EXCEPINFO* pexcepinfo) = 0; + +}; +#else +typedef struct IActiveScriptParseVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActiveScriptParse* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActiveScriptParse* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActiveScriptParse* This); + + /*** IActiveScriptParse methods ***/ + HRESULT (STDMETHODCALLTYPE *InitNew)( + IActiveScriptParse* This); + + HRESULT (STDMETHODCALLTYPE *AddScriptlet)( + IActiveScriptParse* This, + LPCOLESTR pstrDefaultName, + LPCOLESTR pstrCode, + LPCOLESTR pstrItemName, + LPCOLESTR pstrSubItemName, + LPCOLESTR pstrEventName, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + BSTR* pbstrName, + EXCEPINFO* pexcepinfo); + + HRESULT (STDMETHODCALLTYPE *ParseScriptText)( + IActiveScriptParse* This, + LPCOLESTR pstrCode, + LPCOLESTR pstrItemName, + IUnknown* punkContext, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + VARIANT* pvarResult, + EXCEPINFO* pexcepinfo); + + END_INTERFACE +} IActiveScriptParseVtbl; +interface IActiveScriptParse { + const IActiveScriptParseVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IActiveScriptParse_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IActiveScriptParse_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IActiveScriptParse_Release(p) (p)->lpVtbl->Release(p) +/*** IActiveScriptParse methods ***/ +#define IActiveScriptParse_InitNew(p) (p)->lpVtbl->InitNew(p) +#define IActiveScriptParse_AddScriptlet(p,a,b,c,d,e,f,g,h,i,j,k) (p)->lpVtbl->AddScriptlet(p,a,b,c,d,e,f,g,h,i,j,k) +#define IActiveScriptParse_ParseScriptText(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->ParseScriptText(p,a,b,c,d,e,f,g,h,i) +#endif + +#endif + +HRESULT CALLBACK IActiveScriptParse_InitNew_Proxy( + IActiveScriptParse* This); +void __RPC_STUB IActiveScriptParse_InitNew_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptParse_AddScriptlet_Proxy( + IActiveScriptParse* This, + LPCOLESTR pstrDefaultName, + LPCOLESTR pstrCode, + LPCOLESTR pstrItemName, + LPCOLESTR pstrSubItemName, + LPCOLESTR pstrEventName, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + BSTR* pbstrName, + EXCEPINFO* pexcepinfo); +void __RPC_STUB IActiveScriptParse_AddScriptlet_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptParse_ParseScriptText_Proxy( + IActiveScriptParse* This, + LPCOLESTR pstrCode, + LPCOLESTR pstrItemName, + IUnknown* punkContext, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + VARIANT* pvarResult, + EXCEPINFO* pexcepinfo); +void __RPC_STUB IActiveScriptParse_ParseScriptText_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IActiveScriptParse_INTERFACE_DEFINED__ */ + +typedef IActiveScriptParse *PIActiveScriptParse; +#ifndef __IActiveScriptParseProcedureOld_FWD_DEFINED__ +#define __IActiveScriptParseProcedureOld_FWD_DEFINED__ +typedef interface IActiveScriptParseProcedureOld IActiveScriptParseProcedureOld; +#endif + +/***************************************************************************** + * IActiveScriptParseProcedureOld interface + */ +#ifndef __IActiveScriptParseProcedureOld_INTERFACE_DEFINED__ +#define __IActiveScriptParseProcedureOld_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActiveScriptParseProcedureOld, 0x1cff0050, 0x6fdd, 0x11d0, 0x93,0x28, 0x00,0xa0,0xc9,0x0d,0xca,0xa9); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IActiveScriptParseProcedureOld : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE ParseProcedureText( + LPCOLESTR pstrCode, + LPCOLESTR pstrFormalParams, + LPCOLESTR pstrItemName, + IUnknown* punkContext, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + IDispatch** ppdisp) = 0; + +}; +#else +typedef struct IActiveScriptParseProcedureOldVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActiveScriptParseProcedureOld* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActiveScriptParseProcedureOld* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActiveScriptParseProcedureOld* This); + + /*** IActiveScriptParseProcedureOld methods ***/ + HRESULT (STDMETHODCALLTYPE *ParseProcedureText)( + IActiveScriptParseProcedureOld* This, + LPCOLESTR pstrCode, + LPCOLESTR pstrFormalParams, + LPCOLESTR pstrItemName, + IUnknown* punkContext, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + IDispatch** ppdisp); + + END_INTERFACE +} IActiveScriptParseProcedureOldVtbl; +interface IActiveScriptParseProcedureOld { + const IActiveScriptParseProcedureOldVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IActiveScriptParseProcedureOld_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IActiveScriptParseProcedureOld_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IActiveScriptParseProcedureOld_Release(p) (p)->lpVtbl->Release(p) +/*** IActiveScriptParseProcedureOld methods ***/ +#define IActiveScriptParseProcedureOld_ParseProcedureText(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->ParseProcedureText(p,a,b,c,d,e,f,g,h,i) +#endif + +#endif + +HRESULT CALLBACK IActiveScriptParseProcedureOld_ParseProcedureText_Proxy( + IActiveScriptParseProcedureOld* This, + LPCOLESTR pstrCode, + LPCOLESTR pstrFormalParams, + LPCOLESTR pstrItemName, + IUnknown* punkContext, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + IDispatch** ppdisp); +void __RPC_STUB IActiveScriptParseProcedureOld_ParseProcedureText_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IActiveScriptParseProcedureOld_INTERFACE_DEFINED__ */ + +#ifndef __IActiveScriptParseProcedure_FWD_DEFINED__ +#define __IActiveScriptParseProcedure_FWD_DEFINED__ +typedef interface IActiveScriptParseProcedure IActiveScriptParseProcedure; +#endif + +/***************************************************************************** + * IActiveScriptParseProcedure interface + */ +#ifndef __IActiveScriptParseProcedure_INTERFACE_DEFINED__ +#define __IActiveScriptParseProcedure_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActiveScriptParseProcedure, 0xaa5b6a80, 0xb834, 0x11d0, 0x93,0x2f, 0x00,0xa0,0xc9,0x0d,0xca,0xa9); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IActiveScriptParseProcedure : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE ParseProcedureText( + LPCOLESTR pstrCode, + LPCOLESTR pstrFormalParams, + LPCOLESTR pstrProcedureName, + LPCOLESTR pstrItemName, + IUnknown* punkContext, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + IDispatch** ppdisp) = 0; + +}; +#else +typedef struct IActiveScriptParseProcedureVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActiveScriptParseProcedure* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActiveScriptParseProcedure* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActiveScriptParseProcedure* This); + + /*** IActiveScriptParseProcedure methods ***/ + HRESULT (STDMETHODCALLTYPE *ParseProcedureText)( + IActiveScriptParseProcedure* This, + LPCOLESTR pstrCode, + LPCOLESTR pstrFormalParams, + LPCOLESTR pstrProcedureName, + LPCOLESTR pstrItemName, + IUnknown* punkContext, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + IDispatch** ppdisp); + + END_INTERFACE +} IActiveScriptParseProcedureVtbl; +interface IActiveScriptParseProcedure { + const IActiveScriptParseProcedureVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IActiveScriptParseProcedure_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IActiveScriptParseProcedure_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IActiveScriptParseProcedure_Release(p) (p)->lpVtbl->Release(p) +/*** IActiveScriptParseProcedure methods ***/ +#define IActiveScriptParseProcedure_ParseProcedureText(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->ParseProcedureText(p,a,b,c,d,e,f,g,h,i,j) +#endif + +#endif + +HRESULT CALLBACK IActiveScriptParseProcedure_ParseProcedureText_Proxy( + IActiveScriptParseProcedure* This, + LPCOLESTR pstrCode, + LPCOLESTR pstrFormalParams, + LPCOLESTR pstrProcedureName, + LPCOLESTR pstrItemName, + IUnknown* punkContext, + LPCOLESTR pstrDelimiter, + DWORD dwSourceContextCookie, + ULONG ulStartingLineNumber, + DWORD dwFlags, + IDispatch** ppdisp); +void __RPC_STUB IActiveScriptParseProcedure_ParseProcedureText_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IActiveScriptParseProcedure_INTERFACE_DEFINED__ */ + +#ifndef __IBindEventHandler_FWD_DEFINED__ +#define __IBindEventHandler_FWD_DEFINED__ +typedef interface IBindEventHandler IBindEventHandler; +#endif + +/***************************************************************************** + * IBindEventHandler interface + */ +#ifndef __IBindEventHandler_INTERFACE_DEFINED__ +#define __IBindEventHandler_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IBindEventHandler, 0x63cdbcb0, 0xc1b1, 0x11d0, 0x93,0x36, 0x00,0xa0,0xc9,0x0d,0xca,0xa9); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IBindEventHandler : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE BindHandler( + LPCOLESTR pstrEvent, + IDispatch* pdisp) = 0; + +}; +#else +typedef struct IBindEventHandlerVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IBindEventHandler* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IBindEventHandler* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IBindEventHandler* This); + + /*** IBindEventHandler methods ***/ + HRESULT (STDMETHODCALLTYPE *BindHandler)( + IBindEventHandler* This, + LPCOLESTR pstrEvent, + IDispatch* pdisp); + + END_INTERFACE +} IBindEventHandlerVtbl; +interface IBindEventHandler { + const IBindEventHandlerVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IBindEventHandler_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IBindEventHandler_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IBindEventHandler_Release(p) (p)->lpVtbl->Release(p) +/*** IBindEventHandler methods ***/ +#define IBindEventHandler_BindHandler(p,a,b) (p)->lpVtbl->BindHandler(p,a,b) +#endif + +#endif + +HRESULT CALLBACK IBindEventHandler_BindHandler_Proxy( + IBindEventHandler* This, + LPCOLESTR pstrEvent, + IDispatch* pdisp); +void __RPC_STUB IBindEventHandler_BindHandler_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IBindEventHandler_INTERFACE_DEFINED__ */ + +#ifndef __IActiveScriptStats_FWD_DEFINED__ +#define __IActiveScriptStats_FWD_DEFINED__ +typedef interface IActiveScriptStats IActiveScriptStats; +#endif + +/***************************************************************************** + * IActiveScriptStats interface + */ +#ifndef __IActiveScriptStats_INTERFACE_DEFINED__ +#define __IActiveScriptStats_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActiveScriptStats, 0xb8da6310, 0xe19b, 0x11d0, 0x93,0x3c, 0x00,0xa0,0xc9,0x0d,0xca,0xa9); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IActiveScriptStats : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetStat( + DWORD stid, + ULONG* pluHi, + ULONG* pluLo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStatEx( + REFGUID guid, + ULONG* pluHi, + ULONG* pluLo) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResetStats( + ) = 0; + +}; +#else +typedef struct IActiveScriptStatsVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActiveScriptStats* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActiveScriptStats* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActiveScriptStats* This); + + /*** IActiveScriptStats methods ***/ + HRESULT (STDMETHODCALLTYPE *GetStat)( + IActiveScriptStats* This, + DWORD stid, + ULONG* pluHi, + ULONG* pluLo); + + HRESULT (STDMETHODCALLTYPE *GetStatEx)( + IActiveScriptStats* This, + REFGUID guid, + ULONG* pluHi, + ULONG* pluLo); + + HRESULT (STDMETHODCALLTYPE *ResetStats)( + IActiveScriptStats* This); + + END_INTERFACE +} IActiveScriptStatsVtbl; +interface IActiveScriptStats { + const IActiveScriptStatsVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IActiveScriptStats_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IActiveScriptStats_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IActiveScriptStats_Release(p) (p)->lpVtbl->Release(p) +/*** IActiveScriptStats methods ***/ +#define IActiveScriptStats_GetStat(p,a,b,c) (p)->lpVtbl->GetStat(p,a,b,c) +#define IActiveScriptStats_GetStatEx(p,a,b,c) (p)->lpVtbl->GetStatEx(p,a,b,c) +#define IActiveScriptStats_ResetStats(p) (p)->lpVtbl->ResetStats(p) +#endif + +#endif + +HRESULT CALLBACK IActiveScriptStats_GetStat_Proxy( + IActiveScriptStats* This, + DWORD stid, + ULONG* pluHi, + ULONG* pluLo); +void __RPC_STUB IActiveScriptStats_GetStat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptStats_GetStatEx_Proxy( + IActiveScriptStats* This, + REFGUID guid, + ULONG* pluHi, + ULONG* pluLo); +void __RPC_STUB IActiveScriptStats_GetStatEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IActiveScriptStats_ResetStats_Proxy( + IActiveScriptStats* This); +void __RPC_STUB IActiveScriptStats_ResetStats_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IActiveScriptStats_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + +unsigned long __RPC_USER HWND_UserSize (unsigned long *, unsigned long, HWND *); +unsigned char * __RPC_USER HWND_UserMarshal (unsigned long *, unsigned char *, HWND *); +unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND *); +void __RPC_USER HWND_UserFree (unsigned long *, HWND *); +unsigned long __RPC_USER VARIANT_UserSize (unsigned long *, unsigned long, VARIANT *); +unsigned char * __RPC_USER VARIANT_UserMarshal (unsigned long *, unsigned char *, VARIANT *); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT *); +void __RPC_USER VARIANT_UserFree (unsigned long *, VARIANT *); +unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); +unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); +void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_ACTIVSCP_H */ diff --git a/reactos/include/psdk/activscp.idl b/reactos/include/psdk/activscp.idl new file mode 100644 index 00000000000..1ccfc3dfcec --- /dev/null +++ b/reactos/include/psdk/activscp.idl @@ -0,0 +1,355 @@ +/* + * Copyright 2004 Kevin Koltzau + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "ocidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; + +typedef enum tagSCRIPTSTATE { + SCRIPTSTATE_UNINITIALIZED = 0, + SCRIPTSTATE_STARTED = 1, + SCRIPTSTATE_CONNECTED = 2, + SCRIPTSTATE_DISCONNECTED = 3, + SCRIPTSTATE_CLOSED = 4, + SCRIPTSTATE_INITIALIZED = 5 +} SCRIPTSTATE; + +typedef enum tagSCRIPTTHREADSTATE { + SCRIPTTHREADSTATE_NOTINSCRIPT = 0, + SCRIPTTHREADSTATE_RUNNING = 1 +} SCRIPTTHREADSTATE; + +typedef DWORD SCRIPTTHREADID; +cpp_quote("#define SCRIPTTHREADID_CURRENT ((SCRIPTTHREADID)-1)") +cpp_quote("#define SCRIPTTHREADID_BASE ((SCRIPTTHREADID)-2)") +cpp_quote("#define SCRIPTTHREADID_ALL ((SCRIPTTHREADID)-3)") + +cpp_quote("#define SCRIPTITEM_ISVISIBLE 0x00000002") +cpp_quote("#define SCRIPTITEM_ISSOURCE 0x00000004") +cpp_quote("#define SCRIPTITEM_GLOBALMEMBERS 0x00000008") +cpp_quote("#define SCRIPTITEM_ISPERSISTENT 0x00000040") +cpp_quote("#define SCRIPTITEM_CODEONLY 0x00000200") +cpp_quote("#define SCRIPTITEM_NOCODE 0x00000400") +cpp_quote("#define SCRIPTITEM_ALL_FLAGS (SCRIPTITEM_ISSOURCE | \\") +cpp_quote(" SCRIPTITEM_ISVISIBLE | \\") +cpp_quote(" SCRIPTITEM_ISPERSISTENT | \\") +cpp_quote(" SCRIPTITEM_GLOBALMEMBERS | \\") +cpp_quote(" SCRIPTITEM_NOCODE | \\") +cpp_quote(" SCRIPTITEM_CODEONLY)") +cpp_quote("#define SCRIPTTYPELIB_ISCONTROL 0x00000010") +cpp_quote("#define SCRIPTTYPELIB_ISPERSISTENT 0x00000040") +cpp_quote("#define SCRIPTTYPELIB_ALL_FLAGS (SCRIPTTEXT_ISCONTROL | SCRIPTTYPELIB_ISPERSISTENT)") +cpp_quote("#define SCRIPTTEXT_DELAYEXECUTION 0x00000001") +cpp_quote("#define SCRIPTTEXT_ISVISIBLE 0x00000002") +cpp_quote("#define SCRIPTTEXT_ISEXPRESSION 0x00000020") +cpp_quote("#define SCRIPTTEXT_ISPERSISTENT 0x00000040") +cpp_quote("#define SCRIPTTEXT_HOSTMANAGESSOURCE 0x00000080") +cpp_quote("#define SCRIPTTEXT_ALL_FLAGS (SCRIPTTEXT_DELAYEXECUTION | \\") +cpp_quote(" SCRIPTTEXT_ISVISIBLE | \\") +cpp_quote(" SCRIPTTEXT_ISEXPRESSION | \\") +cpp_quote(" SCRIPTTEXT_ISPERSISTENT | \\") +cpp_quote(" SCRIPTTEXT_HOSTMANAGESSOURCE)") +cpp_quote("#define SCRIPTPROC_HOSTMANAGESSOURCE 0x00000080") +cpp_quote("#define SCRIPTPROC_IMPLICIT_THIS 0x00000100") +cpp_quote("#define SCRIPTPROC_IMPLICIT_PARENTS 0x00000200") +cpp_quote("#define SCRIPTPROC_ALL_FLAGS (SCRIPTPROC_HOSTMANAGESSOURCE | \\") +cpp_quote(" SCRIPTPROC_IMPLICIT_THIS | \\") +cpp_quote(" SCRIPTPROC_IMPLICIT_PARENTS)") +cpp_quote("#define SCRIPTINFO_IUNKNOWN 0x00000001") +cpp_quote("#define SCRIPTINFO_ITYPEINFO 0x00000002") +cpp_quote("#define SCRIPTINFO_ALL_FLAGS (SCRIPTINFO_IUNKNOWN | SCRIPTINFO_ITYPEINFO)") +cpp_quote("#define SCRIPTINTERRUPT_DEBUG 0x00000001") +cpp_quote("#define SCRIPTINTERRUPT_RAISEEXCEPTION 0x00000002") +cpp_quote("#define SCRIPTINTERRUPT_ALL_FLAGS (SCRIPTINTERRUPT_DEBUG | SCRIPTINTERRUPT_RAISEEXCEPTION)") +cpp_quote("#define SCRIPTSTAT_STATEMENT_COUNT 1") +cpp_quote("#define SCRIPTSTAT_INSTRUCTION_COUNT 2") +cpp_quote("#define SCRIPTSTAT_INTSTRUCTION_TIME 3") +cpp_quote("#define SCRIPTSTAT_TOTAL_TIME 4") + +[ +object, +uuid(EAE1BA61-A4ED-11cf-8F20-00805F2CD064), +pointer_default(unique) +] +interface IActiveScriptError : IUnknown +{ + HRESULT GetExceptionInfo( + [out] EXCEPINFO *pexcepinfo + ); + + HRESULT GetSourcePosition( + [out] DWORD *pdwSourceContext, + [out] ULONG *pulLineNumber, + [out] LONG *plCharacterPosition + ); + + HRESULT GetSourceLineText( + [out] BSTR *pbstrSourceLine + ); +} + +[ +object, +uuid(DB01A1E3-A42B-11cf-8F20-00805F2CD064), +pointer_default(unique) +] +interface IActiveScriptSite : IUnknown +{ + HRESULT GetLCID( + [out] LCID *plcid); + + HRESULT GetItemInfo( + [in] LPCOLESTR pstrName, + [in] DWORD dwReturnMask, + [out] IUnknown **ppiunkItem, + [out] ITypeInfo **ppti + ); + + HRESULT GetDocVersionString( + [out] BSTR *pbstrVersion + ); + + HRESULT OnScriptTerminate( + [in] const VARIANT *pvarResult, + [in] const EXCEPINFO *pexcepinfo + ); + + HRESULT OnStateChange( + [in] SCRIPTSTATE ssScriptState + ); + + HRESULT OnScriptError( + [in] IActiveScriptError *pscripterror + ); + + HRESULT OnEnterScript(void); + + HRESULT OnLeaveScript(void); +} + +cpp_quote("typedef IActiveScriptSite *PIActiveScriptSite;") + +[ +object, +uuid(D10F6761-83E9-11cf-8F20-00805F2CD064), +pointer_default(unique) +] +interface IActiveScriptSiteWindow : IUnknown +{ + HRESULT GetWindow( + [out] HWND *phwnd + ); + + HRESULT EnableModeless( + [in] BOOL fEnable + ); +} + +[ +object, +uuid(539698A0-CDCA-11CF-A5EB-00AA0047A063), +pointer_default(unique) +] +interface IActiveScriptSiteInterruptPoll : IUnknown +{ + HRESULT QueryContinue(); +} + +[ +object, +uuid(BB1A2AE1-A4F9-11cf-8F20-00805F2CD064), +pointer_default(unique) +] +interface IActiveScript : IUnknown +{ + HRESULT SetScriptSite( + [in] IActiveScriptSite *pass + ); + + HRESULT GetScriptSite( + [in] REFIID riid, + [out, iid_is(riid)] void **ppvObject + ); + + HRESULT SetScriptState( + [in] SCRIPTSTATE ss + ); + + HRESULT GetScriptState( + [out] SCRIPTSTATE *pssState + ); + + HRESULT Close(void); + + HRESULT AddNamedItem( + [in] LPCOLESTR pstrName, + [in] DWORD dwFlags + ); + + HRESULT AddTypeLib( + [in] REFGUID rguidTypeLib, + [in] DWORD dwMajor, + [in] DWORD dwMinor, + [in] DWORD dwFlags + ); + + HRESULT GetScriptDispatch( + [in] LPCOLESTR pstrItemName, + [out] IDispatch **ppdisp + ); + + HRESULT GetCurrentScriptThreadID( + [out] SCRIPTTHREADID *pstidThread + ); + + HRESULT GetScriptThreadID( + [in] DWORD dwWin32ThreadId, + [out] SCRIPTTHREADID *pstidThread + ); + + HRESULT GetScriptThreadState( + [in] SCRIPTTHREADID stidThread, + [out] SCRIPTTHREADSTATE *pstsState + ); + + HRESULT InterruptScriptThread( + [in] SCRIPTTHREADID stidThread, + [in] const EXCEPINFO *pexcepinfo, + [in] DWORD dwFlags + ); + + HRESULT Clone( + [out] IActiveScript **ppscript + ); +} + +cpp_quote("typedef IActiveScript *PIActiveScript;") + +[ +object, +uuid(BB1A2AE2-A4F9-11cf-8F20-00805F2CD064), +pointer_default(unique) +] +interface IActiveScriptParse : IUnknown +{ + HRESULT InitNew(void); + + HRESULT AddScriptlet( + [in] LPCOLESTR pstrDefaultName, + [in] LPCOLESTR pstrCode, + [in] LPCOLESTR pstrItemName, + [in] LPCOLESTR pstrSubItemName, + [in] LPCOLESTR pstrEventName, + [in] LPCOLESTR pstrDelimiter, + [in] DWORD dwSourceContextCookie, + [in] ULONG ulStartingLineNumber, + [in] DWORD dwFlags, + [out] BSTR *pbstrName, + [out] EXCEPINFO *pexcepinfo + ); + + HRESULT ParseScriptText( + [in] LPCOLESTR pstrCode, + [in] LPCOLESTR pstrItemName, + [in] IUnknown *punkContext, + [in] LPCOLESTR pstrDelimiter, + [in] DWORD dwSourceContextCookie, + [in] ULONG ulStartingLineNumber, + [in] DWORD dwFlags, + [out] VARIANT *pvarResult, + [out] EXCEPINFO *pexcepinfo + ); +} + +cpp_quote("typedef IActiveScriptParse *PIActiveScriptParse;") + +[ +object, +uuid(1CFF0050-6FDD-11d0-9328-00A0C90DCAA9), +pointer_default(unique) +] +interface IActiveScriptParseProcedureOld : IUnknown +{ + HRESULT ParseProcedureText( + [in] LPCOLESTR pstrCode, + [in] LPCOLESTR pstrFormalParams, + [in] LPCOLESTR pstrItemName, + [in] IUnknown *punkContext, + [in] LPCOLESTR pstrDelimiter, + [in] DWORD dwSourceContextCookie, + [in] ULONG ulStartingLineNumber, + [in] DWORD dwFlags, + [out] IDispatch **ppdisp + ); +} + +[ +object, +uuid(AA5B6A80-B834-11d0-932F-00A0C90DCAA9), +pointer_default(unique) +] +interface IActiveScriptParseProcedure : IUnknown +{ + HRESULT ParseProcedureText( + [in] LPCOLESTR pstrCode, + [in] LPCOLESTR pstrFormalParams, + [in] LPCOLESTR pstrProcedureName, + [in] LPCOLESTR pstrItemName, + [in] IUnknown *punkContext, + [in] LPCOLESTR pstrDelimiter, + [in] DWORD dwSourceContextCookie, + [in] ULONG ulStartingLineNumber, + [in] DWORD dwFlags, + [out] IDispatch **ppdisp + ); +} + +[ +object, +uuid(63CDBCB0-C1B1-11d0-9336-00A0C90DCAA9), +pointer_default(unique) +] +interface IBindEventHandler : IUnknown +{ + HRESULT BindHandler( + [in] LPCOLESTR pstrEvent, + [in] IDispatch *pdisp + ); +} + +[ +object, +uuid(B8DA6310-E19B-11d0-933C-00A0C90DCAA9), +pointer_default(unique) +] +interface IActiveScriptStats : IUnknown +{ + HRESULT GetStat( + [in] DWORD stid, + [out] ULONG *pluHi, + [out] ULONG *pluLo + ); + + HRESULT GetStatEx( + [in] REFGUID guid, + [out] ULONG *pluHi, + [out] ULONG *pluLo + ); + + HRESULT ResetStats(void); +} diff --git a/reactos/include/psdk/amstream.h b/reactos/include/psdk/amstream.h new file mode 100644 index 00000000000..2d78f7e6c4c --- /dev/null +++ b/reactos/include/psdk/amstream.h @@ -0,0 +1,1464 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\amstream.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_AMSTREAM_H +#define __WIDL_INCLUDE_PSDK_AMSTREAM_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#if 0 +#ifndef __IDirectDraw_FWD_DEFINED__ +#define __IDirectDraw_FWD_DEFINED__ +typedef interface IDirectDraw IDirectDraw; +#endif + +#ifndef __IDirectDrawSurface_FWD_DEFINED__ +#define __IDirectDrawSurface_FWD_DEFINED__ +typedef interface IDirectDrawSurface IDirectDrawSurface; +#endif + +#endif +#ifndef __IAMMultiMediaStream_FWD_DEFINED__ +#define __IAMMultiMediaStream_FWD_DEFINED__ +typedef interface IAMMultiMediaStream IAMMultiMediaStream; +#endif + +#ifndef __IAMMediaStream_FWD_DEFINED__ +#define __IAMMediaStream_FWD_DEFINED__ +typedef interface IAMMediaStream IAMMediaStream; +#endif + +#ifndef __IMediaStreamFilter_FWD_DEFINED__ +#define __IMediaStreamFilter_FWD_DEFINED__ +typedef interface IMediaStreamFilter IMediaStreamFilter; +#endif + +#ifndef __IAMMediaTypeStream_FWD_DEFINED__ +#define __IAMMediaTypeStream_FWD_DEFINED__ +typedef interface IAMMediaTypeStream IAMMediaTypeStream; +#endif + +#ifndef __IAMMediaTypeSample_FWD_DEFINED__ +#define __IAMMediaTypeSample_FWD_DEFINED__ +typedef interface IAMMediaTypeSample IAMMediaTypeSample; +#endif + +enum { + AMMSF_NOGRAPHTHREAD = 0x1 +}; + +enum { + AMMSF_ADDDEFAULTRENDERER = 0x1, + AMMSF_CREATEPEER = 0x2, + AMMSF_STOPIFNOSAMPLES = 0x4, + AMMSF_NOSTALL = 0x8 +}; + +enum { + AMMSF_RENDERTYPEMASK = 0x3, + AMMSF_RENDERTOEXISTING = 0x0, + AMMSF_RENDERALLSTREAMS = 0x1, + AMMSF_NORENDER = 0x2, + AMMSF_NOCLOCK = 0x4, + AMMSF_RUN = 0x8 +}; + +typedef enum { + Disabled = 0, + ReadData = 1, + RenderData = 2 +} OUTPUT_STATE; +/***************************************************************************** + * IAMMultiMediaStream interface + */ +#ifndef __IAMMultiMediaStream_INTERFACE_DEFINED__ +#define __IAMMultiMediaStream_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAMMultiMediaStream, 0xbebe595c, 0x9a6f, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IAMMultiMediaStream : public IMultiMediaStream +{ + virtual HRESULT STDMETHODCALLTYPE Initialize( + STREAM_TYPE StreamType, + DWORD dwFlags, + IGraphBuilder* pFilterGraph) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFilterGraph( + IGraphBuilder** ppGraphBuilder) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFilter( + IMediaStreamFilter** ppFilter) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddMediaStream( + IUnknown* pStreamObject, + const MSPID* PurposeId, + DWORD dwFlags, + IMediaStream** ppNewStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE OpenFile( + LPCWSTR pszFileName, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE OpenMoniker( + IBindCtx* pCtx, + IMoniker* pMoniker, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE Render( + DWORD dwFlags) = 0; + +}; +#else +typedef struct IAMMultiMediaStreamVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAMMultiMediaStream* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAMMultiMediaStream* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAMMultiMediaStream* This); + + /*** IMultiMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetInformation)( + IAMMultiMediaStream* This, + DWORD* pdwFlags, + STREAM_TYPE* pStreamType); + + HRESULT (STDMETHODCALLTYPE *GetMediaStream)( + IAMMultiMediaStream* This, + REFMSPID idPurpose, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *EnumMediaStreams)( + IAMMultiMediaStream* This, + long Index, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetState)( + IAMMultiMediaStream* This, + STREAM_STATE* pCurrentState); + + HRESULT (STDMETHODCALLTYPE *SetState)( + IAMMultiMediaStream* This, + STREAM_STATE NewState); + + HRESULT (STDMETHODCALLTYPE *GetTime)( + IAMMultiMediaStream* This, + STREAM_TIME* pCurrentTime); + + HRESULT (STDMETHODCALLTYPE *GetDuration)( + IAMMultiMediaStream* This, + STREAM_TIME* pDuration); + + HRESULT (STDMETHODCALLTYPE *Seek)( + IAMMultiMediaStream* This, + STREAM_TIME SeekTime); + + HRESULT (STDMETHODCALLTYPE *GetEndOfStreamEventHandle)( + IAMMultiMediaStream* This, + HANDLE* phEOS); + + /*** IAMMultiMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *Initialize)( + IAMMultiMediaStream* This, + STREAM_TYPE StreamType, + DWORD dwFlags, + IGraphBuilder* pFilterGraph); + + HRESULT (STDMETHODCALLTYPE *GetFilterGraph)( + IAMMultiMediaStream* This, + IGraphBuilder** ppGraphBuilder); + + HRESULT (STDMETHODCALLTYPE *GetFilter)( + IAMMultiMediaStream* This, + IMediaStreamFilter** ppFilter); + + HRESULT (STDMETHODCALLTYPE *AddMediaStream)( + IAMMultiMediaStream* This, + IUnknown* pStreamObject, + const MSPID* PurposeId, + DWORD dwFlags, + IMediaStream** ppNewStream); + + HRESULT (STDMETHODCALLTYPE *OpenFile)( + IAMMultiMediaStream* This, + LPCWSTR pszFileName, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *OpenMoniker)( + IAMMultiMediaStream* This, + IBindCtx* pCtx, + IMoniker* pMoniker, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *Render)( + IAMMultiMediaStream* This, + DWORD dwFlags); + + END_INTERFACE +} IAMMultiMediaStreamVtbl; +interface IAMMultiMediaStream { + const IAMMultiMediaStreamVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IAMMultiMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAMMultiMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAMMultiMediaStream_Release(p) (p)->lpVtbl->Release(p) +/*** IMultiMediaStream methods ***/ +#define IAMMultiMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b) +#define IAMMultiMediaStream_GetMediaStream(p,a,b) (p)->lpVtbl->GetMediaStream(p,a,b) +#define IAMMultiMediaStream_EnumMediaStreams(p,a,b) (p)->lpVtbl->EnumMediaStreams(p,a,b) +#define IAMMultiMediaStream_GetState(p,a) (p)->lpVtbl->GetState(p,a) +#define IAMMultiMediaStream_SetState(p,a) (p)->lpVtbl->SetState(p,a) +#define IAMMultiMediaStream_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) +#define IAMMultiMediaStream_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a) +#define IAMMultiMediaStream_Seek(p,a) (p)->lpVtbl->Seek(p,a) +#define IAMMultiMediaStream_GetEndOfStreamEventHandle(p,a) (p)->lpVtbl->GetEndOfStreamEventHandle(p,a) +/*** IAMMultiMediaStream methods ***/ +#define IAMMultiMediaStream_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IAMMultiMediaStream_GetFilterGraph(p,a) (p)->lpVtbl->GetFilterGraph(p,a) +#define IAMMultiMediaStream_GetFilter(p,a) (p)->lpVtbl->GetFilter(p,a) +#define IAMMultiMediaStream_AddMediaStream(p,a,b,c,d) (p)->lpVtbl->AddMediaStream(p,a,b,c,d) +#define IAMMultiMediaStream_OpenFile(p,a,b) (p)->lpVtbl->OpenFile(p,a,b) +#define IAMMultiMediaStream_OpenMoniker(p,a,b,c) (p)->lpVtbl->OpenMoniker(p,a,b,c) +#define IAMMultiMediaStream_Render(p,a) (p)->lpVtbl->Render(p,a) +#endif + +#endif + +HRESULT CALLBACK IAMMultiMediaStream_Initialize_Proxy( + IAMMultiMediaStream* This, + STREAM_TYPE StreamType, + DWORD dwFlags, + IGraphBuilder* pFilterGraph); +void __RPC_STUB IAMMultiMediaStream_Initialize_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMultiMediaStream_GetFilterGraph_Proxy( + IAMMultiMediaStream* This, + IGraphBuilder** ppGraphBuilder); +void __RPC_STUB IAMMultiMediaStream_GetFilterGraph_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMultiMediaStream_GetFilter_Proxy( + IAMMultiMediaStream* This, + IMediaStreamFilter** ppFilter); +void __RPC_STUB IAMMultiMediaStream_GetFilter_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMultiMediaStream_AddMediaStream_Proxy( + IAMMultiMediaStream* This, + IUnknown* pStreamObject, + const MSPID* PurposeId, + DWORD dwFlags, + IMediaStream** ppNewStream); +void __RPC_STUB IAMMultiMediaStream_AddMediaStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMultiMediaStream_OpenFile_Proxy( + IAMMultiMediaStream* This, + LPCWSTR pszFileName, + DWORD dwFlags); +void __RPC_STUB IAMMultiMediaStream_OpenFile_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMultiMediaStream_OpenMoniker_Proxy( + IAMMultiMediaStream* This, + IBindCtx* pCtx, + IMoniker* pMoniker, + DWORD dwFlags); +void __RPC_STUB IAMMultiMediaStream_OpenMoniker_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMultiMediaStream_Render_Proxy( + IAMMultiMediaStream* This, + DWORD dwFlags); +void __RPC_STUB IAMMultiMediaStream_Render_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IAMMultiMediaStream_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IAMMediaStream interface + */ +#ifndef __IAMMediaStream_INTERFACE_DEFINED__ +#define __IAMMediaStream_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAMMediaStream, 0xbebe595d, 0x9a6f, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IAMMediaStream : public IMediaStream +{ + virtual HRESULT STDMETHODCALLTYPE Initialize( + IUnknown* pSourceObject, + DWORD dwFlags, + REFMSPID PurposeId, + const STREAM_TYPE StreamType) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetState( + FILTER_STATE State) = 0; + + virtual HRESULT STDMETHODCALLTYPE JoinAMMultiMediaStream( + IAMMultiMediaStream* pAMMultiMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE JoinFilter( + IMediaStreamFilter* pMediaStreamFilter) = 0; + + virtual HRESULT STDMETHODCALLTYPE JoinFilterGraph( + IFilterGraph* pFilterGraph) = 0; + +}; +#else +typedef struct IAMMediaStreamVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAMMediaStream* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAMMediaStream* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAMMediaStream* This); + + /*** IMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)( + IAMMediaStream* This, + IMultiMediaStream** ppMultiMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetInformation)( + IAMMediaStream* This, + MSPID* pPurposeId, + STREAM_TYPE* pType); + + HRESULT (STDMETHODCALLTYPE *SetSameFormat)( + IAMMediaStream* This, + IMediaStream* pStreamThatHasDesiredFormat, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *AllocateSample)( + IAMMediaStream* This, + DWORD dwFlags, + IStreamSample** ppSample); + + HRESULT (STDMETHODCALLTYPE *CreateSharedSample)( + IAMMediaStream* This, + IStreamSample* pExistingSample, + DWORD dwFlags, + IStreamSample** ppNewSample); + + HRESULT (STDMETHODCALLTYPE *SendEndOfStream)( + IAMMediaStream* This, + DWORD dwFlags); + + /*** IAMMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *Initialize)( + IAMMediaStream* This, + IUnknown* pSourceObject, + DWORD dwFlags, + REFMSPID PurposeId, + const STREAM_TYPE StreamType); + + HRESULT (STDMETHODCALLTYPE *SetState)( + IAMMediaStream* This, + FILTER_STATE State); + + HRESULT (STDMETHODCALLTYPE *JoinAMMultiMediaStream)( + IAMMediaStream* This, + IAMMultiMediaStream* pAMMultiMediaStream); + + HRESULT (STDMETHODCALLTYPE *JoinFilter)( + IAMMediaStream* This, + IMediaStreamFilter* pMediaStreamFilter); + + HRESULT (STDMETHODCALLTYPE *JoinFilterGraph)( + IAMMediaStream* This, + IFilterGraph* pFilterGraph); + + END_INTERFACE +} IAMMediaStreamVtbl; +interface IAMMediaStream { + const IAMMediaStreamVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IAMMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAMMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAMMediaStream_Release(p) (p)->lpVtbl->Release(p) +/*** IMediaStream methods ***/ +#define IAMMediaStream_GetMultiMediaStream(p,a) (p)->lpVtbl->GetMultiMediaStream(p,a) +#define IAMMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b) +#define IAMMediaStream_SetSameFormat(p,a,b) (p)->lpVtbl->SetSameFormat(p,a,b) +#define IAMMediaStream_AllocateSample(p,a,b) (p)->lpVtbl->AllocateSample(p,a,b) +#define IAMMediaStream_CreateSharedSample(p,a,b,c) (p)->lpVtbl->CreateSharedSample(p,a,b,c) +#define IAMMediaStream_SendEndOfStream(p,a) (p)->lpVtbl->SendEndOfStream(p,a) +/*** IAMMediaStream methods ***/ +#define IAMMediaStream_Initialize(p,a,b,c,d) (p)->lpVtbl->Initialize(p,a,b,c,d) +#define IAMMediaStream_SetState(p,a) (p)->lpVtbl->SetState(p,a) +#define IAMMediaStream_JoinAMMultiMediaStream(p,a) (p)->lpVtbl->JoinAMMultiMediaStream(p,a) +#define IAMMediaStream_JoinFilter(p,a) (p)->lpVtbl->JoinFilter(p,a) +#define IAMMediaStream_JoinFilterGraph(p,a) (p)->lpVtbl->JoinFilterGraph(p,a) +#endif + +#endif + +HRESULT CALLBACK IAMMediaStream_Initialize_Proxy( + IAMMediaStream* This, + IUnknown* pSourceObject, + DWORD dwFlags, + REFMSPID PurposeId, + const STREAM_TYPE StreamType); +void __RPC_STUB IAMMediaStream_Initialize_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaStream_SetState_Proxy( + IAMMediaStream* This, + FILTER_STATE State); +void __RPC_STUB IAMMediaStream_SetState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaStream_JoinAMMultiMediaStream_Proxy( + IAMMediaStream* This, + IAMMultiMediaStream* pAMMultiMediaStream); +void __RPC_STUB IAMMediaStream_JoinAMMultiMediaStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaStream_JoinFilter_Proxy( + IAMMediaStream* This, + IMediaStreamFilter* pMediaStreamFilter); +void __RPC_STUB IAMMediaStream_JoinFilter_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaStream_JoinFilterGraph_Proxy( + IAMMediaStream* This, + IFilterGraph* pFilterGraph); +void __RPC_STUB IAMMediaStream_JoinFilterGraph_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IAMMediaStream_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMediaStreamFilter interface + */ +#ifndef __IMediaStreamFilter_INTERFACE_DEFINED__ +#define __IMediaStreamFilter_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMediaStreamFilter, 0xbebe595e, 0x9a6f, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMediaStreamFilter : public IBaseFilter +{ + virtual HRESULT STDMETHODCALLTYPE AddMediaStream( + IAMMediaStream* pAMMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMediaStream( + REFMSPID idPurpose, + IMediaStream** ppMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumMediaStreams( + long Index, + IMediaStream** ppMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE SupportSeeking( + BOOL bRenderer) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReferenceTimeToStreamTime( + REFERENCE_TIME* pTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentStreamTime( + REFERENCE_TIME* pCurrentStreamTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE WaitUntil( + REFERENCE_TIME WaitStreamTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE Flush( + BOOL bCancelEOS) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndOfStream( + ) = 0; + +}; +#else +typedef struct IMediaStreamFilterVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMediaStreamFilter* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMediaStreamFilter* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMediaStreamFilter* This); + + /*** IPersist methods ***/ + HRESULT (STDMETHODCALLTYPE *GetClassID)( + IMediaStreamFilter* This, + CLSID* pClassID); + + /*** IMediaFilter methods ***/ + HRESULT (STDMETHODCALLTYPE *Stop)( + IMediaStreamFilter* This); + + HRESULT (STDMETHODCALLTYPE *Pause)( + IMediaStreamFilter* This); + + HRESULT (STDMETHODCALLTYPE *Run)( + IMediaStreamFilter* This, + REFERENCE_TIME tStart); + + HRESULT (STDMETHODCALLTYPE *GetState)( + IMediaStreamFilter* This, + DWORD dwMilliSecsTimeout, + FILTER_STATE* State); + + HRESULT (STDMETHODCALLTYPE *SetSyncSource)( + IMediaStreamFilter* This, + IReferenceClock* pClock); + + HRESULT (STDMETHODCALLTYPE *GetSyncSource)( + IMediaStreamFilter* This, + IReferenceClock** pClock); + + /*** IBaseFilter methods ***/ + HRESULT (STDMETHODCALLTYPE *EnumPins)( + IMediaStreamFilter* This, + IEnumPins** ppEnum); + + HRESULT (STDMETHODCALLTYPE *FindPin)( + IMediaStreamFilter* This, + LPCWSTR Id, + IPin** ppPin); + + HRESULT (STDMETHODCALLTYPE *QueryFilterInfo)( + IMediaStreamFilter* This, + FILTER_INFO* pInfo); + + HRESULT (STDMETHODCALLTYPE *JoinFilterGraph)( + IMediaStreamFilter* This, + IFilterGraph* pGraph, + LPCWSTR pName); + + HRESULT (STDMETHODCALLTYPE *QueryVendorInfo)( + IMediaStreamFilter* This, + LPWSTR* pVendorInfo); + + /*** IMediaStreamFilter methods ***/ + HRESULT (STDMETHODCALLTYPE *AddMediaStream)( + IMediaStreamFilter* This, + IAMMediaStream* pAMMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetMediaStream)( + IMediaStreamFilter* This, + REFMSPID idPurpose, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *EnumMediaStreams)( + IMediaStreamFilter* This, + long Index, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *SupportSeeking)( + IMediaStreamFilter* This, + BOOL bRenderer); + + HRESULT (STDMETHODCALLTYPE *ReferenceTimeToStreamTime)( + IMediaStreamFilter* This, + REFERENCE_TIME* pTime); + + HRESULT (STDMETHODCALLTYPE *GetCurrentStreamTime)( + IMediaStreamFilter* This, + REFERENCE_TIME* pCurrentStreamTime); + + HRESULT (STDMETHODCALLTYPE *WaitUntil)( + IMediaStreamFilter* This, + REFERENCE_TIME WaitStreamTime); + + HRESULT (STDMETHODCALLTYPE *Flush)( + IMediaStreamFilter* This, + BOOL bCancelEOS); + + HRESULT (STDMETHODCALLTYPE *EndOfStream)( + IMediaStreamFilter* This); + + END_INTERFACE +} IMediaStreamFilterVtbl; +interface IMediaStreamFilter { + const IMediaStreamFilterVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMediaStreamFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMediaStreamFilter_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMediaStreamFilter_Release(p) (p)->lpVtbl->Release(p) +/*** IPersist methods ***/ +#define IMediaStreamFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) +/*** IMediaFilter methods ***/ +#define IMediaStreamFilter_Stop(p) (p)->lpVtbl->Stop(p) +#define IMediaStreamFilter_Pause(p) (p)->lpVtbl->Pause(p) +#define IMediaStreamFilter_Run(p,a) (p)->lpVtbl->Run(p,a) +#define IMediaStreamFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b) +#define IMediaStreamFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a) +#define IMediaStreamFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a) +/*** IBaseFilter methods ***/ +#define IMediaStreamFilter_EnumPins(p,a) (p)->lpVtbl->EnumPins(p,a) +#define IMediaStreamFilter_FindPin(p,a,b) (p)->lpVtbl->FindPin(p,a,b) +#define IMediaStreamFilter_QueryFilterInfo(p,a) (p)->lpVtbl->QueryFilterInfo(p,a) +#define IMediaStreamFilter_JoinFilterGraph(p,a,b) (p)->lpVtbl->JoinFilterGraph(p,a,b) +#define IMediaStreamFilter_QueryVendorInfo(p,a) (p)->lpVtbl->QueryVendorInfo(p,a) +/*** IMediaStreamFilter methods ***/ +#define IMediaStreamFilter_AddMediaStream(p,a) (p)->lpVtbl->AddMediaStream(p,a) +#define IMediaStreamFilter_GetMediaStream(p,a,b) (p)->lpVtbl->GetMediaStream(p,a,b) +#define IMediaStreamFilter_EnumMediaStreams(p,a,b) (p)->lpVtbl->EnumMediaStreams(p,a,b) +#define IMediaStreamFilter_SupportSeeking(p,a) (p)->lpVtbl->SupportSeeking(p,a) +#define IMediaStreamFilter_ReferenceTimeToStreamTime(p,a) (p)->lpVtbl->ReferenceTimeToStreamTime(p,a) +#define IMediaStreamFilter_GetCurrentStreamTime(p,a) (p)->lpVtbl->GetCurrentStreamTime(p,a) +#define IMediaStreamFilter_WaitUntil(p,a) (p)->lpVtbl->WaitUntil(p,a) +#define IMediaStreamFilter_Flush(p,a) (p)->lpVtbl->Flush(p,a) +#define IMediaStreamFilter_EndOfStream(p) (p)->lpVtbl->EndOfStream(p) +#endif + +#endif + +HRESULT CALLBACK IMediaStreamFilter_AddMediaStream_Proxy( + IMediaStreamFilter* This, + IAMMediaStream* pAMMediaStream); +void __RPC_STUB IMediaStreamFilter_AddMediaStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStreamFilter_GetMediaStream_Proxy( + IMediaStreamFilter* This, + REFMSPID idPurpose, + IMediaStream** ppMediaStream); +void __RPC_STUB IMediaStreamFilter_GetMediaStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStreamFilter_EnumMediaStreams_Proxy( + IMediaStreamFilter* This, + long Index, + IMediaStream** ppMediaStream); +void __RPC_STUB IMediaStreamFilter_EnumMediaStreams_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStreamFilter_SupportSeeking_Proxy( + IMediaStreamFilter* This, + BOOL bRenderer); +void __RPC_STUB IMediaStreamFilter_SupportSeeking_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStreamFilter_ReferenceTimeToStreamTime_Proxy( + IMediaStreamFilter* This, + REFERENCE_TIME* pTime); +void __RPC_STUB IMediaStreamFilter_ReferenceTimeToStreamTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStreamFilter_GetCurrentStreamTime_Proxy( + IMediaStreamFilter* This, + REFERENCE_TIME* pCurrentStreamTime); +void __RPC_STUB IMediaStreamFilter_GetCurrentStreamTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStreamFilter_WaitUntil_Proxy( + IMediaStreamFilter* This, + REFERENCE_TIME WaitStreamTime); +void __RPC_STUB IMediaStreamFilter_WaitUntil_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStreamFilter_Flush_Proxy( + IMediaStreamFilter* This, + BOOL bCancelEOS); +void __RPC_STUB IMediaStreamFilter_Flush_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStreamFilter_EndOfStream_Proxy( + IMediaStreamFilter* This); +void __RPC_STUB IMediaStreamFilter_EndOfStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMediaStreamFilter_INTERFACE_DEFINED__ */ + +#ifndef __IDirectDrawMediaSampleAllocator_FWD_DEFINED__ +#define __IDirectDrawMediaSampleAllocator_FWD_DEFINED__ +typedef interface IDirectDrawMediaSampleAllocator IDirectDrawMediaSampleAllocator; +#endif + +/***************************************************************************** + * IDirectDrawMediaSampleAllocator interface + */ +#ifndef __IDirectDrawMediaSampleAllocator_INTERFACE_DEFINED__ +#define __IDirectDrawMediaSampleAllocator_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IDirectDrawMediaSampleAllocator, 0xab6b4afc, 0xf6e4, 0x11d0, 0x90,0x0d, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IDirectDrawMediaSampleAllocator : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetDirectDraw( + IDirectDraw** ppDirectDraw) = 0; + +}; +#else +typedef struct IDirectDrawMediaSampleAllocatorVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IDirectDrawMediaSampleAllocator* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IDirectDrawMediaSampleAllocator* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IDirectDrawMediaSampleAllocator* This); + + /*** IDirectDrawMediaSampleAllocator methods ***/ + HRESULT (STDMETHODCALLTYPE *GetDirectDraw)( + IDirectDrawMediaSampleAllocator* This, + IDirectDraw** ppDirectDraw); + + END_INTERFACE +} IDirectDrawMediaSampleAllocatorVtbl; +interface IDirectDrawMediaSampleAllocator { + const IDirectDrawMediaSampleAllocatorVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IDirectDrawMediaSampleAllocator_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawMediaSampleAllocator_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawMediaSampleAllocator_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectDrawMediaSampleAllocator methods ***/ +#define IDirectDrawMediaSampleAllocator_GetDirectDraw(p,a) (p)->lpVtbl->GetDirectDraw(p,a) +#endif + +#endif + +HRESULT CALLBACK IDirectDrawMediaSampleAllocator_GetDirectDraw_Proxy( + IDirectDrawMediaSampleAllocator* This, + IDirectDraw** ppDirectDraw); +void __RPC_STUB IDirectDrawMediaSampleAllocator_GetDirectDraw_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IDirectDrawMediaSampleAllocator_INTERFACE_DEFINED__ */ + +#ifndef __IDirectDrawMediaSample_FWD_DEFINED__ +#define __IDirectDrawMediaSample_FWD_DEFINED__ +typedef interface IDirectDrawMediaSample IDirectDrawMediaSample; +#endif + +/***************************************************************************** + * IDirectDrawMediaSample interface + */ +#ifndef __IDirectDrawMediaSample_INTERFACE_DEFINED__ +#define __IDirectDrawMediaSample_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IDirectDrawMediaSample, 0xab6b4afe, 0xf6e4, 0x11d0, 0x90,0x0d, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IDirectDrawMediaSample : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetSurfaceAndReleaseLock( + IDirectDrawSurface** ppDirectDrawSurface, + RECT* pRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE LockMediaSamplePointer( + ) = 0; + +}; +#else +typedef struct IDirectDrawMediaSampleVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IDirectDrawMediaSample* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IDirectDrawMediaSample* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IDirectDrawMediaSample* This); + + /*** IDirectDrawMediaSample methods ***/ + HRESULT (STDMETHODCALLTYPE *GetSurfaceAndReleaseLock)( + IDirectDrawMediaSample* This, + IDirectDrawSurface** ppDirectDrawSurface, + RECT* pRect); + + HRESULT (STDMETHODCALLTYPE *LockMediaSamplePointer)( + IDirectDrawMediaSample* This); + + END_INTERFACE +} IDirectDrawMediaSampleVtbl; +interface IDirectDrawMediaSample { + const IDirectDrawMediaSampleVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IDirectDrawMediaSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawMediaSample_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawMediaSample_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectDrawMediaSample methods ***/ +#define IDirectDrawMediaSample_GetSurfaceAndReleaseLock(p,a,b) (p)->lpVtbl->GetSurfaceAndReleaseLock(p,a,b) +#define IDirectDrawMediaSample_LockMediaSamplePointer(p) (p)->lpVtbl->LockMediaSamplePointer(p) +#endif + +#endif + +HRESULT CALLBACK IDirectDrawMediaSample_GetSurfaceAndReleaseLock_Proxy( + IDirectDrawMediaSample* This, + IDirectDrawSurface** ppDirectDrawSurface, + RECT* pRect); +void __RPC_STUB IDirectDrawMediaSample_GetSurfaceAndReleaseLock_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawMediaSample_LockMediaSamplePointer_Proxy( + IDirectDrawMediaSample* This); +void __RPC_STUB IDirectDrawMediaSample_LockMediaSamplePointer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IDirectDrawMediaSample_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IAMMediaTypeStream interface + */ +#ifndef __IAMMediaTypeStream_INTERFACE_DEFINED__ +#define __IAMMediaTypeStream_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAMMediaTypeStream, 0xab6b4afa, 0xf6e4, 0x11d0, 0x90,0x0d, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IAMMediaTypeStream : public IMediaStream +{ + virtual HRESULT STDMETHODCALLTYPE GetFormat( + AM_MEDIA_TYPE* pMediaType, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFormat( + AM_MEDIA_TYPE* pMediaType, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSample( + long lSampleSize, + BYTE* pbBuffer, + DWORD dwFlags, + IUnknown* pUnkOuter, + IAMMediaTypeSample** ppAMMediaTypeSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStreamAllocatorRequirements( + ALLOCATOR_PROPERTIES* pProps) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStreamAllocatorRequirements( + ALLOCATOR_PROPERTIES* pProps) = 0; + +}; +#else +typedef struct IAMMediaTypeStreamVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAMMediaTypeStream* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAMMediaTypeStream* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAMMediaTypeStream* This); + + /*** IMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)( + IAMMediaTypeStream* This, + IMultiMediaStream** ppMultiMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetInformation)( + IAMMediaTypeStream* This, + MSPID* pPurposeId, + STREAM_TYPE* pType); + + HRESULT (STDMETHODCALLTYPE *SetSameFormat)( + IAMMediaTypeStream* This, + IMediaStream* pStreamThatHasDesiredFormat, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *AllocateSample)( + IAMMediaTypeStream* This, + DWORD dwFlags, + IStreamSample** ppSample); + + HRESULT (STDMETHODCALLTYPE *CreateSharedSample)( + IAMMediaTypeStream* This, + IStreamSample* pExistingSample, + DWORD dwFlags, + IStreamSample** ppNewSample); + + HRESULT (STDMETHODCALLTYPE *SendEndOfStream)( + IAMMediaTypeStream* This, + DWORD dwFlags); + + /*** IAMMediaTypeStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetFormat)( + IAMMediaTypeStream* This, + AM_MEDIA_TYPE* pMediaType, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *SetFormat)( + IAMMediaTypeStream* This, + AM_MEDIA_TYPE* pMediaType, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *CreateSample)( + IAMMediaTypeStream* This, + long lSampleSize, + BYTE* pbBuffer, + DWORD dwFlags, + IUnknown* pUnkOuter, + IAMMediaTypeSample** ppAMMediaTypeSample); + + HRESULT (STDMETHODCALLTYPE *GetStreamAllocatorRequirements)( + IAMMediaTypeStream* This, + ALLOCATOR_PROPERTIES* pProps); + + HRESULT (STDMETHODCALLTYPE *SetStreamAllocatorRequirements)( + IAMMediaTypeStream* This, + ALLOCATOR_PROPERTIES* pProps); + + END_INTERFACE +} IAMMediaTypeStreamVtbl; +interface IAMMediaTypeStream { + const IAMMediaTypeStreamVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IAMMediaTypeStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAMMediaTypeStream_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAMMediaTypeStream_Release(p) (p)->lpVtbl->Release(p) +/*** IMediaStream methods ***/ +#define IAMMediaTypeStream_GetMultiMediaStream(p,a) (p)->lpVtbl->GetMultiMediaStream(p,a) +#define IAMMediaTypeStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b) +#define IAMMediaTypeStream_SetSameFormat(p,a,b) (p)->lpVtbl->SetSameFormat(p,a,b) +#define IAMMediaTypeStream_AllocateSample(p,a,b) (p)->lpVtbl->AllocateSample(p,a,b) +#define IAMMediaTypeStream_CreateSharedSample(p,a,b,c) (p)->lpVtbl->CreateSharedSample(p,a,b,c) +#define IAMMediaTypeStream_SendEndOfStream(p,a) (p)->lpVtbl->SendEndOfStream(p,a) +/*** IAMMediaTypeStream methods ***/ +#define IAMMediaTypeStream_GetFormat(p,a,b) (p)->lpVtbl->GetFormat(p,a,b) +#define IAMMediaTypeStream_SetFormat(p,a,b) (p)->lpVtbl->SetFormat(p,a,b) +#define IAMMediaTypeStream_CreateSample(p,a,b,c,d,e) (p)->lpVtbl->CreateSample(p,a,b,c,d,e) +#define IAMMediaTypeStream_GetStreamAllocatorRequirements(p,a) (p)->lpVtbl->GetStreamAllocatorRequirements(p,a) +#define IAMMediaTypeStream_SetStreamAllocatorRequirements(p,a) (p)->lpVtbl->SetStreamAllocatorRequirements(p,a) +#endif + +#endif + +HRESULT CALLBACK IAMMediaTypeStream_GetFormat_Proxy( + IAMMediaTypeStream* This, + AM_MEDIA_TYPE* pMediaType, + DWORD dwFlags); +void __RPC_STUB IAMMediaTypeStream_GetFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeStream_SetFormat_Proxy( + IAMMediaTypeStream* This, + AM_MEDIA_TYPE* pMediaType, + DWORD dwFlags); +void __RPC_STUB IAMMediaTypeStream_SetFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeStream_CreateSample_Proxy( + IAMMediaTypeStream* This, + long lSampleSize, + BYTE* pbBuffer, + DWORD dwFlags, + IUnknown* pUnkOuter, + IAMMediaTypeSample** ppAMMediaTypeSample); +void __RPC_STUB IAMMediaTypeStream_CreateSample_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeStream_GetStreamAllocatorRequirements_Proxy( + IAMMediaTypeStream* This, + ALLOCATOR_PROPERTIES* pProps); +void __RPC_STUB IAMMediaTypeStream_GetStreamAllocatorRequirements_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeStream_SetStreamAllocatorRequirements_Proxy( + IAMMediaTypeStream* This, + ALLOCATOR_PROPERTIES* pProps); +void __RPC_STUB IAMMediaTypeStream_SetStreamAllocatorRequirements_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IAMMediaTypeStream_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IAMMediaTypeSample interface + */ +#ifndef __IAMMediaTypeSample_INTERFACE_DEFINED__ +#define __IAMMediaTypeSample_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAMMediaTypeSample, 0xab6b4afb, 0xf6e4, 0x11d0, 0x90,0x0d, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IAMMediaTypeSample : public IStreamSample +{ + virtual HRESULT STDMETHODCALLTYPE SetPointer( + BYTE* pBuffer, + long lSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPointer( + BYTE** ppBuffer) = 0; + + virtual long STDMETHODCALLTYPE GetSize( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTime( + REFERENCE_TIME* pTimeStart, + REFERENCE_TIME* pTimeEnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTime( + REFERENCE_TIME* pTimeStart, + REFERENCE_TIME* pTimeEnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsSyncPoint( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSyncPoint( + BOOL bIsSyncPoint) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsPreroll( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetPreroll( + BOOL bIsPreroll) = 0; + + virtual long STDMETHODCALLTYPE GetActualDataLength( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetActualDataLength( + long Len) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMediaType( + AM_MEDIA_TYPE** ppMediaType) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMediaType( + AM_MEDIA_TYPE* pMediaType) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsDiscontinuity( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDiscontinuity( + BOOL bDiscontinuity) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMediaTime( + LONGLONG* pTimeStart, + LONGLONG* pTimeEnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMediaTime( + LONGLONG* pTimeStart, + LONGLONG* pTimeEnd) = 0; + +}; +#else +typedef struct IAMMediaTypeSampleVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAMMediaTypeSample* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAMMediaTypeSample* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAMMediaTypeSample* This); + + /*** IStreamSample methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMediaStream)( + IAMMediaTypeSample* This, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetSampleTimes)( + IAMMediaTypeSample* This, + STREAM_TIME* pStartTime, + STREAM_TIME* pEndTime, + STREAM_TIME* pCurrentTime); + + HRESULT (STDMETHODCALLTYPE *SetSampleTimes)( + IAMMediaTypeSample* This, + const STREAM_TIME* pStartTime, + const STREAM_TIME* pEndTime); + + HRESULT (STDMETHODCALLTYPE *Update)( + IAMMediaTypeSample* This, + DWORD dwFlags, + HANDLE hEvent, + PAPCFUNC pfnAPC, + DWORD dwAPCData); + + HRESULT (STDMETHODCALLTYPE *CompletionStatus)( + IAMMediaTypeSample* This, + DWORD dwFlags, + DWORD dwMilliseconds); + + /*** IAMMediaTypeSample methods ***/ + HRESULT (STDMETHODCALLTYPE *SetPointer)( + IAMMediaTypeSample* This, + BYTE* pBuffer, + long lSize); + + HRESULT (STDMETHODCALLTYPE *GetPointer)( + IAMMediaTypeSample* This, + BYTE** ppBuffer); + + long (STDMETHODCALLTYPE *GetSize)( + IAMMediaTypeSample* This); + + HRESULT (STDMETHODCALLTYPE *GetTime)( + IAMMediaTypeSample* This, + REFERENCE_TIME* pTimeStart, + REFERENCE_TIME* pTimeEnd); + + HRESULT (STDMETHODCALLTYPE *SetTime)( + IAMMediaTypeSample* This, + REFERENCE_TIME* pTimeStart, + REFERENCE_TIME* pTimeEnd); + + HRESULT (STDMETHODCALLTYPE *IsSyncPoint)( + IAMMediaTypeSample* This); + + HRESULT (STDMETHODCALLTYPE *SetSyncPoint)( + IAMMediaTypeSample* This, + BOOL bIsSyncPoint); + + HRESULT (STDMETHODCALLTYPE *IsPreroll)( + IAMMediaTypeSample* This); + + HRESULT (STDMETHODCALLTYPE *SetPreroll)( + IAMMediaTypeSample* This, + BOOL bIsPreroll); + + long (STDMETHODCALLTYPE *GetActualDataLength)( + IAMMediaTypeSample* This); + + HRESULT (STDMETHODCALLTYPE *SetActualDataLength)( + IAMMediaTypeSample* This, + long Len); + + HRESULT (STDMETHODCALLTYPE *GetMediaType)( + IAMMediaTypeSample* This, + AM_MEDIA_TYPE** ppMediaType); + + HRESULT (STDMETHODCALLTYPE *SetMediaType)( + IAMMediaTypeSample* This, + AM_MEDIA_TYPE* pMediaType); + + HRESULT (STDMETHODCALLTYPE *IsDiscontinuity)( + IAMMediaTypeSample* This); + + HRESULT (STDMETHODCALLTYPE *SetDiscontinuity)( + IAMMediaTypeSample* This, + BOOL bDiscontinuity); + + HRESULT (STDMETHODCALLTYPE *GetMediaTime)( + IAMMediaTypeSample* This, + LONGLONG* pTimeStart, + LONGLONG* pTimeEnd); + + HRESULT (STDMETHODCALLTYPE *SetMediaTime)( + IAMMediaTypeSample* This, + LONGLONG* pTimeStart, + LONGLONG* pTimeEnd); + + END_INTERFACE +} IAMMediaTypeSampleVtbl; +interface IAMMediaTypeSample { + const IAMMediaTypeSampleVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IAMMediaTypeSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAMMediaTypeSample_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAMMediaTypeSample_Release(p) (p)->lpVtbl->Release(p) +/*** IStreamSample methods ***/ +#define IAMMediaTypeSample_GetMediaStream(p,a) (p)->lpVtbl->GetMediaStream(p,a) +#define IAMMediaTypeSample_GetSampleTimes(p,a,b,c) (p)->lpVtbl->GetSampleTimes(p,a,b,c) +#define IAMMediaTypeSample_SetSampleTimes(p,a,b) (p)->lpVtbl->SetSampleTimes(p,a,b) +#define IAMMediaTypeSample_Update(p,a,b,c,d) (p)->lpVtbl->Update(p,a,b,c,d) +#define IAMMediaTypeSample_CompletionStatus(p,a,b) (p)->lpVtbl->CompletionStatus(p,a,b) +/*** IAMMediaTypeSample methods ***/ +#define IAMMediaTypeSample_SetPointer(p,a,b) (p)->lpVtbl->SetPointer(p,a,b) +#define IAMMediaTypeSample_GetPointer(p,a) (p)->lpVtbl->GetPointer(p,a) +#define IAMMediaTypeSample_GetSize(p) (p)->lpVtbl->GetSize(p) +#define IAMMediaTypeSample_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b) +#define IAMMediaTypeSample_SetTime(p,a,b) (p)->lpVtbl->SetTime(p,a,b) +#define IAMMediaTypeSample_IsSyncPoint(p) (p)->lpVtbl->IsSyncPoint(p) +#define IAMMediaTypeSample_SetSyncPoint(p,a) (p)->lpVtbl->SetSyncPoint(p,a) +#define IAMMediaTypeSample_IsPreroll(p) (p)->lpVtbl->IsPreroll(p) +#define IAMMediaTypeSample_SetPreroll(p,a) (p)->lpVtbl->SetPreroll(p,a) +#define IAMMediaTypeSample_GetActualDataLength(p) (p)->lpVtbl->GetActualDataLength(p) +#define IAMMediaTypeSample_SetActualDataLength(p,a) (p)->lpVtbl->SetActualDataLength(p,a) +#define IAMMediaTypeSample_GetMediaType(p,a) (p)->lpVtbl->GetMediaType(p,a) +#define IAMMediaTypeSample_SetMediaType(p,a) (p)->lpVtbl->SetMediaType(p,a) +#define IAMMediaTypeSample_IsDiscontinuity(p) (p)->lpVtbl->IsDiscontinuity(p) +#define IAMMediaTypeSample_SetDiscontinuity(p,a) (p)->lpVtbl->SetDiscontinuity(p,a) +#define IAMMediaTypeSample_GetMediaTime(p,a,b) (p)->lpVtbl->GetMediaTime(p,a,b) +#define IAMMediaTypeSample_SetMediaTime(p,a,b) (p)->lpVtbl->SetMediaTime(p,a,b) +#endif + +#endif + +HRESULT CALLBACK IAMMediaTypeSample_SetPointer_Proxy( + IAMMediaTypeSample* This, + BYTE* pBuffer, + long lSize); +void __RPC_STUB IAMMediaTypeSample_SetPointer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_GetPointer_Proxy( + IAMMediaTypeSample* This, + BYTE** ppBuffer); +void __RPC_STUB IAMMediaTypeSample_GetPointer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +long CALLBACK IAMMediaTypeSample_GetSize_Proxy( + IAMMediaTypeSample* This); +void __RPC_STUB IAMMediaTypeSample_GetSize_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_GetTime_Proxy( + IAMMediaTypeSample* This, + REFERENCE_TIME* pTimeStart, + REFERENCE_TIME* pTimeEnd); +void __RPC_STUB IAMMediaTypeSample_GetTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_SetTime_Proxy( + IAMMediaTypeSample* This, + REFERENCE_TIME* pTimeStart, + REFERENCE_TIME* pTimeEnd); +void __RPC_STUB IAMMediaTypeSample_SetTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_IsSyncPoint_Proxy( + IAMMediaTypeSample* This); +void __RPC_STUB IAMMediaTypeSample_IsSyncPoint_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_SetSyncPoint_Proxy( + IAMMediaTypeSample* This, + BOOL bIsSyncPoint); +void __RPC_STUB IAMMediaTypeSample_SetSyncPoint_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_IsPreroll_Proxy( + IAMMediaTypeSample* This); +void __RPC_STUB IAMMediaTypeSample_IsPreroll_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_SetPreroll_Proxy( + IAMMediaTypeSample* This, + BOOL bIsPreroll); +void __RPC_STUB IAMMediaTypeSample_SetPreroll_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +long CALLBACK IAMMediaTypeSample_GetActualDataLength_Proxy( + IAMMediaTypeSample* This); +void __RPC_STUB IAMMediaTypeSample_GetActualDataLength_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_SetActualDataLength_Proxy( + IAMMediaTypeSample* This, + long Len); +void __RPC_STUB IAMMediaTypeSample_SetActualDataLength_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_GetMediaType_Proxy( + IAMMediaTypeSample* This, + AM_MEDIA_TYPE** ppMediaType); +void __RPC_STUB IAMMediaTypeSample_GetMediaType_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_SetMediaType_Proxy( + IAMMediaTypeSample* This, + AM_MEDIA_TYPE* pMediaType); +void __RPC_STUB IAMMediaTypeSample_SetMediaType_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_IsDiscontinuity_Proxy( + IAMMediaTypeSample* This); +void __RPC_STUB IAMMediaTypeSample_IsDiscontinuity_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_SetDiscontinuity_Proxy( + IAMMediaTypeSample* This, + BOOL bDiscontinuity); +void __RPC_STUB IAMMediaTypeSample_SetDiscontinuity_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_GetMediaTime_Proxy( + IAMMediaTypeSample* This, + LONGLONG* pTimeStart, + LONGLONG* pTimeEnd); +void __RPC_STUB IAMMediaTypeSample_GetMediaTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAMMediaTypeSample_SetMediaTime_Proxy( + IAMMediaTypeSample* This, + LONGLONG* pTimeStart, + LONGLONG* pTimeEnd); +void __RPC_STUB IAMMediaTypeSample_SetMediaTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IAMMediaTypeSample_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * AMMultiMediaStream coclass + */ + +DEFINE_GUID(CLSID_AMMultiMediaStream, 0x49c47ce5, 0x9ba4, 0x11d0, 0x82,0x12, 0x00,0xc0,0x4f,0xc3,0x2c,0x45); + +#ifndef __IDirectShowStream_FWD_DEFINED__ +#define __IDirectShowStream_FWD_DEFINED__ +typedef interface IDirectShowStream IDirectShowStream; +#endif + +DEFINE_GUID(CLSID_AMDirectDrawStream, 0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45); +DEFINE_GUID(CLSID_AMAudioStream, 0x8496e040, 0xaf4c, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45); +DEFINE_GUID(CLSID_AMAudioData, 0xf2468580, 0xaf8a, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45); +DEFINE_GUID(CLSID_AMMediaTypeStream, 0xcf0f2f7c, 0xf7bf, 0x11d0, 0x90, 0x0d, 0x00, 0xc0, 0x4f, 0xd9, 0x18, 0x9d); +/* Begin additional prototypes for all interfaces */ + + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_AMSTREAM_H */ diff --git a/reactos/include/psdk/amstream.idl b/reactos/include/psdk/amstream.idl new file mode 100644 index 00000000000..1433f7a5102 --- /dev/null +++ b/reactos/include/psdk/amstream.idl @@ -0,0 +1,319 @@ +/* + * Copyright 2004 Christian Costa + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; +import "mmstream.idl"; +import "strmif.idl"; + +cpp_quote("#include ") +cpp_quote("#include ") +cpp_quote("#include ") +cpp_quote("#include ") +cpp_quote("#include ") + +cpp_quote("#if 0") +interface IDirectDraw; +interface IDirectDrawSurface; +cpp_quote("#endif") + +interface IAMMultiMediaStream; +interface IAMMediaStream; +interface IMediaStreamFilter; +interface IAMMediaTypeStream; +interface IAMMediaTypeSample; + +enum { + AMMSF_NOGRAPHTHREAD = 0x00000001 +}; + +enum { + AMMSF_ADDDEFAULTRENDERER = 0x00000001, + AMMSF_CREATEPEER = 0x00000002, + AMMSF_STOPIFNOSAMPLES = 0x00000004, + AMMSF_NOSTALL = 0x00000008 +}; + +enum { + AMMSF_RENDERTYPEMASK = 0x00000003, + AMMSF_RENDERTOEXISTING = 0x00000000, + AMMSF_RENDERALLSTREAMS = 0x00000001, + AMMSF_NORENDER = 0x00000002, + AMMSF_NOCLOCK = 0x00000004, + AMMSF_RUN = 0x00000008 +}; + + +typedef [v1_enum] enum { + Disabled = 0, + ReadData = 1, + RenderData = 2 +} OUTPUT_STATE; + +/* +[ +object, +uuid(7DB01C96-C0C3-11d0-8FF1-00C04FD9189D), +dual, +helpstring("IDirectShowStream Interface"), +pointer_default(unique) +] +interface IDirectShowStream : IDispatch +{ + [propget, id(1), helpstring("property FileName")] HRESULT FileName([out, retval] BSTR *pVal); + [propput, id(1), helpstring("property FileName")] HRESULT FileName([in] BSTR newVal); + [propget, id(2), helpstring("property Video")] HRESULT Video([out, retval] OUTPUT_STATE *pVal); + [propput, id(2), helpstring("propetry Video")] HRESULT Video([in] OUTPUT_STATE newVal); + [propget, id(3), helpstring("property Audio")] HRESULT Audio([out, retval] OUTPUT_STATE *pVal); + [propput, id(3), helpstring("propetry Audio")] HRESULT Audio([in] OUTPUT_STATE newVal); +}; +*/ + +[ +object, +uuid(BEBE595C-9A6F-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IAMMultiMediaStream : IMultiMediaStream +{ + HRESULT Initialize( + [in] STREAM_TYPE StreamType, + [in] DWORD dwFlags, + [in, optional] IGraphBuilder *pFilterGraph); + + HRESULT GetFilterGraph( + [out] IGraphBuilder **ppGraphBuilder); + + HRESULT GetFilter( + [out] IMediaStreamFilter **ppFilter); + + HRESULT AddMediaStream( + [in, optional] IUnknown *pStreamObject, + [in, optional] const MSPID *PurposeId, + [in] DWORD dwFlags, + [out, optional] IMediaStream **ppNewStream); + + HRESULT OpenFile( + [in] LPCWSTR pszFileName, + [in] DWORD dwFlags); + + HRESULT OpenMoniker( + [in] IBindCtx *pCtx, + [in] IMoniker *pMoniker, + [in] DWORD dwFlags); + + HRESULT Render( + [in] DWORD dwFlags); +} + + +[ +object, +uuid(BEBE595D-9A6F-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IAMMediaStream : IMediaStream +{ + HRESULT Initialize( + [in, optional] IUnknown *pSourceObject, + [in] DWORD dwFlags, + [in] REFMSPID PurposeId, + [in] const STREAM_TYPE StreamType); + + HRESULT SetState( + [in] FILTER_STATE State); + + HRESULT JoinAMMultiMediaStream( + [in] IAMMultiMediaStream *pAMMultiMediaStream); + + HRESULT JoinFilter( + [in] IMediaStreamFilter *pMediaStreamFilter); + + HRESULT JoinFilterGraph( + [in] IFilterGraph *pFilterGraph); +} + + +[ +object, +local, +uuid(BEBE595E-9A6F-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IMediaStreamFilter : IBaseFilter +{ + HRESULT AddMediaStream( + [in] IAMMediaStream *pAMMediaStream); + + HRESULT GetMediaStream( + [in] REFMSPID idPurpose, + [out] IMediaStream **ppMediaStream); + + HRESULT EnumMediaStreams( + [in] long Index, + [out] IMediaStream **ppMediaStream); + + HRESULT SupportSeeking( + [in] BOOL bRenderer); + + HRESULT ReferenceTimeToStreamTime( + [in] [out] REFERENCE_TIME *pTime); + + HRESULT GetCurrentStreamTime( + [out] REFERENCE_TIME *pCurrentStreamTime); + + HRESULT WaitUntil( + [in] REFERENCE_TIME WaitStreamTime); + + HRESULT Flush( + [in] BOOL bCancelEOS); + + HRESULT EndOfStream(); +} + + +[ +object, +local, +uuid(AB6B4AFC-F6E4-11d0-900D-00C04FD9189D), +pointer_default(unique) +] +interface IDirectDrawMediaSampleAllocator : IUnknown +{ + HRESULT GetDirectDraw(IDirectDraw **ppDirectDraw); +} + + +[ +object, +local, +uuid(AB6B4AFE-F6E4-11d0-900D-00C04FD9189D), +pointer_default(unique) +] +interface IDirectDrawMediaSample : IUnknown +{ + HRESULT GetSurfaceAndReleaseLock( + [out] IDirectDrawSurface **ppDirectDrawSurface, + [out] RECT * pRect); + + HRESULT LockMediaSamplePointer(void); +} + + +[ +object, +local, +uuid(AB6B4AFA-F6E4-11d0-900D-00C04FD9189D), +pointer_default(unique) +] + +interface IAMMediaTypeStream : IMediaStream +{ + HRESULT GetFormat( + [out] AM_MEDIA_TYPE * pMediaType, + [in] DWORD dwFlags); + + HRESULT SetFormat( + [in] AM_MEDIA_TYPE * pMediaType, + [in] DWORD dwFlags); + + HRESULT CreateSample( + [in] long lSampleSize, + [in, optional] BYTE * pbBuffer, + [in] DWORD dwFlags, + [in, optional] IUnknown *pUnkOuter, + [out] IAMMediaTypeSample ** ppAMMediaTypeSample); + + HRESULT GetStreamAllocatorRequirements( + [out] ALLOCATOR_PROPERTIES *pProps); + + HRESULT SetStreamAllocatorRequirements( + [in] ALLOCATOR_PROPERTIES *pProps); +} + + +[ +object, +local, +uuid(AB6B4AFB-F6E4-11d0-900D-00C04FD9189D), +pointer_default(unique) +] +interface IAMMediaTypeSample : IStreamSample +{ + HRESULT SetPointer( + [in] BYTE *pBuffer, + [in] long lSize); + + HRESULT GetPointer( + [out] BYTE ** ppBuffer); + + long GetSize(void); + + HRESULT GetTime( + [out] REFERENCE_TIME * pTimeStart, + [out] REFERENCE_TIME * pTimeEnd); + + HRESULT SetTime( + [in] REFERENCE_TIME * pTimeStart, + [in] REFERENCE_TIME * pTimeEnd); + + HRESULT IsSyncPoint(void); + + HRESULT SetSyncPoint( + BOOL bIsSyncPoint); + + HRESULT IsPreroll(void); + + HRESULT SetPreroll( + BOOL bIsPreroll); + + long GetActualDataLength(void); + + HRESULT SetActualDataLength(long Len); + + HRESULT GetMediaType( + AM_MEDIA_TYPE **ppMediaType); + + HRESULT SetMediaType( + AM_MEDIA_TYPE *pMediaType); + + HRESULT IsDiscontinuity(void); + + HRESULT SetDiscontinuity( + BOOL bDiscontinuity); + + HRESULT GetMediaTime( + [out] LONGLONG * pTimeStart, + [out] LONGLONG * pTimeEnd); + + HRESULT SetMediaTime( + [in] LONGLONG * pTimeStart, + [in] LONGLONG * pTimeEnd); +} + +[ + uuid(49C47CE5-9BA4-11d0-8212-00C04FC32C45) +] +coclass AMMultiMediaStream +{ + [default] dispinterface IDirectShowStream; +} + +cpp_quote("DEFINE_GUID(CLSID_AMDirectDrawStream, 0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") +cpp_quote("DEFINE_GUID(CLSID_AMAudioStream, 0x8496e040, 0xaf4c, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") +cpp_quote("DEFINE_GUID(CLSID_AMAudioData, 0xf2468580, 0xaf8a, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") +cpp_quote("DEFINE_GUID(CLSID_AMMediaTypeStream, 0xcf0f2f7c, 0xf7bf, 0x11d0, 0x90, 0x0d, 0x00, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);") diff --git a/reactos/include/psdk/amvideo.h b/reactos/include/psdk/amvideo.h index b4271ee21b7..58279ea56cb 100644 --- a/reactos/include/psdk/amvideo.h +++ b/reactos/include/psdk/amvideo.h @@ -1,260 +1,1282 @@ -/* - * amvideo.h - * - * DirectX header - * - * Copyright Magnus Olsen (magnus@greatlord.com) - */ - -#ifndef __AMVIDEO__ -#define __AMVIDEO__ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\amvideo.idl - Do not edit ***/ +#include +#include +#ifndef __WIDL_INCLUDE_PSDK_AMVIDEO_H +#define __WIDL_INCLUDE_PSDK_AMVIDEO_H #ifdef __cplusplus extern "C" { -#endif - +#endif +#include +#if 0 +typedef void *LPDIRECTDRAW; +typedef void DDSURFACEDESC, DDCAPS; +typedef DWORD RGBQUAD; +typedef LONGLONG REFERENCE_TIME; +typedef struct { + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER; +#endif #include +#define AMDDS_NONE 0x00 +#define AMDDS_DCIPS 0x01 +#define AMDDS_PS 0x02 +#define AMDDS_RGBOVR 0x04 +#define AMDDS_YUVOVR 0x08 +#define AMDDS_RGBOFF 0x10 +#define AMDDS_YUVOFF 0x20 +#define AMDDS_RGBFLP 0x40 +#define AMDDS_YUVFLP 0x80 +#define AMDDS_ALL 0xFF +#define AMDDS_DEFAULT AMDDS_ALL +#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP) +#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP) +#define AMDSS_PRIMARY (AMDDS_DCIPS | AMDDS_PS) +#ifndef __IDirectDrawVideo_FWD_DEFINED__ +#define __IDirectDrawVideo_FWD_DEFINED__ +typedef interface IDirectDrawVideo IDirectDrawVideo; +#endif -#define AMDDS_NONE 0x00 -#define AMDDS_DCIPS 0x01 -#define AMDDS_PS 0x02 -#define AMDDS_RGBOVR 0x04 -#define AMDDS_YUVOVR 0x08 -#define AMDDS_RGBOFF 0x10 -#define AMDDS_YUVOFF 0x20 -#define AMDDS_RGBFLP 0x40 -#define AMDDS_YUVFLP 0x80 -#define AMDDS_ ALL 0xFF -#define AMDDS_DEFAULT AMDDS_ALL -#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP) -#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP) -#define AMDDS_PRIMARY (AMDDS_DCIPS | AMDDS_PS) -#define iPALETTE_COLORS 256 -#define iEGA_COLORS 16 -#define iMASK_COLORS 3 -#define iTRUECOLOR 16 -#define iRED 0 -#define iGREEN 1 -#define iBLUE 2 -#define iPALETTE 8 -#define iMAXBITS 8 +/***************************************************************************** + * IDirectDrawVideo interface + */ +#ifndef __IDirectDrawVideo_INTERFACE_DEFINED__ +#define __IDirectDrawVideo_INTERFACE_DEFINED__ -typedef struct tag_TRUECOLORINFO +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IDirectDrawVideo : public IUnknown { - DWORD dwBitMasks[iMASK_COLORS]; - RGBQUAD bmiColors[iPALETTE_COLORS]; + virtual HRESULT STDMETHODCALLTYPE GetSwitches( + DWORD* pSwitches) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSwitches( + DWORD Switches) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCaps( + DDCAPS* pCaps) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetEmulatedCaps( + DDCAPS* pCaps) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSurfaceDesc( + DDSURFACEDESC* pSurfaceDesc) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFourCCCodes( + DWORD* pCount, + DWORD* pCodes) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDirectDraw( + LPDIRECTDRAW pDirectDraw) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDirectDraw( + LPDIRECTDRAW* ppDirectDraw) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSurfaceType( + DWORD* pSurfaceType) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefault( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE UseScanLine( + long UseScanLine) = 0; + + virtual HRESULT STDMETHODCALLTYPE CanUseScanLine( + long* UseScanLine) = 0; + + virtual HRESULT STDMETHODCALLTYPE UseOverlayStretch( + long UseOverlayStretch) = 0; + + virtual HRESULT STDMETHODCALLTYPE CanUseOverlayStretch( + long* UseOverlayStretch) = 0; + + virtual HRESULT STDMETHODCALLTYPE UseWhenFullScreen( + long UseWhenFullScreen) = 0; + + virtual HRESULT STDMETHODCALLTYPE WillUseFullScreen( + long* UseWhenFullScreen) = 0; + +}; +#else +typedef struct IDirectDrawVideoVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IDirectDrawVideo* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IDirectDrawVideo* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IDirectDrawVideo* This); + + /*** IDirectDrawVideo methods ***/ + HRESULT (STDMETHODCALLTYPE *GetSwitches)( + IDirectDrawVideo* This, + DWORD* pSwitches); + + HRESULT (STDMETHODCALLTYPE *SetSwitches)( + IDirectDrawVideo* This, + DWORD Switches); + + HRESULT (STDMETHODCALLTYPE *GetCaps)( + IDirectDrawVideo* This, + DDCAPS* pCaps); + + HRESULT (STDMETHODCALLTYPE *GetEmulatedCaps)( + IDirectDrawVideo* This, + DDCAPS* pCaps); + + HRESULT (STDMETHODCALLTYPE *GetSurfaceDesc)( + IDirectDrawVideo* This, + DDSURFACEDESC* pSurfaceDesc); + + HRESULT (STDMETHODCALLTYPE *GetFourCCCodes)( + IDirectDrawVideo* This, + DWORD* pCount, + DWORD* pCodes); + + HRESULT (STDMETHODCALLTYPE *SetDirectDraw)( + IDirectDrawVideo* This, + LPDIRECTDRAW pDirectDraw); + + HRESULT (STDMETHODCALLTYPE *GetDirectDraw)( + IDirectDrawVideo* This, + LPDIRECTDRAW* ppDirectDraw); + + HRESULT (STDMETHODCALLTYPE *GetSurfaceType)( + IDirectDrawVideo* This, + DWORD* pSurfaceType); + + HRESULT (STDMETHODCALLTYPE *SetDefault)( + IDirectDrawVideo* This); + + HRESULT (STDMETHODCALLTYPE *UseScanLine)( + IDirectDrawVideo* This, + long UseScanLine); + + HRESULT (STDMETHODCALLTYPE *CanUseScanLine)( + IDirectDrawVideo* This, + long* UseScanLine); + + HRESULT (STDMETHODCALLTYPE *UseOverlayStretch)( + IDirectDrawVideo* This, + long UseOverlayStretch); + + HRESULT (STDMETHODCALLTYPE *CanUseOverlayStretch)( + IDirectDrawVideo* This, + long* UseOverlayStretch); + + HRESULT (STDMETHODCALLTYPE *UseWhenFullScreen)( + IDirectDrawVideo* This, + long UseWhenFullScreen); + + HRESULT (STDMETHODCALLTYPE *WillUseFullScreen)( + IDirectDrawVideo* This, + long* UseWhenFullScreen); + + END_INTERFACE +} IDirectDrawVideoVtbl; +interface IDirectDrawVideo { + const IDirectDrawVideoVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IDirectDrawVideo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawVideo_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawVideo_Release(p) (p)->lpVtbl->Release(p) +/*** IDirectDrawVideo methods ***/ +#define IDirectDrawVideo_GetSwitches(p,a) (p)->lpVtbl->GetSwitches(p,a) +#define IDirectDrawVideo_SetSwitches(p,a) (p)->lpVtbl->SetSwitches(p,a) +#define IDirectDrawVideo_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectDrawVideo_GetEmulatedCaps(p,a) (p)->lpVtbl->GetEmulatedCaps(p,a) +#define IDirectDrawVideo_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a) +#define IDirectDrawVideo_GetFourCCCodes(p,a,b) (p)->lpVtbl->GetFourCCCodes(p,a,b) +#define IDirectDrawVideo_SetDirectDraw(p,a) (p)->lpVtbl->SetDirectDraw(p,a) +#define IDirectDrawVideo_GetDirectDraw(p,a) (p)->lpVtbl->GetDirectDraw(p,a) +#define IDirectDrawVideo_GetSurfaceType(p,a) (p)->lpVtbl->GetSurfaceType(p,a) +#define IDirectDrawVideo_SetDefault(p) (p)->lpVtbl->SetDefault(p) +#define IDirectDrawVideo_UseScanLine(p,a) (p)->lpVtbl->UseScanLine(p,a) +#define IDirectDrawVideo_CanUseScanLine(p,a) (p)->lpVtbl->CanUseScanLine(p,a) +#define IDirectDrawVideo_UseOverlayStretch(p,a) (p)->lpVtbl->UseOverlayStretch(p,a) +#define IDirectDrawVideo_CanUseOverlayStretch(p,a) (p)->lpVtbl->CanUseOverlayStretch(p,a) +#define IDirectDrawVideo_UseWhenFullScreen(p,a) (p)->lpVtbl->UseWhenFullScreen(p,a) +#define IDirectDrawVideo_WillUseFullScreen(p,a) (p)->lpVtbl->WillUseFullScreen(p,a) +#endif + +#endif + +HRESULT CALLBACK IDirectDrawVideo_GetSwitches_Proxy( + IDirectDrawVideo* This, + DWORD* pSwitches); +void __RPC_STUB IDirectDrawVideo_GetSwitches_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_SetSwitches_Proxy( + IDirectDrawVideo* This, + DWORD Switches); +void __RPC_STUB IDirectDrawVideo_SetSwitches_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_GetCaps_Proxy( + IDirectDrawVideo* This, + DDCAPS* pCaps); +void __RPC_STUB IDirectDrawVideo_GetCaps_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_GetEmulatedCaps_Proxy( + IDirectDrawVideo* This, + DDCAPS* pCaps); +void __RPC_STUB IDirectDrawVideo_GetEmulatedCaps_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_GetSurfaceDesc_Proxy( + IDirectDrawVideo* This, + DDSURFACEDESC* pSurfaceDesc); +void __RPC_STUB IDirectDrawVideo_GetSurfaceDesc_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_GetFourCCCodes_Proxy( + IDirectDrawVideo* This, + DWORD* pCount, + DWORD* pCodes); +void __RPC_STUB IDirectDrawVideo_GetFourCCCodes_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_SetDirectDraw_Proxy( + IDirectDrawVideo* This, + LPDIRECTDRAW pDirectDraw); +void __RPC_STUB IDirectDrawVideo_SetDirectDraw_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_GetDirectDraw_Proxy( + IDirectDrawVideo* This, + LPDIRECTDRAW* ppDirectDraw); +void __RPC_STUB IDirectDrawVideo_GetDirectDraw_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_GetSurfaceType_Proxy( + IDirectDrawVideo* This, + DWORD* pSurfaceType); +void __RPC_STUB IDirectDrawVideo_GetSurfaceType_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_SetDefault_Proxy( + IDirectDrawVideo* This); +void __RPC_STUB IDirectDrawVideo_SetDefault_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_UseScanLine_Proxy( + IDirectDrawVideo* This, + long UseScanLine); +void __RPC_STUB IDirectDrawVideo_UseScanLine_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_CanUseScanLine_Proxy( + IDirectDrawVideo* This, + long* UseScanLine); +void __RPC_STUB IDirectDrawVideo_CanUseScanLine_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_UseOverlayStretch_Proxy( + IDirectDrawVideo* This, + long UseOverlayStretch); +void __RPC_STUB IDirectDrawVideo_UseOverlayStretch_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_CanUseOverlayStretch_Proxy( + IDirectDrawVideo* This, + long* UseOverlayStretch); +void __RPC_STUB IDirectDrawVideo_CanUseOverlayStretch_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_UseWhenFullScreen_Proxy( + IDirectDrawVideo* This, + long UseWhenFullScreen); +void __RPC_STUB IDirectDrawVideo_UseWhenFullScreen_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawVideo_WillUseFullScreen_Proxy( + IDirectDrawVideo* This, + long* UseWhenFullScreen); +void __RPC_STUB IDirectDrawVideo_WillUseFullScreen_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IDirectDrawVideo_INTERFACE_DEFINED__ */ + +#ifndef __IQualProp_FWD_DEFINED__ +#define __IQualProp_FWD_DEFINED__ +typedef interface IQualProp IQualProp; +#endif + +/***************************************************************************** + * IQualProp interface + */ +#ifndef __IQualProp_INTERFACE_DEFINED__ +#define __IQualProp_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IQualProp : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE get_FramesDroppedInRenderer( + int* pcFrames) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_FramesDrawn( + int* pcFramesDrawn) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_AvgFrameRate( + int* piAvgFrameRate) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Jitter( + int* iJitter) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_AvgSyncOffset( + int* piAvg) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_DevSyncOffset( + int* piDev) = 0; + +}; +#else +typedef struct IQualPropVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IQualProp* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IQualProp* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IQualProp* This); + + /*** IQualProp methods ***/ + HRESULT (STDMETHODCALLTYPE *get_FramesDroppedInRenderer)( + IQualProp* This, + int* pcFrames); + + HRESULT (STDMETHODCALLTYPE *get_FramesDrawn)( + IQualProp* This, + int* pcFramesDrawn); + + HRESULT (STDMETHODCALLTYPE *get_AvgFrameRate)( + IQualProp* This, + int* piAvgFrameRate); + + HRESULT (STDMETHODCALLTYPE *get_Jitter)( + IQualProp* This, + int* iJitter); + + HRESULT (STDMETHODCALLTYPE *get_AvgSyncOffset)( + IQualProp* This, + int* piAvg); + + HRESULT (STDMETHODCALLTYPE *get_DevSyncOffset)( + IQualProp* This, + int* piDev); + + END_INTERFACE +} IQualPropVtbl; +interface IQualProp { + const IQualPropVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IQualProp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IQualProp_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IQualProp_Release(p) (p)->lpVtbl->Release(p) +/*** IQualProp methods ***/ +#define IQualProp_get_FramesDroppedInRenderer(p,a) (p)->lpVtbl->get_FramesDroppedInRenderer(p,a) +#define IQualProp_get_FramesDrawn(p,a) (p)->lpVtbl->get_FramesDrawn(p,a) +#define IQualProp_get_AvgFrameRate(p,a) (p)->lpVtbl->get_AvgFrameRate(p,a) +#define IQualProp_get_Jitter(p,a) (p)->lpVtbl->get_Jitter(p,a) +#define IQualProp_get_AvgSyncOffset(p,a) (p)->lpVtbl->get_AvgSyncOffset(p,a) +#define IQualProp_get_DevSyncOffset(p,a) (p)->lpVtbl->get_DevSyncOffset(p,a) +#endif + +#endif + +HRESULT CALLBACK IQualProp_get_FramesDroppedInRenderer_Proxy( + IQualProp* This, + int* pcFrames); +void __RPC_STUB IQualProp_get_FramesDroppedInRenderer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IQualProp_get_FramesDrawn_Proxy( + IQualProp* This, + int* pcFramesDrawn); +void __RPC_STUB IQualProp_get_FramesDrawn_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IQualProp_get_AvgFrameRate_Proxy( + IQualProp* This, + int* piAvgFrameRate); +void __RPC_STUB IQualProp_get_AvgFrameRate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IQualProp_get_Jitter_Proxy( + IQualProp* This, + int* iJitter); +void __RPC_STUB IQualProp_get_Jitter_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IQualProp_get_AvgSyncOffset_Proxy( + IQualProp* This, + int* piAvg); +void __RPC_STUB IQualProp_get_AvgSyncOffset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IQualProp_get_DevSyncOffset_Proxy( + IQualProp* This, + int* piDev); +void __RPC_STUB IQualProp_get_DevSyncOffset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IQualProp_INTERFACE_DEFINED__ */ + +#ifndef __IFullScreenVideo_FWD_DEFINED__ +#define __IFullScreenVideo_FWD_DEFINED__ +typedef interface IFullScreenVideo IFullScreenVideo; +#endif + +/***************************************************************************** + * IFullScreenVideo interface + */ +#ifndef __IFullScreenVideo_INTERFACE_DEFINED__ +#define __IFullScreenVideo_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IFullScreenVideo : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE CountModes( + long* pModes) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetModeInfo( + long Mode, + long* pWidth, + long* pHeight, + long* pDepth) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentMode( + long* pMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsModeAvailable( + long Mode) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsModeEnabled( + long Mode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetEnabled( + long Mode, + long bEnabled) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetClipFactor( + long* pClipFactor) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetClipFactor( + long ClipFactor) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMessageDrain( + HWND hwnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMessageDrain( + HWND* hwnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMonitor( + long Monitor) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMonitor( + long* Monitor) = 0; + + virtual HRESULT STDMETHODCALLTYPE HideOnDeactivate( + long Hide) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsHideOnDeactivate( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCaption( + BSTR strCaption) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCaption( + BSTR* pstrCaption) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefault( + ) = 0; + +}; +#else +typedef struct IFullScreenVideoVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IFullScreenVideo* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IFullScreenVideo* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IFullScreenVideo* This); + + /*** IFullScreenVideo methods ***/ + HRESULT (STDMETHODCALLTYPE *CountModes)( + IFullScreenVideo* This, + long* pModes); + + HRESULT (STDMETHODCALLTYPE *GetModeInfo)( + IFullScreenVideo* This, + long Mode, + long* pWidth, + long* pHeight, + long* pDepth); + + HRESULT (STDMETHODCALLTYPE *GetCurrentMode)( + IFullScreenVideo* This, + long* pMode); + + HRESULT (STDMETHODCALLTYPE *IsModeAvailable)( + IFullScreenVideo* This, + long Mode); + + HRESULT (STDMETHODCALLTYPE *IsModeEnabled)( + IFullScreenVideo* This, + long Mode); + + HRESULT (STDMETHODCALLTYPE *SetEnabled)( + IFullScreenVideo* This, + long Mode, + long bEnabled); + + HRESULT (STDMETHODCALLTYPE *GetClipFactor)( + IFullScreenVideo* This, + long* pClipFactor); + + HRESULT (STDMETHODCALLTYPE *SetClipFactor)( + IFullScreenVideo* This, + long ClipFactor); + + HRESULT (STDMETHODCALLTYPE *SetMessageDrain)( + IFullScreenVideo* This, + HWND hwnd); + + HRESULT (STDMETHODCALLTYPE *GetMessageDrain)( + IFullScreenVideo* This, + HWND* hwnd); + + HRESULT (STDMETHODCALLTYPE *SetMonitor)( + IFullScreenVideo* This, + long Monitor); + + HRESULT (STDMETHODCALLTYPE *GetMonitor)( + IFullScreenVideo* This, + long* Monitor); + + HRESULT (STDMETHODCALLTYPE *HideOnDeactivate)( + IFullScreenVideo* This, + long Hide); + + HRESULT (STDMETHODCALLTYPE *IsHideOnDeactivate)( + IFullScreenVideo* This); + + HRESULT (STDMETHODCALLTYPE *SetCaption)( + IFullScreenVideo* This, + BSTR strCaption); + + HRESULT (STDMETHODCALLTYPE *GetCaption)( + IFullScreenVideo* This, + BSTR* pstrCaption); + + HRESULT (STDMETHODCALLTYPE *SetDefault)( + IFullScreenVideo* This); + + END_INTERFACE +} IFullScreenVideoVtbl; +interface IFullScreenVideo { + const IFullScreenVideoVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IFullScreenVideo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IFullScreenVideo_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IFullScreenVideo_Release(p) (p)->lpVtbl->Release(p) +/*** IFullScreenVideo methods ***/ +#define IFullScreenVideo_CountModes(p,a) (p)->lpVtbl->CountModes(p,a) +#define IFullScreenVideo_GetModeInfo(p,a,b,c,d) (p)->lpVtbl->GetModeInfo(p,a,b,c,d) +#define IFullScreenVideo_GetCurrentMode(p,a) (p)->lpVtbl->GetCurrentMode(p,a) +#define IFullScreenVideo_IsModeAvailable(p,a) (p)->lpVtbl->IsModeAvailable(p,a) +#define IFullScreenVideo_IsModeEnabled(p,a) (p)->lpVtbl->IsModeEnabled(p,a) +#define IFullScreenVideo_SetEnabled(p,a,b) (p)->lpVtbl->SetEnabled(p,a,b) +#define IFullScreenVideo_GetClipFactor(p,a) (p)->lpVtbl->GetClipFactor(p,a) +#define IFullScreenVideo_SetClipFactor(p,a) (p)->lpVtbl->SetClipFactor(p,a) +#define IFullScreenVideo_SetMessageDrain(p,a) (p)->lpVtbl->SetMessageDrain(p,a) +#define IFullScreenVideo_GetMessageDrain(p,a) (p)->lpVtbl->GetMessageDrain(p,a) +#define IFullScreenVideo_SetMonitor(p,a) (p)->lpVtbl->SetMonitor(p,a) +#define IFullScreenVideo_GetMonitor(p,a) (p)->lpVtbl->GetMonitor(p,a) +#define IFullScreenVideo_HideOnDeactivate(p,a) (p)->lpVtbl->HideOnDeactivate(p,a) +#define IFullScreenVideo_IsHideOnDeactivate(p) (p)->lpVtbl->IsHideOnDeactivate(p) +#define IFullScreenVideo_SetCaption(p,a) (p)->lpVtbl->SetCaption(p,a) +#define IFullScreenVideo_GetCaption(p,a) (p)->lpVtbl->GetCaption(p,a) +#define IFullScreenVideo_SetDefault(p) (p)->lpVtbl->SetDefault(p) +#endif + +#endif + +HRESULT CALLBACK IFullScreenVideo_CountModes_Proxy( + IFullScreenVideo* This, + long* pModes); +void __RPC_STUB IFullScreenVideo_CountModes_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_GetModeInfo_Proxy( + IFullScreenVideo* This, + long Mode, + long* pWidth, + long* pHeight, + long* pDepth); +void __RPC_STUB IFullScreenVideo_GetModeInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_GetCurrentMode_Proxy( + IFullScreenVideo* This, + long* pMode); +void __RPC_STUB IFullScreenVideo_GetCurrentMode_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_IsModeAvailable_Proxy( + IFullScreenVideo* This, + long Mode); +void __RPC_STUB IFullScreenVideo_IsModeAvailable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_IsModeEnabled_Proxy( + IFullScreenVideo* This, + long Mode); +void __RPC_STUB IFullScreenVideo_IsModeEnabled_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_SetEnabled_Proxy( + IFullScreenVideo* This, + long Mode, + long bEnabled); +void __RPC_STUB IFullScreenVideo_SetEnabled_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_GetClipFactor_Proxy( + IFullScreenVideo* This, + long* pClipFactor); +void __RPC_STUB IFullScreenVideo_GetClipFactor_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_SetClipFactor_Proxy( + IFullScreenVideo* This, + long ClipFactor); +void __RPC_STUB IFullScreenVideo_SetClipFactor_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_SetMessageDrain_Proxy( + IFullScreenVideo* This, + HWND hwnd); +void __RPC_STUB IFullScreenVideo_SetMessageDrain_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_GetMessageDrain_Proxy( + IFullScreenVideo* This, + HWND* hwnd); +void __RPC_STUB IFullScreenVideo_GetMessageDrain_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_SetMonitor_Proxy( + IFullScreenVideo* This, + long Monitor); +void __RPC_STUB IFullScreenVideo_SetMonitor_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_GetMonitor_Proxy( + IFullScreenVideo* This, + long* Monitor); +void __RPC_STUB IFullScreenVideo_GetMonitor_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_HideOnDeactivate_Proxy( + IFullScreenVideo* This, + long Hide); +void __RPC_STUB IFullScreenVideo_HideOnDeactivate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_IsHideOnDeactivate_Proxy( + IFullScreenVideo* This); +void __RPC_STUB IFullScreenVideo_IsHideOnDeactivate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_SetCaption_Proxy( + IFullScreenVideo* This, + BSTR strCaption); +void __RPC_STUB IFullScreenVideo_SetCaption_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_GetCaption_Proxy( + IFullScreenVideo* This, + BSTR* pstrCaption); +void __RPC_STUB IFullScreenVideo_GetCaption_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideo_SetDefault_Proxy( + IFullScreenVideo* This); +void __RPC_STUB IFullScreenVideo_SetDefault_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IFullScreenVideo_INTERFACE_DEFINED__ */ + +#ifndef __IFullScreenVideoEx_FWD_DEFINED__ +#define __IFullScreenVideoEx_FWD_DEFINED__ +typedef interface IFullScreenVideoEx IFullScreenVideoEx; +#endif + +/***************************************************************************** + * IFullScreenVideoEx interface + */ +#ifndef __IFullScreenVideoEx_INTERFACE_DEFINED__ +#define __IFullScreenVideoEx_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IFullScreenVideoEx : public IFullScreenVideo +{ + virtual HRESULT STDMETHODCALLTYPE SetAcceleratorTable( + HWND hwnd, + HACCEL hAccel) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAcceleratorTable( + HWND* phwnd, + HACCEL* phAccel) = 0; + + virtual HRESULT STDMETHODCALLTYPE KeepPixelAspectRatio( + long KeepAspect) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsKeepPixelAspectRatio( + long* pKeepAspect) = 0; + +}; +#else +typedef struct IFullScreenVideoExVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IFullScreenVideoEx* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IFullScreenVideoEx* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IFullScreenVideoEx* This); + + /*** IFullScreenVideo methods ***/ + HRESULT (STDMETHODCALLTYPE *CountModes)( + IFullScreenVideoEx* This, + long* pModes); + + HRESULT (STDMETHODCALLTYPE *GetModeInfo)( + IFullScreenVideoEx* This, + long Mode, + long* pWidth, + long* pHeight, + long* pDepth); + + HRESULT (STDMETHODCALLTYPE *GetCurrentMode)( + IFullScreenVideoEx* This, + long* pMode); + + HRESULT (STDMETHODCALLTYPE *IsModeAvailable)( + IFullScreenVideoEx* This, + long Mode); + + HRESULT (STDMETHODCALLTYPE *IsModeEnabled)( + IFullScreenVideoEx* This, + long Mode); + + HRESULT (STDMETHODCALLTYPE *SetEnabled)( + IFullScreenVideoEx* This, + long Mode, + long bEnabled); + + HRESULT (STDMETHODCALLTYPE *GetClipFactor)( + IFullScreenVideoEx* This, + long* pClipFactor); + + HRESULT (STDMETHODCALLTYPE *SetClipFactor)( + IFullScreenVideoEx* This, + long ClipFactor); + + HRESULT (STDMETHODCALLTYPE *SetMessageDrain)( + IFullScreenVideoEx* This, + HWND hwnd); + + HRESULT (STDMETHODCALLTYPE *GetMessageDrain)( + IFullScreenVideoEx* This, + HWND* hwnd); + + HRESULT (STDMETHODCALLTYPE *SetMonitor)( + IFullScreenVideoEx* This, + long Monitor); + + HRESULT (STDMETHODCALLTYPE *GetMonitor)( + IFullScreenVideoEx* This, + long* Monitor); + + HRESULT (STDMETHODCALLTYPE *HideOnDeactivate)( + IFullScreenVideoEx* This, + long Hide); + + HRESULT (STDMETHODCALLTYPE *IsHideOnDeactivate)( + IFullScreenVideoEx* This); + + HRESULT (STDMETHODCALLTYPE *SetCaption)( + IFullScreenVideoEx* This, + BSTR strCaption); + + HRESULT (STDMETHODCALLTYPE *GetCaption)( + IFullScreenVideoEx* This, + BSTR* pstrCaption); + + HRESULT (STDMETHODCALLTYPE *SetDefault)( + IFullScreenVideoEx* This); + + /*** IFullScreenVideoEx methods ***/ + HRESULT (STDMETHODCALLTYPE *SetAcceleratorTable)( + IFullScreenVideoEx* This, + HWND hwnd, + HACCEL hAccel); + + HRESULT (STDMETHODCALLTYPE *GetAcceleratorTable)( + IFullScreenVideoEx* This, + HWND* phwnd, + HACCEL* phAccel); + + HRESULT (STDMETHODCALLTYPE *KeepPixelAspectRatio)( + IFullScreenVideoEx* This, + long KeepAspect); + + HRESULT (STDMETHODCALLTYPE *IsKeepPixelAspectRatio)( + IFullScreenVideoEx* This, + long* pKeepAspect); + + END_INTERFACE +} IFullScreenVideoExVtbl; +interface IFullScreenVideoEx { + const IFullScreenVideoExVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IFullScreenVideoEx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IFullScreenVideoEx_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IFullScreenVideoEx_Release(p) (p)->lpVtbl->Release(p) +/*** IFullScreenVideo methods ***/ +#define IFullScreenVideoEx_CountModes(p,a) (p)->lpVtbl->CountModes(p,a) +#define IFullScreenVideoEx_GetModeInfo(p,a,b,c,d) (p)->lpVtbl->GetModeInfo(p,a,b,c,d) +#define IFullScreenVideoEx_GetCurrentMode(p,a) (p)->lpVtbl->GetCurrentMode(p,a) +#define IFullScreenVideoEx_IsModeAvailable(p,a) (p)->lpVtbl->IsModeAvailable(p,a) +#define IFullScreenVideoEx_IsModeEnabled(p,a) (p)->lpVtbl->IsModeEnabled(p,a) +#define IFullScreenVideoEx_SetEnabled(p,a,b) (p)->lpVtbl->SetEnabled(p,a,b) +#define IFullScreenVideoEx_GetClipFactor(p,a) (p)->lpVtbl->GetClipFactor(p,a) +#define IFullScreenVideoEx_SetClipFactor(p,a) (p)->lpVtbl->SetClipFactor(p,a) +#define IFullScreenVideoEx_SetMessageDrain(p,a) (p)->lpVtbl->SetMessageDrain(p,a) +#define IFullScreenVideoEx_GetMessageDrain(p,a) (p)->lpVtbl->GetMessageDrain(p,a) +#define IFullScreenVideoEx_SetMonitor(p,a) (p)->lpVtbl->SetMonitor(p,a) +#define IFullScreenVideoEx_GetMonitor(p,a) (p)->lpVtbl->GetMonitor(p,a) +#define IFullScreenVideoEx_HideOnDeactivate(p,a) (p)->lpVtbl->HideOnDeactivate(p,a) +#define IFullScreenVideoEx_IsHideOnDeactivate(p) (p)->lpVtbl->IsHideOnDeactivate(p) +#define IFullScreenVideoEx_SetCaption(p,a) (p)->lpVtbl->SetCaption(p,a) +#define IFullScreenVideoEx_GetCaption(p,a) (p)->lpVtbl->GetCaption(p,a) +#define IFullScreenVideoEx_SetDefault(p) (p)->lpVtbl->SetDefault(p) +/*** IFullScreenVideoEx methods ***/ +#define IFullScreenVideoEx_SetAcceleratorTable(p,a,b) (p)->lpVtbl->SetAcceleratorTable(p,a,b) +#define IFullScreenVideoEx_GetAcceleratorTable(p,a,b) (p)->lpVtbl->GetAcceleratorTable(p,a,b) +#define IFullScreenVideoEx_KeepPixelAspectRatio(p,a) (p)->lpVtbl->KeepPixelAspectRatio(p,a) +#define IFullScreenVideoEx_IsKeepPixelAspectRatio(p,a) (p)->lpVtbl->IsKeepPixelAspectRatio(p,a) +#endif + +#endif + +HRESULT CALLBACK IFullScreenVideoEx_SetAcceleratorTable_Proxy( + IFullScreenVideoEx* This, + HWND hwnd, + HACCEL hAccel); +void __RPC_STUB IFullScreenVideoEx_SetAcceleratorTable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideoEx_GetAcceleratorTable_Proxy( + IFullScreenVideoEx* This, + HWND* phwnd, + HACCEL* phAccel); +void __RPC_STUB IFullScreenVideoEx_GetAcceleratorTable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideoEx_KeepPixelAspectRatio_Proxy( + IFullScreenVideoEx* This, + long KeepAspect); +void __RPC_STUB IFullScreenVideoEx_KeepPixelAspectRatio_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFullScreenVideoEx_IsKeepPixelAspectRatio_Proxy( + IFullScreenVideoEx* This, + long* pKeepAspect); +void __RPC_STUB IFullScreenVideoEx_IsKeepPixelAspectRatio_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IFullScreenVideoEx_INTERFACE_DEFINED__ */ + +#ifndef __IBaseVideoMixer_FWD_DEFINED__ +#define __IBaseVideoMixer_FWD_DEFINED__ +typedef interface IBaseVideoMixer IBaseVideoMixer; +#endif + +/***************************************************************************** + * IBaseVideoMixer interface + */ +#ifndef __IBaseVideoMixer_INTERFACE_DEFINED__ +#define __IBaseVideoMixer_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IBaseVideoMixer : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE SetLeadPin( + int iPin) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLeadPin( + int* piPin) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInputPinCount( + int* piPinCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsUsingClock( + int* pbValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetUsingClock( + int bValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetClockPeriod( + int* pbValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetClockPeriod( + int bValue) = 0; + +}; +#else +typedef struct IBaseVideoMixerVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IBaseVideoMixer* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IBaseVideoMixer* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IBaseVideoMixer* This); + + /*** IBaseVideoMixer methods ***/ + HRESULT (STDMETHODCALLTYPE *SetLeadPin)( + IBaseVideoMixer* This, + int iPin); + + HRESULT (STDMETHODCALLTYPE *GetLeadPin)( + IBaseVideoMixer* This, + int* piPin); + + HRESULT (STDMETHODCALLTYPE *GetInputPinCount)( + IBaseVideoMixer* This, + int* piPinCount); + + HRESULT (STDMETHODCALLTYPE *IsUsingClock)( + IBaseVideoMixer* This, + int* pbValue); + + HRESULT (STDMETHODCALLTYPE *SetUsingClock)( + IBaseVideoMixer* This, + int bValue); + + HRESULT (STDMETHODCALLTYPE *GetClockPeriod)( + IBaseVideoMixer* This, + int* pbValue); + + HRESULT (STDMETHODCALLTYPE *SetClockPeriod)( + IBaseVideoMixer* This, + int bValue); + + END_INTERFACE +} IBaseVideoMixerVtbl; +interface IBaseVideoMixer { + const IBaseVideoMixerVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IBaseVideoMixer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IBaseVideoMixer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IBaseVideoMixer_Release(p) (p)->lpVtbl->Release(p) +/*** IBaseVideoMixer methods ***/ +#define IBaseVideoMixer_SetLeadPin(p,a) (p)->lpVtbl->SetLeadPin(p,a) +#define IBaseVideoMixer_GetLeadPin(p,a) (p)->lpVtbl->GetLeadPin(p,a) +#define IBaseVideoMixer_GetInputPinCount(p,a) (p)->lpVtbl->GetInputPinCount(p,a) +#define IBaseVideoMixer_IsUsingClock(p,a) (p)->lpVtbl->IsUsingClock(p,a) +#define IBaseVideoMixer_SetUsingClock(p,a) (p)->lpVtbl->SetUsingClock(p,a) +#define IBaseVideoMixer_GetClockPeriod(p,a) (p)->lpVtbl->GetClockPeriod(p,a) +#define IBaseVideoMixer_SetClockPeriod(p,a) (p)->lpVtbl->SetClockPeriod(p,a) +#endif + +#endif + +HRESULT CALLBACK IBaseVideoMixer_SetLeadPin_Proxy( + IBaseVideoMixer* This, + int iPin); +void __RPC_STUB IBaseVideoMixer_SetLeadPin_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBaseVideoMixer_GetLeadPin_Proxy( + IBaseVideoMixer* This, + int* piPin); +void __RPC_STUB IBaseVideoMixer_GetLeadPin_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBaseVideoMixer_GetInputPinCount_Proxy( + IBaseVideoMixer* This, + int* piPinCount); +void __RPC_STUB IBaseVideoMixer_GetInputPinCount_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBaseVideoMixer_IsUsingClock_Proxy( + IBaseVideoMixer* This, + int* pbValue); +void __RPC_STUB IBaseVideoMixer_IsUsingClock_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBaseVideoMixer_SetUsingClock_Proxy( + IBaseVideoMixer* This, + int bValue); +void __RPC_STUB IBaseVideoMixer_SetUsingClock_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBaseVideoMixer_GetClockPeriod_Proxy( + IBaseVideoMixer* This, + int* pbValue); +void __RPC_STUB IBaseVideoMixer_GetClockPeriod_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBaseVideoMixer_SetClockPeriod_Proxy( + IBaseVideoMixer* This, + int bValue); +void __RPC_STUB IBaseVideoMixer_SetClockPeriod_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IBaseVideoMixer_INTERFACE_DEFINED__ */ + +#define iPALETTE_COLORS 256 +#define iEGA_COLORS 16 +#define iMASK_COLORS 3 +#define iTRUECOLOR 16 +#define iRED 0 +#define iGREEN 1 +#define iBLUE 2 +#define iPALETTE 8 +#define iMAXBITS 8 +typedef struct tag_TRUECOLORINFO { + DWORD dwBitMasks[3]; + RGBQUAD bmiColors[256]; } TRUECOLORINFO; - - -typedef struct tagVIDEOINFOHEADER -{ - RECT rcSource; - RECT rcTarget; - DWORD dwBitRate; - DWORD dwBitErrorRate; - REFERENCE_TIME AvgTimePerFrame; - BITMAPINFOHEADER bmiHeader; +typedef struct tagVIDEOINFOHEADER { + RECT rcSource; + RECT rcTarget; + DWORD dwBitRate; + DWORD dwBitErrorRate; + REFERENCE_TIME AvgTimePerFrame; + BITMAPINFOHEADER bmiHeader; } VIDEOINFOHEADER; - - -typedef struct tagVIDEOINFO -{ - RECT rcSource; - RECT rcTarget; - DWORD dwBitRate; - DWORD dwBitErrorRate; - REFERENCE_TIME AvgTimePerFrame; - BITMAPINFOHEADER bmiHeader; - union - { - RGBQUAD bmiColors[iPALETTE_COLORS]; - DWORD dwBitMasks[iMASK_COLORS]; - TRUECOLORINFO TrueColorInfo; - }; +typedef struct tagVIDEOINFO { + RECT rcSource; + RECT rcTarget; + DWORD dwBitRate; + DWORD dwBitErrorRate; + REFERENCE_TIME AvgTimePerFrame; + BITMAPINFOHEADER bmiHeader; + union { + RGBQUAD bmiColors[256]; + DWORD dwBitMasks[3]; + TRUECOLORINFO TrueColorInfo; + } DUMMYUNIONNAME; } VIDEOINFO; - -typedef struct tagMPEG1VIDEOINFO -{ - VIDEOINFOHEADER hdr; - DWORD dwStartTimeCode; - DWORD cbSequenceHeader; - BYTE bSequenceHeader[1]; +typedef struct tagMPEG1VIDEOINFO { + VIDEOINFOHEADER hdr; + DWORD dwStartTimeCode; + DWORD cbSequenceHeader; + BYTE bSequenceHeader[1]; } MPEG1VIDEOINFO; - -typedef struct tagAnalogVideoInfo -{ - RECT rcSource; - RECT rcTarget; - DWORD dwActiveWidth; - DWORD dwActiveHeight; - REFERENCE_TIME AvgTimePerFrame; +#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140 +#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) +typedef struct tagAnalogVideoInfo { + RECT rcSource; + RECT rcTarget; + DWORD dwActiveWidth; + DWORD dwActiveHeight; + REFERENCE_TIME AvgTimePerFrame; } ANALOGVIDEOINFO; - -#define TRUECOLOR(PBMIH) ((TRUECOLORINFO *)(((LPBYTE)&((PBMIH)->bmiHeader)) + (PBMIH)->bmiHeader.biSize)) -#define COLORS(PBMIH) ((RGBQUAD *)(((LPBYTE)&((PBMIH)->bmiHeader)) + (PBMIH)->bmiHeader.biSize)) -#define BITMASKS(PBMIH) ((DWORD *)(((LPBYTE)&((PBMIH)->bmiHeader)) + (PBMIH)->bmiHeader.biSize)) - -#define SIZE_EGA_PALETTE (iEGA_COLORS * sizeof(RGBQUAD)) -#define SIZE_PALETTE (iPALETTE_COLORS * sizeof(RGBQUAD)) -#define SIZE_MASKS (iMASK_COLORS * sizeof(DWORD)) -#define SIZE_PREHEADER (FIELD_OFFSET(VIDEOINFOHEADER,bmiHeader)) -#define SIZE_VIDEOHEADER (sizeof(BITMAPINFOHEADER) + SIZE_PREHEADER) - -#define WIDTHBYTES(BTIS) ((DWORD)(((BTIS)+31) & (~31)) / 8) -#define DIBWIDTHBYTES(BI) (DWORD)(BI).biBitCount) * (DWORD)WIDTHBYTES((DWORD)(BI).biWidth -#define _DIBSIZE(BI) (DIBWIDTHBYTES(BI) * (DWORD)(BI).biHeight) -#define DIBSIZE(BI) ((BI).biHeight < 0 ? (-1)*(_DIBSIZE(BI)) : _DIBSIZE(BI)) - -#define BIT_MASKS_MATCH(PBMIH1,PBMIH2) \ - ((PBMIH2)->dwBitMasks[iGREEN] == (PBMIH1)->dwBitMasks[iGREEN]) && \ - (((PBMIH2)->dwBitMasks[iRED] == (PBMIH1)->dwBitMasks[iRED]) && \ - ((PBMIH2)->dwBitMasks[iBLUE] == (PBMIH1)->dwBitMasks[iBLUE])) - -#define RESET_MASKS(PBMIH) (ZeroMemory((PVOID)(PBMIH)->dwBitFields,SIZE_MASKS)) -#define RESET_HEADER(PBMIH) (ZeroMemory((PVOID)(PBMIH),SIZE_VIDEOHEADER)) -#define RESET_PALETTE(PBMIH) (ZeroMemory((PVOID)(PBMIH)->bmiColors,SIZE_PALETTE)); -#define PALETTISED(PBMIH) ((PBMIH)->bmiHeader.biBitCount <= iPALETTE) -#define PALETTE_ENTRIES(PBMIH) ((DWORD) 1 << (PBMIH)->bmiHeader.biBitCount) -#define HEADER(pVideoInfo) (&(((VIDEOINFOHEADER *) (pVideoInfo))->bmiHeader)) -#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140 -#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader) -#define SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(MPEG1VIDEOINFO, bSequenceHeader[0]) + \ - (pv)->cbSequenceHeader) - -#undef INTERFACE -#define INTERFACE IDirectDrawVideo - -DECLARE_INTERFACE_(IDirectDrawVideo, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetSwitches)(THIS_ DWORD *pSwitches) PURE; - STDMETHOD(SetSwitches)(THIS_ DWORD Switches) PURE; - STDMETHOD(GetCaps)(THIS_ DDCAPS *pCaps) PURE; - STDMETHOD(GetEmulatedCaps)(THIS_ DDCAPS *pCaps) PURE; - STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC *pSurfaceDesc) PURE; - STDMETHOD(GetFourCCCodes)(THIS_ DWORD *pCount,DWORD *pCodes) PURE; - STDMETHOD(SetDirectDraw)(THIS_ LPDIRECTDRAW pDirectDraw) PURE; - STDMETHOD(GetDirectDraw)(THIS_ LPDIRECTDRAW *ppDirectDraw) PURE; - STDMETHOD(GetSurfaceType)(THIS_ DWORD *pSurfaceType) PURE; - STDMETHOD(SetDefault)(THIS) PURE; - STDMETHOD(UseScanLine)(THIS_ long UseScanLine) PURE; - STDMETHOD(CanUseScanLine)(THIS_ long *UseScanLine) PURE; - STDMETHOD(UseOverlayStretch)(THIS_ long UseOverlayStretch) PURE; - STDMETHOD(CanUseOverlayStretch)(THIS_ long *UseOverlayStretch) PURE; - STDMETHOD(UseWhenFullScreen)(THIS_ long UseWhenFullScreen) PURE; - STDMETHOD(WillUseFullScreen)(THIS_ long *UseWhenFullScreen) PURE; -}; - - -#undef INTERFACE -#define INTERFACE IFullScreenVideo - -DECLARE_INTERFACE_(IFullScreenVideo, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CountModes)(THIS_ long *pModes) PURE; - STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE; - STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE; - STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE; - STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE; - STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE; - STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE; - STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE; - STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE; - STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE; - STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE; - STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE; - STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE; - STDMETHOD(IsHideOnDeactivate)(THIS) PURE; - STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE; - STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE; - STDMETHOD(SetDefault)(THIS) PURE; -} - -#undef INTERFACE -#define INTERFACE IQualProp - -DECLARE_INTERFACE_(IQualProp, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(get_FramesDroppedInRenderer)(THIS_ int *pcFrames) PURE; - STDMETHOD(get_FramesDrawn)(THIS_ int *pcFramesDrawn) PURE; - STDMETHOD(get_AvgFrameRate)(THIS_ int *piAvgFrameRate) PURE; - STDMETHOD(get_Jitter)(THIS_ int *iJitter) PURE; - STDMETHOD(get_AvgSyncOffset)(THIS_ int *piAvg) PURE; - STDMETHOD(get_DevSyncOffset)(THIS_ int *piDev) PURE; -}; - - -#undef INTERFACE -#define INTERFACE IBaseVideoMixer - -DECLARE_INTERFACE_(IBaseVideoMixer, IUnknown) -{ - STDMETHOD(SetLeadPin)(THIS_ int iPin) PURE; - STDMETHOD(GetLeadPin)(THIS_ int *piPin) PURE; - STDMETHOD(GetInputPinCount)(THIS_ int *piPinCount) PURE; - STDMETHOD(IsUsingClock)(THIS_ int *pbValue) PURE; - STDMETHOD(SetUsingClock)(THIS_ int bValue) PURE; - STDMETHOD(GetClockPeriod)(THIS_ int *pbValue) PURE; - STDMETHOD(SetClockPeriod)(THIS_ int bValue) PURE; -}; - -#undef INTERFACE -#define INTERFACE IFullScreenVideoEx - -DECLARE_INTERFACE_(IFullScreenVideoEx, IFullScreenVideo) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CountModes)(THIS_ long *pModes) PURE; - STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE; - STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE; - STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE; - STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE; - STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE; - STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE; - STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE; - STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE; - STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE; - STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE; - STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE; - STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE; - STDMETHOD(IsHideOnDeactivate)(THIS) PURE; - STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE; - STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE; - STDMETHOD(SetDefault)(THIS) PURE; - STDMETHOD(SetAcceleratorTable)(THIS_ HWND hwnd,HACCEL hAccel) PURE; - STDMETHOD(GetAcceleratorTable)(THIS_ HWND *phwnd,HACCEL *phAccel) PURE; - STDMETHOD(KeepPixelAspectRatio)(THIS_ long KeepAspect) PURE; - STDMETHOD(IsKeepPixelAspectRatio)(THIS_ long *pKeepAspect) PURE; -}; - - - - -typedef enum -{ - AM_PROPERTY_FRAMESTEP_STEP = 0x01, - AM_PROPERTY_FRAMESTEP_CANCEL = 0x02, - AM_PROPERTY_FRAMESTEP_CANSTEP = 0x03, - AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x04 +typedef enum { + AM_PROPERTY_FRAMESTEP_STEP = 0x1, + AM_PROPERTY_FRAMESTEP_CANCEL = 0x2, + AM_PROPERTY_FRAMESTEP_CANSTEP = 0x3, + AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x4 } AM_PROPERTY_FRAMESTEP; - -typedef struct _AM_FRAMESTEP_STEP -{ +typedef struct _AM_FRAMESTEP_STEP { DWORD dwFramesToStep; } AM_FRAMESTEP_STEP; +/* Begin additional prototypes for all interfaces */ + +unsigned long __RPC_USER HACCEL_UserSize (unsigned long *, unsigned long, HACCEL *); +unsigned char * __RPC_USER HACCEL_UserMarshal (unsigned long *, unsigned char *, HACCEL *); +unsigned char * __RPC_USER HACCEL_UserUnmarshal(unsigned long *, unsigned char *, HACCEL *); +void __RPC_USER HACCEL_UserFree (unsigned long *, HACCEL *); +unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); +unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); +void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); +unsigned long __RPC_USER HWND_UserSize (unsigned long *, unsigned long, HWND *); +unsigned char * __RPC_USER HWND_UserMarshal (unsigned long *, unsigned char *, HWND *); +unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND *); +void __RPC_USER HWND_UserFree (unsigned long *, HWND *); + +/* End additional prototypes */ #ifdef __cplusplus } #endif -#endif - +#endif /* __WIDL_INCLUDE_PSDK_AMVIDEO_H */ diff --git a/reactos/include/psdk/amvideo.idl b/reactos/include/psdk/amvideo.idl new file mode 100644 index 00000000000..c63275b621c --- /dev/null +++ b/reactos/include/psdk/amvideo.idl @@ -0,0 +1,232 @@ +/* + * Copyright (C) 2003 Robert Shearman + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; + +/* trick widl into thinking that it knows the DirectDraw types + * as there is no IDL file for them (yet) */ +cpp_quote("#if 0") +typedef void * LPDIRECTDRAW; +typedef void DDSURFACEDESC,DDCAPS; +typedef DWORD RGBQUAD; +typedef LONGLONG REFERENCE_TIME; +typedef struct +{ + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER; +cpp_quote("#endif") + +cpp_quote("#include ") + +cpp_quote("#define AMDDS_NONE 0x00") +cpp_quote("#define AMDDS_DCIPS 0x01") +cpp_quote("#define AMDDS_PS 0x02") +cpp_quote("#define AMDDS_RGBOVR 0x04") +cpp_quote("#define AMDDS_YUVOVR 0x08") +cpp_quote("#define AMDDS_RGBOFF 0x10") +cpp_quote("#define AMDDS_YUVOFF 0x20") +cpp_quote("#define AMDDS_RGBFLP 0x40") +cpp_quote("#define AMDDS_YUVFLP 0x80") +cpp_quote("#define AMDDS_ALL 0xFF") +cpp_quote("#define AMDDS_DEFAULT AMDDS_ALL") + +cpp_quote("#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)") +cpp_quote("#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)") +cpp_quote("#define AMDSS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)") + +[ + object, + pointer_default(unique) +] +interface IDirectDrawVideo : IUnknown +{ + HRESULT GetSwitches([out] DWORD * pSwitches); + HRESULT SetSwitches([in] DWORD Switches); + HRESULT GetCaps([out] DDCAPS * pCaps); + HRESULT GetEmulatedCaps([out] DDCAPS *pCaps); + HRESULT GetSurfaceDesc([out] DDSURFACEDESC * pSurfaceDesc); + HRESULT GetFourCCCodes([out] DWORD * pCount, [out] DWORD * pCodes); + HRESULT SetDirectDraw([in] LPDIRECTDRAW pDirectDraw); + HRESULT GetDirectDraw([out] LPDIRECTDRAW * ppDirectDraw); + HRESULT GetSurfaceType([out] DWORD * pSurfaceType); + HRESULT SetDefault(); + HRESULT UseScanLine([in] long UseScanLine); + HRESULT CanUseScanLine([out] long * UseScanLine); + HRESULT UseOverlayStretch([in] long UseOverlayStretch); + HRESULT CanUseOverlayStretch([out] long * UseOverlayStretch); + HRESULT UseWhenFullScreen([in] long UseWhenFullScreen); + HRESULT WillUseFullScreen([out] long * UseWhenFullScreen); +} + +[ + object, + pointer_default(unique) +] +interface IQualProp : IUnknown +{ + [propget] HRESULT FramesDroppedInRenderer([out] int * pcFrames); + [propget] HRESULT FramesDrawn([out] int * pcFramesDrawn); + [propget] HRESULT AvgFrameRate([out] int * piAvgFrameRate); + [propget] HRESULT Jitter([out] int * iJitter); + [propget] HRESULT AvgSyncOffset([out] int * piAvg); + [propget] HRESULT DevSyncOffset([out] int * piDev); +} + +[ + object, + pointer_default(unique) +] +interface IFullScreenVideo : IUnknown +{ + HRESULT CountModes([out] long * pModes); + HRESULT GetModeInfo([in] long Mode, [out] long * pWidth, [out] long * pHeight, [out] long * pDepth); + HRESULT GetCurrentMode([out] long * pMode); + HRESULT IsModeAvailable([in] long Mode); + HRESULT IsModeEnabled([in] long Mode); + HRESULT SetEnabled([in] long Mode, [in] long bEnabled); + HRESULT GetClipFactor([out] long * pClipFactor); + HRESULT SetClipFactor([in] long ClipFactor); + HRESULT SetMessageDrain([in] HWND hwnd); + HRESULT GetMessageDrain([out] HWND * hwnd); + HRESULT SetMonitor([in] long Monitor); + HRESULT GetMonitor([out] long * Monitor); + HRESULT HideOnDeactivate([in] long Hide); + HRESULT IsHideOnDeactivate(); + HRESULT SetCaption([in] BSTR strCaption); + HRESULT GetCaption([out] BSTR * pstrCaption); + HRESULT SetDefault(); +} + +[ + object, + pointer_default(unique) +] +interface IFullScreenVideoEx : IFullScreenVideo +{ + HRESULT SetAcceleratorTable([in] HWND hwnd, [in] HACCEL hAccel); + HRESULT GetAcceleratorTable([out] HWND * phwnd, [out] HACCEL * phAccel); + HRESULT KeepPixelAspectRatio([in] long KeepAspect); + /* FIXME: not sure is this next method is an [out] */ + HRESULT IsKeepPixelAspectRatio([out] long * pKeepAspect); +} + +[ + object, + pointer_default(unique) +] +interface IBaseVideoMixer : IUnknown +{ + HRESULT SetLeadPin([in] int iPin); + HRESULT GetLeadPin([out] int * piPin); + HRESULT GetInputPinCount([out] int * piPinCount); + HRESULT IsUsingClock([out] int * pbValue); + HRESULT SetUsingClock([in] int bValue); + HRESULT GetClockPeriod([out] int * pbValue); + HRESULT SetClockPeriod([in] int bValue); +} + +#define iPALETTE_COLORS 256 +#define iMASK_COLORS 3 + +cpp_quote("#define iPALETTE_COLORS 256") +cpp_quote("#define iEGA_COLORS 16") +cpp_quote("#define iMASK_COLORS 3") +cpp_quote("#define iTRUECOLOR 16") +cpp_quote("#define iRED 0") +cpp_quote("#define iGREEN 1") +cpp_quote("#define iBLUE 2") +cpp_quote("#define iPALETTE 8") +cpp_quote("#define iMAXBITS 8") + +typedef struct tag_TRUECOLORINFO +{ + DWORD dwBitMasks[iMASK_COLORS]; + RGBQUAD bmiColors[iPALETTE_COLORS]; +} TRUECOLORINFO; + +typedef struct tagVIDEOINFOHEADER +{ + RECT rcSource; + RECT rcTarget; + DWORD dwBitRate; + DWORD dwBitErrorRate; + REFERENCE_TIME AvgTimePerFrame; + + BITMAPINFOHEADER bmiHeader; +} VIDEOINFOHEADER; + +typedef struct tagVIDEOINFO +{ + RECT rcSource; + RECT rcTarget; + DWORD dwBitRate; + DWORD dwBitErrorRate; + REFERENCE_TIME AvgTimePerFrame; + + BITMAPINFOHEADER bmiHeader; + + union + { + RGBQUAD bmiColors[iPALETTE_COLORS]; + DWORD dwBitMasks[iMASK_COLORS]; + TRUECOLORINFO TrueColorInfo; + }; +} VIDEOINFO; + +typedef struct tagMPEG1VIDEOINFO +{ + VIDEOINFOHEADER hdr; + DWORD dwStartTimeCode; + DWORD cbSequenceHeader; + BYTE bSequenceHeader[1]; +} MPEG1VIDEOINFO; + +cpp_quote("#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140") +cpp_quote("#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)") + +typedef struct tagAnalogVideoInfo +{ + RECT rcSource; + RECT rcTarget; + DWORD dwActiveWidth; + DWORD dwActiveHeight; + REFERENCE_TIME AvgTimePerFrame; +} ANALOGVIDEOINFO; + +typedef enum +{ + AM_PROPERTY_FRAMESTEP_STEP = 0x01, + AM_PROPERTY_FRAMESTEP_CANCEL = 0x02, + AM_PROPERTY_FRAMESTEP_CANSTEP = 0x03, + AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x04 +} AM_PROPERTY_FRAMESTEP; + +typedef struct _AM_FRAMESTEP_STEP +{ + DWORD dwFramesToStep; +} AM_FRAMESTEP_STEP; diff --git a/reactos/include/psdk/austream.h b/reactos/include/psdk/austream.h new file mode 100644 index 00000000000..0389aba616c --- /dev/null +++ b/reactos/include/psdk/austream.h @@ -0,0 +1,485 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\austream.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_AUSTREAM_H +#define __WIDL_INCLUDE_PSDK_AUSTREAM_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#if 0 +typedef struct tWAVEFORMATEX WAVEFORMATEX; +#endif +#ifndef __IAudioMediaStream_FWD_DEFINED__ +#define __IAudioMediaStream_FWD_DEFINED__ +typedef interface IAudioMediaStream IAudioMediaStream; +#endif + +#ifndef __IAudioStreamSample_FWD_DEFINED__ +#define __IAudioStreamSample_FWD_DEFINED__ +typedef interface IAudioStreamSample IAudioStreamSample; +#endif + +#ifndef __IMemoryData_FWD_DEFINED__ +#define __IMemoryData_FWD_DEFINED__ +typedef interface IMemoryData IMemoryData; +#endif + +#ifndef __IAudioData_FWD_DEFINED__ +#define __IAudioData_FWD_DEFINED__ +typedef interface IAudioData IAudioData; +#endif + +/***************************************************************************** + * IAudioMediaStream interface + */ +#ifndef __IAudioMediaStream_INTERFACE_DEFINED__ +#define __IAudioMediaStream_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAudioMediaStream, 0xf7537560, 0xa3be, 0x11d0, 0x82,0x12, 0x00,0xc0,0x4f,0xc3,0x2c,0x45); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IAudioMediaStream : public IMediaStream +{ + virtual HRESULT STDMETHODCALLTYPE GetFormat( + WAVEFORMATEX* pWaveFormatCurrent) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFormat( + const WAVEFORMATEX* lpWaveFormat) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSample( + IAudioData* pAudioData, + DWORD dwFlags, + IAudioStreamSample** ppSample) = 0; + +}; +#else +typedef struct IAudioMediaStreamVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAudioMediaStream* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAudioMediaStream* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAudioMediaStream* This); + + /*** IMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)( + IAudioMediaStream* This, + IMultiMediaStream** ppMultiMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetInformation)( + IAudioMediaStream* This, + MSPID* pPurposeId, + STREAM_TYPE* pType); + + HRESULT (STDMETHODCALLTYPE *SetSameFormat)( + IAudioMediaStream* This, + IMediaStream* pStreamThatHasDesiredFormat, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *AllocateSample)( + IAudioMediaStream* This, + DWORD dwFlags, + IStreamSample** ppSample); + + HRESULT (STDMETHODCALLTYPE *CreateSharedSample)( + IAudioMediaStream* This, + IStreamSample* pExistingSample, + DWORD dwFlags, + IStreamSample** ppNewSample); + + HRESULT (STDMETHODCALLTYPE *SendEndOfStream)( + IAudioMediaStream* This, + DWORD dwFlags); + + /*** IAudioMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetFormat)( + IAudioMediaStream* This, + WAVEFORMATEX* pWaveFormatCurrent); + + HRESULT (STDMETHODCALLTYPE *SetFormat)( + IAudioMediaStream* This, + const WAVEFORMATEX* lpWaveFormat); + + HRESULT (STDMETHODCALLTYPE *CreateSample)( + IAudioMediaStream* This, + IAudioData* pAudioData, + DWORD dwFlags, + IAudioStreamSample** ppSample); + + END_INTERFACE +} IAudioMediaStreamVtbl; +interface IAudioMediaStream { + const IAudioMediaStreamVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IAudioMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAudioMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAudioMediaStream_Release(p) (p)->lpVtbl->Release(p) +/*** IMediaStream methods ***/ +#define IAudioMediaStream_GetMultiMediaStream(p,a) (p)->lpVtbl->GetMultiMediaStream(p,a) +#define IAudioMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b) +#define IAudioMediaStream_SetSameFormat(p,a,b) (p)->lpVtbl->SetSameFormat(p,a,b) +#define IAudioMediaStream_AllocateSample(p,a,b) (p)->lpVtbl->AllocateSample(p,a,b) +#define IAudioMediaStream_CreateSharedSample(p,a,b,c) (p)->lpVtbl->CreateSharedSample(p,a,b,c) +#define IAudioMediaStream_SendEndOfStream(p,a) (p)->lpVtbl->SendEndOfStream(p,a) +/*** IAudioMediaStream methods ***/ +#define IAudioMediaStream_GetFormat(p,a) (p)->lpVtbl->GetFormat(p,a) +#define IAudioMediaStream_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) +#define IAudioMediaStream_CreateSample(p,a,b,c) (p)->lpVtbl->CreateSample(p,a,b,c) +#endif + +#endif + +HRESULT CALLBACK IAudioMediaStream_GetFormat_Proxy( + IAudioMediaStream* This, + WAVEFORMATEX* pWaveFormatCurrent); +void __RPC_STUB IAudioMediaStream_GetFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAudioMediaStream_SetFormat_Proxy( + IAudioMediaStream* This, + const WAVEFORMATEX* lpWaveFormat); +void __RPC_STUB IAudioMediaStream_SetFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAudioMediaStream_CreateSample_Proxy( + IAudioMediaStream* This, + IAudioData* pAudioData, + DWORD dwFlags, + IAudioStreamSample** ppSample); +void __RPC_STUB IAudioMediaStream_CreateSample_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IAudioMediaStream_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IAudioStreamSample interface + */ +#ifndef __IAudioStreamSample_INTERFACE_DEFINED__ +#define __IAudioStreamSample_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAudioStreamSample, 0x345fee00, 0xaba5, 0x11d0, 0x82,0x12, 0x00,0xc0,0x4f,0xc3,0x2c,0x45); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IAudioStreamSample : public IStreamSample +{ + virtual HRESULT STDMETHODCALLTYPE GetAudioData( + IAudioData** ppAudio) = 0; + +}; +#else +typedef struct IAudioStreamSampleVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAudioStreamSample* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAudioStreamSample* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAudioStreamSample* This); + + /*** IStreamSample methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMediaStream)( + IAudioStreamSample* This, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetSampleTimes)( + IAudioStreamSample* This, + STREAM_TIME* pStartTime, + STREAM_TIME* pEndTime, + STREAM_TIME* pCurrentTime); + + HRESULT (STDMETHODCALLTYPE *SetSampleTimes)( + IAudioStreamSample* This, + const STREAM_TIME* pStartTime, + const STREAM_TIME* pEndTime); + + HRESULT (STDMETHODCALLTYPE *Update)( + IAudioStreamSample* This, + DWORD dwFlags, + HANDLE hEvent, + PAPCFUNC pfnAPC, + DWORD dwAPCData); + + HRESULT (STDMETHODCALLTYPE *CompletionStatus)( + IAudioStreamSample* This, + DWORD dwFlags, + DWORD dwMilliseconds); + + /*** IAudioStreamSample methods ***/ + HRESULT (STDMETHODCALLTYPE *GetAudioData)( + IAudioStreamSample* This, + IAudioData** ppAudio); + + END_INTERFACE +} IAudioStreamSampleVtbl; +interface IAudioStreamSample { + const IAudioStreamSampleVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IAudioStreamSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAudioStreamSample_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAudioStreamSample_Release(p) (p)->lpVtbl->Release(p) +/*** IStreamSample methods ***/ +#define IAudioStreamSample_GetMediaStream(p,a) (p)->lpVtbl->GetMediaStream(p,a) +#define IAudioStreamSample_GetSampleTimes(p,a,b,c) (p)->lpVtbl->GetSampleTimes(p,a,b,c) +#define IAudioStreamSample_SetSampleTimes(p,a,b) (p)->lpVtbl->SetSampleTimes(p,a,b) +#define IAudioStreamSample_Update(p,a,b,c,d) (p)->lpVtbl->Update(p,a,b,c,d) +#define IAudioStreamSample_CompletionStatus(p,a,b) (p)->lpVtbl->CompletionStatus(p,a,b) +/*** IAudioStreamSample methods ***/ +#define IAudioStreamSample_GetAudioData(p,a) (p)->lpVtbl->GetAudioData(p,a) +#endif + +#endif + +HRESULT CALLBACK IAudioStreamSample_GetAudioData_Proxy( + IAudioStreamSample* This, + IAudioData** ppAudio); +void __RPC_STUB IAudioStreamSample_GetAudioData_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IAudioStreamSample_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMemoryData interface + */ +#ifndef __IMemoryData_INTERFACE_DEFINED__ +#define __IMemoryData_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMemoryData, 0x327fc560, 0xaf60, 0x11d0, 0x82,0x12, 0x00,0xc0,0x4f,0xc3,0x2c,0x45); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMemoryData : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE SetBuffer( + DWORD cbSize, + BYTE* pbData, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInfo( + DWORD* pdwLength, + BYTE** ppbData, + DWORD* pcbActualData) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetActual( + DWORD cbDataValid) = 0; + +}; +#else +typedef struct IMemoryDataVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMemoryData* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMemoryData* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMemoryData* This); + + /*** IMemoryData methods ***/ + HRESULT (STDMETHODCALLTYPE *SetBuffer)( + IMemoryData* This, + DWORD cbSize, + BYTE* pbData, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *GetInfo)( + IMemoryData* This, + DWORD* pdwLength, + BYTE** ppbData, + DWORD* pcbActualData); + + HRESULT (STDMETHODCALLTYPE *SetActual)( + IMemoryData* This, + DWORD cbDataValid); + + END_INTERFACE +} IMemoryDataVtbl; +interface IMemoryData { + const IMemoryDataVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMemoryData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMemoryData_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMemoryData_Release(p) (p)->lpVtbl->Release(p) +/*** IMemoryData methods ***/ +#define IMemoryData_SetBuffer(p,a,b,c) (p)->lpVtbl->SetBuffer(p,a,b,c) +#define IMemoryData_GetInfo(p,a,b,c) (p)->lpVtbl->GetInfo(p,a,b,c) +#define IMemoryData_SetActual(p,a) (p)->lpVtbl->SetActual(p,a) +#endif + +#endif + +HRESULT CALLBACK IMemoryData_SetBuffer_Proxy( + IMemoryData* This, + DWORD cbSize, + BYTE* pbData, + DWORD dwFlags); +void __RPC_STUB IMemoryData_SetBuffer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMemoryData_GetInfo_Proxy( + IMemoryData* This, + DWORD* pdwLength, + BYTE** ppbData, + DWORD* pcbActualData); +void __RPC_STUB IMemoryData_GetInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMemoryData_SetActual_Proxy( + IMemoryData* This, + DWORD cbDataValid); +void __RPC_STUB IMemoryData_SetActual_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMemoryData_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IAudioData interface + */ +#ifndef __IAudioData_INTERFACE_DEFINED__ +#define __IAudioData_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAudioData, 0x54c719c0, 0xaf60, 0x11d0, 0x82,0x12, 0x00,0xc0,0x4f,0xc3,0x2c,0x45); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IAudioData : public IMemoryData +{ + virtual HRESULT STDMETHODCALLTYPE GetFormat( + WAVEFORMATEX* pWaveFormatCurrent) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFormat( + const WAVEFORMATEX* lpWaveFormat) = 0; + +}; +#else +typedef struct IAudioDataVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAudioData* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAudioData* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAudioData* This); + + /*** IMemoryData methods ***/ + HRESULT (STDMETHODCALLTYPE *SetBuffer)( + IAudioData* This, + DWORD cbSize, + BYTE* pbData, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *GetInfo)( + IAudioData* This, + DWORD* pdwLength, + BYTE** ppbData, + DWORD* pcbActualData); + + HRESULT (STDMETHODCALLTYPE *SetActual)( + IAudioData* This, + DWORD cbDataValid); + + /*** IAudioData methods ***/ + HRESULT (STDMETHODCALLTYPE *GetFormat)( + IAudioData* This, + WAVEFORMATEX* pWaveFormatCurrent); + + HRESULT (STDMETHODCALLTYPE *SetFormat)( + IAudioData* This, + const WAVEFORMATEX* lpWaveFormat); + + END_INTERFACE +} IAudioDataVtbl; +interface IAudioData { + const IAudioDataVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IAudioData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAudioData_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAudioData_Release(p) (p)->lpVtbl->Release(p) +/*** IMemoryData methods ***/ +#define IAudioData_SetBuffer(p,a,b,c) (p)->lpVtbl->SetBuffer(p,a,b,c) +#define IAudioData_GetInfo(p,a,b,c) (p)->lpVtbl->GetInfo(p,a,b,c) +#define IAudioData_SetActual(p,a) (p)->lpVtbl->SetActual(p,a) +/*** IAudioData methods ***/ +#define IAudioData_GetFormat(p,a) (p)->lpVtbl->GetFormat(p,a) +#define IAudioData_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) +#endif + +#endif + +HRESULT CALLBACK IAudioData_GetFormat_Proxy( + IAudioData* This, + WAVEFORMATEX* pWaveFormatCurrent); +void __RPC_STUB IAudioData_GetFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAudioData_SetFormat_Proxy( + IAudioData* This, + const WAVEFORMATEX* lpWaveFormat); +void __RPC_STUB IAudioData_SetFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IAudioData_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_AUSTREAM_H */ diff --git a/reactos/include/psdk/austream.idl b/reactos/include/psdk/austream.idl new file mode 100644 index 00000000000..bdfd11f7b44 --- /dev/null +++ b/reactos/include/psdk/austream.idl @@ -0,0 +1,108 @@ +/* + * Copyright 2004 Christian Costa + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; +import "mmstream.idl"; + +cpp_quote("#if 0") +typedef struct tWAVEFORMATEX WAVEFORMATEX; +cpp_quote ("#endif") + +interface IAudioMediaStream; +interface IAudioStreamSample; +interface IMemoryData; +interface IAudioData; + +[ +object, +local, +uuid(f7537560-a3be-11d0-8212-00c04fc32c45), +pointer_default(unique) +] +interface IAudioMediaStream : IMediaStream +{ + HRESULT GetFormat( + [out] /*[optional]*/ WAVEFORMATEX *pWaveFormatCurrent + ); + + HRESULT SetFormat( + [in] const WAVEFORMATEX *lpWaveFormat); + + HRESULT CreateSample( + [in] IAudioData *pAudioData, + [in] DWORD dwFlags, + [out] IAudioStreamSample **ppSample + ); +} + + +[ +object, +local, +uuid(345fee00-aba5-11d0-8212-00c04fc32c45), +pointer_default(unique) +] +interface IAudioStreamSample : IStreamSample +{ + HRESULT GetAudioData( + [out] IAudioData **ppAudio + ); +} + + +[ +object, +local, +uuid(327fc560-af60-11d0-8212-00c04fc32c45), +pointer_default(unique) +] +interface IMemoryData : IUnknown +{ + HRESULT SetBuffer( + [in] DWORD cbSize, + [in] BYTE *pbData, + [in] DWORD dwFlags + ); + + HRESULT GetInfo( + [out] DWORD *pdwLength, + [out] BYTE **ppbData, + [out] DWORD *pcbActualData + ); + HRESULT SetActual( + [in] DWORD cbDataValid + ); +} + + +[ +object, +local, +uuid(54c719c0-af60-11d0-8212-00c04fc32c45), +pointer_default(unique) +] +interface IAudioData : IMemoryData +{ + HRESULT GetFormat( + [out] /*[optional]*/ WAVEFORMATEX *pWaveFormatCurrent + ); + + HRESULT SetFormat( + [in] const WAVEFORMATEX *lpWaveFormat + ); +} diff --git a/reactos/include/psdk/axcore.idl b/reactos/include/psdk/axcore.idl new file mode 100644 index 00000000000..bb9f5e701ed --- /dev/null +++ b/reactos/include/psdk/axcore.idl @@ -0,0 +1,647 @@ +/* + * Copyright (C) 2002 Robert Shearman + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define CHARS_IN_GUID 39 +cpp_quote("#define CHARS_IN_GUID 39") + +/* GetTimeFormat is defined in winnls.h as + * either the W or A suffixed version */ +cpp_quote("#undef GetTimeFormat") + +typedef struct _AMMediaType +{ + GUID majortype; + GUID subtype; + BOOL bFixedSizeSamples; + BOOL bTemporalCompression; + ULONG lSampleSize; + GUID formattype; + IUnknown * pUnk; + ULONG cbFormat; + [size_is(cbFormat)] BYTE * pbFormat; +} AM_MEDIA_TYPE; + +typedef enum _PinDirection +{ + PINDIR_INPUT, + PINDIR_OUTPUT +} PIN_DIRECTION; + +#define MAX_PIN_NAME 128 +#define MAX_FILTER_NAME 128 +cpp_quote("#define MAX_PIN_NAME 128") +cpp_quote("#define MAX_FILTER_NAME 128") + +typedef LONGLONG REFERENCE_TIME; +typedef DOUBLE REFTIME; + +typedef DWORD_PTR HSEMAPHORE; +typedef DWORD_PTR HEVENT; + +typedef struct _AllocatorProperties +{ + long cBuffers; + long cbBuffer; + long cbAlign; + long cbPrefix; +} ALLOCATOR_PROPERTIES; + +interface IAMovieSetup; +interface IEnumFilters; +interface IEnumMediaTypes; +interface IEnumPins; +interface IBaseFilter; +interface IFilterGraph; +interface IMediaFilter; +interface IMediaSample; +interface IMemAllocator; +interface IMemAllocatorCallbackTemp; +interface IMemAllocatorNotifyCallbackTemp; +interface IMemInputPin; +interface IPin; +interface IReferenceClock; + +[ +object, +uuid(56a86891-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IPin : IUnknown +{ + typedef struct _PinInfo + { + IBaseFilter *pFilter; + PIN_DIRECTION dir; + WCHAR achName[MAX_PIN_NAME]; + } PIN_INFO; + + HRESULT Connect( + [in] IPin * pReceivePin, + [in] const AM_MEDIA_TYPE * pmt); + + HRESULT ReceiveConnection( + [in] IPin * pConnector, + [in] const AM_MEDIA_TYPE *pmt); + + HRESULT Disconnect(void); + + HRESULT ConnectedTo( + [out] IPin **pPin); + + HRESULT ConnectionMediaType( + [out] AM_MEDIA_TYPE *pmt); + + HRESULT QueryPinInfo( + [out] PIN_INFO * pInfo); + + HRESULT QueryDirection( + [out] PIN_DIRECTION *pPinDir); + + HRESULT QueryId( + [out] LPWSTR * Id); + + HRESULT QueryAccept( + [in] const AM_MEDIA_TYPE *pmt); + + HRESULT EnumMediaTypes( + [out] IEnumMediaTypes **ppEnum); + + HRESULT QueryInternalConnections( + [out] IPin* *apPin, + [in, out] ULONG *nPin); + + HRESULT EndOfStream(void); + + HRESULT BeginFlush(void); + + HRESULT EndFlush(void); + HRESULT NewSegment( + [in] REFERENCE_TIME tStart, + [in] REFERENCE_TIME tStop, + [in] double dRate); +} + +typedef IPin *PPIN; + +[ +object, +uuid(56a86892-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IEnumPins : IUnknown +{ + + HRESULT Next( + [in] ULONG cPins, + [out, size_is(cPins)] IPin ** ppPins, + [out] ULONG * pcFetched); + + HRESULT Skip( + [in] ULONG cPins); + + HRESULT Reset(void); + + HRESULT Clone( + [out] IEnumPins **ppEnum); +} + +typedef IEnumPins *PENUMPINS; + +[ +object, +uuid(89c31040-846b-11ce-97d3-00aa0055595a), +pointer_default(unique) +] +interface IEnumMediaTypes : IUnknown +{ + HRESULT Next( + [in] ULONG cMediaTypes, + [out, size_is(cMediaTypes)] + AM_MEDIA_TYPE ** ppMediaTypes, + [out] ULONG * pcFetched + ); + + HRESULT Skip( + [in] ULONG cMediaTypes); + + HRESULT Reset(void); + + HRESULT Clone( + [out] IEnumMediaTypes **ppEnum + ); +} + +typedef IEnumMediaTypes *PENUMMEDIATYPES; + +[ +object, +uuid(56a8689f-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IFilterGraph : IUnknown +{ + HRESULT AddFilter( + [in] IBaseFilter * pFilter, + [in, string] LPCWSTR pName); + + HRESULT RemoveFilter( + [in] IBaseFilter * pFilter); + + HRESULT EnumFilters( + [out] IEnumFilters **ppEnum); + + HRESULT FindFilterByName( + [in, string] LPCWSTR pName, + [out] IBaseFilter ** ppFilter); + + HRESULT ConnectDirect( + [in] IPin * ppinOut, + [in] IPin * ppinIn, + [in, unique] const AM_MEDIA_TYPE* pmt); + + HRESULT Reconnect( + [in] IPin * ppin); + + HRESULT Disconnect( + [in] IPin * ppin); + + HRESULT SetDefaultSyncSource(void); +} + +typedef IFilterGraph *PFILTERGRAPH; + +[ +object, +uuid(56a86893-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IEnumFilters : IUnknown +{ + HRESULT Next( + [in] ULONG cFilters, + [out] IBaseFilter ** ppFilter, + [out] ULONG * pcFetched); + + + HRESULT Skip( + [in] ULONG cFilters); + + + HRESULT Reset(void); + + + HRESULT Clone( + [out] IEnumFilters **ppEnum); +} + +typedef IEnumFilters *PENUMFILTERS; + +[ +object, +uuid(56a86899-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IMediaFilter : IPersist +{ + typedef enum _FilterState + { + State_Stopped, + State_Paused, + State_Running + } FILTER_STATE; + + HRESULT Stop(void); + HRESULT Pause(void); + + HRESULT Run(REFERENCE_TIME tStart); + + HRESULT GetState( + [in] DWORD dwMilliSecsTimeout, + [out] FILTER_STATE *State); + + HRESULT SetSyncSource( + [in] IReferenceClock * pClock); + + HRESULT GetSyncSource( + [out] IReferenceClock ** pClock); +} + +typedef IMediaFilter *PMEDIAFILTER; + +[ +object, +uuid(56a86895-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IBaseFilter : IMediaFilter +{ + typedef struct _FilterInfo + { + WCHAR achName[MAX_FILTER_NAME]; + IFilterGraph * pGraph; + } FILTER_INFO; + + HRESULT EnumPins( + [out] IEnumPins ** ppEnum); + + HRESULT FindPin( + [in, string] LPCWSTR Id, + [out] IPin ** ppPin); + + HRESULT QueryFilterInfo( + [out] FILTER_INFO * pInfo); + + HRESULT JoinFilterGraph( + [in] IFilterGraph * pGraph, + [in, string] LPCWSTR pName); + + HRESULT QueryVendorInfo( + [out, string] LPWSTR* pVendorInfo); +} + +typedef IBaseFilter *PFILTER; + +[ +object, +uuid(56a86897-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IReferenceClock : IUnknown +{ + HRESULT GetTime( + [out] REFERENCE_TIME *pTime); + + HRESULT AdviseTime( + [in] REFERENCE_TIME baseTime, + [in] REFERENCE_TIME streamTime, + [in] HEVENT hEvent, + [out] DWORD_PTR * pdwAdviseCookie); + + HRESULT AdvisePeriodic( + [in] REFERENCE_TIME startTime, + [in] REFERENCE_TIME periodTime, + [in] HSEMAPHORE hSemaphore, + [out] DWORD_PTR * pdwAdviseCookie); + + HRESULT Unadvise( + [in] DWORD_PTR dwAdviseCookie); +} + +typedef IReferenceClock *PREFERENCECLOCK; + +/* +[ +object, +uuid(36b73885-c2c8-11cf-8b46-00805f6cef60), +pointer_default(unique) +] +interface IReferenceClock2 : IReferenceClock +{ +} + +typedef IReferenceClock2 *PREFERENCECLOCK2; + +*/ + +[ +local, +object, +uuid(56a8689a-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IMediaSample : IUnknown +{ + HRESULT GetPointer([out] BYTE ** ppBuffer); + + long GetSize(void); + + HRESULT GetTime( + [out] REFERENCE_TIME * pTimeStart, + [out] REFERENCE_TIME * pTimeEnd); + + HRESULT SetTime( + [in] REFERENCE_TIME * pTimeStart, + [in] REFERENCE_TIME * pTimeEnd); + + HRESULT IsSyncPoint(void); + + HRESULT SetSyncPoint(BOOL bIsSyncPoint); + + HRESULT IsPreroll(void); + + HRESULT SetPreroll(BOOL bIsPreroll); + + LONG GetActualDataLength(void); + + HRESULT SetActualDataLength(LONG length); + + HRESULT GetMediaType(AM_MEDIA_TYPE **ppMediaType); + + HRESULT SetMediaType(AM_MEDIA_TYPE *pMediaType); + + HRESULT IsDiscontinuity(void); + + HRESULT SetDiscontinuity(BOOL bDiscontinuity); + + HRESULT GetMediaTime( + [out] LONGLONG * pTimeStart, + [out] LONGLONG * pTimeEnd); + + HRESULT SetMediaTime( + [in] LONGLONG * pTimeStart, + [in] LONGLONG * pTimeEnd); +} + +typedef IMediaSample *PMEDIASAMPLE; + +enum tagAM_SAMPLE_PROPERTY_FLAGS +{ + AM_SAMPLE_SPLICEPOINT = 0x01, + AM_SAMPLE_PREROLL = 0x02, + AM_SAMPLE_DATADISCONTINUITY = 0x04, + AM_SAMPLE_TYPECHANGED = 0x08, + AM_SAMPLE_TIMEVALID = 0x10, + AM_SAMPLE_TIMEDISCONTINUITY = 0x40, + AM_SAMPLE_FLUSH_ON_PAUSE = 0x80, + AM_SAMPLE_STOPVALID = 0x100, + AM_SAMPLE_ENDOFSTREAM = 0x200, + AM_STREAM_MEDIA = 0, + AM_STREAM_CONTROL = 1 +}; + +typedef struct tagAM_SAMPLE2_PROPERTIES +{ + DWORD cbData; + DWORD dwTypeSpecificFlags; + DWORD dwSampleFlags; + LONG lActual; + REFERENCE_TIME tStart; + REFERENCE_TIME tStop; + DWORD dwStreamId; + AM_MEDIA_TYPE *pMediaType; + BYTE *pbBuffer; + LONG cbBuffer; +} AM_SAMPLE2_PROPERTIES; + +[ + local, + object, + uuid(36b73884-c2c8-11cf-8b46-00805f6cef60), + pointer_default(unique) +] +interface IMediaSample2 : IMediaSample +{ + HRESULT GetProperties( + [in] DWORD cbProperties, + [out, size_is(cbProperties)] BYTE * pbProperties + ); + + HRESULT SetProperties( + [in] DWORD cbProperties, + [in, size_is(cbProperties)] const BYTE * pbProperties + ); +} + +typedef IMediaSample2 *PMEDIASAMPLE2; + +#define AM_GBF_PREVFRAMESKIPPED 1 +#define AM_GBF_NOTASYNCPOINT 2 +cpp_quote("#define AM_GBF_PREVFRAMESKIPPED 1") +cpp_quote("#define AM_GBF_NOTASYNCPOINT 2") + +cpp_quote("#define AM_GBF_NOWAIT 4") + +[ +object, +uuid(56a8689c-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IMemAllocator : IUnknown +{ + HRESULT SetProperties( + [in] ALLOCATOR_PROPERTIES* pRequest, + [out] ALLOCATOR_PROPERTIES* pActual); + + HRESULT GetProperties( + [out] ALLOCATOR_PROPERTIES* pProps); + + HRESULT Commit(void); + + HRESULT Decommit(void); + + HRESULT GetBuffer( + [out] IMediaSample **ppBuffer, + [in] REFERENCE_TIME * pStartTime, + [in] REFERENCE_TIME * pEndTime, + [in] DWORD dwFlags); + + HRESULT ReleaseBuffer( + [in] IMediaSample *pBuffer); +} + +typedef IMemAllocator *PMEMALLOCATOR; + +[ +object, +uuid(379a0cf0-c1de-11d2-abf5-00a0c905f375), +pointer_default(unique) +] +interface IMemAllocatorCallbackTemp : IMemAllocator +{ + HRESULT SetNotify( + [in] IMemAllocatorNotifyCallbackTemp *pNotify); + + HRESULT GetFreeCount( + [out] LONG *plBuffersFree); +} + +[ +object, +uuid(92980b30-c1de-11d2-abf5-00a0c905f375), +pointer_default(unique) +] +interface IMemAllocatorNotifyCallbackTemp : IUnknown +{ + HRESULT NotifyRelease(); +} + +[ +object, +uuid(56a8689d-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IMemInputPin : IUnknown +{ + HRESULT GetAllocator( + [out] IMemAllocator ** ppAllocator); + + HRESULT NotifyAllocator( + [in] IMemAllocator * pAllocator, + [in] BOOL bReadOnly); + + HRESULT GetAllocatorRequirements( [out] ALLOCATOR_PROPERTIES*pProps ); + + HRESULT Receive( + [in] IMediaSample * pSample); + + HRESULT ReceiveMultiple( + [in, size_is(nSamples)] IMediaSample **pSamples, + [in] long nSamples, + [out] long *nSamplesProcessed); + + HRESULT ReceiveCanBlock(); +} + +typedef IMemInputPin *PMEMINPUTPIN; + +[ +object, +uuid(a3d8cec0-7e5a-11cf-bbc5-00805f6cef20), +pointer_default(unique) +] +interface IAMovieSetup : IUnknown +{ + HRESULT Register( ); + HRESULT Unregister( ); +} + +typedef IAMovieSetup *PAMOVIESETUP; + +typedef enum AM_SEEKING_SeekingFlags +{ + AM_SEEKING_NoPositioning = 0x00, + AM_SEEKING_AbsolutePositioning = 0x01, + AM_SEEKING_RelativePositioning = 0x02, + AM_SEEKING_IncrementalPositioning = 0x03, + AM_SEEKING_PositioningBitsMask = 0x03, + AM_SEEKING_SeekToKeyFrame = 0x04, + AM_SEEKING_ReturnTime = 0x08, + AM_SEEKING_Segment = 0x10, + AM_SEEKING_NoFlush = 0x20 +} AM_SEEKING_SEEKING_FLAGS; + +typedef enum AM_SEEKING_SeekingCapabilities +{ + AM_SEEKING_CanSeekAbsolute = 0x001, + AM_SEEKING_CanSeekForwards = 0x002, + AM_SEEKING_CanSeekBackwards = 0x004, + AM_SEEKING_CanGetCurrentPos = 0x008, + AM_SEEKING_CanGetStopPos = 0x010, + AM_SEEKING_CanGetDuration = 0x020, + AM_SEEKING_CanPlayBackwards = 0x040, + AM_SEEKING_CanDoSegments = 0x080, + AM_SEEKING_Source = 0x100 +} AM_SEEKING_SEEKING_CAPABILITIES; + +[ +object, +uuid(36b73880-c2c8-11cf-8b46-00805f6cef60), +pointer_default(unique) +] +interface IMediaSeeking : IUnknown +{ + HRESULT GetCapabilities( [out] DWORD * pCapabilities ); + + HRESULT CheckCapabilities( [in,out] DWORD * pCapabilities ); + + HRESULT IsFormatSupported([in] const GUID * pFormat); + + HRESULT QueryPreferredFormat([out] GUID * pFormat); + + HRESULT GetTimeFormat([out] GUID *pFormat); + + HRESULT IsUsingTimeFormat([in] const GUID * pFormat); + + HRESULT SetTimeFormat([in] const GUID * pFormat); + + HRESULT GetDuration([out] LONGLONG *pDuration); + + HRESULT GetStopPosition([out] LONGLONG *pStop); + + HRESULT GetCurrentPosition([out] LONGLONG *pCurrent); + + HRESULT ConvertTimeFormat([out] LONGLONG * pTarget, [in] const GUID * pTargetFormat, + [in] LONGLONG Source, [in] const GUID * pSourceFormat ); + + HRESULT SetPositions( + [in,out] LONGLONG * pCurrent, + [in] DWORD dwCurrentFlags, + [in,out] LONGLONG * pStop, + [in] DWORD dwStopFlags); + + HRESULT GetPositions( + [out] LONGLONG * pCurrent, + [out] LONGLONG * pStop); + + HRESULT GetAvailable( + [out] LONGLONG * pEarliest, + [out] LONGLONG * pLatest); + + HRESULT SetRate([in] double dRate); + + HRESULT GetRate([out] double * pdRate); + + HRESULT GetPreroll([out] LONGLONG * pllPreroll); +} + +typedef IMediaSeeking *PMEDIASEEKING; + +enum tagAM_MEDIAEVENT_FLAGS +{ + AM_MEDIAEVENT_NONOTIFY = 0x01 +}; diff --git a/reactos/include/psdk/axextend.idl b/reactos/include/psdk/axextend.idl new file mode 100644 index 00000000000..f262f3a9b09 --- /dev/null +++ b/reactos/include/psdk/axextend.idl @@ -0,0 +1,984 @@ +/* + * Copyright (C) 2002 Robert Shearman + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +interface IAMAnalogVideoDecoder; +interface IAMAnalogVideoEncoder; +interface IAMAudioInputMixer; +interface IAMAudioRendererStats; +interface IAMBufferNegotiation; +interface IAMCameraControl; +interface IAMCopyCaptureFileProgress; +interface IAMCrossbar; +interface IAMDevMemoryAllocator; +interface IAMDevMemoryControl; +interface IAMDroppedFrames; +interface IAMExtDevice; +interface IAMExtTransport; +interface IAMGraphStreams; +interface IAMLatency; +interface IAMOpenProgress; +interface IAMOverlayFX; +interface IAMPhysicalPinInfo; +interface IAMPushSource; +interface IAMStreamConfig; +interface IAMTimecodeDisplay; +interface IAMTimecodeGenerator; +interface IAMTimecodeReader; +interface IAMTVTuner; +interface IAMVfwCaptureDialogs; +interface IAMVfwCompressDialogs; +interface IAMVideoCompression; +interface IAMVideoDecimationProperties; +interface IAMVideoProcAmp; +interface ICaptureGraphBuilder; +interface ICaptureGraphBuilder2; +interface IConfigAviMux; +interface IConfigInterleaving; +interface IDecimateVideoImage; +interface IDrawVideoImage; +interface IEnumRegFilters; +interface IEnumStreamIdMap; +interface IFileSourceFilter; +interface IFileSinkFilter; +interface IFileSinkFilter2; +interface IFilterMapper; +interface IFilterMapper2; +interface IGraphBuilder; +interface IKsPropertySet; +interface IMediaEventSink; +interface IMpeg2Demultiplexer; +interface IMPEG2StreamIdMap; +interface IOverlay; +interface IOverlayNotify; +interface IOverlayNotify2; +interface IQualityControl; +interface ISeekingPassThru; + +typedef struct +{ + CLSID Clsid; + LPWSTR Name; +} REGFILTER; + +[ +object, +uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IEnumRegFilters : IUnknown +{ + HRESULT Next + ( [in] ULONG cFilters, + [out] REGFILTER ** apRegFilter, + [out] ULONG * pcFetched + ); + + HRESULT Skip( + [in] ULONG cFilters + ); + + HRESULT Reset(void); + + HRESULT Clone( + [out] IEnumRegFilters **ppEnum + ); +} + + +typedef IEnumRegFilters *PENUMREGFILTERS; + +[ +object, +uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IFilterMapper : IUnknown +{ + enum { MERIT_PREFERRED = 0x800000, + MERIT_NORMAL = 0x600000, + MERIT_UNLIKELY = 0x400000, + MERIT_DO_NOT_USE = 0x200000, + MERIT_SW_COMPRESSOR = 0x100000, + MERIT_HW_COMPRESSOR = 0x100050 + }; + + HRESULT RegisterFilter + ( [in] CLSID clsid, + [in] LPCWSTR Name, + [in] DWORD dwMerit + ); + + HRESULT RegisterFilterInstance + ( [in] CLSID clsid, + [in] LPCWSTR Name, + [out] CLSID *MRId + ); + + + HRESULT RegisterPin + ( [in] CLSID Filter, + [in] LPCWSTR Name, + [in] BOOL bRendered, + [in] BOOL bOutput, + [in] BOOL bZero, + [in] BOOL bMany, + [in] CLSID ConnectsToFilter, + [in] LPCWSTR ConnectsToPin + ); + + HRESULT RegisterPinType + ( [in] CLSID clsFilter, + [in] LPCWSTR strName, + [in] CLSID clsMajorType, + [in] CLSID clsSubType + ); + + + HRESULT UnregisterFilter + ( [in] CLSID Filter + ); + + + HRESULT UnregisterFilterInstance + ( [in] CLSID MRId + ); + + + HRESULT UnregisterPin + ( [in] CLSID Filter, + [in] LPCWSTR Name + ); + + HRESULT EnumMatchingFilters + ( [out] IEnumRegFilters **ppEnum, + [in] DWORD dwMerit, + [in] BOOL bInputNeeded, + [in] CLSID clsInMaj, + [in] CLSID clsInSub, + [in] BOOL bRender, + [in] BOOL bOututNeeded, + [in] CLSID clsOutMaj, + [in] CLSID clsOutSub + ); + +} + +typedef struct +{ + const CLSID * clsMajorType; + const CLSID * clsMinorType; +} REGPINTYPES; + +typedef struct +{ + LPWSTR strName; + BOOL bRendered; + BOOL bOutput; + BOOL bZero; + BOOL bMany; + const CLSID * clsConnectsToFilter; + const WCHAR * strConnectsToPin; + UINT nMediaTypes; + const REGPINTYPES * lpMediaType; +} REGFILTERPINS; + +typedef struct +{ + CLSID clsMedium; + DWORD dw1; + DWORD dw2; +} REGPINMEDIUM; + +enum +{ + REG_PINFLAG_B_ZERO = 0x1, + REG_PINFLAG_B_RENDERER = 0x2, + REG_PINFLAG_B_MANY = 0x4, + REG_PINFLAG_B_OUTPUT = 0x8 +}; + + +typedef struct +{ + DWORD dwFlags; + UINT cInstances; + UINT nMediaTypes; + [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType; + UINT nMediums; + [size_is(nMediums)] const REGPINMEDIUM *lpMedium; + const CLSID *clsPinCategory; +} REGFILTERPINS2; + +typedef struct +{ + DWORD dwVersion; + DWORD dwMerit; + [switch_is(dwVersion)] [switch_type(DWORD)] union + { + [case(1)] + struct + { + ULONG cPins; + [size_is(cPins)] const REGFILTERPINS *rgPins; + } DUMMYSTRUCTNAME; + + [case(2)] + struct + { + ULONG cPins2; + [size_is(cPins2)] const REGFILTERPINS2 *rgPins2; + } DUMMYSTRUCTNAME1; + + [default] + ; + } DUMMYUNIONNAME; + +} REGFILTER2; + + +[ +object, +uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375), +pointer_default(unique) +] +interface IFilterMapper2 : IUnknown +{ + HRESULT CreateCategory + ( [in] REFCLSID clsidCategory, + [in] DWORD dwCategoryMerit, + [in] LPCWSTR Description + ); + + HRESULT UnregisterFilter + ( [in] const CLSID *pclsidCategory, + [in] const OLECHAR *szInstance, + [in] REFCLSID Filter + ); + + HRESULT RegisterFilter + ( [in] REFCLSID clsidFilter, + [in] LPCWSTR Name, + [in, out] IMoniker **ppMoniker, + [in] const CLSID *pclsidCategory, + [in] const OLECHAR *szInstance, + [in] const REGFILTER2 *prf2 + ); + + HRESULT EnumMatchingFilters + ( [out] IEnumMoniker **ppEnum, + [in] DWORD dwFlags, + [in] BOOL bExactMatch, + [in] DWORD dwMerit, + [in] BOOL bInputNeeded, + [in] DWORD cInputTypes, + [size_is(cInputTypes*2)] const GUID *pInputTypes, + [in] const REGPINMEDIUM *pMedIn, + [in] const CLSID *pPinCategoryIn, + [in] BOOL bRender, + [in] BOOL bOutputNeeded, + [in] DWORD cOutputTypes, + [size_is(cOutputTypes*2)] const GUID *pOutputTypes, + [in] const REGPINMEDIUM *pMedOut, + [in] const CLSID *pPinCategoryOut + ); +} + +[ +object, +uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375), +pointer_default(unique) +] +interface IFilterMapper3 : IFilterMapper2 +{ + HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum ); +} + +typedef enum tagQualityMessageType +{ + Famine, + Flood +} QualityMessageType; + +typedef struct tagQuality +{ + QualityMessageType Type; + long Proportion; + REFERENCE_TIME Late; + REFERENCE_TIME TimeStamp; +} Quality; + +typedef IQualityControl *PQUALITYCONTROL; + +[ +object, +uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IQualityControl : IUnknown +{ + HRESULT Notify + ( [in] IBaseFilter * pSelf, + [in] Quality q + ); + + HRESULT SetSink + ( [in] IQualityControl * piqc + ); +} + +enum +{ + CK_NOCOLORKEY = 0x0, + CK_INDEX = 0x1, + CK_RGB = 0x2 +}; + +typedef struct tagCOLORKEY +{ + DWORD KeyType; + DWORD PaletteIndex; + COLORREF LowColorValue; + COLORREF HighColorValue; +} COLORKEY; + +enum +{ + ADVISE_NONE = 0x0, + ADVISE_CLIPPING = 0x1, + ADVISE_PALETTE = 0x2, + ADVISE_COLORKEY = 0x4, + ADVISE_POSITION = 0x8, + ADVISE_DISPLAY_CHANGE = 0x10 +}; + +const DWORD ADVISE_ALL = ADVISE_CLIPPING | + ADVISE_PALETTE | + ADVISE_COLORKEY | + ADVISE_POSITION; + +const DWORD ADVISE_ALL2 = ADVISE_ALL | + ADVISE_DISPLAY_CHANGE; + +cpp_quote("#ifndef _WINGDI_") + +/* already defined in wingdi.h, but needed for WIDL */ + +typedef struct _RGNDATAHEADER +{ + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; +} RGNDATAHEADER; + +typedef struct _RGNDATA +{ + RGNDATAHEADER rdh; + char Buffer[1]; +} RGNDATA; + +cpp_quote("#endif /* _WINGDI_ */") + +[ +object, +local, +uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IOverlayNotify : IUnknown +{ + HRESULT OnPaletteChange( + [in] DWORD dwColors, + [in] const PALETTEENTRY *pPalette); + + HRESULT OnClipChange( + [in] const RECT *pSourceRect, + [in] const RECT *pDestinationRect, + [in] const RGNDATA *pRgnData); + + HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey); + + HRESULT OnPositionChange([in] const RECT *pSourceRect, + [in] const RECT *pDestinationRect); +} + +typedef IOverlayNotify *POVERLAYNOTIFY; + +cpp_quote("#if 0") +typedef HANDLE HMONITOR; +cpp_quote("#endif /* 0 */") + +[ +object, +local, +uuid(680EFA10-D535-11D1-87C8-00A0C9223196), +pointer_default(unique) +] +interface IOverlayNotify2 : IOverlayNotify +{ + HRESULT OnDisplayChange( + HMONITOR hMonitor); +} + +typedef IOverlayNotify2 *POVERLAYNOTIFY2; + +[ +object, +local, +uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IOverlay : IUnknown +{ + HRESULT GetPalette( + [out] DWORD *pdwColors, + [out] PALETTEENTRY **ppPalette); + + HRESULT SetPalette( + [in] DWORD dwColors, + [in] PALETTEENTRY *pPalette); + + HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey); + + HRESULT GetColorKey([out] COLORKEY *pColorKey); + + HRESULT SetColorKey([in,out] COLORKEY *pColorKey); + + HRESULT GetWindowHandle([out] HWND *pHwnd); + + HRESULT GetClipList([out] RECT *pSourceRect, + [out] RECT *pDestinationRect, + [out] RGNDATA **ppRgnData); + + HRESULT GetVideoPosition([out] RECT *pSourceRect, + [out] RECT *pDestinationRect); + + HRESULT Advise( + [in] IOverlayNotify *pOverlayNotify, + [in] DWORD dwInterests); + + HRESULT Unadvise(); +} + +typedef IOverlay *POVERLAY; + +[ +object, +uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IMediaEventSink : IUnknown +{ + HRESULT Notify( + [in] long EventCode, + [in] LONG_PTR EventParam1, + [in] LONG_PTR EventParam2 + ); +} + +typedef IMediaEventSink *PMEDIAEVENTSINK; + +[ +object, +uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IFileSourceFilter : IUnknown +{ + HRESULT Load( + [in] LPCOLESTR pszFileName, + [in, unique] const AM_MEDIA_TYPE *pmt + ); + + HRESULT GetCurFile( + [out] LPOLESTR *ppszFileName, + [out] AM_MEDIA_TYPE *pmt + ); +} + +typedef IFileSourceFilter *PFILTERFILESOURCE; + +[ +object, +uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6), +pointer_default(unique) +] +interface IFileSinkFilter : IUnknown +{ + HRESULT SetFileName( + [in] LPCOLESTR pszFileName, + [in, unique] const AM_MEDIA_TYPE *pmt + ); + + HRESULT GetCurFile( + [out] LPOLESTR *ppszFileName, + [out] AM_MEDIA_TYPE *pmt + ); +} + +typedef IFileSinkFilter *PFILTERFILESINK; + +[ + object, + uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86), + pointer_default(unique) +] +interface IFileSinkFilter2 : IFileSinkFilter +{ + HRESULT SetMode( + [in] DWORD dwFlags + ); + + HRESULT GetMode( + [out] DWORD *pdwFlags + ); +} + +typedef IFileSinkFilter2 *PFILESINKFILTER2; + +typedef enum +{ + AM_FILE_OVERWRITE = 0x00000001, +} AM_FILESINK_FLAGS; + +[ +object, +uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770), +pointer_default(unique) +] +interface IGraphBuilder : IFilterGraph +{ + HRESULT Connect + ( [in] IPin * ppinOut, + [in] IPin * ppinIn + ); + + HRESULT Render + ( [in] IPin * ppinOut + ); + + HRESULT RenderFile + ( [in] LPCWSTR lpcwstrFile, + [in, unique] LPCWSTR lpcwstrPlayList + ); + + HRESULT AddSourceFilter + ( [in] LPCWSTR lpcwstrFileName, + [in, unique] LPCWSTR lpcwstrFilterName, + [out] IBaseFilter* *ppFilter + ); + + HRESULT SetLogFile + ( [in] DWORD_PTR hFile + ); + + HRESULT Abort(); + + HRESULT ShouldOperationContinue(); +} + + +[ + object, + uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5), + pointer_default(unique) +] +interface ICaptureGraphBuilder : IUnknown { + + HRESULT SetFiltergraph( + [in] IGraphBuilder *pfg); + + HRESULT GetFiltergraph( + [out] IGraphBuilder **ppfg); + + HRESULT SetOutputFileName( + [in] const GUID *pType, + [in] LPCOLESTR lpstrFile, + [out] IBaseFilter **ppf, + [out] IFileSinkFilter **ppSink); + + [local] HRESULT FindInterface( + [in, unique] const GUID *pCategory, + [in] IBaseFilter *pf, + [in] REFIID riid, + [out] void **ppint); + + [call_as(FindInterface)] HRESULT RemoteFindInterface( + [in, unique] const GUID *pCategory, + [in] IBaseFilter *pf, + [in] REFIID riid, + [out] IUnknown **ppint); + + HRESULT RenderStream( + [in] const GUID *pCategory, + [in] IUnknown *pSource, + [in] IBaseFilter *pfCompressor, + [in] IBaseFilter *pfRenderer); + + HRESULT ControlStream( + [in] const GUID *pCategory, + [in] IBaseFilter *pFilter, + [in] REFERENCE_TIME *pstart, + [in] REFERENCE_TIME *pstop, + [in] WORD wStartCookie, + [in] WORD wStopCookie); + + HRESULT AllocCapFile( + [in] LPCOLESTR lpstr, + [in] DWORDLONG dwlSize); + + HRESULT CopyCaptureFile( + [in] LPOLESTR lpwstrOld, + [in] LPOLESTR lpwstrNew, + [in] int fAllowEscAbort, + [in] IAMCopyCaptureFileProgress *pCallback); +} + +[ +object, +uuid(670d1d20-a068-11d0-b3f0-00aa003761c5), +pointer_default(unique) +] +interface IAMCopyCaptureFileProgress : IUnknown +{ + HRESULT Progress( + [in] int iProgress); +} + +[ + object, + uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D), + pointer_default(unique) +] +interface ICaptureGraphBuilder2 : IUnknown +{ + HRESULT SetFiltergraph( + [in] IGraphBuilder *pfg); + + HRESULT GetFiltergraph( + [out] IGraphBuilder **ppfg); + + HRESULT SetOutputFileName( + [in] const GUID *pType, + [in] LPCOLESTR lpstrFile, + [out] IBaseFilter **ppf, + [out] IFileSinkFilter **ppSink); + + [local] HRESULT FindInterface( + [in] const GUID *pCategory, + [in] const GUID *pType, + [in] IBaseFilter *pf, + [in] REFIID riid, + [out] void **ppint); + + [call_as(FindInterface)] HRESULT RemoteFindInterface( + [in] const GUID *pCategory, + [in] const GUID *pType, + [in] IBaseFilter *pf, + [in] REFIID riid, + [out] IUnknown **ppint); + + HRESULT RenderStream( + [in] const GUID *pCategory, + [in] const GUID *pType, + [in] IUnknown *pSource, + [in] IBaseFilter *pfCompressor, + [in] IBaseFilter *pfRenderer); + + HRESULT ControlStream( + [in] const GUID *pCategory, + [in] const GUID *pType, + [in] IBaseFilter *pFilter, + [in] REFERENCE_TIME *pstart, + [in] REFERENCE_TIME *pstop, + [in] WORD wStartCookie, + [in] WORD wStopCookie); + + HRESULT AllocCapFile( + [in] LPCOLESTR lpstr, + [in] DWORDLONG dwlSize); + + HRESULT CopyCaptureFile( + [in] LPOLESTR lpwstrOld, + [in] LPOLESTR lpwstrNew, + [in] int fAllowEscAbort, + [in] IAMCopyCaptureFileProgress *pCallback); + + HRESULT FindPin( + [in] IUnknown *pSource, + [in] PIN_DIRECTION pindir, + [in] const GUID *pCategory, + [in] const GUID *pType, + [in] BOOL fUnconnected, + [in] int num, + [out] IPin **ppPin); +} + +enum _AM_RENSDEREXFLAGS +{ + AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01 +}; + +[ + object, + uuid(36b73882-c2c8-11cf-8b46-00805f6cef60), + pointer_default(unique) +] +interface IFilterGraph2: IGraphBuilder +{ + HRESULT AddSourceFilterForMoniker( + [in] IMoniker *pMoniker, + [in] IBindCtx *pCtx, + [in, unique] LPCWSTR lpcwstrFilterName, + [out] IBaseFilter **ppFilter + ); + + HRESULT ReconnectEx + ( [in] IPin * ppin, + [in, unique] const AM_MEDIA_TYPE *pmt + ); + + HRESULT RenderEx( [in] IPin *pPinOut, + [in] DWORD dwFlags, + [in, out] DWORD *pvContext + ); +} + +[ + object, + local, + uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IStreamBuilder : IUnknown +{ + HRESULT Render + ( [in] IPin * ppinOut, + [in] IGraphBuilder * pGraph + ); + + HRESULT Backout + ( [in] IPin * ppinOut, + [in] IGraphBuilder * pGraph + ); +} + + +/***************************************************************************** + * IAMStreamConfig interface + */ +[ + object, + uuid(c6e13340-30ac-11d0-a18c-00a0c9118956), + pointer_default(unique) +] +interface IAMStreamConfig : IUnknown +{ + HRESULT SetFormat( [in] AM_MEDIA_TYPE *pmt); + HRESULT GetFormat( [in] AM_MEDIA_TYPE **pmt); + HRESULT GetNumberOfCapabilities( [out] int *piCount, [out] int *piSize); + HRESULT GetStreamCaps( [in] int iIndex, [out] AM_MEDIA_TYPE **pmt, + [out] BYTE *pSCC); +} + + +typedef enum tagVideoProcAmpProperty +{ + VideoProcAmp_Brightness, + VideoProcAmp_Contrast, + VideoProcAmp_Hue, + VideoProcAmp_Saturation, + VideoProcAmp_Sharpness, + VideoProcAmp_Gamma, + VideoProcAmp_ColorEnable, + VideoProcAmp_WhiteBalance, + VideoProcAmp_BacklightCompensation, + VideoProcAmp_Gain +} VideoProcAmpProperty; + +typedef enum tagVideoProcAmpFlags +{ + VideoProcAmp_Flags_Auto = 0x0001, + VideoProcAmp_Flags_Manual = 0x0002, +} VideoProcAmpFlags; + +/***************************************************************************** + * IAMVideoProcAmp interface + */ +[ + object, + uuid(c6e13360-30ac-11d0-a18c-00a0c9118956), + pointer_default(unique) +] +interface IAMVideoProcAmp : IUnknown +{ + HRESULT GetRange( [in] long Property, [out] long *pMin, [out] long *pMax, + [out] long *pSteppingDelta, [out] long *pDefault, + [out] long *pCapsFlags); + HRESULT Set( [in] long Property, [in] long lValue, [in] long Flags); + HRESULT Get( [in] long Property, [out] long *lValue, [out] long *Flags); +} + + +[ + object, + uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IAsyncReader : IUnknown +{ + HRESULT RequestAllocator( + [in] IMemAllocator* pPreferred, + [in] ALLOCATOR_PROPERTIES* pProps, + [out] IMemAllocator ** ppActual); + + HRESULT Request( + [in] IMediaSample* pSample, + [in] DWORD_PTR dwUser); + + HRESULT WaitForNext( + [in] DWORD dwTimeout, + [out] IMediaSample** ppSample, + [out] DWORD_PTR * pdwUser); + + HRESULT SyncReadAligned( + [in] IMediaSample* pSample); + + HRESULT SyncRead( + [in] LONGLONG llPosition, + [in] LONG lLength, + [out, size_is(lLength)] + BYTE* pBuffer); + + HRESULT Length( + [out] LONGLONG* pTotal, + [out] LONGLONG* pAvailable); + + HRESULT BeginFlush(void); + + HRESULT EndFlush(void); +} + + +[ + object, + uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IGraphVersion : IUnknown +{ + HRESULT QueryVersion(LONG* pVersion); +} + +[ + object, + uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IResourceConsumer : IUnknown +{ + HRESULT AcquireResource( + [in] LONG idResource); + + HRESULT ReleaseResource( + [in] LONG idResource); +} + + +[ + object, + uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IResourceManager : IUnknown +{ + HRESULT Register( + [in] LPCWSTR pName, + [in] LONG cResource, + [out] LONG* plToken + ); + + HRESULT RegisterGroup( + [in] LPCWSTR pName, + [in] LONG cResource, + [in, size_is(cResource)] + LONG* palTokens, + [out] LONG* plToken + ); + + HRESULT RequestResource( + [in] LONG idResource, + [in] IUnknown* pFocusObject, + [in] IResourceConsumer* pConsumer + ); + + HRESULT NotifyAcquire( + [in] LONG idResource, + [in] IResourceConsumer* pConsumer, + [in] HRESULT hr); + + HRESULT NotifyRelease( + [in] LONG idResource, + [in] IResourceConsumer* pConsumer, + [in] BOOL bStillWant); + + HRESULT CancelRequest( + [in] LONG idResource, + [in] IResourceConsumer* pConsumer); + + HRESULT SetFocus( + [in] IUnknown* pFocusObject); + + HRESULT ReleaseFocus( + [in] IUnknown* pFocusObject); + +} + +cpp_quote("#ifndef _IKsPropertySet_") +cpp_quote("#define _IKsPropertySet_") +cpp_quote("#define KSPROPERTY_SUPPORT_GET 1") +cpp_quote("#define KSPROPERTY_SUPPORT_SET 2") + +[ + object, + uuid(31efac30-515c-11d0-a9aa-00aa0061be93), + pointer_default(unique) +] +interface IKsPropertySet : IUnknown +{ + HRESULT Set( [in] REFGUID guidPropSet, + [in] DWORD dwPropID, + [in, size_is(cbInstanceData)] LPVOID pInstanceData, + [in] DWORD cbInstanceData, + [in, size_is(cbPropData)] LPVOID pPropData, + [in] DWORD cbPropData ); + + HRESULT Get( [in] REFGUID guidPropSet, + [in] DWORD dwPropID, + [in, size_is(cbInstanceData)] LPVOID pInstanceData, + [in] DWORD cbInstanceData, + [out, size_is(cbPropData)] LPVOID pPropData, + [in] DWORD cbPropData, + [out] DWORD *pcbReturned ); + + HRESULT QuerySupported( [in] REFGUID guidPropSet, + [in] DWORD dwPropID, + [out] DWORD *pTypeSupport); +} +cpp_quote("#endif /* _IKsPropertySet_ */") diff --git a/reactos/include/psdk/basetyps.h b/reactos/include/psdk/basetyps.h index a3647fcf538..f3dd56105e4 100644 --- a/reactos/include/psdk/basetyps.h +++ b/reactos/include/psdk/basetyps.h @@ -30,143 +30,60 @@ # ifndef __hyper # define __hyper __int64 # endif -# define STDMETHODCALLTYPE __stdcall -# define STDMETHODVCALLTYPE __cdecl -# define STDAPICALLTYPE __stdcall -# define STDAPIVCALLTYPE __cdecl -# define STDAPI EXTERN_C HRESULT STDAPICALLTYPE -# define STDAPI_(t) EXTERN_C t STDAPICALLTYPE -# define STDMETHODIMP HRESULT STDMETHODCALLTYPE -# define STDMETHODIMP_(t) t STDMETHODCALLTYPE -# define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE -# define STDAPIV_(t) EXTERN_C t STDAPIVCALLTYPE -# define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE -# define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE -# define interface struct -# if defined(__cplusplus) && !defined(CINTERFACE) -# define STDMETHOD(m) virtual HRESULT STDMETHODCALLTYPE m -# define STDMETHOD_(t,m) virtual t STDMETHODCALLTYPE m -# define PURE =0 -# define THIS_ -# define THIS void -/* - __attribute__((com_interface)) is obsolete in __GNUC__ >= 3 - g++ vtables are now COM-compatible by default -*/ -# if defined(__GNUC__) && __GNUC__ < 3 && !defined(NOCOMATTRIBUTE) -# define DECLARE_INTERFACE(i) interface __attribute__((com_interface)) i -# define DECLARE_INTERFACE_(i,b) interface __attribute__((com_interface)) i : public b -# else -# define DECLARE_INTERFACE(i) interface i -# define DECLARE_INTERFACE_(i,b) interface i : public b -# endif -# else -# define STDMETHOD(m) HRESULT(STDMETHODCALLTYPE *m) -# define STDMETHOD_(t,m) t(STDMETHODCALLTYPE *m) -# define PURE -# define THIS_ INTERFACE *, -# define THIS INTERFACE * -# ifndef CONST_VTABLE -# define CONST_VTABLE -# endif +#endif + +#define STDMETHODCALLTYPE __stdcall +#define STDMETHODVCALLTYPE __cdecl +#define STDAPICALLTYPE __stdcall +#define STDAPIVCALLTYPE __cdecl +#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE +#define STDAPI_(t) EXTERN_C t STDAPICALLTYPE +#define STDMETHODIMP HRESULT STDMETHODCALLTYPE +#define STDMETHODIMP_(t) t STDMETHODCALLTYPE +#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE +#define STDAPIV_(t) EXTERN_C t STDAPIVCALLTYPE +#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE +#define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE + +#if defined(__cplusplus) && !defined(CINTERFACE) +# define interface struct +# define STDMETHOD(m) virtual HRESULT STDMETHODCALLTYPE m +# define STDMETHOD_(t,m) virtual t STDMETHODCALLTYPE m +# define PURE =0 +# define THIS_ +# define THIS void +# define DECLARE_INTERFACE(i) interface i +# define DECLARE_INTERFACE_(i,b) interface i : public b +#else +# define STDMETHOD(m) HRESULT (STDMETHODCALLTYPE *m) +# define STDMETHOD_(t,m) t (STDMETHODCALLTYPE *m) +# define PURE +# define THIS_ INTERFACE *, +# define THIS INTERFACE * +# ifdef CONST_VTABLE # define DECLARE_INTERFACE(i) \ - typedef interface i { CONST_VTABLE struct i##Vtbl *lpVtbl; } i; \ - typedef CONST_VTABLE struct i##Vtbl i##Vtbl; \ - CONST_VTABLE struct i##Vtbl -# define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i) -# endif -# define BEGIN_INTERFACE -# define END_INTERFACE - -# define FWD_DECL(i) typedef interface i i -# if defined(__cplusplus) && !defined(CINTERFACE) -# define IENUM_THIS(T) -# define IENUM_THIS_(T) + typedef interface i { const struct i##Vtbl *lpVtbl; } i; \ + typedef struct i##Vtbl i##Vtbl; \ + struct i##Vtbl # else -# define IENUM_THIS(T) T* -# define IENUM_THIS_(T) T*, +# define DECLARE_INTERFACE(i) \ + typedef interface i { struct i##Vtbl *lpVtbl; } i; \ + typedef struct i##Vtbl i##Vtbl; \ + struct i##Vtbl # endif -# define DECLARE_ENUMERATOR_(I,T) \ - DECLARE_INTERFACE_(I,IUnknown) \ - { \ - STDMETHOD(QueryInterface)(IENUM_THIS_(I) REFIID,PVOID*) PURE; \ - STDMETHOD_(ULONG,AddRef)(IENUM_THIS(I)) PURE; \ - STDMETHOD_(ULONG,Release)(IENUM_THIS(I)) PURE; \ - STDMETHOD(Next)(IENUM_THIS_(I) ULONG,T*,ULONG*) PURE; \ - STDMETHOD(Skip)(IENUM_THIS_(I) ULONG) PURE; \ - STDMETHOD(Reset)(IENUM_THIS(I)) PURE; \ - STDMETHOD(Clone)(IENUM_THIS_(I) I**) PURE; \ - } -# define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T) - -#endif /* __OBJC__ */ - -#ifdef _GUID_DEFINED -# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead +# define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i) #endif -#if ! (defined _GUID_DEFINED || defined GUID_DEFINED) /* also defined in winnt.h */ -#define GUID_DEFINED -typedef struct _GUID -{ - unsigned long Data1; - unsigned short Data2; - unsigned short Data3; - unsigned char Data4[8]; -} GUID,*REFGUID,*LPGUID; -#endif /* GUID_DEFINED */ -#ifndef LPCGUID_DEFINED -#define LPCGUID_DEFINED -typedef const GUID *LPCGUID; -#endif -#ifndef UUID_DEFINED -#define UUID_DEFINED -typedef GUID UUID; -#endif /* UUID_DEFINED */ -typedef GUID IID; -typedef GUID CLSID; -typedef CLSID *LPCLSID; -typedef IID *LPIID; -typedef IID *REFIID; -typedef CLSID *REFCLSID; -typedef GUID FMTID; -typedef FMTID *REFFMTID; +#include + +#ifndef _ERROR_STATUS_T_DEFINED typedef unsigned long error_status_t; -#define uuid_t UUID -typedef unsigned long PROPID; +#define _ERROR_STATUS_T_DEFINED +#endif -#ifndef _REFGUID_DEFINED -#if defined (__cplusplus) && !defined (CINTERFACE) -#define REFGUID const GUID& -#define REFIID const IID& -#define REFCLSID const CLSID& -#else -#define REFGUID const GUID* const -#define REFIID const IID* const -#define REFCLSID const CLSID* const -#endif -#define _REFGUID_DEFINED -#define _REFIID_DEFINED -#define _REFCLSID_DEFINED -#endif -#ifndef GUID_SECTION -#define GUID_SECTION ".text" -#endif -#ifdef __GNUC__ -#define GUID_SECT __attribute__ ((section (GUID_SECTION))) -#else -#define GUID_SECT -#endif -#if !defined(INITGUID) || (defined(INITGUID) && defined(__cplusplus)) -#define GUID_EXT EXTERN_C -#else -#define GUID_EXT -#endif -#ifdef INITGUID -#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} -#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) -#else -#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n -#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) -#endif +#ifndef _WCHAR_T_DEFINED +typedef unsigned short wchar_t; +#define _WCHAR_T_DEFINED #endif + +#endif /* _BASETYPS_H_ */ diff --git a/reactos/include/psdk/cguid.h b/reactos/include/psdk/cguid.h index ca64c5e6630..fa9593da448 100644 --- a/reactos/include/psdk/cguid.h +++ b/reactos/include/psdk/cguid.h @@ -1,12 +1,28 @@ -#ifndef _CGUID_H -#define _CGUID_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif +/* + * Copyright (C) 2000 Peter Hunnisett + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __CGUID_H__ +#define __CGUID_H__ #ifdef __cplusplus extern "C" { #endif + extern const IID GUID_NULL; extern const IID IID_IRpcChannel; extern const IID IID_IRpcStub; @@ -19,6 +35,8 @@ extern const IID IID_IDfReserved1; extern const IID IID_IDfReserved2; extern const IID IID_IDfReserved3; extern const CLSID CLSID_StdMarshal; +extern const CLSID CLSID_AggStdMarshal; +extern const CLSID CLSID_StdAsyncActManager; extern const IID IID_IStub; extern const IID IID_IProxy; extern const IID IID_IEnumGeneric; @@ -39,6 +57,12 @@ extern const CLSID CLSID_PSEnumerators; extern const CLSID CLSID_StaticMetafile; extern const CLSID CLSID_StaticDib; extern const CLSID CID_CDfsVolume; +extern const CLSID CLSID_DCOMAccessControl; +extern const CLSID CLSID_StdGlobalInterfaceTable; +extern const CLSID CLSID_ComBinding; +extern const CLSID CLSID_StdEvent; +extern const CLSID CLSID_ManualResetEvent; +extern const CLSID CLSID_SynchronizeContainer; extern const CLSID CLSID_CCDFormKrnl; extern const CLSID CLSID_CCDPropertyPage; extern const CLSID CLSID_CCDFormDialog; @@ -75,9 +99,11 @@ extern const CLSID CLSID_InProcFreeMarshaler; extern const CLSID CLSID_Picture_Metafile; extern const CLSID CLSID_Picture_EnhMetafile; extern const CLSID CLSID_Picture_Dib; -extern const CLSID CLSID_StdGlobalInterfaceTable; extern const GUID GUID_TRISTATE; + + #ifdef __cplusplus } #endif -#endif + +#endif /* __CGUID_H__ */ diff --git a/reactos/include/psdk/comcat.h b/reactos/include/psdk/comcat.h index e264ac999d0..d90f63479d8 100644 --- a/reactos/include/psdk/comcat.h +++ b/reactos/include/psdk/comcat.h @@ -1,114 +1,384 @@ -#ifndef _COMCAT_H -#define _COMCAT_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifndef COM_NO_WINDOWS_H -#include -#include -#endif - -#ifndef _RC_INVOKED +/*** Autogenerated by WIDL 0.3.0 from include\psdk\comcat.idl - Do not edit ***/ +#include +#include +#ifndef __WIDL_INCLUDE_PSDK_COMCAT_H +#define __WIDL_INCLUDE_PSDK_COMCAT_H #ifdef __cplusplus -extern "C"{ +extern "C" { #endif - -EXTERN_C const IID IID_IEnumGUID; -typedef interface IEnumGUID *LPENUMGUID; - -#undef INTERFACE -#define INTERFACE IEnumGUID -DECLARE_INTERFACE_(IEnumGUID,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Next)(THIS_ ULONG,GUID*,ULONG*) PURE; - STDMETHOD(Skip)(THIS_ ULONG) PURE; - STDMETHOD(Reset)(THIS) PURE; - STDMETHOD(Clone)(THIS_ LPENUMGUID*) PURE; -}; -#undef INTERFACE -#if (!defined (__cplusplus) || defined (CINTERFACE)) \ - && defined (COBJMACROS) -#define IEnumGUID_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumGUID_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumGUID_Release(p) (p)->lpVtbl->Release(p) -#define IEnumGUID_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumGUID_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumGUID_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumGUID_Clone(p,a) (p)->lpVtbl->Clone(p,a) -#endif - +#include typedef GUID CATID; typedef REFGUID REFCATID; #define CATID_NULL GUID_NULL -#define IsEqualCATID(a, b) IsEqualGUID(a, b) - -typedef struct tagCATEGORYINFO { - CATID catid; /* category identifier for component */ - LCID lcid; /* locale identifier */ - OLECHAR szDescription[128]; /* description of the category */ -} CATEGORYINFO, *LPCATEGORYINFO; - -EXTERN_C const CATID CATID_Insertable; -EXTERN_C const CATID CATID_Control; -EXTERN_C const CATID CATID_Programmable; -EXTERN_C const CATID CATID_IsShortcut; -EXTERN_C const CATID CATID_NeverShowExt; -EXTERN_C const CATID CATID_DocObject; -EXTERN_C const CATID CATID_Printable; -EXTERN_C const CATID CATID_RequiresDataPathHost; -EXTERN_C const CATID CATID_PersistsToMoniker; -EXTERN_C const CATID CATID_PersistsToStorage; -EXTERN_C const CATID CATID_PersistsToStreamInit; -EXTERN_C const CATID CATID_PersistsToStream; -EXTERN_C const CATID CATID_PersistsToMemory; -EXTERN_C const CATID CATID_PersistsToFile; -EXTERN_C const CATID CATID_PersistsToPropertyBag; -EXTERN_C const CATID CATID_InternetAware; -EXTERN_C const CATID CATID_DesignTimeUIActivatableControl; - +#define IsEqualCATID(rcatid1, rcatid2) IsEqualGUID(rcatid1, rcatid2) #define IEnumCATID IEnumGUID -#define LPENUMCATID LPENUMGUID #define IID_IEnumCATID IID_IEnumGUID - +#define LPENUMCATID LPENUMGUID #define IEnumCLSID IEnumGUID -#define LPENUMCLSID LPENUMGUID #define IID_IEnumCLSID IID_IEnumGUID +#define LPENUMCLSID LPENUMGUID +#ifndef __IEnumGUID_FWD_DEFINED__ +#define __IEnumGUID_FWD_DEFINED__ +typedef interface IEnumGUID IEnumGUID; +#endif -EXTERN_C const IID IID_ICatInformation; -typedef interface ICatInformation *LPCATINFORMATION; +typedef IEnumGUID *LPENUMGUID; +/***************************************************************************** + * IEnumGUID interface + */ +#ifndef __IEnumGUID_INTERFACE_DEFINED__ +#define __IEnumGUID_INTERFACE_DEFINED__ -EXTERN_C const IID IID_ICatRegister; -typedef interface ICatRegister *LPCATREGISTER; - -EXTERN_C const IID IID_IEnumCATEGORYINFO; -typedef interface IEnumCATEGORYINFO *LPENUMCATEGORYINFO; - -EXTERN_C const CLSID CLSID_StdComponentCategoriesMgr; - -#define INTERFACE ICatInformation -DECLARE_INTERFACE_(ICatInformation,IUnknown) +DEFINE_GUID(IID_IEnumGUID, 0x0002e000, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IEnumGUID : public IUnknown { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(EnumCategories)(THIS_ LCID,LPENUMCATEGORYINFO*) PURE; - STDMETHOD(GetCategoryDesc)(THIS_ REFCATID,LCID,PWCHAR*) PURE; - STDMETHOD(EnumClassesOfCategories)(THIS_ ULONG,CATID*,ULONG,CATID*,LPENUMCLSID*) PURE; - STDMETHOD(IsClassOfCategories)(THIS_ REFCLSID,ULONG,CATID*,ULONG,CATID*) PURE; - STDMETHOD(EnumImplCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE; - STDMETHOD(EnumReqCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE; + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + GUID* rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumGUID** ppenum) = 0; + }; -#undef INTERFACE -#if (!defined (__cplusplus) || defined (CINTERFACE)) \ - && defined (COBJMACROS) +#else +typedef struct IEnumGUIDVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumGUID* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumGUID* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumGUID* This); + + /*** IEnumGUID methods ***/ + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumGUID* This, + ULONG celt, + GUID* rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumGUID* This, + ULONG celt); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumGUID* This); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumGUID* This, + IEnumGUID** ppenum); + + END_INTERFACE +} IEnumGUIDVtbl; +interface IEnumGUID { + const IEnumGUIDVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumGUID_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumGUID_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumGUID_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumGUID methods ***/ +#define IEnumGUID_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumGUID_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumGUID_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumGUID_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#endif + +HRESULT CALLBACK IEnumGUID_Next_Proxy( + IEnumGUID* This, + ULONG celt, + GUID* rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumGUID_Next_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumGUID_Skip_Proxy( + IEnumGUID* This, + ULONG celt); +void __RPC_STUB IEnumGUID_Skip_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumGUID_Reset_Proxy( + IEnumGUID* This); +void __RPC_STUB IEnumGUID_Reset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumGUID_Clone_Proxy( + IEnumGUID* This, + IEnumGUID** ppenum); +void __RPC_STUB IEnumGUID_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumGUID_INTERFACE_DEFINED__ */ + +#ifndef __IEnumCATEGORYINFO_FWD_DEFINED__ +#define __IEnumCATEGORYINFO_FWD_DEFINED__ +typedef interface IEnumCATEGORYINFO IEnumCATEGORYINFO; +#endif + +typedef IEnumCATEGORYINFO *LPENUMCATEGORYINFO; +typedef struct tagCATEGORYINFO { + CATID catid; + LCID lcid; + OLECHAR szDescription[128]; +} CATEGORYINFO, *LPCATEGORYINFO; +/***************************************************************************** + * IEnumCATEGORYINFO interface + */ +#ifndef __IEnumCATEGORYINFO_INTERFACE_DEFINED__ +#define __IEnumCATEGORYINFO_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumCATEGORYINFO, 0x0002e011, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IEnumCATEGORYINFO : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + CATEGORYINFO* rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumCATEGORYINFO** ppenum) = 0; + +}; +#else +typedef struct IEnumCATEGORYINFOVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumCATEGORYINFO* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumCATEGORYINFO* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumCATEGORYINFO* This); + + /*** IEnumCATEGORYINFO methods ***/ + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumCATEGORYINFO* This, + ULONG celt, + CATEGORYINFO* rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumCATEGORYINFO* This, + ULONG celt); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumCATEGORYINFO* This); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumCATEGORYINFO* This, + IEnumCATEGORYINFO** ppenum); + + END_INTERFACE +} IEnumCATEGORYINFOVtbl; +interface IEnumCATEGORYINFO { + const IEnumCATEGORYINFOVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumCATEGORYINFO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumCATEGORYINFO_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumCATEGORYINFO_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumCATEGORYINFO methods ***/ +#define IEnumCATEGORYINFO_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumCATEGORYINFO_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumCATEGORYINFO_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumCATEGORYINFO_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#endif + +HRESULT CALLBACK IEnumCATEGORYINFO_Next_Proxy( + IEnumCATEGORYINFO* This, + ULONG celt, + CATEGORYINFO* rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumCATEGORYINFO_Next_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumCATEGORYINFO_Skip_Proxy( + IEnumCATEGORYINFO* This, + ULONG celt); +void __RPC_STUB IEnumCATEGORYINFO_Skip_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumCATEGORYINFO_Reset_Proxy( + IEnumCATEGORYINFO* This); +void __RPC_STUB IEnumCATEGORYINFO_Reset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumCATEGORYINFO_Clone_Proxy( + IEnumCATEGORYINFO* This, + IEnumCATEGORYINFO** ppenum); +void __RPC_STUB IEnumCATEGORYINFO_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumCATEGORYINFO_INTERFACE_DEFINED__ */ + +#ifndef __ICatInformation_FWD_DEFINED__ +#define __ICatInformation_FWD_DEFINED__ +typedef interface ICatInformation ICatInformation; +#endif + +typedef ICatInformation *LPCATINFORMATION; +/***************************************************************************** + * ICatInformation interface + */ +#ifndef __ICatInformation_INTERFACE_DEFINED__ +#define __ICatInformation_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_ICatInformation, 0x0002e013, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface ICatInformation : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE EnumCategories( + LCID lcid, + IEnumCATEGORYINFO** ppenumCategoryInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCategoryDesc( + REFCATID rcatid, + LCID lcid, + LPWSTR* pszDesc) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumClassesOfCategories( + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[], + IEnumGUID** ppenumClsid) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsClassOfCategories( + REFCLSID rclsid, + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumImplCategoriesOfClass( + REFCLSID rclsid, + IEnumGUID** ppenumCatid) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumReqCategoriesOfClass( + REFCLSID rclsid, + IEnumGUID** ppenumCatid) = 0; + +}; +#else +typedef struct ICatInformationVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + ICatInformation* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + ICatInformation* This); + + ULONG (STDMETHODCALLTYPE *Release)( + ICatInformation* This); + + /*** ICatInformation methods ***/ + HRESULT (STDMETHODCALLTYPE *EnumCategories)( + ICatInformation* This, + LCID lcid, + IEnumCATEGORYINFO** ppenumCategoryInfo); + + HRESULT (STDMETHODCALLTYPE *GetCategoryDesc)( + ICatInformation* This, + REFCATID rcatid, + LCID lcid, + LPWSTR* pszDesc); + + HRESULT (STDMETHODCALLTYPE *EnumClassesOfCategories)( + ICatInformation* This, + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[], + IEnumGUID** ppenumClsid); + + HRESULT (STDMETHODCALLTYPE *IsClassOfCategories)( + ICatInformation* This, + REFCLSID rclsid, + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[]); + + HRESULT (STDMETHODCALLTYPE *EnumImplCategoriesOfClass)( + ICatInformation* This, + REFCLSID rclsid, + IEnumGUID** ppenumCatid); + + HRESULT (STDMETHODCALLTYPE *EnumReqCategoriesOfClass)( + ICatInformation* This, + REFCLSID rclsid, + IEnumGUID** ppenumCatid); + + END_INTERFACE +} ICatInformationVtbl; +interface ICatInformation { + const ICatInformationVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ #define ICatInformation_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICatInformation_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICatInformation_Release(p) (p)->lpVtbl->Release(p) +#define ICatInformation_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ICatInformation_Release(p) (p)->lpVtbl->Release(p) +/*** ICatInformation methods ***/ #define ICatInformation_EnumCategories(p,a,b) (p)->lpVtbl->EnumCategories(p,a,b) #define ICatInformation_GetCategoryDesc(p,a,b,c) (p)->lpVtbl->GetCategoryDesc(p,a,b,c) #define ICatInformation_EnumClassesOfCategories(p,a,b,c,d,e) (p)->lpVtbl->EnumClassesOfCategories(p,a,b,c,d,e) @@ -117,25 +387,208 @@ DECLARE_INTERFACE_(ICatInformation,IUnknown) #define ICatInformation_EnumReqCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumReqCategoriesOfClass(p,a,b) #endif -#define INTERFACE ICatRegister -DECLARE_INTERFACE_(ICatRegister,IUnknown) +#endif + +HRESULT CALLBACK ICatInformation_EnumCategories_Proxy( + ICatInformation* This, + LCID lcid, + IEnumCATEGORYINFO** ppenumCategoryInfo); +void __RPC_STUB ICatInformation_EnumCategories_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatInformation_GetCategoryDesc_Proxy( + ICatInformation* This, + REFCATID rcatid, + LCID lcid, + LPWSTR* pszDesc); +void __RPC_STUB ICatInformation_GetCategoryDesc_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatInformation_RemoteEnumClassesOfCategories_Proxy( + ICatInformation* This, + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[], + IEnumGUID** ppenumClsid); +void __RPC_STUB ICatInformation_RemoteEnumClassesOfCategories_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatInformation_EnumClassesOfCategories_Proxy( + ICatInformation* This, + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[], + IEnumGUID** ppenumClsid); +HRESULT __RPC_STUB ICatInformation_EnumClassesOfCategories_Stub( + ICatInformation* This, + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[], + IEnumGUID** ppenumClsid); +HRESULT CALLBACK ICatInformation_RemoteIsClassOfCategories_Proxy( + ICatInformation* This, + REFCLSID rclsid, + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[]); +void __RPC_STUB ICatInformation_RemoteIsClassOfCategories_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatInformation_IsClassOfCategories_Proxy( + ICatInformation* This, + REFCLSID rclsid, + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[]); +HRESULT __RPC_STUB ICatInformation_IsClassOfCategories_Stub( + ICatInformation* This, + REFCLSID rclsid, + ULONG cImplemented, + CATID rgcatidImpl[], + ULONG cRequired, + CATID rgcatidReq[]); +HRESULT CALLBACK ICatInformation_EnumImplCategoriesOfClass_Proxy( + ICatInformation* This, + REFCLSID rclsid, + IEnumGUID** ppenumCatid); +void __RPC_STUB ICatInformation_EnumImplCategoriesOfClass_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatInformation_EnumReqCategoriesOfClass_Proxy( + ICatInformation* This, + REFCLSID rclsid, + IEnumGUID** ppenumCatid); +void __RPC_STUB ICatInformation_EnumReqCategoriesOfClass_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __ICatInformation_INTERFACE_DEFINED__ */ + +#ifndef __ICatRegister_FWD_DEFINED__ +#define __ICatRegister_FWD_DEFINED__ +typedef interface ICatRegister ICatRegister; +#endif + +typedef ICatRegister *LPCATREGISTER; +/***************************************************************************** + * ICatRegister interface + */ +#ifndef __ICatRegister_INTERFACE_DEFINED__ +#define __ICatRegister_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_ICatRegister, 0x0002e012, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface ICatRegister : public IUnknown { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(RegisterCategories)(THIS_ ULONG,CATEGORYINFO*) PURE; - STDMETHOD(UnRegisterCategories)(THIS_ ULONG,CATID*) PURE; - STDMETHOD(RegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE; - STDMETHOD(UnRegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE; - STDMETHOD(RegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE; - STDMETHOD(UnRegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE; + virtual HRESULT STDMETHODCALLTYPE RegisterCategories( + ULONG cCategories, + CATEGORYINFO rgCategoryInfo[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnRegisterCategories( + ULONG cCategories, + CATID rgcatid[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE RegisterClassImplCategories( + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnRegisterClassImplCategories( + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE RegisterClassReqCategories( + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnRegisterClassReqCategories( + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]) = 0; + }; -#undef INTERFACE -#if (!defined (__cplusplus) || defined (CINTERFACE)) \ - && defined (COBJMACROS) +#else +typedef struct ICatRegisterVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + ICatRegister* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + ICatRegister* This); + + ULONG (STDMETHODCALLTYPE *Release)( + ICatRegister* This); + + /*** ICatRegister methods ***/ + HRESULT (STDMETHODCALLTYPE *RegisterCategories)( + ICatRegister* This, + ULONG cCategories, + CATEGORYINFO rgCategoryInfo[]); + + HRESULT (STDMETHODCALLTYPE *UnRegisterCategories)( + ICatRegister* This, + ULONG cCategories, + CATID rgcatid[]); + + HRESULT (STDMETHODCALLTYPE *RegisterClassImplCategories)( + ICatRegister* This, + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]); + + HRESULT (STDMETHODCALLTYPE *UnRegisterClassImplCategories)( + ICatRegister* This, + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]); + + HRESULT (STDMETHODCALLTYPE *RegisterClassReqCategories)( + ICatRegister* This, + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]); + + HRESULT (STDMETHODCALLTYPE *UnRegisterClassReqCategories)( + ICatRegister* This, + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]); + + END_INTERFACE +} ICatRegisterVtbl; +interface ICatRegister { + const ICatRegisterVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ #define ICatRegister_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICatRegister_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICatRegister_Release(p) (p)->lpVtbl->Release(p) +#define ICatRegister_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ICatRegister_Release(p) (p)->lpVtbl->Release(p) +/*** ICatRegister methods ***/ #define ICatRegister_RegisterCategories(p,a,b) (p)->lpVtbl->RegisterCategories(p,a,b) #define ICatRegister_UnRegisterCategories(p,a,b) (p)->lpVtbl->UnRegisterCategories(p,a,b) #define ICatRegister_RegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->RegisterClassImplCategories(p,a,b,c) @@ -144,34 +597,93 @@ DECLARE_INTERFACE_(ICatRegister,IUnknown) #define ICatRegister_UnRegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassReqCategories(p,a,b,c) #endif -EXTERN_C const IID IID_IEnumCATEGORYINFO; -#undef INTERFACE -#define INTERFACE IEnumCATEGORYINFO -DECLARE_INTERFACE_(IEnumCATEGORYINFO,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Next)(THIS_ ULONG,CATEGORYINFO*,ULONG*) PURE; - STDMETHOD(Skip)(THIS_ ULONG) PURE; - STDMETHOD(Reset)(THIS) PURE; - STDMETHOD(Clone)(THIS_ LPENUMCATEGORYINFO*) PURE; -}; -#undef INTERFACE -#if (!defined (__cplusplus) || defined (CINTERFACE)) \ - && defined (COBJMACROS) -#define IEnumCATEGORYINFO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumCATEGORYINFO_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumCATEGORYINFO_Release(p) (p)->lpVtbl->Release(p) -#define IEnumCATEGORYINFO_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumCATEGORYINFO_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumCATEGORYINFO_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumCATEGORYINFO_Clone(p,a) (p)->lpVtbl->Clone(p,a) #endif +HRESULT CALLBACK ICatRegister_RegisterCategories_Proxy( + ICatRegister* This, + ULONG cCategories, + CATEGORYINFO rgCategoryInfo[]); +void __RPC_STUB ICatRegister_RegisterCategories_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatRegister_UnRegisterCategories_Proxy( + ICatRegister* This, + ULONG cCategories, + CATID rgcatid[]); +void __RPC_STUB ICatRegister_UnRegisterCategories_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatRegister_RegisterClassImplCategories_Proxy( + ICatRegister* This, + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]); +void __RPC_STUB ICatRegister_RegisterClassImplCategories_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatRegister_UnRegisterClassImplCategories_Proxy( + ICatRegister* This, + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]); +void __RPC_STUB ICatRegister_UnRegisterClassImplCategories_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatRegister_RegisterClassReqCategories_Proxy( + ICatRegister* This, + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]); +void __RPC_STUB ICatRegister_RegisterClassReqCategories_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ICatRegister_UnRegisterClassReqCategories_Proxy( + ICatRegister* This, + REFCLSID rclsid, + ULONG cCategories, + CATID rgcatid[]); +void __RPC_STUB ICatRegister_UnRegisterClassReqCategories_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __ICatRegister_INTERFACE_DEFINED__ */ + +DEFINE_GUID( CATID_Insertable, 0x40fc6ed3, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02); +DEFINE_GUID( CATID_Control, 0x40fc6ed4, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02); +DEFINE_GUID( CATID_Programmable, 0x40fc6ed5, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02); +DEFINE_GUID( CATID_IsShortcut, 0x40fc6ed6, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02); +DEFINE_GUID( CATID_NeverShowExt, 0x40fc6ed7, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02); +DEFINE_GUID( CATID_DocObject, 0x40fc6ed8, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02); +DEFINE_GUID( CATID_Printable, 0x40fc6ed9, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02); +DEFINE_GUID( CATID_RequiresDataPathHost, 0x0de86a50, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52); +DEFINE_GUID( CATID_PersistsToMoniker, 0x0de86a51, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52); +DEFINE_GUID( CATID_PersistsToStorage, 0x0de86a52, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52); +DEFINE_GUID( CATID_PersistsToStreamInit, 0x0de86a53, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52); +DEFINE_GUID( CATID_PersistsToStream, 0x0de86a54, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52); +DEFINE_GUID( CATID_PersistsToMemory, 0x0de86a55, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52); +DEFINE_GUID( CATID_PersistsToFile, 0x0de86a56, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52); +DEFINE_GUID( CATID_PersistsToPropertyBag, 0x0de86a57, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52); +DEFINE_GUID( CATID_InternetAware, 0x0de86a58, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52); +DEFINE_GUID( CATID_DesignTimeUIActivatableControl, 0xf2bb56d1, 0xdb07, 0x11d1, 0xaa, 0x6b, 0x00, 0x60, 0x97, 0xdb, 0x95, 0x39); +DEFINE_GUID(CLSID_StdComponentCategoriesMgr, 0x0002e005, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46); +/* Begin additional prototypes for all interfaces */ + + +/* End additional prototypes */ + #ifdef __cplusplus } #endif - -#endif /* _RC_INVOKED */ -#endif +#endif /* __WIDL_INCLUDE_PSDK_COMCAT_H */ diff --git a/reactos/include/psdk/comcat.idl b/reactos/include/psdk/comcat.idl new file mode 100644 index 00000000000..2df8cf0498a --- /dev/null +++ b/reactos/include/psdk/comcat.idl @@ -0,0 +1,230 @@ +/* + * Copyright 2002 John K. Hohm + * Copyright 2003 Alexandre Julliard + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; + +/***************************************************************************** + * Types + */ +typedef GUID CATID; +typedef REFGUID REFCATID; +cpp_quote("#define CATID_NULL GUID_NULL") +cpp_quote("#define IsEqualCATID(rcatid1, rcatid2) IsEqualGUID(rcatid1, rcatid2)") + +/***************************************************************************** + * Aliases for EnumGUID + */ +#define IEnumCATID IEnumGUID +cpp_quote("#define IEnumCATID IEnumGUID") +cpp_quote("#define IID_IEnumCATID IID_IEnumGUID") +cpp_quote("#define LPENUMCATID LPENUMGUID") +#define IEnumCLSID IEnumGUID +cpp_quote("#define IEnumCLSID IEnumGUID") +cpp_quote("#define IID_IEnumCLSID IID_IEnumGUID") +cpp_quote("#define LPENUMCLSID LPENUMGUID") + + +/***************************************************************************** + * IEnumGUID + */ +[ + object, + uuid(0002e000-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IEnumGUID : IUnknown +{ + typedef [unique] IEnumGUID *LPENUMGUID; + + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] GUID *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumGUID **ppenum); +} + + +/***************************************************************************** + * IEnumCATEGORYINFO + */ +[ + object, + uuid(0002e011-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IEnumCATEGORYINFO : IUnknown +{ + typedef [unique] IEnumCATEGORYINFO *LPENUMCATEGORYINFO; + + typedef struct tagCATEGORYINFO + { + CATID catid; /* category identifier for component */ + LCID lcid; /* locale identifier */ + OLECHAR szDescription[128]; /* description of the category */ + } CATEGORYINFO, *LPCATEGORYINFO; + + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] CATEGORYINFO* rgelt, + [out] ULONG* pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumCATEGORYINFO** ppenum); +} + + +/***************************************************************************** + * ICatInformation + */ +[ + object, + uuid(0002e013-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface ICatInformation : IUnknown +{ + typedef [unique] ICatInformation* LPCATINFORMATION; + + HRESULT EnumCategories( + [in] LCID lcid, + [out] IEnumCATEGORYINFO** ppenumCategoryInfo); + + HRESULT GetCategoryDesc( + [in] REFCATID rcatid, + [in] LCID lcid, + [out] LPWSTR* pszDesc); + + [local] + HRESULT EnumClassesOfCategories( + [in] ULONG cImplemented, + [in,size_is(cImplemented)] CATID rgcatidImpl[], + [in] ULONG cRequired, + [in,size_is(cRequired)] CATID rgcatidReq[], + [out] IEnumCLSID** ppenumClsid); + + [call_as(EnumClassesOfCategories)] + HRESULT RemoteEnumClassesOfCategories( + [in] ULONG cImplemented, + [in,unique,size_is(cImplemented)] CATID rgcatidImpl[], + [in] ULONG cRequired, + [in,unique,size_is(cRequired)] CATID rgcatidReq[], + [out] IEnumCLSID** ppenumClsid); + + [local] + HRESULT IsClassOfCategories( + [in] REFCLSID rclsid, + [in] ULONG cImplemented, + [in,size_is(cImplemented)] CATID rgcatidImpl[], + [in] ULONG cRequired, + [in,size_is(cRequired)] CATID rgcatidReq[]); + + [call_as(IsClassOfCategories)] + HRESULT RemoteIsClassOfCategories( + [in] REFCLSID rclsid, + [in] ULONG cImplemented, + [in,unique,size_is(cImplemented)] CATID rgcatidImpl[], + [in] ULONG cRequired, + [in,unique,size_is(cRequired)] CATID rgcatidReq[] ); + + HRESULT EnumImplCategoriesOfClass( + [in] REFCLSID rclsid, + [out] IEnumCATID** ppenumCatid); + + HRESULT EnumReqCategoriesOfClass( + [in] REFCLSID rclsid, + [out] IEnumCATID** ppenumCatid); +} + + +/***************************************************************************** + * ICatRegister + */ +[ + object, + uuid(0002e012-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface ICatRegister : IUnknown +{ + typedef [unique] ICatRegister* LPCATREGISTER; + + HRESULT RegisterCategories( + [in] ULONG cCategories, + [in, size_is(cCategories)] CATEGORYINFO rgCategoryInfo[]); + + HRESULT UnRegisterCategories( + [in] ULONG cCategories, + [in, size_is(cCategories)] CATID rgcatid[]); + + HRESULT RegisterClassImplCategories( + [in] REFCLSID rclsid, + [in] ULONG cCategories, + [in, size_is(cCategories)] CATID rgcatid[]); + + HRESULT UnRegisterClassImplCategories( + [in] REFCLSID rclsid, + [in] ULONG cCategories, + [in, size_is(cCategories)] CATID rgcatid[]); + + HRESULT RegisterClassReqCategories( + [in] REFCLSID rclsid, + [in] ULONG cCategories, + [in, size_is(cCategories)] CATID rgcatid[]); + + HRESULT UnRegisterClassReqCategories( + [in] REFCLSID rclsid, + [in] ULONG cCategories, + [in, size_is(cCategories)] CATID rgcatid[]); +} + + +/***************************************************************************** + * Category IDs + */ +cpp_quote("DEFINE_GUID( CATID_Insertable, 0x40fc6ed3, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") +cpp_quote("DEFINE_GUID( CATID_Control, 0x40fc6ed4, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") +cpp_quote("DEFINE_GUID( CATID_Programmable, 0x40fc6ed5, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") +cpp_quote("DEFINE_GUID( CATID_IsShortcut, 0x40fc6ed6, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") +cpp_quote("DEFINE_GUID( CATID_NeverShowExt, 0x40fc6ed7, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") +cpp_quote("DEFINE_GUID( CATID_DocObject, 0x40fc6ed8, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") +cpp_quote("DEFINE_GUID( CATID_Printable, 0x40fc6ed9, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") +cpp_quote("DEFINE_GUID( CATID_RequiresDataPathHost, 0x0de86a50, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") +cpp_quote("DEFINE_GUID( CATID_PersistsToMoniker, 0x0de86a51, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") +cpp_quote("DEFINE_GUID( CATID_PersistsToStorage, 0x0de86a52, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") +cpp_quote("DEFINE_GUID( CATID_PersistsToStreamInit, 0x0de86a53, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") +cpp_quote("DEFINE_GUID( CATID_PersistsToStream, 0x0de86a54, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") +cpp_quote("DEFINE_GUID( CATID_PersistsToMemory, 0x0de86a55, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") +cpp_quote("DEFINE_GUID( CATID_PersistsToFile, 0x0de86a56, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") +cpp_quote("DEFINE_GUID( CATID_PersistsToPropertyBag, 0x0de86a57, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") +cpp_quote("DEFINE_GUID( CATID_InternetAware, 0x0de86a58, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") +cpp_quote("DEFINE_GUID( CATID_DesignTimeUIActivatableControl, 0xf2bb56d1, 0xdb07, 0x11d1, 0xaa, 0x6b, 0x00, 0x60, 0x97, 0xdb, 0x95, 0x39);") +/* The Component Category Manager */ +cpp_quote("DEFINE_GUID(CLSID_StdComponentCategoriesMgr, 0x0002e005, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);") diff --git a/reactos/include/psdk/commctrl.h b/reactos/include/psdk/commctrl.h index bb495e74299..8f6c4585a8d 100644 --- a/reactos/include/psdk/commctrl.h +++ b/reactos/include/psdk/commctrl.h @@ -1,1038 +1,2935 @@ -#ifndef _COMMCTRL_H -#define _COMMCTRL_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif +/* + * Common controls definitions + * + * Copyright (C) the Wine project + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_COMMCTRL_H +#define __WINE_COMMCTRL_H #include + #ifdef __cplusplus extern "C" { #endif + +BOOL WINAPI ShowHideMenuCtl (HWND, UINT_PTR, LPINT); +VOID WINAPI GetEffectiveClientRect (HWND hwnd, LPRECT lpRect, LPINT lpInfo); +VOID WINAPI InitCommonControls (VOID); + +typedef struct tagINITCOMMONCONTROLSEX { + DWORD dwSize; + DWORD dwICC; +} INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX; + +BOOL WINAPI InitCommonControlsEx (const INITCOMMONCONTROLSEX*); + +LANGID WINAPI GetMUILanguage (VOID); +VOID WINAPI InitMUILanguage (LANGID uiLang); + + +#define COMCTL32_VERSION 5 /* dll version */ + #ifndef _WIN32_IE -/* define _WIN32_IE if you really want it */ -#if 0 -#define _WIN32_IE 0x0300 -#endif +#define _WIN32_IE 0x0400 #endif +#define ICC_LISTVIEW_CLASSES 0x00000001 /* listview, header */ +#define ICC_TREEVIEW_CLASSES 0x00000002 /* treeview, tooltips */ +#define ICC_BAR_CLASSES 0x00000004 /* toolbar, statusbar, trackbar, tooltips */ +#define ICC_TAB_CLASSES 0x00000008 /* tab, tooltips */ +#define ICC_UPDOWN_CLASS 0x00000010 /* updown */ +#define ICC_PROGRESS_CLASS 0x00000020 /* progress */ +#define ICC_HOTKEY_CLASS 0x00000040 /* hotkey */ +#define ICC_ANIMATE_CLASS 0x00000080 /* animate */ +#define ICC_WIN95_CLASSES 0x000000FF +#define ICC_DATE_CLASSES 0x00000100 /* month picker, date picker, time picker, updown */ +#define ICC_USEREX_CLASSES 0x00000200 /* comboex */ +#define ICC_COOL_CLASSES 0x00000400 /* rebar (coolbar) */ +#define ICC_INTERNET_CLASSES 0x00000800 /* IP address, ... */ +#define ICC_PAGESCROLLER_CLASS 0x00001000 /* page scroller */ +#define ICC_NATIVEFNTCTL_CLASS 0x00002000 /* native font control ???*/ +#define ICC_STANDARD_CLASSES 0x00004000 +#define ICC_LINK_CLASS 0x00008000 + + +/* common control styles */ +#define CCS_TOP 0x00000001L +#define CCS_NOMOVEY 0x00000002L +#define CCS_BOTTOM 0x00000003L +#define CCS_NORESIZE 0x00000004L +#define CCS_NOPARENTALIGN 0x00000008L +#define CCS_ADJUSTABLE 0x00000020L +#define CCS_NODIVIDER 0x00000040L +#define CCS_VERT 0x00000080L +#define CCS_LEFT (CCS_VERT|CCS_TOP) +#define CCS_RIGHT (CCS_VERT|CCS_BOTTOM) +#define CCS_NOMOVEX (CCS_VERT|CCS_NOMOVEY) + + +/* common control shared messages */ +#define CCM_FIRST 0x2000 + +#define CCM_SETBKCOLOR (CCM_FIRST+0x1) /* lParam = bkColor */ +#define CCM_SETCOLORSCHEME (CCM_FIRST+0x2) /* lParam = COLORSCHEME struct ptr */ +#define CCM_GETCOLORSCHEME (CCM_FIRST+0x3) /* lParam = COLORSCHEME struct ptr */ +#define CCM_GETDROPTARGET (CCM_FIRST+0x4) +#define CCM_SETUNICODEFORMAT (CCM_FIRST+0x5) +#define CCM_GETUNICODEFORMAT (CCM_FIRST+0x6) +#define CCM_SETVERSION (CCM_FIRST+0x7) +#define CCM_GETVERSION (CCM_FIRST+0x8) +#define CCM_SETNOTIFYWINDOW (CCM_FIRST+0x9) /* wParam = hwndParent */ +#define CCM_SETWINDOWTHEME (CCM_FIRST+0xb) +#define CCM_DPISCALE (CCM_FIRST+0xc) + + +/* common notification codes (WM_NOTIFY)*/ +#define NM_FIRST (0U- 0U) +#define NM_LAST (0U- 99U) +#define NM_OUTOFMEMORY (NM_FIRST-1) +#define NM_CLICK (NM_FIRST-2) +#define NM_DBLCLK (NM_FIRST-3) +#define NM_RETURN (NM_FIRST-4) +#define NM_RCLICK (NM_FIRST-5) +#define NM_RDBLCLK (NM_FIRST-6) +#define NM_SETFOCUS (NM_FIRST-7) +#define NM_KILLFOCUS (NM_FIRST-8) +#define NM_CUSTOMDRAW (NM_FIRST-12) +#define NM_HOVER (NM_FIRST-13) +#define NM_NCHITTEST (NM_FIRST-14) +#define NM_KEYDOWN (NM_FIRST-15) +#define NM_RELEASEDCAPTURE (NM_FIRST-16) +#define NM_SETCURSOR (NM_FIRST-17) +#define NM_CHAR (NM_FIRST-18) +#define NM_TOOLTIPSCREATED (NM_FIRST-19) +#define NM_LDOWN (NM_FIRST-20) +#define NM_RDOWN (NM_FIRST-21) +#define NM_THEMECHANGED (NM_FIRST-22) +#define NM_FONTCHANGED (NM_FIRST-23) +#define NM_CUSTOMTEXT (NM_FIRST-24) +#define NM_TVSTATEIMAGECHANGING (NM_FIRST-24) + +#define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \ + (fn)((hwnd), (int)(wParam), (NMHDR*)(lParam)) +#define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \ + (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR*)(pnmhdr)) + + +/* callback constants */ +#define LPSTR_TEXTCALLBACKA ((LPSTR)-1L) +#define LPSTR_TEXTCALLBACKW ((LPWSTR)-1L) +#ifdef UNICODE +#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW +#else +#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA +#endif + +#define I_IMAGECALLBACK (-1) +#define I_IMAGENONE (-2) +#define I_INDENTCALLBACK (-1) +#define I_CHILDRENCALLBACK (-1) +#define I_GROUPIDCALLBACK (-1) +#define I_GROUPIDNONE (-2) +#define I_COLUMNSCALLBACK ((UINT)-1) + +/* owner drawn types */ +#define ODT_HEADER 100 +#define ODT_TAB 101 +#define ODT_LISTVIEW 102 + +/* common notification structures */ +typedef struct tagNMTOOLTIPSCREATED +{ + NMHDR hdr; + HWND hwndToolTips; +} NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED; + +typedef struct tagNMMOUSE +{ + NMHDR hdr; + DWORD_PTR dwItemSpec; + DWORD_PTR dwItemData; + POINT pt; + DWORD dwHitInfo; /* info where on item or control the mouse is */ +} NMMOUSE, *LPNMMOUSE; + +typedef struct tagNMOBJECTNOTIFY +{ + NMHDR hdr; + int iItem; +#ifdef __IID_DEFINED__ + const IID *piid; +#else + const void *piid; +#endif + void *pObject; + HRESULT hResult; + DWORD dwFlags; +} NMOBJECTNOTIFY, *LPNMOBJECTNOTIFY; + +typedef struct tagNMKEY +{ + NMHDR hdr; + UINT nVKey; + UINT uFlags; +} NMKEY, *LPNMKEY; + +typedef struct tagNMCHAR +{ + NMHDR hdr; + UINT ch; + DWORD dwItemPrev; /* Item previously selected */ + DWORD dwItemNext; /* Item to be selected */ +} NMCHAR, *LPNMCHAR; + +#ifndef CCSIZEOF_STRUCT +#define CCSIZEOF_STRUCT(name, member) \ + (((INT)((LPBYTE)(&((name*)0)->member)-((LPBYTE)((name*)0))))+ \ + sizeof(((name*)0)->member)) +#endif + + +/* This is only for Winelib applications. DON't use it wine itself!!! */ #ifndef SNDMSG #ifdef __cplusplus #define SNDMSG ::SendMessage -#else +#else /* __cplusplus */ #define SNDMSG SendMessage -#endif -#endif /* ifndef SNDMSG */ +#endif /* __cplusplus */ +#endif /* SNDMSG */ + + +#ifdef __cplusplus +#define SNDMSGA ::SendMessageA +#define SNDMSGW ::SendMessageW +#else +#define SNDMSGA SendMessageA +#define SNDMSGW SendMessageW +#endif + +/* Custom Draw messages */ + +#define CDRF_DODEFAULT 0x0 +#define CDRF_NEWFONT 0x00000002 +#define CDRF_SKIPDEFAULT 0x00000004 +#define CDRF_NOTIFYPOSTPAINT 0x00000010 +#define CDRF_NOTIFYITEMDRAW 0x00000020 +#define CDRF_NOTIFYSUBITEMDRAW 0x00000020 +#define CDRF_NOTIFYPOSTERASE 0x00000040 +#define CDRF_NOTIFYITEMERASE 0x00000080 /* obsolete ??? */ + + +/* drawstage flags */ + +#define CDDS_PREPAINT 1 +#define CDDS_POSTPAINT 2 +#define CDDS_PREERASE 3 +#define CDDS_POSTERASE 4 + +#define CDDS_ITEM 0x00010000 +#define CDDS_ITEMPREPAINT (CDDS_ITEM | CDDS_PREPAINT) +#define CDDS_ITEMPOSTPAINT (CDDS_ITEM | CDDS_POSTPAINT) +#define CDDS_ITEMPREERASE (CDDS_ITEM | CDDS_PREERASE) +#define CDDS_ITEMPOSTERASE (CDDS_ITEM | CDDS_POSTERASE) +#define CDDS_SUBITEM 0x00020000 + +/* itemState flags */ + +#define CDIS_SELECTED 0x0001 +#define CDIS_GRAYED 0x0002 +#define CDIS_DISABLED 0x0004 +#define CDIS_CHECKED 0x0008 +#define CDIS_FOCUS 0x0010 +#define CDIS_DEFAULT 0x0020 +#define CDIS_HOT 0x0040 +#define CDIS_MARKED 0x0080 +#define CDIS_INDETERMINATE 0x0100 +#define CDIS_SHOWKEYBOARDCUES 0x0200 +#define CDIS_NEARHOT 0x0400 +#define CDIS_OTHERSIDEHOT 0x0800 +#define CDIS_DROPHILITED 0x1000 + + +typedef struct tagNMCUSTOMDRAWINFO +{ + NMHDR hdr; + DWORD dwDrawStage; + HDC hdc; + RECT rc; + DWORD_PTR dwItemSpec; + UINT uItemState; + LPARAM lItemlParam; +} NMCUSTOMDRAW, *LPNMCUSTOMDRAW; + +typedef struct tagNMTTCUSTOMDRAW +{ + NMCUSTOMDRAW nmcd; + UINT uDrawFlags; +} NMTTCUSTOMDRAW, *LPNMTTCUSTOMDRAW; + + + + +/* StatusWindow */ -#define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg") -#define HOTKEY_CLASSA "msctls_hotkey32" -#define HOTKEY_CLASSW L"msctls_hotkey32" -#define PROGRESS_CLASSA "msctls_progress32" -#define PROGRESS_CLASSW L"msctls_progress32" #define STATUSCLASSNAMEA "msctls_statusbar32" -#define STATUSCLASSNAMEW L"msctls_statusbar32" -#define TOOLBARCLASSNAMEA "ToolbarWindow32" -#define TOOLBARCLASSNAMEW L"ToolbarWindow32" -#define TOOLTIPS_CLASSA "tooltips_class32" -#define TOOLTIPS_CLASSW L"tooltips_class32" -#define TRACKBAR_CLASSA "msctls_trackbar32" -#define TRACKBAR_CLASSW L"msctls_trackbar32" -#define UPDOWN_CLASSA "msctls_updown32" -#define UPDOWN_CLASSW L"msctls_updown32" -#define ANIMATE_CLASSA "SysAnimate32" -#define ANIMATE_CLASSW L"SysAnimate32" -#define DATETIMEPICK_CLASSW L"SysDateTimePick32" -#define DATETIMEPICK_CLASSA "SysDateTimePick32" -#define MONTHCAL_CLASSW L"SysMonthCal32" -#define MONTHCAL_CLASSA "SysMonthCal32" -#define REBARCLASSNAMEW L"ReBarWindow32" -#define REBARCLASSNAMEA "ReBarWindow32" -#define WC_COMBOBOXEXW L"ComboBoxEx32" -#define WC_COMBOBOXEXA "ComboBoxEx32" -#define WC_IPADDRESSW L"SysIPAddress32" -#define WC_IPADDRESSA "SysIPAddress32" -#define WC_LISTVIEWA "SysListView32" -#define WC_LISTVIEWW L"SysListView32" -#define WC_TABCONTROLA "SysTabControl32" -#define WC_TABCONTROLW L"SysTabControl32" -#define WC_TREEVIEWA ("SysTreeView32") -#define WC_TREEVIEWW L"SysTreeView32" -#define WC_HEADERA "SysHeader32" -#define WC_HEADERW L"SysHeader32" -#define WC_PAGESCROLLERW L"SysPager" -#define WC_PAGESCROLLERA "SysPager" -#define WC_NATIVEFONTCTLW L"NativeFontCtl" -#define WC_NATIVEFONTCTLA "NativeFontCtl" -#define WC_BUTTONA "Button" -#define WC_BUTTONW L"Button" -#define WC_STATICA "Static" -#define WC_STATICW L"Static" -#define WC_EDITA "Edit" -#define WC_EDITW L"Edit" -#define WC_LISTBOXA "ListBox" -#define WC_LISTBOXW L"ListBox" -#define WC_COMBOBOXA "ComboBox" -#define WC_COMBOBOXW L"ComboBox" -#define WC_SCROLLBARA "ScrollBar" -#define WC_SCROLLBARW L"ScrollBar" -#if (_WIN32_WINNT >= 0x0501) -#define WC_LINK L"SysLink" -#endif - -#ifdef UNICODE -#define HOTKEY_CLASS HOTKEY_CLASSW -#define PROGRESS_CLASS PROGRESS_CLASSW -#define STATUSCLASSNAME STATUSCLASSNAMEW -#define TOOLBARCLASSNAME TOOLBARCLASSNAMEW -#define TOOLTIPS_CLASS TOOLTIPS_CLASSW -#define TRACKBAR_CLASS TRACKBAR_CLASSW -#define UPDOWN_CLASS UPDOWN_CLASSW -#define ANIMATE_CLASS ANIMATE_CLASSW -#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW -#define MONTHCAL_CLASS MONTHCAL_CLASSW -#define REBARCLASSNAME REBARCLASSNAMEW -#define WC_COMBOBOXEX WC_COMBOBOXEXW -#define WC_HEADER WC_HEADERW -#define WC_IPADDRESS WC_IPADDRESSW -#define WC_LISTVIEW WC_LISTVIEWW -#define WC_TABCONTROL WC_TABCONTROLW -#define WC_TREEVIEW WC_TREEVIEWW -#define WC_PAGESCROLLER WC_PAGESCROLLERW -#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLW -#define WC_BUTTON WC_BUTTONW -#define WC_STATIC WC_STATICW -#define WC_EDIT WC_EDITW -#define WC_LISTBOX WC_LISTBOXW -#define WC_COMBOBOX WC_COMBOBOXW -#define WC_SCROLLBAR WC_SCROLLBARW +#if defined(__GNUC__) +# define STATUSCLASSNAMEW (const WCHAR []){ 'm','s','c','t','l','s','_', \ + 's','t','a','t','u','s','b','a','r','3','2',0 } +#elif defined(_MSC_VER) +# define STATUSCLASSNAMEW L"msctls_statusbar32" #else -#define ANIMATE_CLASS ANIMATE_CLASSA -#define HOTKEY_CLASS HOTKEY_CLASSA -#define PROGRESS_CLASS PROGRESS_CLASSA -#define STATUSCLASSNAME STATUSCLASSNAMEA -#define TOOLBARCLASSNAME TOOLBARCLASSNAMEA -#define TOOLTIPS_CLASS TOOLTIPS_CLASSA -#define TRACKBAR_CLASS TRACKBAR_CLASSA -#define UPDOWN_CLASS UPDOWN_CLASSA -#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA -#define MONTHCAL_CLASS MONTHCAL_CLASSA -#define REBARCLASSNAME REBARCLASSNAMEA -#define WC_COMBOBOXEX WC_COMBOBOXEXA -#define WC_HEADER WC_HEADERA -#define WC_IPADDRESS WC_IPADDRESSA -#define WC_LISTVIEW WC_LISTVIEWA -#define WC_TABCONTROL WC_TABCONTROLA -#define WC_TREEVIEW WC_TREEVIEWA -#define WC_PAGESCROLLER WC_PAGESCROLLERA -#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLA -#define WC_BUTTON WC_BUTTONA -#define WC_STATIC WC_STATICA -#define WC_EDIT WC_EDITA -#define WC_LISTBOX WC_LISTBOXA -#define WC_COMBOBOX WC_COMBOBOXA -#define WC_SCROLLBAR WC_SCROLLBARA +static const WCHAR STATUSCLASSNAMEW[] = { 'm','s','c','t','l','s','_', + 's','t','a','t','u','s','b','a','r','3','2',0 }; #endif +#define STATUSCLASSNAME WINELIB_NAME_AW(STATUSCLASSNAME) -#if (_WIN32_IE >= 0x0500) -#if (_WIN32_WINNT >= 0x0501) -#define COMCTL32_VERSION 6 -#else -#define COMCTL32_VERSION 5 -#endif -#endif +#define SBT_NOBORDERS 0x0100 +#define SBT_POPOUT 0x0200 +#define SBT_RTLREADING 0x0400 /* not supported */ +#define SBT_TOOLTIPS 0x0800 +#define SBT_OWNERDRAW 0x1000 -#define LVM_FIRST 0x1000 -#define TV_FIRST 0x1100 -#define HDM_FIRST 0x1200 -#define ACM_OPENA (WM_USER+100) -#define ACM_PLAY (WM_USER+101) -#define ACM_STOP (WM_USER+102) -#define ACM_OPENW (WM_USER+103) -#define ACN_START 1 -#define ACN_STOP 2 -#define CBEIF_TEXT 0x00000001 -#define CBEIF_IMAGE 0x00000002 -#define CBEIF_SELECTEDIMAGE 0x00000004 -#define CBEIF_OVERLAY 0x00000008 -#define CBEIF_INDENT 0x00000010 -#define CBEIF_LPARAM 0x00000020 -#define CBEIF_DI_SETITEM 0x10000000 -#define CBEN_INSERTITEM (CBEN_FIRST - 1) -#define CBEN_DELETEITEM (CBEN_FIRST - 2) -#define CBEN_BEGINEDIT (CBEN_FIRST - 4) -#define CBEN_ENDEDITA (CBEN_FIRST - 5) -#define CBEN_ENDEDITW (CBEN_FIRST - 6) -#define CBENF_KILLFOCUS 1 -#define CBENF_RETURN 2 -#define CBENF_ESCAPE 3 -#define CBENF_DROPDOWN 4 -#define CBEMAXSTRLEN 260 -#define DL_BEGINDRAG 1157 -#define DL_CANCELDRAG 1160 -#define DL_DRAGGING 1158 -#define DL_DROPPED 1159 -#define DL_CURSORSET 0 -#define DL_STOPCURSOR 1 -#define DL_COPYCURSOR 2 -#define DL_MOVECURSOR 3 -#define CCS_TOP 1 -#define CCS_NOMOVEY 2 -#define CCS_BOTTOM 3 -#define CCS_NORESIZE 4 -#define CCS_NOPARENTALIGN 8 -#define CCS_ADJUSTABLE 32 -#define CCS_NODIVIDER 64 -#if (_WIN32_IE >= 0x0300) -#define CCS_VERT 128 -#define CCS_LEFT 129 -#define CCS_NOMOVEX 130 -#define CCS_RIGHT 131 -#endif -#define ACS_CENTER 0x0001 -#define ACS_TRANSPARENT 0x0002 -#define ACS_AUTOPLAY 0x0004 -#define ACS_TIMER 0x0008 -#define PGS_VERT 0x00000000 -#define PGS_HORZ 0x00000001 -#define PGS_AUTOSCROLL 0x00000002 -#define PGS_DRAGNDROP 0x00000004 -#define CMB_MASKED 2 -#define MINSYSCOMMAND SC_SIZE -#define SBT_OWNERDRAW 0x1000 -#define SBT_NOBORDERS 256 -#define SBT_POPOUT 512 -#define SBT_RTLREADING 1024 -#define SB_SETTEXTA (WM_USER+1) -#define SB_SETTEXTW (WM_USER+11) -#define SB_GETTEXTA (WM_USER+2) -#define SB_GETTEXTW (WM_USER+13) +#define SBARS_SIZEGRIP 0x0100 + +#define SB_SIMPLEID 0x00ff + +#define SB_SETTEXTA (WM_USER+1) +#define SB_SETTEXTW (WM_USER+11) +#define SB_SETTEXT WINELIB_NAME_AW(SB_SETTEXT) +#define SB_GETTEXTA (WM_USER+2) +#define SB_GETTEXTW (WM_USER+13) +#define SB_GETTEXT WINELIB_NAME_AW(SB_GETTEXT) #define SB_GETTEXTLENGTHA (WM_USER+3) #define SB_GETTEXTLENGTHW (WM_USER+12) -#define SB_SETPARTS (WM_USER+4) -#define SB_GETPARTS (WM_USER+6) -#define SB_GETBORDERS (WM_USER+7) -#define SB_SETMINHEIGHT (WM_USER+8) -#define SB_SIMPLE (WM_USER+9) -#define SB_GETRECT (WM_USER+10) -#define MSGF_COMMCTRL_BEGINDRAG 0x4200 -#define MSGF_COMMCTRL_SIZEHEADER 0x4201 -#define MSGF_COMMCTRL_DRAGSELECT 0x4202 -#define MSGF_COMMCTRL_TOOLBARCUST 0x4203 -#define ILC_COLOR 0 -#define ILC_COLOR4 4 -#define ILC_COLOR8 8 -#define ILC_COLOR16 16 -#define ILC_COLOR24 24 -#define ILC_COLOR32 32 -#define ILC_COLORDDB 254 -#define ILC_MASK 1 -#define ILC_PALETTE 2048 -#define ILCF_MOVE 0 -#define ILCF_SWAP 1 -#define ILS_NORMAL 0 -#define ILS_GLOW 1 -#define ILS_SHADOW 2 -#define ILS_SATURATE 4 -#define ILS_ALPHA 8 -#define ILD_BLEND25 2 -#define ILD_BLEND50 4 -#define ILD_SELECTED 4 -#define ILD_BLEND 4 -#define ILD_FOCUS 2 -#define ILD_MASK 16 -#define ILD_NORMAL 0 -#define ILD_TRANSPARENT 1 -#define ILD_IMAGE 0x0020 -#define ILD_ROP 0x0040 -#define ILD_OVERLAYMASK 0x0F00 -#define ILD_PRESERVEALPHA 0x1000 -#define ILD_SCALE 0x2000 -#define ILD_DPISCALE 0x4000 -#if (_WIN32_WINNT >= 0x0501) -#define LWS_TRANSPARENT 1 -#define LWS_IGNORERETURN 2 -#define LIF_ITEMINDEX 1 -#define LIF_STATE 2 -#define LIF_ITEMID 4 -#define LIF_URL 8 -#define LIS_FOCUSED 1 -#define LIS_ENABLED 2 -#define LIS_VISITED 4 -#define LM_HITTEST (WM_USER+768) -#define LM_GETIDEALHEIGHT (WM_USER+769) -#define LM_SETITEM (WM_USER+770) -#define LM_GETITEM (WM_USER+771) -#define INVALID_LINK_INDEX (-1) -#define MAX_LINKID_TEXT 48 -#define L_MAX_URL_LENGTH 2083 -#endif -#define HDS_HORZ 0 -#define HDS_BUTTONS 2 -#define HDS_HIDDEN 8 -#if (_WIN32_IE > 0x0300) -#define HDS_HOTTRACK 4 -#define HDS_DRAGDROP 0x0040 -#define HDS_FULLDRAG 0x0080 -#endif /* _WIN32_IE > 0x0300 */ -#if (_WIN32_IE >= 0x0500) -#define HDS_FILTERBAR 0x0100 -#endif /* _WIN32_IE >= 0x0500 */ -#define NM_FIRST 0 -#define NM_LAST ((UINT)-99) -#define LVN_FIRST ((UINT)-100) -#define LVN_LAST ((UINT)-199) -#define HDN_FIRST ((UINT)-300) -#define HDN_LAST ((UINT)-399) -#define TVN_FIRST ((UINT)-400) -#define TVN_LAST ((UINT)-499) -#define TTN_FIRST ((UINT)-520) -#define TTN_LAST ((UINT)-549) -#define TCN_FIRST ((UINT)-550) -#define TCN_LAST ((UINT)-580) -#ifndef CDN_FIRST -#define CDN_FIRST ((UINT)-601) /* also in commdlg.h */ -#define CDN_LAST ((UINT)-699) -#endif -#define TBN_FIRST ((UINT)-700) -#define TBN_LAST ((UINT)-720) -#define UDN_FIRST ((UINT)-721) -#define UDN_LAST ((UINT)-740) -#if (_WIN32_IE >= 0x0300) -#define RBN_FIRST ((UINT)-831) -#define RBN_LAST ((UINT)-859) -#define MCN_FIRST ((UINT)-750) -#define MCN_LAST ((UINT)-759) -#define DTN_FIRST ((UINT)-760) -#define DTN_LAST ((UINT)-799) -#define CBEN_FIRST ((UINT)-800) -#define CBEN_LAST ((UINT)-830) -#endif /* _WIN32_IE */ -#if (_WIN32_IE >= 0x0400) -#define IPN_FIRST ((UINT)-860) -#define IPN_LAST ((UINT)-879) -#define IPN_FIELDCHANGED (IPN_FIRST-0) -#define SBN_FIRST ((UINT)-880U) -#define SBN_LAST ((UINT)-899U) -#define PGN_FIRST ((UINT)-900U) -#define PGN_LAST ((UINT)-950U) -#define PGN_SCROLL (PGN_FIRST-1) -#define PGN_CALCSIZE (PGN_FIRST-2) -#endif /* _WIN32_IE >= 0x0400 */ -#define HDI_WIDTH 1 -#define HDI_HEIGHT 1 -#define HDI_TEXT 2 -#define HDI_FORMAT 4 -#define HDI_LPARAM 8 -#define HDI_BITMAP 16 -#if (_WIN32_IE >= 0x0300) -#define HDI_IMAGE 32 -#define HDI_DI_SETITEM 64 -#define HDI_ORDER 128 -#endif -#define CBES_EX_NOEDITIMAGE 0x00000001 -#define CBES_EX_NOEDITIMAGEINDENT 0x00000002 -#define CBES_EX_PATHWORDBREAKPROC 0x00000004 -#if (_WIN32_IE >= 0x0400) -#define CBES_EX_NOSIZELIMIT 0x00000008 -#define CBES_EX_CASESENSITIVE 0x00000010 -#define CBEN_GETDISPINFOA (CBEN_FIRST - 0) -#define CBEN_GETDISPINFOW (CBEN_FIRST - 7) -#define CBEN_DRAGBEGINA (CBEN_FIRST - 8) -#define CBEN_DRAGBEGINW (CBEN_FIRST - 9) -#endif /* _WIN32_IE >= 0x0400 */ -#if (_WIN32_IE >= 0x0500) -#define HDI_FILTER 256 -#endif -#define HDF_LEFT 0 -#define HDF_RIGHT 1 -#define HDF_CENTER 2 -#define HDF_JUSTIFYMASK 3 -#define HDF_RTLREADING 4 -#define HDF_OWNERDRAW 0x8000 -#define HDF_STRING 0x4000 -#define HDF_BITMAP 0x2000 -#if (_WIN32_IE >= 0x0300) -#define HDF_BITMAP_ON_RIGHT 0x1000 -#define HDF_IMAGE 0x0800 -#endif -#define HDM_GETITEMCOUNT HDM_FIRST -#define HDM_INSERTITEMA (HDM_FIRST+1) -#define HDM_INSERTITEMW (HDM_FIRST+10) -#define HDM_DELETEITEM (HDM_FIRST+2) -#define HDM_GETITEMA (HDM_FIRST+3) -#define HDM_GETITEMW (HDM_FIRST+11) -#define HDM_SETITEMA (HDM_FIRST+4) -#define HDM_SETITEMW (HDM_FIRST+12) -#define HDM_LAYOUT (HDM_FIRST+5) -#if (_WIN32_IE >= 0x0300) -#define HDM_GETITEMRECT (HDM_FIRST+7) -#define HDM_SETIMAGELIST (HDM_FIRST+8) -#define HDM_GETIMAGELIST (HDM_FIRST+9) -#define HDM_ORDERTOINDEX (HDM_FIRST+15) -#define HDM_CREATEDRAGIMAGE (HDM_FIRST+16) -#define HDM_GETORDERARRAY (HDM_FIRST+17) -#define HDM_SETORDERARRAY (HDM_FIRST+18) -#define HDM_SETHOTDIVIDER (HDM_FIRST+19) -#endif -#if (_WIN32_IE >= 0x0400) -#define HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT -#define HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT -#endif -#define HHT_NOWHERE 1 -#define HHT_ONHEADER 2 -#define HHT_ONDIVIDER 4 -#define HHT_ONDIVOPEN 8 -#define HHT_ABOVE 256 -#define HHT_BELOW 512 -#define HHT_TORIGHT 1024 -#define HHT_TOLEFT 2048 -#define HDM_HITTEST (HDM_FIRST+6) -#define HDN_ITEMCHANGINGA (HDN_FIRST-0) -#define HDN_ITEMCHANGINGW (HDN_FIRST-20) -#define HDN_ITEMCHANGEDA (HDN_FIRST-1) -#define HDN_ITEMCHANGEDW (HDN_FIRST-21) -#define HDN_ITEMCLICKA (HDN_FIRST-2) -#define HDN_ITEMCLICKW (HDN_FIRST-22) -#define HDN_ITEMDBLCLICKA (HDN_FIRST-3) -#define HDN_ITEMDBLCLICKW (HDN_FIRST-23) -#define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5) -#define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25) -#define HDN_BEGINTRACKA (HDN_FIRST-6) -#define HDN_BEGINTRACKW (HDN_FIRST-26) -#define HDN_ENDTRACKA (HDN_FIRST-7) -#define HDN_ENDTRACKW (HDN_FIRST-27) -#define HDN_TRACKA (HDN_FIRST-8) -#define HDN_TRACKW (HDN_FIRST-28) -#if _WIN32_IE >= 0x0300 -#define HDN_ENDDRAG (HDN_FIRST-11) -#define HDN_BEGINDRAG (HDN_FIRST-10) -#define HDN_GETDISPINFOA (HDN_FIRST-9) -#define HDN_GETDISPINFOW (HDN_FIRST-29) -#endif -#if (_WIN32_IE >= 0x0400) -#define HICF_OTHER 0x00 -#define HICF_MOUSE 0x01 -#define HICF_ARROWKEYS 0x02 -#define HICF_ACCELERATOR 0x04 -#define HICF_DUPACCEL 0x08 -#define HICF_ENTERING 0x10 -#define HICF_LEAVING 0x20 -#define HICF_RESELECT 0x40 -#define HICF_LMOUSE 0x80 -#define HICF_TOGGLEDROPDOWN 0x100 -#endif /* _WIN32_IE >= 0x0400 */ -#define IPM_CLEARADDRESS (WM_USER+100) -#define IPM_SETADDRESS (WM_USER+101) -#define IPM_GETADDRESS (WM_USER+102) -#define IPM_SETRANGE (WM_USER+103) -#define IPM_SETFOCUS (WM_USER+104) -#define IPM_ISBLANK (WM_USER+105) -#if (_WIN32_IE >= 0x0500) -#define I_INDENTCALLBACK (-1) -#define I_IMAGENONE (-2) -#endif -#define CMB_MASKED 2 -#define TBSTATE_CHECKED 1 -#define TBSTATE_PRESSED 2 -#define TBSTATE_ENABLED 4 -#define TBSTATE_HIDDEN 8 -#define TBSTATE_INDETERMINATE 16 -#define TBSTATE_WRAP 32 -#if (_WIN32_IE >= 0x0400) -#define TBSTATE_MARKED 0x0080 -#endif -#define TBSTYLE_BUTTON 0 -#define TBSTYLE_SEP 1 -#define TBSTYLE_CHECK 2 -#define TBSTYLE_GROUP 4 -#define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP|TBSTYLE_CHECK) -#if (_WIN32_IE >= 0x0300) -#define TBSTYLE_DROPDOWN 8 -#endif -#if (_WIN32_IE >= 0x0400) -#define TBSTYLE_AUTOSIZE 16 -#define TBSTYLE_NOPREFIX 32 -#endif -#define TBSTYLE_TOOLTIPS 256 -#define TBSTYLE_WRAPABLE 512 -#define TBSTYLE_ALTDRAG 1024 -#if (_WIN32_IE >= 0x0300) -#define TBSTYLE_FLAT 2048 -#define TBSTYLE_LIST 4096 -#define TBSTYLE_CUSTOMERASE 8192 -#endif -#if (_WIN32_IE >= 0x0400) -#define TBSTYLE_REGISTERDROP 0x4000 -#define TBSTYLE_TRANSPARENT 0x8000 -#define TBSTYLE_EX_DRAWDDARROWS 0x00000001 -#endif /* _WIN32_IE >= 0x0400 */ -#if (_WIN32_IE >= 0x0501) -#define TBSTYLE_EX_MIXEDBUTTONS 8 -#define TBSTYLE_EX_HIDECLIPPEDBUTTONS 16 -#endif /* _WIN32_IE >= 0x0501 */ -#if (_WIN32_WINNT >= 0x0501) -#define TBSTYLE_EX_DOUBLEBUFFER 0x80 -#endif /* _WIN32_WINNT >= 0x0501 */ -#if (_WIN32_IE >= 0x0500) -#define BTNS_BUTTON TBSTYLE_BUTTON -#define BTNS_SEP TBSTYLE_SEP -#define BTNS_CHECK TBSTYLE_CHECK -#define BTNS_GROUP TBSTYLE_GROUP -#define BTNS_CHECKGROUP TBSTYLE_CHECKGROUP -#define BTNS_DROPDOWN TBSTYLE_DROPDOWN -#define BTNS_AUTOSIZE TBSTYLE_AUTOSIZE -#define BTNS_NOPREFIX TBSTYLE_NOPREFIX -#define BTNS_WHOLEDROPDOWN 0x0080 -#endif /* _WIN32_IE >= 0x0500 */ -#if _WIN32_IE >= 0x0501 -#define BTNS_SHOWTEXT 0x0040 -#endif -#if (_WIN32_IE >= 0x0400) -#define TBCDRF_NOEDGES 0x10000 -#define TBCDRF_HILITEHOTTRACK 0x20000 -#define TBCDRF_NOOFFSET 0x40000 -#define TBCDRF_NOMARK 0x80000 -#define TBCDRF_NOETCHEDEFFECT 0x100000 -#endif /* _WIN32_IE >= 0x0400 */ -#define HINST_COMMCTRL ((HINSTANCE)-1) -#define IDB_STD_SMALL_COLOR 0 -#define IDB_STD_LARGE_COLOR 1 -#define IDB_VIEW_SMALL_COLOR 4 -#define IDB_VIEW_LARGE_COLOR 5 -#if (_WIN32_IE >= 0x0300) -#define IDB_HIST_SMALL_COLOR 8 -#define IDB_HIST_LARGE_COLOR 9 -#endif -#define STD_CUT 0 -#define STD_COPY 1 -#define STD_PASTE 2 -#define STD_UNDO 3 -#define STD_REDOW 4 -#define STD_DELETE 5 -#define STD_FILENEW 6 -#define STD_FILEOPEN 7 -#define STD_FILESAVE 8 -#define STD_PRINTPRE 9 -#define STD_PROPERTIES 10 -#define STD_HELP 11 -#define STD_FIND 12 -#define STD_REPLACE 13 -#define STD_PRINT 14 -#define VIEW_LARGEICONS 0 -#define VIEW_SMALLICONS 1 -#define VIEW_LIST 2 -#define VIEW_DETAILS 3 -#define VIEW_SORTNAME 4 -#define VIEW_SORTSIZE 5 -#define VIEW_SORTDATE 6 -#define VIEW_SORTTYPE 7 -#define VIEW_PARENTFOLDER 8 -#define VIEW_NETCONNECT 9 -#define VIEW_NETDISCONNECT 10 -#define VIEW_NEWFOLDER 11 -#define TB_ENABLEBUTTON (WM_USER+1) -#define TB_CHECKBUTTON (WM_USER+2) -#define TB_PRESSBUTTON (WM_USER+3) -#define TB_HIDEBUTTON (WM_USER+4) -#define TB_INDETERMINATE (WM_USER+5) -#if (_WIN32_IE >= 0x0400) -#define TB_MARKBUTTON (WM_USER+6) -#endif -#define TB_ISBUTTONENABLED (WM_USER+9) -#define TB_ISBUTTONCHECKED (WM_USER+10) -#define TB_ISBUTTONPRESSED (WM_USER+11) -#define TB_ISBUTTONHIDDEN (WM_USER+12) -#define TB_ISBUTTONINDETERMINATE (WM_USER+13) -#if (_WIN32_IE >= 0x0400) -#define TB_ISBUTTONHIGHLIGHTED (WM_USER+14) -#endif -#define TB_SETSTATE (WM_USER+17) -#define TB_GETSTATE (WM_USER+18) -#define TB_ADDBITMAP (WM_USER+19) -#if (_WIN32_IE >= 0x0400) -#define TB_ADDBUTTONSA (WM_USER+20) -#define TB_INSERTBUTTONA (WM_USER+21) +#define SB_GETTEXTLENGTH WINELIB_NAME_AW(SB_GETTEXTLENGTH) +#define SB_SETPARTS (WM_USER+4) +#define SB_SETBORDERS (WM_USER+5) +#define SB_GETPARTS (WM_USER+6) +#define SB_GETBORDERS (WM_USER+7) +#define SB_SETMINHEIGHT (WM_USER+8) +#define SB_SIMPLE (WM_USER+9) +#define SB_GETRECT (WM_USER+10) +#define SB_ISSIMPLE (WM_USER+14) +#define SB_SETICON (WM_USER+15) +#define SB_SETTIPTEXTA (WM_USER+16) +#define SB_SETTIPTEXTW (WM_USER+17) +#define SB_SETTIPTEXT WINELIB_NAME_AW(SB_SETTIPTEXT) +#define SB_GETTIPTEXTA (WM_USER+18) +#define SB_GETTIPTEXTW (WM_USER+19) +#define SB_GETTIPTEXT WINELIB_NAME_AW(SB_GETTIPTEXT) +#define SB_GETICON (WM_USER+20) +#define SB_SETBKCOLOR CCM_SETBKCOLOR /* lParam = bkColor */ +#define SB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define SB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT + +#define SBN_FIRST (0U-880U) +#define SBN_LAST (0U-899U) +#define SBN_SIMPLEMODECHANGE (SBN_FIRST-0) + +HWND WINAPI CreateStatusWindowA (LONG, LPCSTR, HWND, UINT); +HWND WINAPI CreateStatusWindowW (LONG, LPCWSTR, HWND, UINT); +#define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow) +void WINAPI DrawStatusTextA (HDC hdc, LPRECT lprc, LPCSTR text, UINT style); +void WINAPI DrawStatusTextW (HDC hdc, LPRECT lprc, LPCWSTR text, UINT style); +#define DrawStatusText WINELIB_NAME_AW(DrawStatusText) +VOID WINAPI MenuHelp (UINT, WPARAM, LPARAM, HMENU, + HINSTANCE, HWND, UINT*); + +typedef struct tagCOLORSCHEME +{ + DWORD dwSize; + COLORREF clrBtnHighlight; /* highlight color */ + COLORREF clrBtnShadow; /* shadow color */ +} COLORSCHEME, *LPCOLORSCHEME; + +/************************************************************************** + * Drag List control + */ + +typedef struct tagDRAGLISTINFO +{ + UINT uNotification; + HWND hWnd; + POINT ptCursor; +} DRAGLISTINFO, *LPDRAGLISTINFO; + +#define DL_BEGINDRAG (WM_USER+133) +#define DL_DRAGGING (WM_USER+134) +#define DL_DROPPED (WM_USER+135) +#define DL_CANCELDRAG (WM_USER+136) + +#define DL_CURSORSET 0 +#define DL_STOPCURSOR 1 +#define DL_COPYCURSOR 2 +#define DL_MOVECURSOR 3 + +#define DRAGLISTMSGSTRINGA "commctrl_DragListMsg" +#if defined(__GNUC__) +# define DRAGLISTMSGSTRINGW (const WCHAR []){ 'c','o','m','m','c','t','r','l', \ + '_','D','r','a','g','L','i','s','t','M','s','g',0 } +#elif defined(_MSC_VER) +# define DRAGLISTMSGSTRINGW L"commctrl_DragListMsg" #else -#define TB_ADDBUTTONS (WM_USER+20) -#define TB_INSERTBUTTON (WM_USER+21) +static const WCHAR DRAGLISTMSGSTRINGW[] = { 'c','o','m','m','c','t','r','l', + '_','D','r','a','g','L','i','s','t','M','s','g',0 }; #endif -#define TB_DELETEBUTTON (WM_USER+22) -#define TB_GETBUTTON (WM_USER+23) -#define TB_BUTTONCOUNT (WM_USER+24) -#define TB_COMMANDTOINDEX (WM_USER+25) -#define TB_SAVERESTOREA (WM_USER+26) -#define TB_SAVERESTOREW (WM_USER+76) -#define TB_CUSTOMIZE (WM_USER+27) -#define TB_ADDSTRINGA (WM_USER+28) -#define TB_ADDSTRINGW (WM_USER+77) -#define TB_GETITEMRECT (WM_USER+29) -#define TB_BUTTONSTRUCTSIZE (WM_USER+30) -#define TB_SETBUTTONSIZE (WM_USER+31) -#define TB_SETBITMAPSIZE (WM_USER+32) -#define TB_AUTOSIZE (WM_USER+33) -#define TB_GETTOOLTIPS (WM_USER+35) -#define TB_SETTOOLTIPS (WM_USER+36) -#define TB_SETPARENT (WM_USER+37) -#define TB_SETROWS (WM_USER+39) -#define TB_GETROWS (WM_USER+40) -#define TB_GETBITMAPFLAGS (WM_USER+41) -#define TB_SETCMDID (WM_USER+42) -#define TB_CHANGEBITMAP (WM_USER+43) -#define TB_GETBITMAP (WM_USER+44) -#define TB_GETBUTTONTEXTA (WM_USER+45) -#define TB_GETBUTTONTEXTW (WM_USER+75) -#define TB_REPLACEBITMAP (WM_USER+46) -#define TB_GETBUTTONSIZE (WM_USER+58) -#define TB_SETBUTTONWIDTH (WM_USER+59) -#if (_WIN32_IE >= 0x0300) -#define TB_SETINDENT (WM_USER+47) -#define TB_SETIMAGELIST (WM_USER+48) -#define TB_GETIMAGELIST (WM_USER+49) -#define TB_LOADIMAGES (WM_USER+50) -#define TB_GETRECT (WM_USER+51) -#define TB_SETHOTIMAGELIST (WM_USER+52) -#define TB_GETHOTIMAGELIST (WM_USER+53) -#define TB_SETDISABLEDIMAGELIST (WM_USER+54) -#define TB_GETDISABLEDIMAGELIST (WM_USER+55) -#define TB_SETSTYLE (WM_USER+56) -#define TB_GETSTYLE (WM_USER+57) -#define TB_GETBUTTONSIZE (WM_USER+58) -#define TB_SETBUTTONWIDTH (WM_USER+59) -#define TB_SETMAXTEXTROWS (WM_USER+60) -#define TB_GETTEXTROWS (WM_USER+61) +#define DRAGLISTMSGSTRING WINELIB_NAME_AW(DRAGLISTMSGSTRING) + +BOOL WINAPI MakeDragList (HWND); +VOID WINAPI DrawInsert (HWND, HWND, INT); +INT WINAPI LBItemFromPt (HWND, POINT, BOOL); + + +/* UpDown */ + +#define UPDOWN_CLASSA "msctls_updown32" +#if defined(__GNUC__) +# define UPDOWN_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \ + 'u','p','d','o','w','n','3','2',0 } +#elif defined(_MSC_VER) +# define UPDOWN_CLASSW L"msctls_updown32" +#else +static const WCHAR UPDOWN_CLASSW[] = { 'm','s','c','t','l','s','_', + 'u','p','d','o','w','n','3','2',0 }; #endif -#if _WIN32_IE >= 0x400 -#define TB_GETOBJECT (WM_USER+62) -#define TB_GETBUTTONINFOW (WM_USER+63) -#define TB_SETBUTTONINFOW (WM_USER+64) -#define TB_GETBUTTONINFOA (WM_USER+65) -#define TB_SETBUTTONINFOA (WM_USER+66) -#define TB_INSERTBUTTONW (WM_USER+67) -#define TB_ADDBUTTONSW (WM_USER+68) -#define TB_HITTEST (WM_USER+69) -#define TB_SETEXTENDEDSTYLE (WM_USER+84) -#define TB_GETEXTENDEDSTYLE (WM_USER+85) -#define TB_SETDRAWTEXTFLAGS (WM_USER+70) -#define TB_GETHOTITEM (WM_USER+71) -#define TB_SETHOTITEM (WM_USER+72) -#define TB_SETANCHORHIGHLIGHT (WM_USER+73) -#define TB_GETANCHORHIGHLIGHT (WM_USER+74) -#define TB_MAPACCELERATORA (WM_USER+78) -#define TB_GETINSERTMARK (WM_USER+79) -#define TB_SETINSERTMARK (WM_USER+80) -#define TB_INSERTMARKHITTEST (WM_USER+81) -#define TB_MOVEBUTTON (WM_USER+82) -#define TB_GETMAXSIZE (WM_USER+83) -#define TB_SETEXTENDEDSTYLE (WM_USER+84) -#define TB_GETEXTENDEDSTYLE (WM_USER+85) -#define TB_GETPADDING (WM_USER+86) -#define TB_SETPADDING (WM_USER+87) -#define TB_SETINSERTMARKCOLOR (WM_USER+88) -#define TB_GETINSERTMARKCOLOR (WM_USER+89) -#define TB_MAPACCELERATORW (WM_USER+90) -#define TB_GETSTRINGW (WM_USER+91) -#define TB_GETSTRINGA (WM_USER+92) + +typedef struct _UDACCEL +{ + UINT nSec; + UINT nInc; +} UDACCEL, *LPUDACCEL; + +#define UD_MAXVAL 0x7fff +#define UD_MINVAL 0x8001 + +#define UDS_WRAP 0x0001 +#define UDS_SETBUDDYINT 0x0002 +#define UDS_ALIGNRIGHT 0x0004 +#define UDS_ALIGNLEFT 0x0008 +#define UDS_AUTOBUDDY 0x0010 +#define UDS_ARROWKEYS 0x0020 +#define UDS_HORZ 0x0040 +#define UDS_NOTHOUSANDS 0x0080 +#define UDS_HOTTRACK 0x0100 + +#define UDN_FIRST (0U-721) +#define UDN_LAST (0U-740) +#define UDN_DELTAPOS (UDN_FIRST-1) + +#define UDM_SETRANGE (WM_USER+101) +#define UDM_GETRANGE (WM_USER+102) +#define UDM_SETPOS (WM_USER+103) +#define UDM_GETPOS (WM_USER+104) +#define UDM_SETBUDDY (WM_USER+105) +#define UDM_GETBUDDY (WM_USER+106) +#define UDM_SETACCEL (WM_USER+107) +#define UDM_GETACCEL (WM_USER+108) +#define UDM_SETBASE (WM_USER+109) +#define UDM_GETBASE (WM_USER+110) +#define UDM_SETRANGE32 (WM_USER+111) +#define UDM_GETRANGE32 (WM_USER+112) +#define UDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define UDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define UDM_SETPOS32 (WM_USER+113) +#define UDM_GETPOS32 (WM_USER+114) + + +#define NMUPDOWN NM_UPDOWN +#define LPNMUPDOWN LPNM_UPDOWN + +typedef struct tagNM_UPDOWN +{ + NMHDR hdr; + int iPos; + int iDelta; +} NM_UPDOWN, *LPNM_UPDOWN; + +HWND WINAPI CreateUpDownControl (DWORD, INT, INT, INT, INT, + HWND, INT, HINSTANCE, HWND, + INT, INT, INT); + +/* Progress Bar */ + +#define PROGRESS_CLASSA "msctls_progress32" +#if defined(__GNUC__) +# define PROGRESS_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \ + 'p','r','o','g','r','e','s','s','3','2',0 } +#elif defined(_MSC_VER) +# define PROGRESS_CLASSW L"msctls_progress32" +#else +static const WCHAR PROGRESS_CLASSW[] = { 'm','s','c','t','l','s','_', + 'p','r','o','g','r','e','s','s','3','2',0 }; +#endif + +#define PBM_SETRANGE (WM_USER+1) +#define PBM_SETPOS (WM_USER+2) +#define PBM_DELTAPOS (WM_USER+3) +#define PBM_SETSTEP (WM_USER+4) +#define PBM_STEPIT (WM_USER+5) +#define PBM_SETRANGE32 (WM_USER+6) +#define PBM_GETRANGE (WM_USER+7) +#define PBM_GETPOS (WM_USER+8) +#define PBM_SETBARCOLOR (WM_USER+9) +#define PBM_SETMARQUEE (WM_USER+10) +#define PBM_SETBKCOLOR CCM_SETBKCOLOR + +#define PBS_SMOOTH 0x01 +#define PBS_VERTICAL 0x04 +#define PBS_MARQUEE 0x08 + +typedef struct +{ + INT iLow; + INT iHigh; +} PBRANGE, *PPBRANGE; + + +/* ImageList */ + +struct _IMAGELIST; +typedef struct _IMAGELIST *HIMAGELIST; + +#define CLR_NONE 0xFFFFFFFF +#define CLR_DEFAULT 0xFF000000 +#define CLR_HILIGHT CLR_DEFAULT + +#define ILC_MASK 0x0001 +#define ILC_COLOR 0x0000 +#define ILC_COLORDDB 0x00FE +#define ILC_COLOR4 0x0004 +#define ILC_COLOR8 0x0008 +#define ILC_COLOR16 0x0010 +#define ILC_COLOR24 0x0018 +#define ILC_COLOR32 0x0020 +#define ILC_PALETTE 0x0800 /* no longer supported by M$ */ +#define ILC_MIRROR 0x2000 +#define ILC_PERITEMMIRROR 0x8000 + +#define ILD_NORMAL 0x0000 +#define ILD_TRANSPARENT 0x0001 +#define ILD_BLEND25 0x0002 +#define ILD_BLEND50 0x0004 +#define ILD_MASK 0x0010 +#define ILD_IMAGE 0x0020 +#define ILD_ROP 0x0040 +#define ILD_OVERLAYMASK 0x0F00 +#define ILD_PRESERVEALPHA 0x1000 +#define ILD_SCALE 0x2000 +#define ILD_DPISCALE 0x4000 +#define ILD_ASYNC 0x8000 + +#define ILD_SELECTED ILD_BLEND50 +#define ILD_FOCUS ILD_BLEND25 +#define ILD_BLEND ILD_BLEND50 + +#define INDEXTOOVERLAYMASK(i) ((i)<<8) +#define INDEXTOSTATEIMAGEMASK(i) ((i)<<12) + +#define ILCF_MOVE (0x00000000) +#define ILCF_SWAP (0x00000001) + +#define ILGT_NORMAL 0x0000 +#define ILGT_ASYNC 0x0001 + +#define ILS_NORMAL 0x0000 +#define ILS_GLOW 0x0001 +#define ILS_SHADOW 0x0002 +#define ILS_SATURATE 0x0004 +#define ILS_ALPHA 0x0008 + +typedef struct _IMAGEINFO +{ + HBITMAP hbmImage; + HBITMAP hbmMask; + INT Unused1; + INT Unused2; + RECT rcImage; +} IMAGEINFO, *LPIMAGEINFO; + + +typedef struct _IMAGELISTDRAWPARAMS +{ + DWORD cbSize; + HIMAGELIST himl; + INT i; + HDC hdcDst; + INT x; + INT y; + INT cx; + INT cy; + INT xBitmap; /* x offest from the upperleft of bitmap */ + INT yBitmap; /* y offset from the upperleft of bitmap */ + COLORREF rgbBk; + COLORREF rgbFg; + UINT fStyle; + DWORD dwRop; + DWORD fState; + DWORD Frame; + DWORD crEffect; +} IMAGELISTDRAWPARAMS, *LPIMAGELISTDRAWPARAMS; + + +INT WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP); +INT WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF); +BOOL WINAPI ImageList_BeginDrag(HIMAGELIST,INT,INT,INT); +BOOL WINAPI ImageList_Copy(HIMAGELIST,INT,HIMAGELIST,INT,UINT); +HIMAGELIST WINAPI ImageList_Create(INT,INT,UINT,INT,INT); +BOOL WINAPI ImageList_Destroy(HIMAGELIST); +BOOL WINAPI ImageList_DragEnter(HWND,INT,INT); +BOOL WINAPI ImageList_DragLeave(HWND); +BOOL WINAPI ImageList_DragMove(INT,INT); +BOOL WINAPI ImageList_DragShowNolock (BOOL); +BOOL WINAPI ImageList_Draw(HIMAGELIST,INT,HDC,INT,INT,UINT); +BOOL WINAPI ImageList_DrawEx(HIMAGELIST,INT,HDC,INT,INT,INT, + INT,COLORREF,COLORREF,UINT); +BOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); +HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST); +VOID WINAPI ImageList_EndDrag(VOID); +COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST); +HIMAGELIST WINAPI ImageList_GetDragImage(POINT*,POINT*); +HICON WINAPI ImageList_GetIcon(HIMAGELIST,INT,UINT); +BOOL WINAPI ImageList_GetIconSize(HIMAGELIST,INT*,INT*); +INT WINAPI ImageList_GetImageCount(HIMAGELIST); +BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST,INT,IMAGEINFO*); +BOOL WINAPI ImageList_GetImageRect(HIMAGELIST,INT,LPRECT); +HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,INT,INT, + COLORREF,UINT,UINT); +HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,INT,INT, + COLORREF,UINT,UINT); +#define ImageList_LoadImage WINELIB_NAME_AW(ImageList_LoadImage) +HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,INT,HIMAGELIST,INT,INT,INT); +BOOL WINAPI ImageList_Remove(HIMAGELIST,INT); +BOOL WINAPI ImageList_Replace(HIMAGELIST,INT,HBITMAP,HBITMAP); +INT WINAPI ImageList_ReplaceIcon(HIMAGELIST,INT,HICON); +COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF); +BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST,INT,INT,INT); + +BOOL WINAPI ImageList_SetIconSize(HIMAGELIST,INT,INT); +BOOL WINAPI ImageList_SetImageCount(HIMAGELIST,UINT); +BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST,INT,INT); + +#ifdef __IStream_INTERFACE_DEFINED__ +HIMAGELIST WINAPI ImageList_Read(LPSTREAM); +BOOL WINAPI ImageList_Write(HIMAGELIST, LPSTREAM); +#endif + +#define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon) +#define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0) +#define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) \ + ImageList_LoadImage(hi,lpbmp,cx,cGrow,crMask,IMAGE_BITMAP,0) +#define ImageList_RemoveAll(himl) ImageList_Remove(himl,-1) + + +#ifndef WM_MOUSEHOVER +#define WM_MOUSEHOVER 0x02A1 +#define WM_MOUSELEAVE 0x02A3 +#endif + +#ifndef TME_HOVER + +#define TME_HOVER 0x00000001 +#define TME_LEAVE 0x00000002 +#define TME_NONCLIENT 0x00000010 +#define TME_QUERY 0x40000000 +#define TME_CANCEL 0x80000000 + + +#define HOVER_DEFAULT 0xFFFFFFFF + +typedef struct tagTRACKMOUSEEVENT { + DWORD cbSize; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; +} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT; + +#endif + +BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack); + +/* Flat Scrollbar control */ + +#define FLATSB_CLASSA "flatsb_class32" +#if defined(__GNUC__) +# define FLATSB_CLASSW (const WCHAR []){ 'f','l','a','t','s','b','_', \ + 'c','l','a','s','s','3','2',0 } +#elif defined(_MSC_VER) +# define FLATSB_CLASSW L"flatsb_class32" +#else +static const WCHAR FLATSB_CLASSW[] = { 'f','l','a','t','s','b','_', + 'c','l','a','s','s','3','2',0 }; +#endif +#define FLATSB_CLASS WINELIB_NAME_AW(FLATSB_CLASS) + +#define WSB_PROP_CYVSCROLL 0x00000001L +#define WSB_PROP_CXHSCROLL 0x00000002L +#define WSB_PROP_CYHSCROLL 0x00000004L +#define WSB_PROP_CXVSCROLL 0x00000008L +#define WSB_PROP_CXHTHUMB 0x00000010L +#define WSB_PROP_CYVTHUMB 0x00000020L +#define WSB_PROP_VBKGCOLOR 0x00000040L +#define WSB_PROP_HBKGCOLOR 0x00000080L +#define WSB_PROP_VSTYLE 0x00000100L +#define WSB_PROP_HSTYLE 0x00000200L +#define WSB_PROP_WINSTYLE 0x00000400L +#define WSB_PROP_PALETTE 0x00000800L +#define WSB_PROP_MASK 0x00000FFFL + +#define FSB_REGULAR_MODE 0 +#define FSB_ENCARTA_MODE 1 +#define FSB_FLAT_MODE 2 + + +BOOL WINAPI FlatSB_EnableScrollBar(HWND, INT, UINT); +BOOL WINAPI FlatSB_ShowScrollBar(HWND, INT, BOOL); +BOOL WINAPI FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT); +BOOL WINAPI FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO); +INT WINAPI FlatSB_GetScrollPos(HWND, INT); +BOOL WINAPI FlatSB_GetScrollProp(HWND, INT, LPINT); +INT WINAPI FlatSB_SetScrollPos(HWND, INT, INT, BOOL); +INT WINAPI FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL); +INT WINAPI FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL); +BOOL WINAPI FlatSB_SetScrollProp(HWND, UINT, INT, BOOL); +BOOL WINAPI InitializeFlatSB(HWND); +HRESULT WINAPI UninitializeFlatSB(HWND); + +/* Subclassing stuff */ +typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR); +BOOL WINAPI SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR); +BOOL WINAPI GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*); +BOOL WINAPI RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR); +LRESULT WINAPI DefSubclassProc(HWND, UINT, WPARAM, LPARAM); + +int WINAPI DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, COLORREF, int, int); + +/* Header control */ + +#define WC_HEADERA "SysHeader32" +#if defined(__GNUC__) +# define WC_HEADERW (const WCHAR []){ 'S','y','s','H','e','a','d','e','r','3','2',0 } +#elif defined(_MSC_VER) +# define WC_HEADERW L"SysHeader32" +#else +static const WCHAR WC_HEADERW[] = { 'S','y','s','H','e','a','d','e','r','3','2',0 }; +#endif + +#define HDS_HORZ 0x0000 +#define HDS_BUTTONS 0x0002 +#define HDS_HOTTRACK 0x0004 +#define HDS_HIDDEN 0x0008 +#define HDS_DRAGDROP 0x0040 +#define HDS_FULLDRAG 0x0080 +#define HDS_FILTERBAR 0x0100 +#define HDS_FLAT 0x0200 +#define HDS_CHECKBOXES 0x0400 + +#define HDI_WIDTH 0x0001 +#define HDI_HEIGHT HDI_WIDTH +#define HDI_TEXT 0x0002 +#define HDI_FORMAT 0x0004 +#define HDI_LPARAM 0x0008 +#define HDI_BITMAP 0x0010 +#define HDI_IMAGE 0x0020 +#define HDI_DI_SETITEM 0x0040 +#define HDI_ORDER 0x0080 +#define HDI_FILTER 0x0100 + +#define HDF_LEFT 0x0000 +#define HDF_RIGHT 0x0001 +#define HDF_CENTER 0x0002 +#define HDF_JUSTIFYMASK 0x0003 +#define HDF_RTLREADING 0x0004 +#define HDF_CHECKBOX 0x0040 +#define HDF_CHECKED 0x0080 +#define HDF_FIXEDWIDTH 0x0100 +#define HDF_SORTDOWN 0x0200 +#define HDF_SORTUP 0x0400 +#define HDF_IMAGE 0x0800 +#define HDF_BITMAP_ON_RIGHT 0x1000 +#define HDF_BITMAP 0x2000 +#define HDF_STRING 0x4000 +#define HDF_OWNERDRAW 0x8000 + +#define HHT_NOWHERE 0x0001 +#define HHT_ONHEADER 0x0002 +#define HHT_ONDIVIDER 0x0004 +#define HHT_ONDIVOPEN 0x0008 +#define HHT_ONFILTER 0x0010 +#define HHT_ONFILTERBUTTON 0x0020 +#define HHT_ABOVE 0x0100 +#define HHT_BELOW 0x0200 +#define HHT_TORIGHT 0x0400 +#define HHT_TOLEFT 0x0800 +#define HHT_ONITEMSTATEICON 0x1000 + +#define HDM_FIRST 0x1200 +#define HDM_GETITEMCOUNT (HDM_FIRST+0) +#define HDM_INSERTITEMA (HDM_FIRST+1) +#define HDM_INSERTITEMW (HDM_FIRST+10) +#define HDM_INSERTITEM WINELIB_NAME_AW(HDM_INSERTITEM) +#define HDM_DELETEITEM (HDM_FIRST+2) +#define HDM_GETITEMA (HDM_FIRST+3) +#define HDM_GETITEMW (HDM_FIRST+11) +#define HDM_GETITEM WINELIB_NAME_AW(HDM_GETITEM) +#define HDM_SETITEMA (HDM_FIRST+4) +#define HDM_SETITEMW (HDM_FIRST+12) +#define HDM_SETITEM WINELIB_NAME_AW(HDM_SETITEM) +#define HDM_LAYOUT (HDM_FIRST+5) +#define HDM_HITTEST (HDM_FIRST+6) +#define HDM_GETITEMRECT (HDM_FIRST+7) +#define HDM_SETIMAGELIST (HDM_FIRST+8) +#define HDM_GETIMAGELIST (HDM_FIRST+9) + +#define HDM_ORDERTOINDEX (HDM_FIRST+15) +#define HDM_CREATEDRAGIMAGE (HDM_FIRST+16) +#define HDM_GETORDERARRAY (HDM_FIRST+17) +#define HDM_SETORDERARRAY (HDM_FIRST+18) +#define HDM_SETHOTDIVIDER (HDM_FIRST+19) +#define HDM_SETBITMAPMARGIN (HDM_FIRST+20) +#define HDM_GETBITMAPMARGIN (HDM_FIRST+21) +#define HDM_SETFILTERCHANGETIMEOUT (HDM_FIRST+22) +#define HDM_EDITFILTER (HDM_FIRST+23) +#define HDM_CLEARFILTER (HDM_FIRST+24) +#define HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT + +#define HDN_FIRST (0U-300U) +#define HDN_LAST (0U-399U) +#define HDN_ITEMCHANGINGA (HDN_FIRST-0) +#define HDN_ITEMCHANGINGW (HDN_FIRST-20) +#define HDN_ITEMCHANGING WINELIB_NAME_AW(HDN_ITEMCHANGING) +#define HDN_ITEMCHANGEDA (HDN_FIRST-1) +#define HDN_ITEMCHANGEDW (HDN_FIRST-21) +#define HDN_ITEMCHANGED WINELIB_NAME_AW(HDN_ITEMCHANGED) +#define HDN_ITEMCLICKA (HDN_FIRST-2) +#define HDN_ITEMCLICKW (HDN_FIRST-22) +#define HDN_ITEMCLICK WINELIB_NAME_AW(HDN_ITEMCLICK) +#define HDN_ITEMDBLCLICKA (HDN_FIRST-3) +#define HDN_ITEMDBLCLICKW (HDN_FIRST-23) +#define HDN_ITEMDBLCLICK WINELIB_NAME_AW(HDN_ITEMDBLCLICK) +#define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5) +#define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25) +#define HDN_DIVIDERDBLCLICK WINELIB_NAME_AW(HDN_DIVIDERDBLCLICK) +#define HDN_BEGINTRACKA (HDN_FIRST-6) +#define HDN_BEGINTRACKW (HDN_FIRST-26) +#define HDN_BEGINTRACK WINELIB_NAME_AW(HDN_BEGINTRACK) +#define HDN_ENDTRACKA (HDN_FIRST-7) +#define HDN_ENDTRACKW (HDN_FIRST-27) +#define HDN_ENDTRACK WINELIB_NAME_AW(HDN_ENDTRACK) +#define HDN_TRACKA (HDN_FIRST-8) +#define HDN_TRACKW (HDN_FIRST-28) +#define HDN_TRACK WINELIB_NAME_AW(HDN_TRACK) +#define HDN_GETDISPINFOA (HDN_FIRST-9) +#define HDN_GETDISPINFOW (HDN_FIRST-29) +#define HDN_GETDISPINFO WINELIB_NAME_AW(HDN_GETDISPINFO) +#define HDN_BEGINDRAG (HDN_FIRST-10) +#define HDN_ENDDRAG (HDN_FIRST-11) +#define HDN_FILTERCHANGE (HDN_FIRST-12) +#define HDN_FILTERBTNCLICK (HDN_FIRST-13) +#define HDN_BEGINFILTEREDIT (HDN_FIRST-14) +#define HDN_ENDFILTEREDIT (HDN_FIRST-15) +#define HDN_ITEMSTATEICONCLICK (HDN_FIRST-16) +#define HDN_ITEMKEYDOWN (HDN_FIRST-17) + +typedef struct _HD_LAYOUT +{ + RECT *prc; + WINDOWPOS *pwpos; +} HDLAYOUT, *LPHDLAYOUT; + +#define HD_LAYOUT HDLAYOUT + +typedef struct _HD_ITEMA +{ + UINT mask; + INT cxy; + LPSTR pszText; + HBITMAP hbm; + INT cchTextMax; + INT fmt; + LPARAM lParam; + INT iImage; + INT iOrder; + UINT type; + LPVOID pvFilter; +} HDITEMA, *LPHDITEMA; + +typedef struct _HD_ITEMW +{ + UINT mask; + INT cxy; + LPWSTR pszText; + HBITMAP hbm; + INT cchTextMax; + INT fmt; + LPARAM lParam; + INT iImage; + INT iOrder; + UINT type; + LPVOID pvFilter; +} HDITEMW, *LPHDITEMW; + +#define HDITEM WINELIB_NAME_AW(HDITEM) +#define LPHDITEM WINELIB_NAME_AW(LPHDITEM) +#define HD_ITEM HDITEM + +#define HDITEM_V1_SIZEA CCSIZEOF_STRUCT(HDITEMA, lParam) +#define HDITEM_V1_SIZEW CCSIZEOF_STRUCT(HDITEMW, lParam) +#define HDITEM_V1_SIZE WINELIB_NAME_AW(HDITEM_V1_SIZE) + +#define HDFT_ISSTRING 0x0000 +#define HDFT_ISNUMBER 0x0001 +#define HDFT_HASNOVALUE 0x8000 + +typedef struct _HD_TEXTFILTERA +{ + LPSTR pszText; + INT cchTextMax; +} HD_TEXTFILTERA, *LPHD_TEXTFILTERA; + +typedef struct _HD_TEXTFILTERW +{ + LPWSTR pszText; + INT cchTextMax; +} HD_TEXTFILTERW, *LPHD_TEXTFILTERW; + +#define HD_TEXTFILTER WINELIB_NAME_AW(HD_TEXTFILTER) +#define HDTEXTFILTER WINELIB_NAME_AW(HD_TEXTFILTER) +#define LPHD_TEXTFILTER WINELIB_NAME_AW(LPHD_TEXTFILTER) +#define LPHDTEXTFILTER WINELIB_NAME_AW(LPHD_TEXTFILTER) + +typedef struct _HD_HITTESTINFO +{ + POINT pt; + UINT flags; + INT iItem; +} HDHITTESTINFO, *LPHDHITTESTINFO; + +#define HD_HITTESTINFO HDHITTESTINFO + +typedef struct tagNMHEADERA +{ + NMHDR hdr; + INT iItem; + INT iButton; + HDITEMA *pitem; +} NMHEADERA, *LPNMHEADERA; + +typedef struct tagNMHEADERW +{ + NMHDR hdr; + INT iItem; + INT iButton; + HDITEMW *pitem; +} NMHEADERW, *LPNMHEADERW; + +#define NMHEADER WINELIB_NAME_AW(NMHEADER) +#define LPNMHEADER WINELIB_NAME_AW(LPNMHEADER) +#define HD_NOTIFY NMHEADER + +typedef struct tagNMHDDISPINFOA +{ + NMHDR hdr; + INT iItem; + UINT mask; + LPSTR pszText; + INT cchTextMax; + INT iImage; + LPARAM lParam; +} NMHDDISPINFOA, *LPNMHDDISPINFOA; + +typedef struct tagNMHDDISPINFOW +{ + NMHDR hdr; + INT iItem; + UINT mask; + LPWSTR pszText; + INT cchTextMax; + INT iImage; + LPARAM lParam; +} NMHDDISPINFOW, *LPNMHDDISPINFOW; + +#define NMHDDISPINFO WINELIB_NAME_AW(NMHDDISPINFO) +#define LPNMHDDISPINFO WINELIB_NAME_AW(LPNMHDDISPINFO) + +typedef struct tagNMHDFILTERBTNCLICK +{ + NMHDR hdr; + INT iItem; + RECT rc; +} NMHDFILTERBTNCLICK, *LPNMHDFILTERBTNCLICK; + +#define Header_GetItemCount(hwndHD) \ + (INT)SNDMSGA((hwndHD),HDM_GETITEMCOUNT,0,0L) +#define Header_InsertItemA(hwndHD,i,phdi) \ + (INT)SNDMSGA((hwndHD),HDM_INSERTITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi)) +#define Header_InsertItemW(hwndHD,i,phdi) \ + (INT)SNDMSGW((hwndHD),HDM_INSERTITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi)) +#define Header_InsertItem WINELIB_NAME_AW(Header_InsertItem) +#define Header_DeleteItem(hwndHD,i) \ + (BOOL)SNDMSGA((hwndHD),HDM_DELETEITEM,(WPARAM)(INT)(i),0L) +#define Header_GetItemA(hwndHD,i,phdi) \ + (BOOL)SNDMSGA((hwndHD),HDM_GETITEMA,(WPARAM)(INT)(i),(LPARAM)(HDITEMA*)(phdi)) +#define Header_GetItemW(hwndHD,i,phdi) \ + (BOOL)SNDMSGW((hwndHD),HDM_GETITEMW,(WPARAM)(INT)(i),(LPARAM)(HDITEMW*)(phdi)) +#define Header_GetItem WINELIB_NAME_AW(Header_GetItem) +#define Header_SetItemA(hwndHD,i,phdi) \ + (BOOL)SNDMSGA((hwndHD),HDM_SETITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi)) +#define Header_SetItemW(hwndHD,i,phdi) \ + (BOOL)SNDMSGW((hwndHD),HDM_SETITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi)) +#define Header_SetItem WINELIB_NAME_AW(Header_SetItem) +#define Header_Layout(hwndHD,playout) \ + (BOOL)SNDMSGA((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout)) +#define Header_GetItemRect(hwnd,iItem,lprc) \ + (BOOL)SNDMSGA((hwnd),HDM_GETITEMRECT,(WPARAM)iItem,(LPARAM)lprc) +#define Header_SetImageList(hwnd,himl) \ + (HIMAGELIST)SNDMSGA((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl) +#define Header_GetImageList(hwnd) \ + (HIMAGELIST)SNDMSGA((hwnd),HDM_GETIMAGELIST,0,0) +#define Header_OrderToIndex(hwnd,i) \ + (INT)SNDMSGA((hwnd),HDM_ORDERTOINDEX,(WPARAM)i,0) +#define Header_CreateDragImage(hwnd,i) \ + (HIMAGELIST)SNDMSGA((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM)i,0) +#define Header_GetOrderArray(hwnd,iCount,lpi) \ + (BOOL)SNDMSGA((hwnd),HDM_GETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi) +#define Header_SetOrderArray(hwnd,iCount,lpi) \ + (BOOL)SNDMSGA((hwnd),HDM_SETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi) +#define Header_SetHotDivider(hwnd,fPos,dw) \ + (INT)SNDMSGA((hwnd),HDM_SETHOTDIVIDER,(WPARAM)fPos,(LPARAM)dw) +#define Header_SetUnicodeFormat(hwnd,fUnicode) \ + (BOOL)SNDMSGA((hwnd),HDM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0) +#define Header_GetUnicodeFormat(hwnd) \ + (BOOL)SNDMSGA((hwnd),HDM_GETUNICODEFORMAT,0,0) + +/* Win32 5.1 Button Theme */ +#define WC_BUTTONA "Button" +#if defined(__GNUC__) +# define WC_BUTTONW (const WCHAR []){ 'B','u','t','t','o','n',0 } +#elif defined(_MSC_VER) +# define WC_BUTTONW L"Button" +#else +static const WCHAR WC_BUTTONW[] = { 'B','u','t','t','o','n',0 }; +#endif + +#define BCN_FIRST (0U-1250U) +#define BCN_LAST (0U-1350U) + +#define BCN_HOTITEMCHANGE (BCN_FIRST + 0x0001) + +typedef struct tagNMBCHOTITEM +{ + NMHDR hdr; + DWORD dwFlags; +} NMBCHOTITEM, *LPNMBCHOTITEM; + +#define BST_HOT 0x0200 + +/* Toolbar */ + +#define TOOLBARCLASSNAMEA "ToolbarWindow32" +#if defined(__GNUC__) +# define TOOLBARCLASSNAMEW (const WCHAR []){ 'T','o','o','l','b','a','r', \ + 'W','i','n','d','o','w','3','2',0 } +#elif defined(_MSC_VER) +# define TOOLBARCLASSNAMEW L"ToolbarWindow32" +#else +static const WCHAR TOOLBARCLASSNAMEW[] = { 'T','o','o','l','b','a','r', + 'W','i','n','d','o','w','3','2',0 }; +#endif + +#define CMB_MASKED 0x02 + +#define TBSTATE_CHECKED 0x01 +#define TBSTATE_PRESSED 0x02 +#define TBSTATE_ENABLED 0x04 +#define TBSTATE_HIDDEN 0x08 +#define TBSTATE_INDETERMINATE 0x10 +#define TBSTATE_WRAP 0x20 +#define TBSTATE_ELLIPSES 0x40 +#define TBSTATE_MARKED 0x80 + + +/* as of _WIN32_IE >= 0x0500 the following symbols are obsolete, + * "everyone" should use the BTNS_... stuff below + */ +#define TBSTYLE_BUTTON 0x00 +#define TBSTYLE_SEP 0x01 +#define TBSTYLE_CHECK 0x02 +#define TBSTYLE_GROUP 0x04 +#define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK) +#define TBSTYLE_DROPDOWN 0x08 +#define TBSTYLE_AUTOSIZE 0x10 +#define TBSTYLE_NOPREFIX 0x20 +#define BTNS_BUTTON TBSTYLE_BUTTON +#define BTNS_SEP TBSTYLE_SEP +#define BTNS_CHECK TBSTYLE_CHECK +#define BTNS_GROUP TBSTYLE_GROUP +#define BTNS_CHECKGROUP TBSTYLE_CHECKGROUP +#define BTNS_DROPDOWN TBSTYLE_DROPDOWN +#define BTNS_AUTOSIZE TBSTYLE_AUTOSIZE +#define BTNS_NOPREFIX TBSTYLE_NOPREFIX +#define BTNS_SHOWTEXT 0x40 /* ignored unless TBSTYLE_EX_MIXEDB set */ +#define BTNS_WHOLEDROPDOWN 0x80 /* draw dropdown arrow, but without split arrow section */ + +#define TBSTYLE_TOOLTIPS 0x0100 +#define TBSTYLE_WRAPABLE 0x0200 +#define TBSTYLE_ALTDRAG 0x0400 +#define TBSTYLE_FLAT 0x0800 +#define TBSTYLE_LIST 0x1000 +#define TBSTYLE_CUSTOMERASE 0x2000 +#define TBSTYLE_REGISTERDROP 0x4000 +#define TBSTYLE_TRANSPARENT 0x8000 +#define TBSTYLE_EX_DRAWDDARROWS 0x00000001 +#define TBSTYLE_EX_UNDOC1 0x00000004 /* similar to TBSTYLE_WRAPABLE */ +#define TBSTYLE_EX_MIXEDBUTTONS 0x00000008 +#define TBSTYLE_EX_HIDECLIPPEDBUTTONS 0x00000010 /* don't show partially obscured buttons */ +#define TBSTYLE_EX_DOUBLEBUFFER 0x00000080 /* Double Buffer the toolbar ??? */ + +#define TBIF_IMAGE 0x00000001 +#define TBIF_TEXT 0x00000002 +#define TBIF_STATE 0x00000004 +#define TBIF_STYLE 0x00000008 +#define TBIF_LPARAM 0x00000010 +#define TBIF_COMMAND 0x00000020 +#define TBIF_SIZE 0x00000040 +#define TBIF_BYINDEX 0x80000000 + +#define TBBF_LARGE 0x0001 + +#define TB_ENABLEBUTTON (WM_USER+1) +#define TB_CHECKBUTTON (WM_USER+2) +#define TB_PRESSBUTTON (WM_USER+3) +#define TB_HIDEBUTTON (WM_USER+4) +#define TB_INDETERMINATE (WM_USER+5) +#define TB_MARKBUTTON (WM_USER+6) +#define TB_ISBUTTONENABLED (WM_USER+9) +#define TB_ISBUTTONCHECKED (WM_USER+10) +#define TB_ISBUTTONPRESSED (WM_USER+11) +#define TB_ISBUTTONHIDDEN (WM_USER+12) +#define TB_ISBUTTONINDETERMINATE (WM_USER+13) +#define TB_ISBUTTONHIGHLIGHTED (WM_USER+14) +#define TB_SETSTATE (WM_USER+17) +#define TB_GETSTATE (WM_USER+18) +#define TB_ADDBITMAP (WM_USER+19) +#define TB_ADDBUTTONSA (WM_USER+20) +#define TB_ADDBUTTONSW (WM_USER+68) +#define TB_ADDBUTTONS WINELIB_NAME_AW(TB_ADDBUTTONS) +#define TB_HITTEST (WM_USER+69) +#define TB_INSERTBUTTONA (WM_USER+21) +#define TB_INSERTBUTTONW (WM_USER+67) +#define TB_INSERTBUTTON WINELIB_NAME_AW(TB_INSERTBUTTON) +#define TB_DELETEBUTTON (WM_USER+22) +#define TB_GETBUTTON (WM_USER+23) +#define TB_BUTTONCOUNT (WM_USER+24) +#define TB_COMMANDTOINDEX (WM_USER+25) +#define TB_SAVERESTOREA (WM_USER+26) +#define TB_SAVERESTOREW (WM_USER+76) +#define TB_SAVERESTORE WINELIB_NAME_AW(TB_SAVERESTORE) +#define TB_CUSTOMIZE (WM_USER+27) +#define TB_ADDSTRINGA (WM_USER+28) +#define TB_ADDSTRINGW (WM_USER+77) +#define TB_ADDSTRING WINELIB_NAME_AW(TB_ADDSTRING) +#define TB_GETITEMRECT (WM_USER+29) +#define TB_BUTTONSTRUCTSIZE (WM_USER+30) +#define TB_SETBUTTONSIZE (WM_USER+31) +#define TB_SETBITMAPSIZE (WM_USER+32) +#define TB_AUTOSIZE (WM_USER+33) +#define TB_GETTOOLTIPS (WM_USER+35) +#define TB_SETTOOLTIPS (WM_USER+36) +#define TB_SETPARENT (WM_USER+37) +#define TB_SETROWS (WM_USER+39) +#define TB_GETROWS (WM_USER+40) +#define TB_GETBITMAPFLAGS (WM_USER+41) +#define TB_SETCMDID (WM_USER+42) +#define TB_CHANGEBITMAP (WM_USER+43) +#define TB_GETBITMAP (WM_USER+44) +#define TB_GETBUTTONTEXTA (WM_USER+45) +#define TB_GETBUTTONTEXTW (WM_USER+75) +#define TB_GETBUTTONTEXT WINELIB_NAME_AW(TB_GETBUTTONTEXT) +#define TB_REPLACEBITMAP (WM_USER+46) +#define TB_SETINDENT (WM_USER+47) +#define TB_SETIMAGELIST (WM_USER+48) +#define TB_GETIMAGELIST (WM_USER+49) +#define TB_LOADIMAGES (WM_USER+50) +#define TB_GETRECT (WM_USER+51) /* wParam is the Cmd instead of index */ +#define TB_SETHOTIMAGELIST (WM_USER+52) +#define TB_GETHOTIMAGELIST (WM_USER+53) +#define TB_SETDISABLEDIMAGELIST (WM_USER+54) +#define TB_GETDISABLEDIMAGELIST (WM_USER+55) +#define TB_SETSTYLE (WM_USER+56) +#define TB_GETSTYLE (WM_USER+57) +#define TB_GETBUTTONSIZE (WM_USER+58) +#define TB_SETBUTTONWIDTH (WM_USER+59) +#define TB_SETMAXTEXTROWS (WM_USER+60) +#define TB_GETTEXTROWS (WM_USER+61) +#define TB_GETOBJECT (WM_USER+62) +#define TB_GETBUTTONINFOW (WM_USER+63) +#define TB_GETBUTTONINFOA (WM_USER+65) +#define TB_GETBUTTONINFO WINELIB_NAME_AW(TB_GETBUTTONINFO) +#define TB_SETBUTTONINFOW (WM_USER+64) +#define TB_SETBUTTONINFOA (WM_USER+66) +#define TB_SETBUTTONINFO WINELIB_NAME_AW(TB_SETBUTTONINFO) +#define TB_SETDRAWTEXTFLAGS (WM_USER+70) +#define TB_GETHOTITEM (WM_USER+71) +#define TB_SETHOTITEM (WM_USER+72) +#define TB_SETANCHORHIGHLIGHT (WM_USER+73) +#define TB_GETANCHORHIGHLIGHT (WM_USER+74) +#define TB_MAPACCELERATORA (WM_USER+78) +#define TB_MAPACCELERATORW (WM_USER+90) +#define TB_MAPACCELERATOR WINELIB_NAME_AW(TB_MAPACCELERATOR) +#define TB_GETINSERTMARK (WM_USER+79) +#define TB_SETINSERTMARK (WM_USER+80) +#define TB_INSERTMARKHITTEST (WM_USER+81) +#define TB_MOVEBUTTON (WM_USER+82) +#define TB_GETMAXSIZE (WM_USER+83) +#define TB_SETEXTENDEDSTYLE (WM_USER+84) +#define TB_GETEXTENDEDSTYLE (WM_USER+85) +#define TB_GETPADDING (WM_USER+86) +#define TB_SETPADDING (WM_USER+87) +#define TB_SETINSERTMARKCOLOR (WM_USER+88) +#define TB_GETINSERTMARKCOLOR (WM_USER+89) +#define TB_SETCOLORSCHEME CCM_SETCOLORSCHEME +#define TB_GETCOLORSCHEME CCM_GETCOLORSCHEME +#define TB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define TB_GETSTRINGW (WM_USER+91) +#define TB_GETSTRINGA (WM_USER+92) +#define TB_GETSTRING WINELIB_NAME_AW(TB_GETSTRING) /* undocumented messages in Toolbar */ -#define TB_UNKWN45D (WM_USER+93) -#define TB_UNKWN45E (WM_USER+94) -#define TB_UNKWN460 (WM_USER+96) -#define TB_UNKWN462 (WM_USER+98) -#define TB_UNKWN463 (WM_USER+99) -#define TB_UNKWN464 (WM_USER+100) +#define TB_UNKWN45D (WM_USER+93) +#define TB_UNKWN45E (WM_USER+94) +#define TB_UNKWN460 (WM_USER+96) +#define TB_UNKWN462 (WM_USER+98) +#define TB_UNKWN463 (WM_USER+99) +#define TB_UNKWN464 (WM_USER+100) -#define TB_SETCOLORSCHEME CCM_SETCOLORSCHEME -#define TB_GETCOLORSCHEME CCM_GETCOLORSCHEME -#define TB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT -#define TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT -#endif -#if (_WIN32_WINNT >= 0x0501) -#define TB_GETMETRICS (WM_USER + 101) -#define TB_SETMETRICS (WM_USER + 102) -#endif /* _WIN32_WINNT >= 0x0501 */ -#define TBBF_LARGE 1 -#define TBN_GETBUTTONINFOA (TBN_FIRST-0) -#define TBN_BEGINDRAG (TBN_FIRST-1) -#define TBN_ENDDRAG (TBN_FIRST-2) -#define TBN_BEGINADJUST (TBN_FIRST-3) -#define TBN_ENDADJUST (TBN_FIRST-4) -#define TBN_RESET (TBN_FIRST-5) -#define TBN_QUERYINSERT (TBN_FIRST-6) -#define TBN_QUERYDELETE (TBN_FIRST-7) +#define TB_GETMETRICS (WM_USER+101) +#define TB_SETMETRICS (WM_USER+102) +#define TB_SETWINDOWTHEME CCM_SETWINDOWTHEME + +#define TBN_FIRST (0U-700U) +#define TBN_LAST (0U-720U) +#define TBN_GETBUTTONINFOA (TBN_FIRST-0) +#define TBN_GETBUTTONINFOW (TBN_FIRST-20) +#define TBN_GETBUTTONINFO WINELIB_NAME_AW(TBN_GETBUTTONINFO) +#define TBN_BEGINDRAG (TBN_FIRST-1) +#define TBN_ENDDRAG (TBN_FIRST-2) +#define TBN_BEGINADJUST (TBN_FIRST-3) +#define TBN_ENDADJUST (TBN_FIRST-4) +#define TBN_RESET (TBN_FIRST-5) +#define TBN_QUERYINSERT (TBN_FIRST-6) +#define TBN_QUERYDELETE (TBN_FIRST-7) #define TBN_TOOLBARCHANGE (TBN_FIRST-8) -#define TBN_CUSTHELP (TBN_FIRST-9) -#if (_WIN32_IE >= 0x0300) -#define TBN_DROPDOWN (TBN_FIRST-10) -#endif -#if (_WIN32_IE >= 0x0400) +#define TBN_CUSTHELP (TBN_FIRST-9) +#define TBN_DROPDOWN (TBN_FIRST-10) #define TBN_GETOBJECT (TBN_FIRST-12) #define TBN_HOTITEMCHANGE (TBN_FIRST-13) -#define TBN_DRAGOUT (TBN_FIRST-14) +#define TBN_DRAGOUT (TBN_FIRST-14) #define TBN_DELETINGBUTTON (TBN_FIRST-15) #define TBN_GETDISPINFOA (TBN_FIRST-16) #define TBN_GETDISPINFOW (TBN_FIRST-17) -#define TBN_GETINFOTIPA (TBN_FIRST-18) -#define TBN_GETINFOTIPW (TBN_FIRST-19) -#define TBN_GETBUTTONINFOW (TBN_FIRST-20) -#endif -#if (_WIN32_IE >= 0x0500) -#define TBN_RESTORE (TBN_FIRST-21) -#define TBN_SAVE (TBN_FIRST-22) +#define TBN_GETDISPINFO WINELIB_NAME_AW(TBN_GETDISPINFO) +#define TBN_GETINFOTIPA (TBN_FIRST-18) +#define TBN_GETINFOTIPW (TBN_FIRST-19) +#define TBN_GETINFOTIP WINELIB_NAME_AW(TBN_GETINFOTIP) +#define TBN_RESTORE (TBN_FIRST-21) +#define TBN_SAVE (TBN_FIRST-22) #define TBN_INITCUSTOMIZE (TBN_FIRST-23) -#define TBNRF_HIDEHELP 1 -#define TBNRF_ENDCUSTOMIZE 2 -#define TBNF_IMAGE 1 -#define TBNF_TEXT 2 -#define TBNF_DI_SETITEM 0x10000000 -#endif /* _WIN32_IE >= 0x0500 */ -#if (_WIN32_WINNT >= 0x0501) -#define TBMF_PAD 1 -#define TBMF_BARPAD 2 -#define TBMF_BUTTONSPACING 4 -#endif /* _WIN32_IE >= 0x0501 */ -#define TTS_ALWAYSTIP 1 -#define TTS_NOPREFIX 2 -#if( _WIN32_IE >= 0x0500 ) -#define TTS_NOANIMATE 0x10 -#define TTS_NOFADE 0x20 -#define TTS_BALLOON 0x40 -#define TTS_CLOSE 0x80 -#endif /* _WIN32_IE >= 0x0500 */ -#define TTF_IDISHWND 1 -#define TTF_CENTERTIP 2 -#define TTF_RTLREADING 4 -#define TTF_SUBCLASS 16 -#if (_WIN32_IE >= 0x0300) -#define TTF_TRACK 0x0020 -#define TTF_ABSOLUTE 0x0080 -#define TTF_TRANSPARENT 0x0100 -#if (_WIN32_IE >= 0x0501) -#define TTF_PARSELINKS 0x1000 +#define TBN_WRAPHOTITEM (TBN_FIRST-24) /* this is undocumented and the name is a guess */ +#define TBNRF_HIDEHELP 0x00000001 + + +/* Return values from TBN_DROPDOWN */ +#define TBDDRET_DEFAULT 0 +#define TBDDRET_NODEFAULT 1 +#define TBDDRET_TREATPRESSED 2 + +typedef struct _NMTBCUSTOMDRAW +{ + NMCUSTOMDRAW nmcd; + HBRUSH hbrMonoDither; + HBRUSH hbrLines; + HPEN hpenLines; + COLORREF clrText; + COLORREF clrMark; + COLORREF clrTextHighlight; + COLORREF clrBtnFace; + COLORREF clrBtnHighlight; + COLORREF clrHighlightHotTrack; + RECT rcText; + int nStringBkMode; + int nHLStringBkMode; + int iListGap; +} NMTBCUSTOMDRAW, *LPNMTBCUSTOMDRAW; + +/* return flags for Toolbar NM_CUSTOMDRAW notifications */ +#define TBCDRF_NOEDGES 0x00010000 /* Don't draw button edges */ +#define TBCDRF_HILITEHOTTRACK 0x00020000 /* Use color of the button bkgnd */ + /* when hottracked */ +#define TBCDRF_NOOFFSET 0x00040000 /* No offset button if pressed */ +#define TBCDRF_NOMARK 0x00080000 /* Don't draw default highlight */ + /* for TBSTATE_MARKED */ +#define TBCDRF_NOETCHEDEFFECT 0x00100000 /* No etched effect for */ + /* disabled items */ +#define TBCDRF_BLENDICON 0x00200000 /* ILD_BLEND50 on the icon image */ +#define TBCDRF_NOBACKGROUND 0x00400000 /* ILD_BLEND50 on the icon image */ +#define TBCDRF_USECDCOLORS 0x00800000 + + +/* This is just for old CreateToolbar. */ +/* Don't use it in new programs. */ +typedef struct _OLDTBBUTTON { + INT iBitmap; + INT idCommand; + BYTE fsState; + BYTE fsStyle; + BYTE bReserved[2]; + DWORD dwData; +} OLDTBBUTTON, *POLDTBBUTTON, *LPOLDTBBUTTON; +typedef const OLDTBBUTTON *LPCOLDTBBUTTON; + + +typedef struct _TBBUTTON { + INT iBitmap; + INT idCommand; + BYTE fsState; + BYTE fsStyle; +#ifdef _WIN64 + BYTE bReserved[6]; +#else + BYTE bReserved[2]; #endif -#define TTF_DI_SETITEM 0x8000 -#define TBCD_TICS 1 -#define TBCD_THUMB 2 -#define TBCD_CHANNEL 3 -#endif /* _WIN32_IE >= 0x0300 */ -#if (_WIN32_IE >= 0x0400) -#define TBDDRET_DEFAULT 0 -#define TBDDRET_NODEFAULT 1 -#define TBDDRET_TREATPRESSED 2 -#define TBIMHT_AFTER 1 -#define TBIMHT_BACKGROUND 2 + DWORD_PTR dwData; + INT_PTR iString; +} TBBUTTON, *PTBBUTTON, *LPTBBUTTON; +typedef const TBBUTTON *LPCTBBUTTON; + + +typedef struct _COLORMAP { + COLORREF from; + COLORREF to; +} COLORMAP, *LPCOLORMAP; + + +typedef struct tagTBADDBITMAP { + HINSTANCE hInst; + UINT_PTR nID; +} TBADDBITMAP, *LPTBADDBITMAP; + +#define HINST_COMMCTRL ((HINSTANCE)-1) +#define IDB_STD_SMALL_COLOR 0 +#define IDB_STD_LARGE_COLOR 1 +#define IDB_VIEW_SMALL_COLOR 4 +#define IDB_VIEW_LARGE_COLOR 5 +#define IDB_HIST_SMALL_COLOR 8 +#define IDB_HIST_LARGE_COLOR 9 + +#define STD_CUT 0 +#define STD_COPY 1 +#define STD_PASTE 2 +#define STD_UNDO 3 +#define STD_REDOW 4 +#define STD_DELETE 5 +#define STD_FILENEW 6 +#define STD_FILEOPEN 7 +#define STD_FILESAVE 8 +#define STD_PRINTPRE 9 +#define STD_PROPERTIES 10 +#define STD_HELP 11 +#define STD_FIND 12 +#define STD_REPLACE 13 +#define STD_PRINT 14 + +#define VIEW_LARGEICONS 0 +#define VIEW_SMALLICONS 1 +#define VIEW_LIST 2 +#define VIEW_DETAILS 3 +#define VIEW_SORTNAME 4 +#define VIEW_SORTSIZE 5 +#define VIEW_SORTDATE 6 +#define VIEW_SORTTYPE 7 +#define VIEW_PARENTFOLDER 8 +#define VIEW_NETCONNECT 9 +#define VIEW_NETDISCONNECT 10 +#define VIEW_NEWFOLDER 11 +#define VIEW_VIEWMENU 12 + +#define HIST_BACK 0 +#define HIST_FORWARD 1 +#define HIST_FAVORITES 2 +#define HIST_ADDTOFAVORITES 3 +#define HIST_VIEWTREE 4 + +typedef struct tagTBSAVEPARAMSA { + HKEY hkr; + LPCSTR pszSubKey; + LPCSTR pszValueName; +} TBSAVEPARAMSA, *LPTBSAVEPARAMSA; + +typedef struct tagTBSAVEPARAMSW { + HKEY hkr; + LPCWSTR pszSubKey; + LPCWSTR pszValueName; +} TBSAVEPARAMSW, *LPTBSAVEPARAMSW; + +#define TBSAVEPARAMS WINELIB_NAME_AW(TBSAVEPARAMS) +#define LPTBSAVEPARAMS WINELIB_NAME_AW(LPTBSAVEPARAMS) + +typedef struct +{ + UINT cbSize; + DWORD dwMask; + INT idCommand; + INT iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPSTR pszText; + INT cchText; +} TBBUTTONINFOA, *LPTBBUTTONINFOA; + +typedef struct +{ + UINT cbSize; + DWORD dwMask; + INT idCommand; + INT iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPWSTR pszText; + INT cchText; +} TBBUTTONINFOW, *LPTBBUTTONINFOW; + +#define TBBUTTONINFO WINELIB_NAME_AW(TBBUTTONINFO) +#define LPTBBUTTONINFO WINELIB_NAME_AW(LPTBBUTTONINFO) + +typedef struct tagNMTBHOTITEM +{ + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; +} NMTBHOTITEM, *LPNMTBHOTITEM; + +typedef struct tagNMTBGETINFOTIPA +{ + NMHDR hdr; + LPSTR pszText; + INT cchTextMax; + INT iItem; + LPARAM lParam; +} NMTBGETINFOTIPA, *LPNMTBGETINFOTIPA; + +typedef struct tagNMTBGETINFOTIPW +{ + NMHDR hdr; + LPWSTR pszText; + INT cchTextMax; + INT iItem; + LPARAM lParam; +} NMTBGETINFOTIPW, *LPNMTBGETINFOTIPW; + +#define NMTBGETINFOTIP WINELIB_NAME_AW(NMTBGETINFOTIP) +#define LPNMTBGETINFOTIP WINELIB_NAME_AW(LPNMTBGETINFOTIP) + +typedef struct +{ + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPSTR pszText; + int cchText; +} NMTBDISPINFOA, *LPNMTBDISPINFOA; + +typedef struct +{ + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPWSTR pszText; + int cchText; +} NMTBDISPINFOW, *LPNMTBDISPINFOW; + +#define NMTBDISPINFO WINELIB_NAME_AW(NMTBDISPINFO) +#define LPNMTBDISPINFO WINELIB_NAME_AW(LPNMTBDISPINFO) + +/* contents of dwMask in the NMTBDISPINFO structure */ +#define TBNF_IMAGE 0x00000001 +#define TBNF_TEXT 0x00000002 +#define TBNF_DI_SETITEM 0x10000000 + + +typedef struct tagNMTOOLBARA +{ + NMHDR hdr; + INT iItem; + TBBUTTON tbButton; + INT cchText; + LPSTR pszText; + RECT rcButton; /* Version 5.80 */ +} NMTOOLBARA, *LPNMTOOLBARA, TBNOTIFYA, *LPTBNOTIFYA; + +typedef struct tagNMTOOLBARW +{ + NMHDR hdr; + INT iItem; + TBBUTTON tbButton; + INT cchText; + LPWSTR pszText; + RECT rcButton; /* Version 5.80 */ +} NMTOOLBARW, *LPNMTOOLBARW, TBNOTIFYW, *LPTBNOTIFYW; + +#define NMTOOLBAR WINELIB_NAME_AW(NMTOOLBAR) +#define LPNMTOOLBAR WINELIB_NAME_AW(LPNMTOOLBAR) +#define TBNOTIFY WINELIB_NAME_AW(TBNOTIFY) +#define LPTBNOTIFY WINELIB_NAME_AW(LPTBNOTIFY) + +typedef struct +{ + HINSTANCE hInstOld; + UINT_PTR nIDOld; + HINSTANCE hInstNew; + UINT_PTR nIDNew; + INT nButtons; +} TBREPLACEBITMAP, *LPTBREPLACEBITMAP; + +#define HICF_OTHER 0x00000000 +#define HICF_MOUSE 0x00000001 /* Triggered by mouse */ +#define HICF_ARROWKEYS 0x00000002 /* Triggered by arrow keys */ +#define HICF_ACCELERATOR 0x00000004 /* Triggered by accelerator */ +#define HICF_DUPACCEL 0x00000008 /* This accelerator is not unique */ +#define HICF_ENTERING 0x00000010 /* idOld is invalid */ +#define HICF_LEAVING 0x00000020 /* idNew is invalid */ +#define HICF_RESELECT 0x00000040 /* hot item reselected */ +#define HICF_LMOUSE 0x00000080 /* left mouse button selected */ +#define HICF_TOGGLEDROPDOWN 0x00000100 /* Toggle button's dropdown state */ + +typedef struct +{ + int iButton; + DWORD dwFlags; +} TBINSERTMARK, *LPTBINSERTMARK; +#define TBIMHT_AFTER 0x00000001 /* TRUE = insert After iButton, otherwise before */ +#define TBIMHT_BACKGROUND 0x00000002 /* TRUE if and only if missed buttons completely */ + +typedef struct tagNMTBSAVE +{ + NMHDR hdr; + DWORD* pData; + DWORD* pCurrent; + UINT cbData; + int iItem; + int cButtons; + TBBUTTON tbButton; +} NMTBSAVE, *LPNMTBSAVE; + +typedef struct tagNMTBRESTORE +{ + NMHDR hdr; + DWORD* pData; + DWORD* pCurrent; + UINT cbData; + int iItem; + int cButtons; + int cbBytesPerRecord; + TBBUTTON tbButton; +} NMTBRESTORE, *LPNMTBRESTORE; + +#define TBMF_PAD 0x00000001 +#define TBMF_BARPAD 0x00000002 +#define TBMF_BUTTONSPACING 0x00000004 + +typedef struct +{ + UINT cbSize; + DWORD dwMask; + INT cxPad; + INT cyPad; + INT cxBarPad; + INT cyBarPad; + INT cxButtonSpacing; + INT cyButtonSpacing; +} TBMETRICS, *LPTBMETRICS; + +/* these are undocumented and the names are guesses */ +typedef struct +{ + NMHDR hdr; + HWND hwndDialog; +} NMTBINITCUSTOMIZE; + +typedef struct +{ + NMHDR hdr; + INT idNew; + INT iDirection; /* left is -1, right is 1 */ + DWORD dwReason; /* HICF_* */ +} NMTBWRAPHOTITEM; + + +HWND WINAPI +CreateToolbar(HWND, DWORD, UINT, INT, HINSTANCE, + UINT, LPCTBBUTTON, INT); + +HWND WINAPI +CreateToolbarEx(HWND, DWORD, UINT, INT, + HINSTANCE, UINT, LPCTBBUTTON, + INT, INT, INT, INT, INT, UINT); + +HBITMAP WINAPI +CreateMappedBitmap (HINSTANCE, INT_PTR, UINT, LPCOLORMAP, INT); + + +/* Tool tips */ + +#define TOOLTIPS_CLASSA "tooltips_class32" +#if defined(__GNUC__) +# define TOOLTIPS_CLASSW (const WCHAR []){ 't','o','o','l','t','i','p','s','_', \ + 'c','l','a','s','s','3','2',0 } +#elif defined(_MSC_VER) +# define TOOLTIPS_CLASSW L"tooltips_class32" +#else +static const WCHAR TOOLTIPS_CLASSW[] = { 't','o','o','l','t','i','p','s','_', + 'c','l','a','s','s','3','2',0 }; #endif -#define TTDT_AUTOMATIC 0 -#define TTDT_RESHOW 1 -#define TTDT_AUTOPOP 2 -#define TTDT_INITIAL 3 -#define TTM_ACTIVATE (WM_USER+1) -#define TTM_SETDELAYTIME (WM_USER+3) -#define TTM_ADDTOOLA (WM_USER+4) -#define TTM_ADDTOOLW (WM_USER+50) -#define TTM_DELTOOLA (WM_USER+5) -#define TTM_DELTOOLW (WM_USER+51) -#define TTM_NEWTOOLRECTA (WM_USER+6) -#define TTM_NEWTOOLRECTW (WM_USER+52) -#define TTM_RELAYEVENT (WM_USER+7) -#define TTM_GETTOOLINFOA (WM_USER+8) -#define TTM_GETTOOLINFOW (WM_USER+53) -#define TTM_SETTOOLINFOA (WM_USER+9) -#define TTM_SETTOOLINFOW (WM_USER+54) -#define TTM_HITTESTA (WM_USER+10) -#define TTM_HITTESTW (WM_USER+55) -#define TTM_GETTEXTA (WM_USER+11) -#define TTM_GETTEXTW (WM_USER+56) -#define TTM_UPDATETIPTEXTA (WM_USER+12) -#define TTM_UPDATETIPTEXTW (WM_USER+57) -#define TTM_GETTOOLCOUNT (WM_USER+13) -#define TTM_ENUMTOOLSA (WM_USER+14) -#define TTM_ENUMTOOLSW (WM_USER+58) -#define TTM_GETCURRENTTOOLA (WM_USER+15) -#define TTM_GETCURRENTTOOLW (WM_USER+59) -#define TTM_WINDOWFROMPOINT (WM_USER+16) -#if (_WIN32_IE >= 0x0300) -#define TTM_TRACKACTIVATE (WM_USER+17) -#define TTM_TRACKPOSITION (WM_USER+18) -#define TTM_SETTIPBKCOLOR (WM_USER+19) -#define TTM_SETTIPTEXTCOLOR (WM_USER+20) -#define TTM_GETDELAYTIME (WM_USER+21) -#define TTM_GETTIPBKCOLOR (WM_USER+22) -#define TTM_GETTIPTEXTCOLOR (WM_USER+23) -#define TTM_SETMAXTIPWIDTH (WM_USER+24) -#define TTM_GETMAXTIPWIDTH (WM_USER+25) -#define TTM_SETMARGIN (WM_USER+26) -#define TTM_GETMARGIN (WM_USER+27) -#define TTM_POP (WM_USER+28) -#endif /* _WIN32_IE */ -#if (_WIN32_IE >= 0x0400) /* IE4.0 ??? */ -#define TTM_UPDATE (WM_USER+29) -#define TTM_GETBUBBLESIZE (WM_USER+30) -#define TTM_ADJUSTRECT (WM_USER+31) -#define TTM_SETTITLEA (WM_USER+32) -#define TTM_SETTITLEW (WM_USER+33) + +#ifdef UNICODE +#define UPDOWN_CLASS L"msctls_updown32" +#define PROGRESS_CLASS L"msctls_progress32" +#define WC_HEADER L"SysHeader32" +#define WC_BUTTON L"Button" +#define TOOLBARCLASSNAME L"ToolbarWindow32" +#define TOOLTIPS_CLASS L"tooltips_class32" +#else +#define UPDOWN_CLASS "msctls_updown32" +#define PROGRESS_CLASS "msctls_progress32" +#define WC_HEADER "SysHeader32" +#define WC_BUTTON "Button" +#define TOOLBARCLASSNAME "ToolbarWindow32" +#define TOOLTIPS_CLASS "tooltips_class32" #endif -#define TTN_GETDISPINFOA (TTN_FIRST - 0) -#define TTN_GETDISPINFOW (TTN_FIRST - 10) -#define TTN_NEEDTEXTA TTN_GETDISPINFOA -#define TTN_NEEDTEXTW TTN_GETDISPINFOW -#define TTN_SHOW (TTN_FIRST-1) -#define TTN_POP (TTN_FIRST-2) -#define TTI_NONE 0 -#define TTI_INFO 1 -#define TTI_WARNING 2 -#define TTI_ERROR 3 -#define UD_MAXVAL 0x7fff -#define UD_MINVAL (-UD_MAXVAL) -#define UDN_DELTAPOS (UDN_FIRST-1) -#define UDS_WRAP 1 -#define UDS_SETBUDDYINT 2 -#define UDS_ALIGNRIGHT 4 -#define UDS_ALIGNLEFT 8 -#define UDS_AUTOBUDDY 16 -#define UDS_ARROWKEYS 32 -#define UDS_HORZ 64 -#define UDS_NOTHOUSANDS 128 -#if ( _WIN32_IE >= 0x0300 ) -#define UDS_HOTTRACK 0x0100 -#endif /* _WIN32_IE >= 0x0300 */ -#define UDM_SETRANGE (WM_USER+101) -#define UDM_GETRANGE (WM_USER+102) -#define UDM_SETPOS (WM_USER+103) -#define UDM_GETPOS (WM_USER+104) -#define UDM_SETBUDDY (WM_USER+105) -#define UDM_GETBUDDY (WM_USER+106) -#define UDM_SETACCEL (WM_USER+107) -#define UDM_GETACCEL (WM_USER+108) -#define UDM_SETBASE (WM_USER+109) -#define UDM_GETBASE (WM_USER+110) -#if (_WIN32_IE >= 0x0400) -#define UDM_SETRANGE32 (WM_USER+111) -#define UDM_GETRANGE32 (WM_USER+112) -#define UDM_SETPOS32 (WM_USER+113) -#define UDM_GETPOS32 (WM_USER+114) + +#define INFOTIPSIZE 1024 + +#define TTS_ALWAYSTIP 0x01 +#define TTS_NOPREFIX 0x02 +#define TTS_NOANIMATE 0x10 +#define TTS_NOFADE 0x20 +#define TTS_BALLOON 0x40 +#define TTS_CLOSE 0x80 +#define TTS_USEVISUALSTYLE 0x100 + +#define TTF_IDISHWND 0x0001 +#define TTF_CENTERTIP 0x0002 +#define TTF_RTLREADING 0x0004 +#define TTF_SUBCLASS 0x0010 +#define TTF_TRACK 0x0020 +#define TTF_ABSOLUTE 0x0080 +#define TTF_TRANSPARENT 0x0100 +#define TTF_DI_SETITEM 0x8000 /* valid only on the TTN_NEEDTEXT callback */ + + +#define TTDT_AUTOMATIC 0 +#define TTDT_RESHOW 1 +#define TTDT_AUTOPOP 2 +#define TTDT_INITIAL 3 + + +#define TTI_NONE 0 +#define TTI_INFO 1 +#define TTI_WARNING 2 +#define TTI_ERROR 3 + + +#define TTM_ACTIVATE (WM_USER+1) +#define TTM_SETDELAYTIME (WM_USER+3) +#define TTM_ADDTOOLA (WM_USER+4) +#define TTM_ADDTOOLW (WM_USER+50) +#define TTM_ADDTOOL WINELIB_NAME_AW(TTM_ADDTOOL) +#define TTM_DELTOOLA (WM_USER+5) +#define TTM_DELTOOLW (WM_USER+51) +#define TTM_DELTOOL WINELIB_NAME_AW(TTM_DELTOOL) +#define TTM_NEWTOOLRECTA (WM_USER+6) +#define TTM_NEWTOOLRECTW (WM_USER+52) +#define TTM_NEWTOOLRECT WINELIB_NAME_AW(TTM_NEWTOOLRECT) +#define TTM_RELAYEVENT (WM_USER+7) +#define TTM_GETTOOLINFOA (WM_USER+8) +#define TTM_GETTOOLINFOW (WM_USER+53) +#define TTM_GETTOOLINFO WINELIB_NAME_AW(TTM_GETTOOLINFO) +#define TTM_SETTOOLINFOA (WM_USER+9) +#define TTM_SETTOOLINFOW (WM_USER+54) +#define TTM_SETTOOLINFO WINELIB_NAME_AW(TTM_SETTOOLINFO) +#define TTM_HITTESTA (WM_USER+10) +#define TTM_HITTESTW (WM_USER+55) +#define TTM_HITTEST WINELIB_NAME_AW(TTM_HITTEST) +#define TTM_GETTEXTA (WM_USER+11) +#define TTM_GETTEXTW (WM_USER+56) +#define TTM_GETTEXT WINELIB_NAME_AW(TTM_GETTEXT) +#define TTM_UPDATETIPTEXTA (WM_USER+12) +#define TTM_UPDATETIPTEXTW (WM_USER+57) +#define TTM_UPDATETIPTEXT WINELIB_NAME_AW(TTM_UPDATETIPTEXT) +#define TTM_GETTOOLCOUNT (WM_USER+13) +#define TTM_ENUMTOOLSA (WM_USER+14) +#define TTM_ENUMTOOLSW (WM_USER+58) +#define TTM_ENUMTOOLS WINELIB_NAME_AW(TTM_ENUMTOOLS) +#define TTM_GETCURRENTTOOLA (WM_USER+15) +#define TTM_GETCURRENTTOOLW (WM_USER+59) +#define TTM_GETCURRENTTOOL WINELIB_NAME_AW(TTM_GETCURRENTTOOL) +#define TTM_WINDOWFROMPOINT (WM_USER+16) +#define TTM_TRACKACTIVATE (WM_USER+17) +#define TTM_TRACKPOSITION (WM_USER+18) +#define TTM_SETTIPBKCOLOR (WM_USER+19) +#define TTM_SETTIPTEXTCOLOR (WM_USER+20) +#define TTM_GETDELAYTIME (WM_USER+21) +#define TTM_GETTIPBKCOLOR (WM_USER+22) +#define TTM_GETTIPTEXTCOLOR (WM_USER+23) +#define TTM_SETMAXTIPWIDTH (WM_USER+24) +#define TTM_GETMAXTIPWIDTH (WM_USER+25) +#define TTM_SETMARGIN (WM_USER+26) +#define TTM_GETMARGIN (WM_USER+27) +#define TTM_POP (WM_USER+28) +#define TTM_UPDATE (WM_USER+29) +#define TTM_GETBUBBLESIZE (WM_USER+30) +#define TTM_ADJUSTRECT (WM_USER+31) +#define TTM_SETTITLEA (WM_USER+32) +#define TTM_SETTITLEW (WM_USER+33) +#define TTM_SETTITLE WINELIB_NAME_AW(TTM_SETTITLE) +#define TTM_POPUP (WM_USER+34) +#define TTM_GETTITLE (WM_USER+35) +#define TTM_SETWINDOWTHEME CCM_SETWINDOWTHEME + + +#define TTN_FIRST (0U-520U) +#define TTN_LAST (0U-549U) +#define TTN_GETDISPINFOA (TTN_FIRST-0) +#define TTN_GETDISPINFOW (TTN_FIRST-10) +#define TTN_GETDISPINFO WINELIB_NAME_AW(TTN_GETDISPINFO) +#define TTN_SHOW (TTN_FIRST-1) +#define TTN_POP (TTN_FIRST-2) + +#define TTN_NEEDTEXT TTN_GETDISPINFO +#define TTN_NEEDTEXTA TTN_GETDISPINFOA +#define TTN_NEEDTEXTW TTN_GETDISPINFOW + +typedef struct tagTOOLINFOA { + UINT cbSize; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + LPARAM lParam; + void *lpReserved; +} TTTOOLINFOA, *LPTOOLINFOA, *PTOOLINFOA, *LPTTTOOLINFOA; + +typedef struct tagTOOLINFOW { + UINT cbSize; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + LPARAM lParam; + void *lpReserved; +} TTTOOLINFOW, *LPTOOLINFOW, *PTOOLINFOW, *LPTTTOOLINFOW; + +#define TTTOOLINFO WINELIB_NAME_AW(TTTOOLINFO) +#define TOOLINFO WINELIB_NAME_AW(TTTOOLINFO) +#define PTOOLINFO WINELIB_NAME_AW(PTOOLINFO) +#define LPTTTOOLINFO WINELIB_NAME_AW(LPTTTOOLINFO) +#define LPTOOLINFO WINELIB_NAME_AW(LPTOOLINFO) + +#define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText) +#define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText) +#define TTTOOLINFO_V1_SIZE CCSIZEOF_STRUCT(WINELIB_NAME_AW(TTTOOLINFO), lpszText) + +typedef struct _TT_HITTESTINFOA +{ + HWND hwnd; + POINT pt; + TTTOOLINFOA ti; +} TTHITTESTINFOA, *LPTTHITTESTINFOA; +#define LPHITTESTINFOA LPTTHITTESTINFOA + +typedef struct _TT_HITTESTINFOW +{ + HWND hwnd; + POINT pt; + TTTOOLINFOW ti; +} TTHITTESTINFOW, *LPTTHITTESTINFOW; +#define LPHITTESTINFOW LPTTHITTESTINFOW + +#define TTHITTESTINFO WINELIB_NAME_AW(TTHITTESTINFO) +#define LPTTHITTESTINFO WINELIB_NAME_AW(LPTTHITTESTINFO) +#define LPHITTESTINFO WINELIB_NAME_AW(LPHITTESTINFO) + +typedef struct tagNMTTDISPINFOA +{ + NMHDR hdr; + LPSTR lpszText; + CHAR szText[80]; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; +} NMTTDISPINFOA, *LPNMTTDISPINFOA; + +typedef struct tagNMTTDISPINFOW +{ + NMHDR hdr; + LPWSTR lpszText; + WCHAR szText[80]; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; +} NMTTDISPINFOW, *LPNMTTDISPINFOW; + +#define NMTTDISPINFO WINELIB_NAME_AW(NMTTDISPINFO) +#define LPNMTTDISPINFO WINELIB_NAME_AW(LPNMTTDISPINFO) + +#define NMTTDISPINFO_V1_SIZEA CCSIZEOF_STRUCT(NMTTDISPINFOA, uFlags) +#define NMTTDISPINFO_V1_SIZEW CCSIZEOF_STRUCT(NMTTDISPINFOW, uFlags) +#define NMTTDISPINFO_V1_SIZE WINELIB_NAME_AW(NMTTDISPINFO_V1_SIZE) + +typedef struct _TTGETTITLE +{ + DWORD dwSize; + UINT uTitleBitmap; + UINT cch; + WCHAR* pszTitle; +} TTGETTITLE, *PTTGETTITLE; + +#define TOOLTIPTEXTW NMTTDISPINFOW +#define TOOLTIPTEXTA NMTTDISPINFOA +#define TOOLTIPTEXT NMTTDISPINFO +#define LPTOOLTIPTEXTW LPNMTTDISPINFOW +#define LPTOOLTIPTEXTA LPNMTTDISPINFOA +#define LPTOOLTIPTEXT LPNMTTDISPINFO + + +/* Rebar control */ + +#define REBARCLASSNAMEA "ReBarWindow32" +#if defined(__GNUC__) +# define REBARCLASSNAMEW (const WCHAR []){ 'R','e','B','a','r', \ + 'W','i','n','d','o','w','3','2',0 } +#elif defined(_MSC_VER) +# define REBARCLASSNAMEW L"ReBarWindow32" +#else +static const WCHAR REBARCLASSNAMEW[] = { 'R','e','B','a','r', + 'W','i','n','d','o','w','3','2',0 }; #endif -#if (_WIN32_IE >= 0x0500) -#define UDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT -#define UDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define REBARCLASSNAME WINELIB_NAME_AW(REBARCLASSNAME) + +#define RBS_TOOLTIPS 0x0100 +#define RBS_VARHEIGHT 0x0200 +#define RBS_BANDBORDERS 0x0400 +#define RBS_FIXEDORDER 0x0800 +#define RBS_REGISTERDROP 0x1000 +#define RBS_AUTOSIZE 0x2000 +#define RBS_VERTICALGRIPPER 0x4000 +#define RBS_DBLCLKTOGGLE 0x8000 + +#define RBIM_IMAGELIST 0x00000001 + +#define RBBIM_STYLE 0x00000001 +#define RBBIM_COLORS 0x00000002 +#define RBBIM_TEXT 0x00000004 +#define RBBIM_IMAGE 0x00000008 +#define RBBIM_CHILD 0x00000010 +#define RBBIM_CHILDSIZE 0x00000020 +#define RBBIM_SIZE 0x00000040 +#define RBBIM_BACKGROUND 0x00000080 +#define RBBIM_ID 0x00000100 +#define RBBIM_IDEALSIZE 0x00000200 +#define RBBIM_LPARAM 0x00000400 +#define RBBIM_HEADERSIZE 0x00000800 + +#define RBBS_BREAK 0x00000001 +#define RBBS_FIXEDSIZE 0x00000002 +#define RBBS_CHILDEDGE 0x00000004 +#define RBBS_HIDDEN 0x00000008 +#define RBBS_NOVERT 0x00000010 +#define RBBS_FIXEDBMP 0x00000020 +#define RBBS_VARIABLEHEIGHT 0x00000040 +#define RBBS_GRIPPERALWAYS 0x00000080 +#define RBBS_NOGRIPPER 0x00000100 +#define RBBS_USECHEVRON 0x00000200 +#define RBBS_HIDETITLE 0x00000400 +#define RBBS_TOPALIGN 0x00000800 + +#define RBNM_ID 0x00000001 +#define RBNM_STYLE 0x00000002 +#define RBNM_LPARAM 0x00000004 + +#define RBHT_NOWHERE 0x0001 +#define RBHT_CAPTION 0x0002 +#define RBHT_CLIENT 0x0003 +#define RBHT_GRABBER 0x0004 +#define RBHT_CHEVRON 0x0008 + +#define RB_INSERTBANDA (WM_USER+1) +#define RB_INSERTBANDW (WM_USER+10) +#define RB_INSERTBAND WINELIB_NAME_AW(RB_INSERTBAND) +#define RB_DELETEBAND (WM_USER+2) +#define RB_GETBARINFO (WM_USER+3) +#define RB_SETBARINFO (WM_USER+4) +#define RB_SETBANDINFOA (WM_USER+6) +#define RB_SETBANDINFOW (WM_USER+11) +#define RB_SETBANDINFO WINELIB_NAME_AW(RB_SETBANDINFO) +#define RB_SETPARENT (WM_USER+7) +#define RB_HITTEST (WM_USER+8) +#define RB_GETRECT (WM_USER+9) +#define RB_GETBANDCOUNT (WM_USER+12) +#define RB_GETROWCOUNT (WM_USER+13) +#define RB_GETROWHEIGHT (WM_USER+14) +#define RB_IDTOINDEX (WM_USER+16) +#define RB_GETTOOLTIPS (WM_USER+17) +#define RB_SETTOOLTIPS (WM_USER+18) +#define RB_SETBKCOLOR (WM_USER+19) +#define RB_GETBKCOLOR (WM_USER+20) +#define RB_SETTEXTCOLOR (WM_USER+21) +#define RB_GETTEXTCOLOR (WM_USER+22) +#define RB_SIZETORECT (WM_USER+23) +#define RB_BEGINDRAG (WM_USER+24) +#define RB_ENDDRAG (WM_USER+25) +#define RB_DRAGMOVE (WM_USER+26) +#define RB_GETBARHEIGHT (WM_USER+27) +#define RB_GETBANDINFOW (WM_USER+28) +#define RB_GETBANDINFOA (WM_USER+29) +#define RB_GETBANDINFO WINELIB_NAME_AW(RB_GETBANDINFO) +#define RB_MINIMIZEBAND (WM_USER+30) +#define RB_MAXIMIZEBAND (WM_USER+31) +#define RB_GETBANDBORDERS (WM_USER+34) +#define RB_SHOWBAND (WM_USER+35) +#define RB_SETPALETTE (WM_USER+37) +#define RB_GETPALETTE (WM_USER+38) +#define RB_MOVEBAND (WM_USER+39) +#define RB_GETBANDMARGINS (WM_USER+40) +#define RB_PUSHCHEVRON (WM_USER+43) +#define RB_GETDROPTARGET CCM_GETDROPTARGET +#define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME +#define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME +#define RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define RB_SETWINDOWTHEME CCM_SETWINDOWTHEME + +#define RBN_FIRST (0U-831U) +#define RBN_LAST (0U-859U) +#define RBN_HEIGHTCHANGE (RBN_FIRST-0) +#define RBN_GETOBJECT (RBN_FIRST-1) +#define RBN_LAYOUTCHANGED (RBN_FIRST-2) +#define RBN_AUTOSIZE (RBN_FIRST-3) +#define RBN_BEGINDRAG (RBN_FIRST-4) +#define RBN_ENDDRAG (RBN_FIRST-5) +#define RBN_DELETINGBAND (RBN_FIRST-6) +#define RBN_DELETEDBAND (RBN_FIRST-7) +#define RBN_CHILDSIZE (RBN_FIRST-8) +#define RBN_CHEVRONPUSHED (RBN_FIRST-10) +#define RBN_MINMAX (RBN_FIRST-21) +#define RBN_AUTOBREAK (RBN_FIRST-22) + +typedef struct tagREBARINFO +{ + UINT cbSize; + UINT fMask; + HIMAGELIST himl; +} REBARINFO, *LPREBARINFO; + +typedef struct tagREBARBANDINFOA +{ + UINT cbSize; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPSTR lpText; + UINT cch; + INT iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; +} REBARBANDINFOA, *LPREBARBANDINFOA; + +typedef REBARBANDINFOA const *LPCREBARBANDINFOA; + +typedef struct tagREBARBANDINFOW +{ + UINT cbSize; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPWSTR lpText; + UINT cch; + INT iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; +} REBARBANDINFOW, *LPREBARBANDINFOW; + +typedef REBARBANDINFOW const *LPCREBARBANDINFOW; + +#define REBARBANDINFO WINELIB_NAME_AW(REBARBANDINFO) +#define LPREBARBANDINFO WINELIB_NAME_AW(LPREBARBANDINFO) +#define LPCREBARBANDINFO WINELIB_NAME_AW(LPCREBARBANDINFO) + +#define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA, wID) +#define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID) +#define REBARBANDINFO_V3_SIZE CCSIZEOF_STRUCT(WINELIB_NAME_AW(REBARBANDINFO), wID) + +typedef struct tagNMREBARCHILDSIZE +{ + NMHDR hdr; + UINT uBand; + UINT wID; + RECT rcChild; + RECT rcBand; +} NMREBARCHILDSIZE, *LPNMREBARCHILDSIZE; + +typedef struct tagNMREBAR +{ + NMHDR hdr; + DWORD dwMask; + UINT uBand; + UINT fStyle; + UINT wID; + LPARAM lParam; +} NMREBAR, *LPNMREBAR; + +typedef struct tagNMRBAUTOSIZE +{ + NMHDR hdr; + BOOL fChanged; + RECT rcTarget; + RECT rcActual; +} NMRBAUTOSIZE, *LPNMRBAUTOSIZE; + +typedef struct tagNMREBARCHEVRON +{ + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + RECT rc; + LPARAM lParamNM; +} NMREBARCHEVRON, *LPNMREBARCHEVRON; + +typedef struct _RB_HITTESTINFO +{ + POINT pt; + UINT flags; + INT iBand; +} RBHITTESTINFO, *LPRBHITTESTINFO; + +#define RBAB_AUTOSIZE 0x0001 +#define RBAB_ADDBAND 0x0002 + +typedef struct tagNMREBARAUTOBREAK +{ + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + UINT uMsg; + UINT fStyleCurrent; + BOOL fAutoBreak; +} NMREBARAUTOBREAK, *LPNMREBARAUTOBREAK; + + +/* Trackbar control */ + +#define TRACKBAR_CLASSA "msctls_trackbar32" +#if defined(__GNUC__) +# define TRACKBAR_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \ + 't','r','a','c','k','b','a','r','3','2',0 } +#elif defined(_MSC_VER) +# define TRACKBAR_CLASSW L"msctls_trackbar32" +#else +static const WCHAR TRACKBAR_CLASSW[] = { 'm','s','c','t','l','s','_', + 't','r','a','c','k','b','a','r','3','2',0 }; #endif -#define SB_SETTEXTA (WM_USER+1) -#define SB_SETTEXTW (WM_USER+11) -#define SB_GETTEXTA (WM_USER+2) -#define SB_GETTEXTW (WM_USER+13) -#define SB_GETTEXTLENGTHA (WM_USER+3) -#define SB_GETTEXTLENGTHW (WM_USER+12) -#define SB_SETPARTS (WM_USER+4) -#define SB_GETPARTS (WM_USER+6) -#define SB_GETBORDERS (WM_USER+7) -#define SB_SETMINHEIGHT (WM_USER+8) -#define SB_SIMPLE (WM_USER+9) -#define SB_GETRECT (WM_USER+10) -#define SBT_OWNERDRAW 0x1000 -#define SBT_NOBORDERS 256 -#define SBT_POPOUT 512 -#define SBT_RTLREADING 1024 -#if( _WIN32_IE >= 0x0400 ) -#define SBT_TOOLTIPS 0x0800 -#define SBN_SIMPLEMODECHANGE (SBN_FIRST) -#endif /* _WIN32_IE >= 0x0400 */ -#define TBS_AUTOTICKS 1 -#define TBS_VERT 2 -#define TBS_HORZ 0 -#define TBS_TOP 4 -#define TBS_BOTTOM 0 -#define TBS_LEFT 4 -#define TBS_RIGHT 0 -#define TBS_BOTH 8 -#define TBS_NOTICKS 16 -#define TBS_ENABLESELRANGE 32 -#define TBS_FIXEDLENGTH 64 -#define TBS_NOTHUMB 128 -#if (_WIN32_IE >= 0x0300) -#define TBS_TOOLTIPS 0x0100 -#define TBTS_TOP 0 -#define TBTS_LEFT 1 -#define TBTS_BOTTOM 2 -#define TBTS_RIGHT 3 +#define TRACKBAR_CLASS WINELIB_NAME_AW(TRACKBAR_CLASS) + +#define TBS_AUTOTICKS 0x0001 +#define TBS_VERT 0x0002 +#define TBS_HORZ 0x0000 +#define TBS_TOP 0x0004 +#define TBS_BOTTOM 0x0000 +#define TBS_LEFT 0x0004 +#define TBS_RIGHT 0x0000 +#define TBS_BOTH 0x0008 +#define TBS_NOTICKS 0x0010 +#define TBS_ENABLESELRANGE 0x0020 +#define TBS_FIXEDLENGTH 0x0040 +#define TBS_NOTHUMB 0x0080 +#define TBS_TOOLTIPS 0x0100 +#define TBS_REVERSED 0x0200 +#define TBS_DOWNISLEFT 0x0400 + +#define TBTS_TOP 0 +#define TBTS_LEFT 1 +#define TBTS_BOTTOM 2 +#define TBTS_RIGHT 3 + +#define TB_LINEUP 0 +#define TB_LINEDOWN 1 +#define TB_PAGEUP 2 +#define TB_PAGEDOWN 3 +#define TB_THUMBPOSITION 4 +#define TB_THUMBTRACK 5 +#define TB_TOP 6 +#define TB_BOTTOM 7 +#define TB_ENDTRACK 8 + +#define TBCD_TICS 0x0001 +#define TBCD_THUMB 0x0002 +#define TBCD_CHANNEL 0x0003 + +#define TBM_GETPOS (WM_USER) +#define TBM_GETRANGEMIN (WM_USER+1) +#define TBM_GETRANGEMAX (WM_USER+2) +#define TBM_GETTIC (WM_USER+3) +#define TBM_SETTIC (WM_USER+4) +#define TBM_SETPOS (WM_USER+5) +#define TBM_SETRANGE (WM_USER+6) +#define TBM_SETRANGEMIN (WM_USER+7) +#define TBM_SETRANGEMAX (WM_USER+8) +#define TBM_CLEARTICS (WM_USER+9) +#define TBM_SETSEL (WM_USER+10) +#define TBM_SETSELSTART (WM_USER+11) +#define TBM_SETSELEND (WM_USER+12) +#define TBM_GETPTICS (WM_USER+14) +#define TBM_GETTICPOS (WM_USER+15) +#define TBM_GETNUMTICS (WM_USER+16) +#define TBM_GETSELSTART (WM_USER+17) +#define TBM_GETSELEND (WM_USER+18) +#define TBM_CLEARSEL (WM_USER+19) +#define TBM_SETTICFREQ (WM_USER+20) +#define TBM_SETPAGESIZE (WM_USER+21) +#define TBM_GETPAGESIZE (WM_USER+22) +#define TBM_SETLINESIZE (WM_USER+23) +#define TBM_GETLINESIZE (WM_USER+24) +#define TBM_GETTHUMBRECT (WM_USER+25) +#define TBM_GETCHANNELRECT (WM_USER+26) +#define TBM_SETTHUMBLENGTH (WM_USER+27) +#define TBM_GETTHUMBLENGTH (WM_USER+28) +#define TBM_SETTOOLTIPS (WM_USER+29) +#define TBM_GETTOOLTIPS (WM_USER+30) +#define TBM_SETTIPSIDE (WM_USER+31) +#define TBM_SETBUDDY (WM_USER+32) +#define TBM_GETBUDDY (WM_USER+33) +#define TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT + + +/* Pager control */ + +#define WC_PAGESCROLLERA "SysPager" +#if defined(__GNUC__) +# define WC_PAGESCROLLERW (const WCHAR []){ 'S','y','s','P','a','g','e','r',0 } +#elif defined(_MSC_VER) +# define WC_PAGESCROLLERW L"SysPager" +#else +static const WCHAR WC_PAGESCROLLERW[] = { 'S','y','s','P','a','g','e','r',0 }; #endif -#if (_WIN32_IE >= 0x0500) -#define TBS_REVERSED 0x0200 +#define WC_PAGESCROLLER WINELIB_NAME_AW(WC_PAGESCROLLER) + +#define PGS_VERT 0x00000000 +#define PGS_HORZ 0x00000001 +#define PGS_AUTOSCROLL 0x00000002 +#define PGS_DRAGNDROP 0x00000004 + +#define PGF_INVISIBLE 0 +#define PGF_NORMAL 1 +#define PGF_GRAYED 2 +#define PGF_DEPRESSED 4 +#define PGF_HOT 8 + +#define PGB_TOPORLEFT 0 +#define PGB_BOTTOMORRIGHT 1 + +/* only used with PGN_SCROLL */ +#define PGF_SCROLLUP 1 +#define PGF_SCROLLDOWN 2 +#define PGF_SCROLLLEFT 4 +#define PGF_SCROLLRIGHT 8 + +#define PGK_SHIFT 1 +#define PGK_CONTROL 2 +#define PGK_MENU 4 + +/* only used with PGN_CALCSIZE */ +#define PGF_CALCWIDTH 1 +#define PGF_CALCHEIGHT 2 + +#define PGM_FIRST 0x1400 +#define PGM_SETCHILD (PGM_FIRST+1) +#define PGM_RECALCSIZE (PGM_FIRST+2) +#define PGM_FORWARDMOUSE (PGM_FIRST+3) +#define PGM_SETBKCOLOR (PGM_FIRST+4) +#define PGM_GETBKCOLOR (PGM_FIRST+5) +#define PGM_SETBORDER (PGM_FIRST+6) +#define PGM_GETBORDER (PGM_FIRST+7) +#define PGM_SETPOS (PGM_FIRST+8) +#define PGM_GETPOS (PGM_FIRST+9) +#define PGM_SETBUTTONSIZE (PGM_FIRST+10) +#define PGM_GETBUTTONSIZE (PGM_FIRST+11) +#define PGM_GETBUTTONSTATE (PGM_FIRST+12) +#define PGM_GETDROPTARGET CCM_GETDROPTARGET + +#define PGN_FIRST (0U-900U) +#define PGN_LAST (0U-950U) +#define PGN_SCROLL (PGN_FIRST-1) +#define PGN_CALCSIZE (PGN_FIRST-2) + +#include + +typedef struct +{ + NMHDR hdr; + WORD fwKeys; + RECT rcParent; + INT iDir; + INT iXpos; + INT iYpos; + INT iScroll; +} NMPGSCROLL, *LPNMPGSCROLL; + +#include + +typedef struct +{ + NMHDR hdr; + DWORD dwFlag; + INT iWidth; + INT iHeight; +} NMPGCALCSIZE, *LPNMPGCALCSIZE; + + +/* Treeview control */ + +#define WC_TREEVIEWA "SysTreeView32" +#if defined(__GNUC__) +# define WC_TREEVIEWW (const WCHAR []){ 'S','y','s', \ + 'T','r','e','e','V','i','e','w','3','2',0 } +#elif defined(_MSC_VER) +# define WC_TREEVIEWW L"SysTreeView32" +#else +static const WCHAR WC_TREEVIEWW[] = { 'S','y','s', + 'T','r','e','e','V','i','e','w','3','2',0 }; #endif -#if (_WIN32_IE >= 0x0501) -#define TBS_DOWNISLEFT 0x0400 +#define WC_TREEVIEW WINELIB_NAME_AW(WC_TREEVIEW) + +#define TVSIL_NORMAL 0 +#define TVSIL_STATE 2 + +#define TV_FIRST 0x1100 +#define TVM_INSERTITEMA (TV_FIRST+0) +#define TVM_INSERTITEMW (TV_FIRST+50) +#define TVM_INSERTITEM WINELIB_NAME_AW(TVM_INSERTITEM) +#define TVM_DELETEITEM (TV_FIRST+1) +#define TVM_EXPAND (TV_FIRST+2) +#define TVM_GETITEMRECT (TV_FIRST+4) +#define TVM_GETCOUNT (TV_FIRST+5) +#define TVM_GETINDENT (TV_FIRST+6) +#define TVM_SETINDENT (TV_FIRST+7) +#define TVM_GETIMAGELIST (TV_FIRST+8) +#define TVM_SETIMAGELIST (TV_FIRST+9) +#define TVM_GETNEXTITEM (TV_FIRST+10) +#define TVM_SELECTITEM (TV_FIRST+11) +#define TVM_GETITEMA (TV_FIRST+12) +#define TVM_GETITEMW (TV_FIRST+62) +#define TVM_GETITEM WINELIB_NAME_AW(TVM_GETITEM) +#define TVM_SETITEMA (TV_FIRST+13) +#define TVM_SETITEMW (TV_FIRST+63) +#define TVM_SETITEM WINELIB_NAME_AW(TVM_SETITEM) +#define TVM_EDITLABELA (TV_FIRST+14) +#define TVM_EDITLABELW (TV_FIRST+65) +#define TVM_EDITLABEL WINELIB_NAME_AW(TVM_EDITLABEL) +#define TVM_GETEDITCONTROL (TV_FIRST+15) +#define TVM_GETVISIBLECOUNT (TV_FIRST+16) +#define TVM_HITTEST (TV_FIRST+17) +#define TVM_CREATEDRAGIMAGE (TV_FIRST+18) +#define TVM_SORTCHILDREN (TV_FIRST+19) +#define TVM_ENSUREVISIBLE (TV_FIRST+20) +#define TVM_SORTCHILDRENCB (TV_FIRST+21) +#define TVM_ENDEDITLABELNOW (TV_FIRST+22) +#define TVM_GETISEARCHSTRINGA (TV_FIRST+23) +#define TVM_GETISEARCHSTRINGW (TV_FIRST+64) +#define TVM_GETISEARCHSTRING WINELIB_NAME_AW(TVM_GETISEARCHSTRING) +#define TVM_SETTOOLTIPS (TV_FIRST+24) +#define TVM_GETTOOLTIPS (TV_FIRST+25) +#define TVM_SETINSERTMARK (TV_FIRST+26) +#define TVM_SETITEMHEIGHT (TV_FIRST+27) +#define TVM_GETITEMHEIGHT (TV_FIRST+28) +#define TVM_SETBKCOLOR (TV_FIRST+29) +#define TVM_SETTEXTCOLOR (TV_FIRST+30) +#define TVM_GETBKCOLOR (TV_FIRST+31) +#define TVM_GETTEXTCOLOR (TV_FIRST+32) +#define TVM_SETSCROLLTIME (TV_FIRST+33) +#define TVM_GETSCROLLTIME (TV_FIRST+34) +#define TVM_UNKNOWN35 (TV_FIRST+35) +#define TVM_UNKNOWN36 (TV_FIRST+36) +#define TVM_SETINSERTMARKCOLOR (TV_FIRST+37) +#define TVM_GETINSERTMARKCOLOR (TV_FIRST+38) +#define TVM_GETITEMSTATE (TV_FIRST+39) +#define TVM_SETLINECOLOR (TV_FIRST+40) +#define TVM_GETLINECOLOR (TV_FIRST+41) +#define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define TVM_MAPACCIDTOHTREEITEM (TV_FIRST + 42) +#define TVM_MAPHTREEITEMTOACCID (TV_FIRST + 43) + + +#define TVN_FIRST (0U-400U) +#define TVN_LAST (0U-499U) + +#define TVN_SELCHANGINGA (TVN_FIRST-1) +#define TVN_SELCHANGINGW (TVN_FIRST-50) +#define TVN_SELCHANGING WINELIB_NAME_AW(TVN_SELCHANGING) + +#define TVN_SELCHANGEDA (TVN_FIRST-2) +#define TVN_SELCHANGEDW (TVN_FIRST-51) +#define TVN_SELCHANGED WINELIB_NAME_AW(TVN_SELCHANGED) + +#define TVN_GETDISPINFOA (TVN_FIRST-3) +#define TVN_GETDISPINFOW (TVN_FIRST-52) +#define TVN_GETDISPINFO WINELIB_NAME_AW(TVN_GETDISPINFO) + +#define TVN_SETDISPINFOA (TVN_FIRST-4) +#define TVN_SETDISPINFOW (TVN_FIRST-53) +#define TVN_SETDISPINFO WINELIB_NAME_AW(TVN_SETDISPINFO) + +#define TVN_ITEMEXPANDINGA (TVN_FIRST-5) +#define TVN_ITEMEXPANDINGW (TVN_FIRST-54) +#define TVN_ITEMEXPANDING WINELIB_NAME_AW(TVN_ITEMEXPANDING) + +#define TVN_ITEMEXPANDEDA (TVN_FIRST-6) +#define TVN_ITEMEXPANDEDW (TVN_FIRST-55) +#define TVN_ITEMEXPANDED WINELIB_NAME_AW(TVN_ITEMEXPANDED) + +#define TVN_BEGINDRAGA (TVN_FIRST-7) +#define TVN_BEGINDRAGW (TVN_FIRST-56) +#define TVN_BEGINDRAG WINELIB_NAME_AW(TVN_BEGINDRAG) + +#define TVN_BEGINRDRAGA (TVN_FIRST-8) +#define TVN_BEGINRDRAGW (TVN_FIRST-57) +#define TVN_BEGINRDRAG WINELIB_NAME_AW(TVN_BEGINRDRAG) + +#define TVN_DELETEITEMA (TVN_FIRST-9) +#define TVN_DELETEITEMW (TVN_FIRST-58) +#define TVN_DELETEITEM WINELIB_NAME_AW(TVN_DELETEITEM) + +#define TVN_BEGINLABELEDITA (TVN_FIRST-10) +#define TVN_BEGINLABELEDITW (TVN_FIRST-59) +#define TVN_BEGINLABELEDIT WINELIB_NAME_AW(TVN_BEGINLABELEDIT) + +#define TVN_ENDLABELEDITA (TVN_FIRST-11) +#define TVN_ENDLABELEDITW (TVN_FIRST-60) +#define TVN_ENDLABELEDIT WINELIB_NAME_AW(TVN_ENDLABELEDIT) + +#define TVN_KEYDOWN (TVN_FIRST-12) + +#define TVN_GETINFOTIPA (TVN_FIRST-13) +#define TVN_GETINFOTIPW (TVN_FIRST-14) +#define TVN_GETINFOTIP WINELIB_NAME_AW(TVN_GETINFOTIP) + +#define TVN_SINGLEEXPAND (TVN_FIRST-15) + + + + + +#define TVIF_TEXT 0x0001 +#define TVIF_IMAGE 0x0002 +#define TVIF_PARAM 0x0004 +#define TVIF_STATE 0x0008 +#define TVIF_HANDLE 0x0010 +#define TVIF_SELECTEDIMAGE 0x0020 +#define TVIF_CHILDREN 0x0040 +#define TVIF_INTEGRAL 0x0080 +#define TVIF_DI_SETITEM 0x1000 + +#define TVI_ROOT ((HTREEITEM)0xffff0000) /* -65536 */ +#define TVI_FIRST ((HTREEITEM)0xffff0001) /* -65535 */ +#define TVI_LAST ((HTREEITEM)0xffff0002) /* -65534 */ +#define TVI_SORT ((HTREEITEM)0xffff0003) /* -65533 */ + +#define TVIS_FOCUSED 0x0001 +#define TVIS_SELECTED 0x0002 +#define TVIS_CUT 0x0004 +#define TVIS_DROPHILITED 0x0008 +#define TVIS_BOLD 0x0010 +#define TVIS_EXPANDED 0x0020 +#define TVIS_EXPANDEDONCE 0x0040 +#define TVIS_EXPANDPARTIAL 0x0080 +#define TVIS_OVERLAYMASK 0x0f00 +#define TVIS_STATEIMAGEMASK 0xf000 +#define TVIS_USERMASK 0xf000 + +#define TVHT_NOWHERE 0x0001 +#define TVHT_ONITEMICON 0x0002 +#define TVHT_ONITEMLABEL 0x0004 +#define TVHT_ONITEMINDENT 0x0008 +#define TVHT_ONITEMBUTTON 0x0010 +#define TVHT_ONITEMRIGHT 0x0020 +#define TVHT_ONITEMSTATEICON 0x0040 +#define TVHT_ONITEM 0x0046 +#define TVHT_ABOVE 0x0100 +#define TVHT_BELOW 0x0200 +#define TVHT_TORIGHT 0x0400 +#define TVHT_TOLEFT 0x0800 + +#define TVS_HASBUTTONS 0x0001 +#define TVS_HASLINES 0x0002 +#define TVS_LINESATROOT 0x0004 +#define TVS_EDITLABELS 0x0008 +#define TVS_DISABLEDRAGDROP 0x0010 +#define TVS_SHOWSELALWAYS 0x0020 +#define TVS_RTLREADING 0x0040 +#define TVS_NOTOOLTIPS 0x0080 +#define TVS_CHECKBOXES 0x0100 +#define TVS_TRACKSELECT 0x0200 +#define TVS_SINGLEEXPAND 0x0400 +#define TVS_INFOTIP 0x0800 +#define TVS_FULLROWSELECT 0x1000 +#define TVS_NOSCROLL 0x2000 +#define TVS_NONEVENHEIGHT 0x4000 +#define TVS_NOHSCROLL 0x8000 + +#define TVS_SHAREDIMAGELISTS 0x0000 +#define TVS_PRIVATEIMAGELISTS 0x0400 + + +#define TVE_COLLAPSE 0x0001 +#define TVE_EXPAND 0x0002 +#define TVE_TOGGLE 0x0003 +#define TVE_EXPANDPARTIAL 0x4000 +#define TVE_COLLAPSERESET 0x8000 + +#define TVGN_ROOT 0 +#define TVGN_NEXT 1 +#define TVGN_PREVIOUS 2 +#define TVGN_PARENT 3 +#define TVGN_CHILD 4 +#define TVGN_FIRSTVISIBLE 5 +#define TVGN_NEXTVISIBLE 6 +#define TVGN_PREVIOUSVISIBLE 7 +#define TVGN_DROPHILITE 8 +#define TVGN_CARET 9 +#define TVGN_LASTVISIBLE 10 +#define TVSI_NOSINGLEEXPAND 0x8000 + +#define TVC_UNKNOWN 0x00 +#define TVC_BYMOUSE 0x01 +#define TVC_BYKEYBOARD 0x02 + + +typedef struct _TREEITEM *HTREEITEM; + +typedef struct { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + INT cchTextMax; + INT iImage; + INT iSelectedImage; + INT cChildren; + LPARAM lParam; +} TVITEMA, *LPTVITEMA; + +typedef struct { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + INT cchTextMax; + INT iImage; + INT iSelectedImage; + INT cChildren; + LPARAM lParam; +} TVITEMW, *LPTVITEMW; + +#define TV_ITEMA TVITEMA +#define TV_ITEMW TVITEMW +#define LPTV_ITEMA LPTVITEMA +#define LPTV_ITEMW LPTVITEMW + +#define TVITEM WINELIB_NAME_AW(TVITEM) +#define LPTVITEM WINELIB_NAME_AW(LPTVITEM) +#define TV_ITEM WINELIB_NAME_AW(TV_ITEM) +#define LPTV_ITEM WINELIB_NAME_AW(LPTV_ITEM) + +typedef struct { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + INT cchTextMax; + INT iImage; + INT iSelectedImage; + INT cChildren; + LPARAM lParam; + INT iIntegral; +} TVITEMEXA, *LPTVITEMEXA; + +typedef struct { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + INT cchTextMax; + INT iImage; + INT iSelectedImage; + INT cChildren; + LPARAM lParam; + INT iIntegral; +} TVITEMEXW, *LPTVITEMEXW; + +#define TVITEMEX WINELIB_NAME_AW(TVITEMEX) +#define LPTVITEMEX WINELIB_NAME_AW(LPTVITEMEX) + +typedef struct tagTVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXA itemex; + TVITEMA item; + } DUMMYUNIONNAME; +} TVINSERTSTRUCTA, *LPTVINSERTSTRUCTA; + +typedef struct tagTVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXW itemex; + TVITEMW item; + } DUMMYUNIONNAME; +} TVINSERTSTRUCTW, *LPTVINSERTSTRUCTW; + +#define TVINSERTSTRUCT WINELIB_NAME_AW(TVINSERTSTRUCT) +#define LPTVINSERTSTRUCT WINELIB_NAME_AW(LPTVINSERTSTRUCT) + +#define TVINSERTSTRUCT_V1_SIZEA CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item) +#define TVINSERTSTRUCT_V1_SIZEW CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item) +#define TVINSERTSTRUCT_V1_SIZE WINELIB_NAME_AW(TVINSERTSTRUCT_V1_SIZE) + +#define TV_INSERTSTRUCT TVINSERTSTRUCT +#define TV_INSERTSTRUCTA TVINSERTSTRUCTA +#define TV_INSERTSTRUCTW TVINSERTSTRUCTW +#define LPTV_INSERTSTRUCT LPTVINSERTSTRUCT +#define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA +#define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW + + + +typedef struct tagNMTREEVIEWA { + NMHDR hdr; + UINT action; + TVITEMA itemOld; + TVITEMA itemNew; + POINT ptDrag; +} NMTREEVIEWA, *LPNMTREEVIEWA; + +typedef struct tagNMTREEVIEWW { + NMHDR hdr; + UINT action; + TVITEMW itemOld; + TVITEMW itemNew; + POINT ptDrag; +} NMTREEVIEWW, *LPNMTREEVIEWW; + +#define NMTREEVIEW WINELIB_NAME_AW(NMTREEVIEW) +#define NM_TREEVIEW WINELIB_NAME_AW(NMTREEVIEW) +#define NM_TREEVIEWA NMTREEVIEWA +#define NM_TREEVIEWW NMTREEVIEWW +#define LPNMTREEVIEW WINELIB_NAME_AW(LPNMTREEVIEW) + +#define LPNM_TREEVIEW LPNMTREEVIEW +#define LPNM_TREEVIEWA LPNMTREEVIEWA +#define LPNM_TREEVIEWW LPNMTREEVIEWW + +typedef struct tagTVDISPINFOA { + NMHDR hdr; + TVITEMA item; +} NMTVDISPINFOA, *LPNMTVDISPINFOA; + +typedef struct tagTVDISPINFOW { + NMHDR hdr; + TVITEMW item; +} NMTVDISPINFOW, *LPNMTVDISPINFOW; + +#define NMTVDISPINFO WINELIB_NAME_AW(NMTVDISPINFO) +#define LPNMTVDISPINFO WINELIB_NAME_AW(LPNMTVDISPINFO) +#define TV_DISPINFOA NMTVDISPINFOA +#define TV_DISPINFOW NMTVDISPINFOW +#define TV_DISPINFO NMTVDISPINFO + +typedef INT (CALLBACK *PFNTVCOMPARE)(LPARAM, LPARAM, LPARAM); + +typedef struct tagTVSORTCB +{ + HTREEITEM hParent; + PFNTVCOMPARE lpfnCompare; + LPARAM lParam; +} TVSORTCB, *LPTVSORTCB; + +#define TV_SORTCB TVSORTCB +#define LPTV_SORTCB LPTVSORTCB + +typedef struct tagTVHITTESTINFO { + POINT pt; + UINT flags; + HTREEITEM hItem; +} TVHITTESTINFO, *LPTVHITTESTINFO; + +#define TV_HITTESTINFO TVHITTESTINFO + + +/* Custom Draw Treeview */ + +#define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk) + +#define TVCDRF_NOIMAGES 0x00010000 + +typedef struct tagNMTVCUSTOMDRAW +{ + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + INT iLevel; /* IE>0x0400 */ +} NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW; + +/* Treeview tooltips */ + +typedef struct tagNMTVGETINFOTIPA +{ + NMHDR hdr; + LPSTR pszText; + INT cchTextMax; + HTREEITEM hItem; + LPARAM lParam; +} NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA; + +typedef struct tagNMTVGETINFOTIPW +{ + NMHDR hdr; + LPWSTR pszText; + INT cchTextMax; + HTREEITEM hItem; + LPARAM lParam; +} NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW; + +#define NMTVGETINFOTIP WINELIB_NAME_AW(NMTVGETINFOTIP) +#define LPNMTVGETINFOTIP WINELIB_NAME_AW(LPNMTVGETINFOTIP) + +#include +typedef struct tagTVKEYDOWN +{ + NMHDR hdr; + WORD wVKey; + UINT flags; +} NMTVKEYDOWN, *LPNMTVKEYDOWN; +#include + +#define TV_KEYDOWN NMTVKEYDOWN + +#define TreeView_InsertItemA(hwnd, phdi) \ + (HTREEITEM)SNDMSGA((hwnd), TVM_INSERTITEMA, 0, \ + (LPARAM)(LPTVINSERTSTRUCTA)(phdi)) +#define TreeView_InsertItemW(hwnd,phdi) \ + (HTREEITEM)SNDMSGW((hwnd), TVM_INSERTITEMW, 0, \ + (LPARAM)(LPTVINSERTSTRUCTW)(phdi)) +#define TreeView_InsertItem WINELIB_NAME_AW(TreeView_InsertItem) + +#define TreeView_DeleteItem(hwnd, hItem) \ + (BOOL)SNDMSGA((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hItem)) +#define TreeView_DeleteAllItems(hwnd) \ + (BOOL)SNDMSGA((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT) +#define TreeView_Expand(hwnd, hitem, code) \ + (BOOL)SNDMSGA((hwnd), TVM_EXPAND, (WPARAM)code, \ + (LPARAM)(HTREEITEM)(hitem)) + +#define TreeView_GetItemRect(hwnd, hitem, prc, code) \ + (*(HTREEITEM *)prc = (hitem), (BOOL)SNDMSGA((hwnd), \ + TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT *)(prc))) + +#define TreeView_GetCount(hwnd) \ + (UINT)SNDMSGA((hwnd), TVM_GETCOUNT, 0, 0) +#define TreeView_GetIndent(hwnd) \ + (UINT)SNDMSGA((hwnd), TVM_GETINDENT, 0, 0) +#define TreeView_SetIndent(hwnd, indent) \ + (BOOL)SNDMSGA((hwnd), TVM_SETINDENT, (WPARAM)indent, 0) + +#define TreeView_GetImageList(hwnd, iImage) \ + (HIMAGELIST)SNDMSGA((hwnd), TVM_GETIMAGELIST, iImage, 0) + +#define TreeView_SetImageList(hwnd, himl, iImage) \ + (HIMAGELIST)SNDMSGA((hwnd), TVM_SETIMAGELIST, iImage, \ + (LPARAM)(HIMAGELIST)(himl)) + +#define TreeView_GetNextItem(hwnd, hitem, code) \ + (HTREEITEM)SNDMSGA((hwnd), TVM_GETNEXTITEM, (WPARAM)code,\ +(LPARAM)(HTREEITEM) (hitem)) + +#define TreeView_GetChild(hwnd, hitem) \ + TreeView_GetNextItem(hwnd, hitem , TVGN_CHILD) +#define TreeView_GetNextSibling(hwnd, hitem) \ + TreeView_GetNextItem(hwnd, hitem , TVGN_NEXT) +#define TreeView_GetPrevSibling(hwnd, hitem) \ + TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUS) +#define TreeView_GetParent(hwnd, hitem) \ + TreeView_GetNextItem(hwnd, hitem , TVGN_PARENT) +#define TreeView_GetFirstVisible(hwnd) \ + TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE) +#define TreeView_GetLastVisible(hwnd) \ + TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE) +#define TreeView_GetNextVisible(hwnd, hitem) \ + TreeView_GetNextItem(hwnd, hitem , TVGN_NEXTVISIBLE) +#define TreeView_GetPrevVisible(hwnd, hitem) \ + TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUSVISIBLE) +#define TreeView_GetSelection(hwnd) \ + TreeView_GetNextItem(hwnd, NULL, TVGN_CARET) +#define TreeView_GetDropHilight(hwnd) \ + TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE) +#define TreeView_GetRoot(hwnd) \ + TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT) +#define TreeView_GetLastVisible(hwnd) \ + TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE) + + +#define TreeView_Select(hwnd, hitem, code) \ + (BOOL)SNDMSGA((hwnd), TVM_SELECTITEM, (WPARAM)(code), \ +(LPARAM)(HTREEITEM)(hitem)) + + +#define TreeView_SelectItem(hwnd, hitem) \ + TreeView_Select(hwnd, hitem, TVGN_CARET) +#define TreeView_SelectDropTarget(hwnd, hitem) \ + TreeView_Select(hwnd, hitem, TVGN_DROPHILITE) +#define TreeView_SelectSetFirstVisible(hwnd, hitem) \ + TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE) + + +#define TreeView_GetItemA(hwnd, pitem) \ + (BOOL)SNDMSGA((hwnd), TVM_GETITEMA, 0, (LPARAM) (TVITEMA *)(pitem)) +#define TreeView_GetItemW(hwnd, pitem) \ + (BOOL)SNDMSGW((hwnd), TVM_GETITEMW, 0, (LPARAM) (TVITEMW *)(pitem)) +#define TreeView_GetItem WINELIB_NAME_AW(TreeView_GetItem) + +#define TreeView_SetItemA(hwnd, pitem) \ + (BOOL)SNDMSGA((hwnd), TVM_SETITEMA, 0, (LPARAM)(const TVITEMA *)(pitem)) +#define TreeView_SetItemW(hwnd, pitem) \ + (BOOL)SNDMSGW((hwnd), TVM_SETITEMW, 0, (LPARAM)(const TVITEMW *)(pitem)) +#define TreeView_SetItem WINELIB_NAME_AW(TreeView_SetItem) + +#define TreeView_EditLabel(hwnd, hitem) \ + (HWND)SNDMSGA((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem)) + +#define TreeView_GetEditControl(hwnd) \ + (HWND)SNDMSGA((hwnd), TVM_GETEDITCONTROL, 0, 0) + +#define TreeView_GetVisibleCount(hwnd) \ + (UINT)SNDMSGA((hwnd), TVM_GETVISIBLECOUNT, 0, 0) + +#define TreeView_HitTest(hwnd, lpht) \ + (HTREEITEM)SNDMSGA((hwnd), TVM_HITTEST, 0,\ +(LPARAM)(LPTVHITTESTINFO)(lpht)) + +#define TreeView_CreateDragImage(hwnd, hitem) \ + (HIMAGELIST)SNDMSGA((hwnd), TVM_CREATEDRAGIMAGE, 0,\ +(LPARAM)(HTREEITEM)(hitem)) + +#define TreeView_SortChildren(hwnd, hitem, recurse) \ + (BOOL)SNDMSGA((hwnd), TVM_SORTCHILDREN, (WPARAM)recurse,\ +(LPARAM)(HTREEITEM)(hitem)) + +#define TreeView_EnsureVisible(hwnd, hitem) \ + (BOOL)SNDMSGA((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(UINT)(hitem)) + +#define TreeView_SortChildrenCB(hwnd, psort, recurse) \ + (BOOL)SNDMSGA((hwnd), TVM_SORTCHILDRENCB, (WPARAM)recurse, \ + (LPARAM)(LPTV_SORTCB)(psort)) + +#define TreeView_EndEditLabelNow(hwnd, fCancel) \ + (BOOL)SNDMSGA((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0) + +#define TreeView_GetISearchString(hwnd, lpsz) \ + (BOOL)SNDMSGA((hwnd), TVM_GETISEARCHSTRING, 0, \ + (LPARAM)(LPTSTR)lpsz) + +#define TreeView_SetToolTips(hwnd, hwndTT) \ + (HWND)SNDMSGA((hwnd), TVM_SETTOOLTIPS, (WPARAM)(hwndTT), 0) + +#define TreeView_GetToolTips(hwnd) \ + (HWND)SNDMSGA((hwnd), TVM_GETTOOLTIPS, 0, 0) + +#define TreeView_SetItemHeight(hwnd, iHeight) \ + (INT)SNDMSGA((hwnd), TVM_SETITEMHEIGHT, (WPARAM)iHeight, 0) + +#define TreeView_GetItemHeight(hwnd) \ + (INT)SNDMSGA((hwnd), TVM_GETITEMHEIGHT, 0, 0) + +#define TreeView_SetBkColor(hwnd, clr) \ + (COLORREF)SNDMSGA((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)clr) + +#define TreeView_SetTextColor(hwnd, clr) \ + (COLORREF)SNDMSGA((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)clr) + +#define TreeView_GetBkColor(hwnd) \ + (COLORREF)SNDMSGA((hwnd), TVM_GETBKCOLOR, 0, 0) + +#define TreeView_GetTextColor(hwnd) \ + (COLORREF)SNDMSGA((hwnd), TVM_GETTEXTCOLOR, 0, 0) + +#define TreeView_SetScrollTime(hwnd, uTime) \ + (UINT)SNDMSGA((hwnd), TVM_SETSCROLLTIME, uTime, 0) + +#define TreeView_GetScrollTime(hwnd) \ + (UINT)SNDMSGA((hwnd), TVM_GETSCROLLTIME, 0, 0) + +#define TreeView_SetInsertMark(hwnd, hItem, fAfter) \ + (BOOL)SNDMSGA((hwnd), TVM_SETINSERTMARK, (WPARAM)(fAfter), \ + (LPARAM) (hItem)) + +#define TreeView_SetInsertMarkColor(hwnd, clr) \ + (COLORREF)SNDMSGA((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)clr) + +#define TreeView_GetInsertMarkColor(hwnd) \ + (COLORREF)SNDMSGA((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0) + +#define TreeView_SetItemState(hwndTV, hti, data, _mask) \ +{ TVITEM _TVi; \ + _TVi.mask = TVIF_STATE; \ + _TVi.hItem = hti; \ + _TVi.stateMask = _mask; \ + _TVi.state = data; \ + SNDMSG((hwndTV), TVM_SETITEM, 0, (LPARAM)&_TVi); \ +} + +#define TreeView_GetItemState(hwndTV, hti, mask) \ + (UINT)SNDMSGA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask)) +#define TreeView_GetCheckState(hwndTV, hti) \ + ((((UINT)(SNDMSGA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), \ + TVIS_STATEIMAGEMASK))) >> 12) -1) + +#define TreeView_SetLineColor(hwnd, clr) \ + (COLORREF)SNDMSGA((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr)) + +#define TreeView_GetLineColor(hwnd) \ + (COLORREF)SNDMSGA((hwnd), TVM_GETLINECOLOR, 0, 0) + +#define TreeView_MapAccIDToHTREEITEM(hwnd, id) \ + (HTREEITEM)SNDMSG((hwnd), TVM_MAPACCIDTOHTREEITEM, id, 0) + +#define TreeView_MapHTREEITEMToAccID(hwnd, htreeitem) \ + (UINT)SNDMSG((hwnd), TVM_MAPHTREEITEMTOACCID, (WPARAM)htreeitem, 0) + + +/* Listview control */ + +#define WC_LISTVIEWA "SysListView32" +#if defined(__GNUC__) +# define WC_LISTVIEWW (const WCHAR []){ 'S','y','s', \ + 'L','i','s','t','V','i','e','w','3','2',0 } +#elif defined(_MSC_VER) +# define WC_LISTVIEWW L"SysListView32" +#else +static const WCHAR WC_LISTVIEWW[] = { 'S','y','s', + 'L','i','s','t','V','i','e','w','3','2',0 }; #endif -#if _WIN32_IE >= 0x400 -#define TBIF_BYINDEX 0x80000000 -#define TBIF_COMMAND 32 -#define TBIF_IMAGE 1 -#define TBIF_LPARAM 16 -#define TBIF_SIZE 64 -#define TBIF_STATE 4 -#define TBIF_STYLE 8 -#define TBIF_TEXT 2 -#endif -#define TBM_GETPOS (WM_USER) -#define TBM_GETRANGEMIN (WM_USER+1) -#define TBM_GETRANGEMAX (WM_USER+2) -#define TBM_GETTIC (WM_USER+3) -#define TBM_SETTIC (WM_USER+4) -#define TBM_SETPOS (WM_USER+5) -#define TBM_SETRANGE (WM_USER+6) -#define TBM_SETRANGEMIN (WM_USER+7) -#define TBM_SETRANGEMAX (WM_USER+8) -#define TBM_CLEARTICS (WM_USER+9) -#define TBM_SETSEL (WM_USER+10) -#define TBM_SETSELSTART (WM_USER+11) -#define TBM_SETSELEND (WM_USER+12) -#define TBM_GETPTICS (WM_USER+14) -#define TBM_GETTICPOS (WM_USER+15) -#define TBM_GETNUMTICS (WM_USER+16) -#define TBM_GETSELSTART (WM_USER+17) -#define TBM_GETSELEND (WM_USER+18) -#define TBM_CLEARSEL (WM_USER+19) -#define TBM_SETTICFREQ (WM_USER+20) -#define TBM_SETPAGESIZE (WM_USER+21) -#define TBM_GETPAGESIZE (WM_USER+22) -#define TBM_SETLINESIZE (WM_USER+23) -#define TBM_GETLINESIZE (WM_USER+24) -#define TBM_GETTHUMBRECT (WM_USER+25) -#define TBM_GETCHANNELRECT (WM_USER+26) -#define TBM_SETTHUMBLENGTH (WM_USER+27) -#define TBM_GETTHUMBLENGTH (WM_USER+28) -#define TBM_SETTOOLTIPS (WM_USER+29) -#define TBM_GETTOOLTIPS (WM_USER+30) -#define TBM_SETTIPSIDE (WM_USER+31) -#define TBM_SETBUDDY (WM_USER+32) -#define TBM_GETBUDDY (WM_USER+33) -#define TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT -#define TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT -#define TB_LINEUP 0 -#define TB_LINEDOWN 1 -#define TB_PAGEUP 2 -#define TB_PAGEDOWN 3 -#define TB_THUMBPOSITION 4 -#define TB_THUMBTRACK 5 -#define TB_TOP 6 -#define TB_BOTTOM 7 -#define TB_ENDTRACK 8 -#define HOTKEYF_SHIFT 1 -#define HOTKEYF_CONTROL 2 -#define HOTKEYF_ALT 4 -#define HOTKEYF_EXT 8 -#define HKCOMB_NONE 1 -#define HKCOMB_S 2 -#define HKCOMB_C 4 -#define HKCOMB_A 8 -#define HKCOMB_SC 16 -#define HKCOMB_SA 32 -#define HKCOMB_CA 64 -#define HKCOMB_SCA 128 -#define HKM_SETHOTKEY (WM_USER+1) -#define HKM_GETHOTKEY (WM_USER+2) -#define HKM_SETRULES (WM_USER+3) -#define PBM_SETRANGE (WM_USER+1) -#define PBM_SETPOS (WM_USER+2) -#define PBM_DELTAPOS (WM_USER+3) -#define PBM_SETSTEP (WM_USER+4) -#define PBM_STEPIT (WM_USER+5) -#define PBM_SETRANGE32 1030 -#define PBM_GETRANGE 1031 -#define PBM_GETPOS 1032 -#define PBM_SETBARCOLOR 1033 -#define PBM_SETBKCOLOR CCM_SETBKCOLOR -#define PBS_SMOOTH 1 -#define PBS_VERTICAL 4 -#if (_WIN32_WINNT >= 0x0501) -#define PBS_MARQUEE 8 -#define PBM_SETMARQUEE (WM_USER+10) -#endif -#define LVS_ICON 0 -#define LVS_REPORT 1 -#define LVS_SMALLICON 2 -#define LVS_LIST 3 -#define LVS_TYPEMASK 3 -#define LVS_SINGLESEL 4 -#define LVS_SHOWSELALWAYS 8 -#define LVS_SORTASCENDING 16 -#define LVS_SORTDESCENDING 32 -#define LVS_SHAREIMAGELISTS 64 -#define LVS_NOLABELWRAP 128 -#define LVS_AUTOARRANGE 256 -#define LVS_EDITLABELS 512 -#define LVS_NOSCROLL 0x2000 -#define LVS_TYPESTYLEMASK 0xfc00 -#define LVS_ALIGNTOP 0 -#define LVS_ALIGNLEFT 0x800 -#define LVS_ALIGNMASK 0xc00 -#define LVS_OWNERDRAWFIXED 0x400 -#define LVS_NOCOLUMNHEADER 0x4000 -#define LVS_NOSORTHEADER 0x8000 -#if (_WIN32_IE >= 0x0300) -#define CDIS_CHECKED 8 -#define CDIS_DEFAULT 32 -#define CDIS_DISABLED 4 -#define CDIS_FOCUS 16 -#define CDIS_GRAYED 2 -#define CDIS_HOT 64 -#define CDIS_SELECTED 1 -#define CDIS_MARKED 128 -#define CDIS_INDETERMINATE 256 -#if (_WIN32_WINNT >= 0x0501) -#define CDIS_SHOWKEYBOARDCUES 512 -#endif -#define CDDS_POSTERASE 4 -#define CDDS_POSTPAINT 2 -#define CDDS_PREERASE 3 -#define CDDS_PREPAINT 1 -#define CDDS_ITEM 65536 -#define CDDS_ITEMPOSTERASE 65540 -#define CDDS_ITEMPOSTPAINT 65538 -#define CDDS_ITEMPREERASE 65539 -#define CDDS_ITEMPREPAINT 65537 -#if (_WIN32_IE >= 0x0400) -#define CDDS_SUBITEM 0x20000 -#endif -/* FIXME: missing CDRF_NOTIFYSUBITEMDRAW */ -#define CDRF_DODEFAULT 0 -#define CDRF_NOTIFYITEMDRAW 32 -#define CDRF_NOTIFYITEMERASE 128 -#define CDRF_NOTIFYPOSTERASE 64 -#define CDRF_NOTIFYPOSTPAINT 16 -#define CDRF_NEWFONT 2 -#define CDRF_SKIPDEFAULT 4 -#if (_WIN32_IE >= 0x0400) -#define LVBKIF_SOURCE_NONE 0x00000000 -#define LVBKIF_SOURCE_HBITMAP 0x00000001 -#define LVBKIF_SOURCE_URL 0x00000002 -#define LVBKIF_SOURCE_MASK 0x00000003 -#define LVBKIF_STYLE_NORMAL 0x00000000 -#define LVBKIF_STYLE_TILE 0x00000010 -#define LVBKIF_STYLE_MASK 0x00000010 -#endif /* _WIN32_IE >=0x0400 */ -#if (_WIN32_WINNT >= 0x501) -#define LVBKIF_FLAG_TILEOFFSET 0x00000100 -#define LVBKIF_TYPE_WATERMARK 0x10000000 -#endif /* _WIN32_WINNT >= 0x501 */ -#define LVS_OWNERDATA 4096 -#define LVS_EX_CHECKBOXES 4 -#define LVS_EX_FULLROWSELECT 32 -#define LVS_EX_GRIDLINES 1 -#define LVS_EX_HEADERDRAGDROP 16 -#define LVS_EX_ONECLICKACTIVATE 64 -#define LVS_EX_SUBITEMIMAGES 2 -#define LVS_EX_TRACKSELECT 8 -#define LVS_EX_TWOCLICKACTIVATE 128 -#define LVSICF_NOINVALIDATEALL 0x00000001 -#define LVSICF_NOSCROLL 0x00000002 -#if( _WIN32_IE >= 0x0400 ) -#define LVS_EX_FLATSB 0x00000100 -#define LVS_EX_REGIONAL 0x00000200 -#define LVS_EX_INFOTIP 0x00000400 -#define LVS_EX_UNDERLINEHOT 0x00000800 -#define LVS_EX_UNDERLINECOLD 0x00001000 -#define LVS_EX_MULTIWORKAREAS 0x00002000 -#endif /* _WIN32_IE >=0x0400 */ -#if( _WIN32_IE >= 0x0500 ) -#define LVS_EX_LABELTIP 0x00004000 -#define LVS_EX_BORDERSELECT 0x00008000 +#define WC_LISTVIEW WINELIB_NAME_AW(WC_LISTVIEW) + +#define LVSCW_AUTOSIZE -1 +#define LVSCW_AUTOSIZE_USEHEADER -2 + +#define LVS_ICON 0x0000 +#define LVS_REPORT 0x0001 +#define LVS_SMALLICON 0x0002 +#define LVS_LIST 0x0003 +#define LVS_TYPEMASK 0x0003 +#define LVS_SINGLESEL 0x0004 +#define LVS_SHOWSELALWAYS 0x0008 +#define LVS_SORTASCENDING 0x0010 +#define LVS_SORTDESCENDING 0x0020 +#define LVS_SHAREIMAGELISTS 0x0040 +#define LVS_NOLABELWRAP 0x0080 +#define LVS_AUTOARRANGE 0x0100 +#define LVS_EDITLABELS 0x0200 +#define LVS_OWNERDATA 0x1000 +#define LVS_NOSCROLL 0x2000 +#define LVS_TYPESTYLEMASK 0xfc00 +#define LVS_ALIGNTOP 0x0000 +#define LVS_ALIGNLEFT 0x0800 +#define LVS_ALIGNMASK 0x0c00 +#define LVS_OWNERDRAWFIXED 0x0400 +#define LVS_NOCOLUMNHEADER 0x4000 +#define LVS_NOSORTHEADER 0x8000 + +#define LVS_EX_GRIDLINES 0x0001 +#define LVS_EX_SUBITEMIMAGES 0x0002 +#define LVS_EX_CHECKBOXES 0x0004 +#define LVS_EX_TRACKSELECT 0x0008 +#define LVS_EX_HEADERDRAGDROP 0x0010 +#define LVS_EX_FULLROWSELECT 0x0020 +#define LVS_EX_ONECLICKACTIVATE 0x0040 +#define LVS_EX_TWOCLICKACTIVATE 0x0080 +#define LVS_EX_FLATSB 0x0100 +#define LVS_EX_REGIONAL 0x0200 +#define LVS_EX_INFOTIP 0x0400 +#define LVS_EX_UNDERLINEHOT 0x0800 +#define LVS_EX_UNDERLINECOLD 0x1000 +#define LVS_EX_MULTIWORKAREAS 0x2000 +#define LVS_EX_LABELTIP 0x4000 +#define LVS_EX_BORDERSELECT 0x8000 #define LVS_EX_DOUBLEBUFFER 0x00010000 #define LVS_EX_HIDELABELS 0x00020000 #define LVS_EX_SINGLEROW 0x00040000 @@ -1047,1234 +2944,718 @@ extern "C" { #define LVS_EX_AUTOSIZECOLUMNS 0x10000000 #define LVS_EX_COLUMNSNAPPOINTS 0x40000000 #define LVS_EX_COLUMNOVERFLOW 0x80000000 -#endif /* _WIN32_IE >= 0x0500 */ -#endif /* _WIN32_IE >= 0x0300 */ -#define LVSIL_NORMAL 0 -#define LVSIL_SMALL 1 -#define LVSIL_STATE 2 -#define LVM_GETBKCOLOR LVM_FIRST -#define LVM_SETBKCOLOR (LVM_FIRST+1) -#define LVM_GETIMAGELIST (LVM_FIRST+2) -#define LVM_SETIMAGELIST (LVM_FIRST+3) -#define LVM_GETITEMCOUNT (LVM_FIRST+4) -#define LVIF_TEXT 1 -#define LVIF_IMAGE 2 -#define LVIF_PARAM 4 -#define LVIF_STATE 8 -#if (_WIN32_IE >= 0x0300) -#define LVIF_INDENT 16 -#define LVIF_NORECOMPUTE 2048 -#endif -#if (_WIN32_WINNT >= 0x0501) -#define LVIF_GROUPID 128 -#define LVIF_COLUMNS 256 -#endif -#define LVIS_FOCUSED 1 -#define LVIS_SELECTED 2 -#define LVIS_CUT 4 -#define LVIS_DROPHILITED 8 -#define LVIS_OVERLAYMASK 0xF00 -#define LVIS_STATEIMAGEMASK 0xF000 -#define LPSTR_TEXTCALLBACKW ((LPWSTR)-1) -#define LPSTR_TEXTCALLBACKA ((LPSTR)-1) -#define I_IMAGECALLBACK (-1) -#define LVM_GETITEMA (LVM_FIRST+5) -#define LVM_GETITEMW (LVM_FIRST+75) -#define LVM_SETITEMA (LVM_FIRST+6) -#define LVM_SETITEMW (LVM_FIRST+76) -#define LVM_INSERTITEMA (LVM_FIRST+7) -#define LVM_INSERTITEMW (LVM_FIRST+77) -#define LVM_DELETEITEM (LVM_FIRST+8) -#define LVM_DELETEALLITEMS (LVM_FIRST+9) -#define LVM_GETCALLBACKMASK (LVM_FIRST+10) -#define LVM_SETCALLBACKMASK (LVM_FIRST+11) -#if( _WIN32_IE >= 0x0400 ) -#define LVM_SETBKIMAGEA (LVM_FIRST + 68) -#define LVM_SETBKIMAGEW (LVM_FIRST + 138) -#define LVM_GETBKIMAGEA (LVM_FIRST + 69) -#define LVM_GETBKIMAGEW (LVM_FIRST + 139) -#define LV_MAX_WORKAREAS 16 -#define LVM_SETWORKAREAS (LVM_FIRST+65) -#define LVM_GETWORKAREAS (LVM_FIRST+70) -#define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73) -#define LVM_GETSELECTIONMARK (LVM_FIRST+66) -#define LVM_SETSELECTIONMARK (LVM_FIRST+67) -#define LVM_SETHOVERTIME (LVM_FIRST+71) -#define LVM_GETHOVERTIME (LVM_FIRST+72) -#define LVM_SETTOOLTIPS (LVM_FIRST+74) -#define LVM_GETTOOLTIPS (LVM_FIRST+78) -#define LVM_GETUNICODEFORMAT (CCM_GETUNICODEFORMAT) -#define LVM_SETUNICODEFORMAT (CCM_SETUNICODEFORMAT) -#endif /* _WIN32_IE >= 0x0400 */ -#define LVNI_ALL 0 -#define LVNI_FOCUSED 1 -#define LVNI_SELECTED 2 -#define LVNI_CUT 4 -#define LVNI_DROPHILITED 8 -#define LVNI_ABOVE 256 -#define LVNI_BELOW 512 -#define LVNI_TOLEFT 1024 -#define LVNI_TORIGHT 2048 -#define LVM_GETNEXTITEM (LVM_FIRST+12) -#define LVFI_PARAM 1 -#define LVFI_STRING 2 -#define LVFI_PARTIAL 8 -#define LVFI_WRAP 32 -#define LVFI_NEARESTXY 64 -#define LVIF_DI_SETITEM 0x1000 -#define LVM_FINDITEMA (LVM_FIRST+13) -#define LVM_FINDITEMW (LVM_FIRST+83) -#define LVIR_BOUNDS 0 -#define LVIR_ICON 1 -#define LVIR_LABEL 2 -#define LVIR_SELECTBOUNDS 3 -#define LVM_GETITEMRECT (LVM_FIRST+14) -#define LVM_SETITEMPOSITION (LVM_FIRST+15) -#define LVM_GETITEMPOSITION (LVM_FIRST+16) -#define LVM_GETSTRINGWIDTHA (LVM_FIRST+17) -#define LVM_GETSTRINGWIDTHW (LVM_FIRST+87) -#define LVHT_NOWHERE 1 -#define LVHT_ONITEMICON 2 -#define LVHT_ONITEMLABEL 4 -#define LVHT_ONITEMSTATEICON 8 -#define LVHT_ONITEM (LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON) -#define LVHT_ABOVE 8 -#define LVHT_BELOW 16 -#define LVHT_TORIGHT 32 -#define LVHT_TOLEFT 64 -#define LVM_HITTEST (LVM_FIRST+18) -#define LVM_ENSUREVISIBLE (LVM_FIRST+19) -#define LVM_SCROLL (LVM_FIRST+20) -#define LVM_REDRAWITEMS (LVM_FIRST+21) -#define LVA_DEFAULT 0 -#define LVA_ALIGNLEFT 1 -#define LVA_ALIGNTOP 2 -#define LVA_SNAPTOGRID 5 -#define LVM_ARRANGE (LVM_FIRST+22) -#define LVM_EDITLABELA (LVM_FIRST+23) -#define LVM_EDITLABELW (LVM_FIRST+118) -#define LVM_GETEDITCONTROL (LVM_FIRST+24) -#define LVCF_FMT 1 -#define LVCF_WIDTH 2 -#define LVCF_TEXT 4 -#define LVCF_SUBITEM 8 -#if (_WIN32_IE >= 0x0300) -#define LVCF_IMAGE 16 -#define LVCF_ORDER 32 -#endif -#define LVCFMT_LEFT 0 -#define LVCFMT_RIGHT 1 -#define LVCFMT_CENTER 2 -#define LVCFMT_JUSTIFYMASK 3 -#if (_WIN32_IE >= 0x0300) -#define LVCFMT_BITMAP_ON_RIGHT 4096 -#define LVCFMT_COL_HAS_IMAGES 32768 -#define LVCFMT_IMAGE 2048 -#endif -#define LVM_GETCOLUMNA (LVM_FIRST+25) -#define LVM_GETCOLUMNW (LVM_FIRST+95) -#define LVM_SETCOLUMNA (LVM_FIRST+26) -#define LVM_SETCOLUMNW (LVM_FIRST+96) -#define LVM_INSERTCOLUMNA (LVM_FIRST+27) -#define LVM_INSERTCOLUMNW (LVM_FIRST+97) -#define LVM_DELETECOLUMN (LVM_FIRST+28) -#define LVM_GETCOLUMNWIDTH (LVM_FIRST+29) -#define LVSCW_AUTOSIZE (-1) -#define LVSCW_AUTOSIZE_USEHEADER (-2) -#define LVM_SETCOLUMNWIDTH (LVM_FIRST+30) -#define LVM_CREATEDRAGIMAGE (LVM_FIRST+33) -#define LVM_GETVIEWRECT (LVM_FIRST+34) -#define LVM_GETTEXTCOLOR (LVM_FIRST+35) -#define LVM_SETTEXTCOLOR (LVM_FIRST+36) -#define LVM_GETTEXTBKCOLOR (LVM_FIRST+37) -#define LVM_SETTEXTBKCOLOR (LVM_FIRST+38) -#define LVM_GETTOPINDEX (LVM_FIRST+39) -#define LVM_GETCOUNTPERPAGE (LVM_FIRST+40) -#define LVM_GETORIGIN (LVM_FIRST+41) -#define LVM_GETORIGIN (LVM_FIRST+41) -#define LVM_UPDATE (LVM_FIRST+42) -#define LVM_SETITEMSTATE (LVM_FIRST+43) -#define LVM_GETITEMSTATE (LVM_FIRST+44) -#define LVM_GETITEMTEXTA (LVM_FIRST+45) -#define LVM_GETITEMTEXTW (LVM_FIRST+115) -#define LVM_SETITEMTEXTA (LVM_FIRST+46) -#define LVM_SETITEMTEXTW (LVM_FIRST+116) -#define LVM_SETITEMCOUNT (LVM_FIRST+47) -#define LVM_SORTITEMS (LVM_FIRST+48) -#define LVM_SETITEMPOSITION32 (LVM_FIRST+49) -#define LVM_GETSELECTEDCOUNT (LVM_FIRST+50) -#define LVM_GETITEMSPACING (LVM_FIRST+51) -#define LVM_GETISEARCHSTRINGA (LVM_FIRST+52) -#define LVM_GETISEARCHSTRINGW (LVM_FIRST+117) -#if (_WIN32_IE >= 0x0300) -#define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64) + +#define LVCF_FMT 0x0001 +#define LVCF_WIDTH 0x0002 +#define LVCF_TEXT 0x0004 +#define LVCF_SUBITEM 0x0008 +#define LVCF_IMAGE 0x0010 +#define LVCF_ORDER 0x0020 + +#define LVCFMT_LEFT 0x0000 +#define LVCFMT_RIGHT 0x0001 +#define LVCFMT_CENTER 0x0002 +#define LVCFMT_JUSTIFYMASK 0x0003 +#define LVCFMT_FIXED_WIDTH 0x0100 +#define LVCFMT_IMAGE 0x0800 +#define LVCFMT_BITMAP_ON_RIGHT 0x1000 +#define LVCFMT_COL_HAS_IMAGES 0x8000 +#define LVCFMT_NO_DPI_SCALE 0x00040000 +#define LVCFMT_FIXED_RATIO 0x00080000 +#define LVCFMT_LINE_BREAK 0x00100000 +#define LVCFMT_FILL 0x00200000 +#define LVCFMT_WRAP 0x00400000 +#define LVCFMT_NO_TITLE 0x00800000 +#define LVCFMT_SPLIT_BUTTON 0x01000000 +#define LVCFMT_TILE_PLACEMENTMASK (LVCFMT_LINE_BREAK | LVCFMT_FILL) + +#define LVSIL_NORMAL 0 +#define LVSIL_SMALL 1 +#define LVSIL_STATE 2 + +/* following 2 flags only for LVS_OWNERDATA listviews */ +/* and only in report or list mode */ +#define LVSICF_NOINVALIDATEALL 0x0001 +#define LVSICF_NOSCROLL 0x0002 + + +#define LVFI_PARAM 0X0001 +#define LVFI_STRING 0X0002 +#define LVFI_PARTIAL 0X0008 +#define LVFI_WRAP 0X0020 +#define LVFI_NEARESTXY 0X0040 + +#define LVIF_TEXT 0x0001 +#define LVIF_IMAGE 0x0002 +#define LVIF_PARAM 0x0004 +#define LVIF_STATE 0x0008 +#define LVIF_INDENT 0x0010 +#define LVIF_GROUPID 0x0100 +#define LVIF_COLUMNS 0x0200 +#define LVIF_NORECOMPUTE 0x0800 +#define LVIF_DI_SETITEM 0x1000 +#define LVIF_COLFMT 0x00010000 + +#define LVIR_BOUNDS 0x0000 +#define LVIR_ICON 0x0001 +#define LVIR_LABEL 0x0002 +#define LVIR_SELECTBOUNDS 0x0003 + +#define LVIS_FOCUSED 0x0001 +#define LVIS_SELECTED 0x0002 +#define LVIS_CUT 0x0004 +#define LVIS_DROPHILITED 0x0008 +#define LVIS_ACTIVATING 0x0020 + +#define LVIS_OVERLAYMASK 0x0F00 +#define LVIS_STATEIMAGEMASK 0xF000 + +#define LVNI_ALL 0x0000 +#define LVNI_FOCUSED 0x0001 +#define LVNI_SELECTED 0x0002 +#define LVNI_CUT 0x0004 +#define LVNI_DROPHILITED 0x0008 + +#define LVNI_ABOVE 0x0100 +#define LVNI_BELOW 0x0200 +#define LVNI_TOLEFT 0x0400 +#define LVNI_TORIGHT 0x0800 + +#define LVHT_NOWHERE 0x0001 +#define LVHT_ONITEMICON 0x0002 +#define LVHT_ONITEMLABEL 0x0004 +#define LVHT_ONITEMSTATEICON 0x0008 +#define LVHT_ONITEM (LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON) + +#define LVHT_ABOVE 0x0008 +#define LVHT_BELOW 0x0010 +#define LVHT_TORIGHT 0x0020 +#define LVHT_TOLEFT 0x0040 + +#define LV_VIEW_ICON 0x0000 +#define LV_VIEW_DETAILS 0x0001 +#define LV_VIEW_SMALLICON 0x0002 +#define LV_VIEW_LIST 0x0003 +#define LV_VIEW_TILE 0x0004 +#define LV_VIEW_MAX 0x0004 + +#define LVGF_NONE 0x00000000 +#define LVGF_HEADER 0x00000001 +#define LVGF_FOOTER 0x00000002 +#define LVGF_STATE 0x00000004 +#define LVGF_ALIGN 0x00000008 +#define LVGF_GROUPID 0x00000010 +#define LVGF_SUBTITLE 0x00000100 +#define LVGF_TASK 0x00000200 +#define LVGF_DESCRIPTIONTOP 0x00000400 +#define LVGF_DESCRIPTIONBOTTOM 0x00000800 +#define LVGF_TITLEIMAGE 0x00001000 +#define LVGF_EXTENDEDIMAGE 0x00002000 +#define LVGF_ITEMS 0x00004000 +#define LVGF_SUBSET 0x00008000 +#define LVGF_SUBSETITEMS 0x00010000 + +#define LVGS_NORMAL 0x00000000 +#define LVGS_COLLAPSED 0x00000001 +#define LVGS_HIDDEN 0x00000002 + +#define LVGA_HEADER_LEFT 0x00000001 +#define LVGA_HEADER_CENTER 0x00000002 +#define LVGA_HEADER_RIGHT 0x00000004 +#define LVGA_FOOTER_LEFT 0x00000008 +#define LVGA_FOOTER_CENTER 0x00000010 +#define LVGA_FOOTER_RIGHT 0x00000020 + +#define LVGMF_NONE 0x00000000 +#define LVGMF_BORDERSIZE 0x00000001 +#define LVGMF_BORDERCOLOR 0x00000002 +#define LVGMF_TEXTCOLOR 0x00000004 + +#define LVTVIF_AUTOSIZE 0x00000000 +#define LVTVIF_FIXEDWIDTH 0x00000001 +#define LVTVIF_FIXEDHEIGHT 0x00000002 +#define LVTVIF_FIXEDSIZE 0x00000003 +#define LVTVIF_EXTENDED 0x00000004 + +#define LVTVIM_TILESIZE 0x00000001 +#define LVTVIM_COLUMNS 0x00000002 +#define LVTVIM_LABELMARGIN 0x00000004 + +#define LVIM_AFTER 0x00000001 + +#define LVM_FIRST 0x1000 +#define LVM_GETBKCOLOR (LVM_FIRST+0) +#define LVM_SETBKCOLOR (LVM_FIRST+1) +#define LVM_GETIMAGELIST (LVM_FIRST+2) +#define LVM_SETIMAGELIST (LVM_FIRST+3) +#define LVM_GETITEMCOUNT (LVM_FIRST+4) +#define LVM_GETITEMA (LVM_FIRST+5) +#define LVM_GETITEMW (LVM_FIRST+75) +#define LVM_GETITEM WINELIB_NAME_AW(LVM_GETITEM) +#define LVM_SETITEMA (LVM_FIRST+6) +#define LVM_SETITEMW (LVM_FIRST+76) +#define LVM_SETITEM WINELIB_NAME_AW(LVM_SETITEM) +#define LVM_INSERTITEMA (LVM_FIRST+7) +#define LVM_INSERTITEMW (LVM_FIRST+77) +#define LVM_INSERTITEM WINELIB_NAME_AW(LVM_INSERTITEM) +#define LVM_DELETEITEM (LVM_FIRST+8) +#define LVM_DELETEALLITEMS (LVM_FIRST+9) +#define LVM_GETCALLBACKMASK (LVM_FIRST+10) +#define LVM_SETCALLBACKMASK (LVM_FIRST+11) +#define LVM_GETNEXTITEM (LVM_FIRST+12) +#define LVM_FINDITEMA (LVM_FIRST+13) +#define LVM_FINDITEMW (LVM_FIRST+83) +#define LVM_FINDITEM WINELIB_NAME_AW(LVM_FINDITEM) +#define LVM_GETITEMRECT (LVM_FIRST+14) +#define LVM_SETITEMPOSITION (LVM_FIRST+15) +#define LVM_GETITEMPOSITION (LVM_FIRST+16) +#define LVM_GETSTRINGWIDTHA (LVM_FIRST+17) +#define LVM_GETSTRINGWIDTHW (LVM_FIRST+87) +#define LVM_GETSTRINGWIDTH WINELIB_NAME_AW(LVM_GETSTRINGWIDTH) +#define LVM_HITTEST (LVM_FIRST+18) +#define LVM_ENSUREVISIBLE (LVM_FIRST+19) +#define LVM_SCROLL (LVM_FIRST+20) +#define LVM_REDRAWITEMS (LVM_FIRST+21) +#define LVM_ARRANGE (LVM_FIRST+22) +#define LVM_EDITLABELA (LVM_FIRST+23) +#define LVM_EDITLABELW (LVM_FIRST+118) +#define LVM_EDITLABEL WINELIB_NAME_AW(LVM_EDITLABEL) +#define LVM_GETEDITCONTROL (LVM_FIRST+24) +#define LVM_GETCOLUMNA (LVM_FIRST+25) +#define LVM_GETCOLUMNW (LVM_FIRST+95) +#define LVM_GETCOLUMN WINELIB_NAME_AW(LVM_GETCOLUMN) +#define LVM_SETCOLUMNA (LVM_FIRST+26) +#define LVM_SETCOLUMNW (LVM_FIRST+96) +#define LVM_SETCOLUMN WINELIB_NAME_AW(LVM_SETCOLUMN) +#define LVM_INSERTCOLUMNA (LVM_FIRST+27) +#define LVM_INSERTCOLUMNW (LVM_FIRST+97) +#define LVM_INSERTCOLUMN WINELIB_NAME_AW(LVM_INSERTCOLUMN) +#define LVM_DELETECOLUMN (LVM_FIRST+28) +#define LVM_GETCOLUMNWIDTH (LVM_FIRST+29) +#define LVM_SETCOLUMNWIDTH (LVM_FIRST+30) +#define LVM_GETHEADER (LVM_FIRST+31) + +#define LVM_CREATEDRAGIMAGE (LVM_FIRST+33) +#define LVM_GETVIEWRECT (LVM_FIRST+34) +#define LVM_GETTEXTCOLOR (LVM_FIRST+35) +#define LVM_SETTEXTCOLOR (LVM_FIRST+36) +#define LVM_GETTEXTBKCOLOR (LVM_FIRST+37) +#define LVM_SETTEXTBKCOLOR (LVM_FIRST+38) +#define LVM_GETTOPINDEX (LVM_FIRST+39) +#define LVM_GETCOUNTPERPAGE (LVM_FIRST+40) +#define LVM_GETORIGIN (LVM_FIRST+41) +#define LVM_UPDATE (LVM_FIRST+42) +#define LVM_SETITEMSTATE (LVM_FIRST+43) +#define LVM_GETITEMSTATE (LVM_FIRST+44) +#define LVM_GETITEMTEXTA (LVM_FIRST+45) +#define LVM_GETITEMTEXTW (LVM_FIRST+115) +#define LVM_GETITEMTEXT WINELIB_NAME_AW(LVM_GETITEMTEXT) +#define LVM_SETITEMTEXTA (LVM_FIRST+46) +#define LVM_SETITEMTEXTW (LVM_FIRST+116) +#define LVM_SETITEMTEXT WINELIB_NAME_AW(LVM_SETITEMTEXT) +#define LVM_SETITEMCOUNT (LVM_FIRST+47) +#define LVM_SORTITEMS (LVM_FIRST+48) +#define LVM_SETITEMPOSITION32 (LVM_FIRST+49) +#define LVM_GETSELECTEDCOUNT (LVM_FIRST+50) +#define LVM_GETITEMSPACING (LVM_FIRST+51) +#define LVM_GETISEARCHSTRINGA (LVM_FIRST+52) +#define LVM_GETISEARCHSTRINGW (LVM_FIRST+117) +#define LVM_GETISEARCHSTRING WINELIB_NAME_AW(LVM_GETISEARCHSTRING) +#define LVM_SETICONSPACING (LVM_FIRST+53) #define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54) #define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55) +#define LVM_GETSUBITEMRECT (LVM_FIRST+56) +#define LVM_SUBITEMHITTEST (LVM_FIRST+57) #define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58) #define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59) -#define LVM_GETHEADER (LVM_FIRST+31) -#define LVM_GETHOTCURSOR (LVM_FIRST+63) -#define LVM_GETHOTITEM (LVM_FIRST+61) -#define LVM_GETSUBITEMRECT (LVM_FIRST+56) -#define LVM_SETHOTCURSOR (LVM_FIRST+62) -#define LVM_SETHOTITEM (LVM_FIRST+60) -#define LVM_SETICONSPACING (LVM_FIRST+53) -#define LVM_SUBITEMHITTEST (LVM_FIRST+57) -#endif -#define LVN_ITEMCHANGING LVN_FIRST -#define LVN_ITEMCHANGED (LVN_FIRST-1) -#define LVN_INSERTITEM (LVN_FIRST-2) -#define LVN_DELETEITEM (LVN_FIRST-3) -#define LVN_DELETEALLITEMS (LVN_FIRST-4) -#define LVN_BEGINLABELEDITA (LVN_FIRST-5) -#define LVN_BEGINLABELEDITW (LVN_FIRST-75) -#define LVN_ENDLABELEDITA (LVN_FIRST-6) -#define LVN_ENDLABELEDITW (LVN_FIRST-76) -#define LVN_COLUMNCLICK (LVN_FIRST-8) -#define LVN_BEGINDRAG (LVN_FIRST-9) -#define LVN_BEGINRDRAG (LVN_FIRST-11) -#define LVN_GETDISPINFOA (LVN_FIRST-50) -#define LVN_GETDISPINFOW (LVN_FIRST-77) -#define LVN_SETDISPINFOA (LVN_FIRST-51) -#define LVN_SETDISPINFOW (LVN_FIRST-78) -#define LVN_KEYDOWN (LVN_FIRST-55) -#define LVN_MARQUEEBEGIN (LVN_FIRST-56) -#if (_WIN32_IE >= 0x0400) -#define LVN_GETINFOTIPA (LVN_FIRST-57) -#define LVN_GETINFOTIPW (LVN_FIRST-58) -#define LVKF_ALT 0x0001 -#define LVKF_CONTROL 0x0002 -#define LVKF_SHIFT 0x0004 -#define LVGIT_UNFOLDED 1 -#endif -#define TVS_HASBUTTONS 1 -#define TVS_HASLINES 2 -#define TVS_LINESATROOT 4 -#define TVS_EDITLABELS 8 -#define TVS_DISABLEDRAGDROP 16 -#define TVS_SHOWSELALWAYS 32 -#if (_WIN32_IE >= 0x0300) -#define TVS_CHECKBOXES 256 -#define TVS_NOTOOLTIPS 128 -#define TVS_RTLREADING 64 -#define TVS_TRACKSELECT 512 -#endif -#if (_WIN32_IE >= 0x0400) -#define TVS_FULLROWSELECT 4096 -#define TVS_INFOTIP 2048 -#define TVS_NONEVENHEIGHT 16384 -#define TVS_NOSCROLL 8192 -#define TVS_SINGLEEXPAND 1024 -#endif -#if( _WIN32_IE >= 0x0500 ) -#define TVS_NOHSCROLL 0x8000 -#endif /* _WIN32_IE >= 0x0500 */ -#define TVIF_TEXT 1 -#define TVIF_IMAGE 2 -#define TVIF_PARAM 4 -#define TVIF_STATE 8 -#define TVIF_HANDLE 16 -#define TVIF_SELECTEDIMAGE 32 -#define TVIF_CHILDREN 64 -#if (_WIN32_IE >= 0x0400) -#define TVIF_INTEGRAL 0x0080 -#endif /* _WIN32_IE >= 0x0400 */ -#define TVIS_FOCUSED 1 -#define TVIS_SELECTED 2 -#define TVIS_CUT 4 -#define TVIS_DROPHILITED 8 -#define TVIS_BOLD 16 -#define TVIS_EXPANDED 32 -#define TVIS_EXPANDEDONCE 64 -#define TVIS_OVERLAYMASK 0xF00 -#define TVIS_STATEIMAGEMASK 0xF000 -#define TVIS_USERMASK 0xF000 -#define I_CHILDRENCALLBACK (-1) -#define TVI_ROOT ((HTREEITEM)0xFFFF0000) -#define TVI_FIRST ((HTREEITEM)0xFFFF0001) -#define TVI_LAST ((HTREEITEM)0xFFFF0002) -#define TVI_SORT ((HTREEITEM)0xFFFF0003) -#define TVSIL_NORMAL 0 -#define TVSIL_STATE 2 -#define TVM_INSERTITEMA TV_FIRST -#define TVM_INSERTITEMW (TV_FIRST+50) -#define TVM_DELETEITEM (TV_FIRST+1) -#define TVM_EXPAND (TV_FIRST+2) -#define TVM_GETITEMRECT (TV_FIRST+4) -#define TVM_GETCOUNT (TV_FIRST+5) -#define TVM_GETINDENT (TV_FIRST+6) -#define TVM_SETINDENT (TV_FIRST+7) -#define TVM_GETIMAGELIST (TV_FIRST+8) -#define TVM_SETIMAGELIST (TV_FIRST+9) -#define TVM_GETNEXTITEM (TV_FIRST+10) -#define TVM_SELECTITEM (TV_FIRST+11) -#define TVM_GETITEMA (TV_FIRST+12) -#define TVM_GETITEMW (TV_FIRST+62) -#define TVM_SETITEMA (TV_FIRST+13) -#define TVM_SETITEMW (TV_FIRST+63) -#define TVM_EDITLABELA (TV_FIRST+14) -#define TVM_EDITLABELW (TV_FIRST+65) -#define TVM_GETEDITCONTROL (TV_FIRST+15) -#define TVM_GETVISIBLECOUNT (TV_FIRST+16) -#define TVM_HITTEST (TV_FIRST+17) -#define TVM_CREATEDRAGIMAGE (TV_FIRST+18) -#define TVM_SORTCHILDREN (TV_FIRST+19) -#define TVM_ENSUREVISIBLE (TV_FIRST+20) -#define TVM_SORTCHILDRENCB (TV_FIRST+21) -#define TVM_ENDEDITLABELNOW (TV_FIRST+22) -#define TVM_GETISEARCHSTRINGA (TV_FIRST+23) -#define TVM_GETISEARCHSTRINGW (TV_FIRST+64) -#if (_WIN32_IE >= 0x0300) -#define TVM_GETTOOLTIPS (TV_FIRST+25) -#define TVM_SETTOOLTIPS (TV_FIRST+24) -#endif -#if (_WIN32_IE >= 0x0400) -#define TVM_GETBKCOLOR (TV_FIRST+31) -#define TVM_GETINSERTMARKCOLOR (TV_FIRST+38) -#define TVM_GETITEMHEIGHT (TV_FIRST+28) -#define TVM_GETSCROLLTIME (TV_FIRST+34) -#define TVM_GETTEXTCOLOR (TV_FIRST+32) -#define TVM_SETBKCOLOR (TV_FIRST+29) -#define TVM_SETINSERTMARK (TV_FIRST+26) -#define TVM_SETINSERTMARKCOLOR (TV_FIRST+37) -#define TVM_SETITEMHEIGHT (TV_FIRST+27) -#define TVM_SETSCROLLTIME (TV_FIRST+33) -#define TVM_SETTEXTCOLOR (TV_FIRST+30) -#define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT -#define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT -#endif -#if (_WIN32_IE >= 0x0500) -#define TVM_GETITEMSTATE (TV_FIRST+39) -#define TVM_SETLINECOLOR (TV_FIRST+40) -#define TVM_GETLINECOLOR (TV_FIRST+41) -#endif -#define TVE_COLLAPSE 1 -#define TVE_EXPAND 2 -#define TVE_TOGGLE 3 -#define TVE_COLLAPSERESET 0x8000 -#if (_WIN32_IE >= 0x0300) -#define TVE_EXPANDPARTIAL 0x4000 -#endif -#define TVC_UNKNOWN 0 -#define TVC_BYMOUSE 1 -#define TVC_BYKEYBOARD 2 -#define TVGN_ROOT 0 -#define TVGN_NEXT 1 -#define TVGN_PREVIOUS 2 -#define TVGN_PARENT 3 -#define TVGN_CHILD 4 -#define TVGN_FIRSTVISIBLE 5 -#define TVGN_NEXTVISIBLE 6 -#define TVGN_PREVIOUSVISIBLE 7 -#define TVGN_DROPHILITE 8 -#define TVGN_CARET 9 -#if (_WIN32_IE >= 0x0400) -#define TVGN_LASTVISIBLE 10 -#endif -#define TVN_SELCHANGINGA (TVN_FIRST-1) -#define TVN_SELCHANGINGW (TVN_FIRST-50) -#define TVN_SELCHANGEDA (TVN_FIRST-2) -#define TVN_SELCHANGEDW (TVN_FIRST-51) -#define TVN_GETDISPINFOA (TVN_FIRST-3) -#define TVN_GETDISPINFOW (TVN_FIRST-52) -#define TVN_SETDISPINFOA (TVN_FIRST-4) -#define TVN_SETDISPINFOW (TVN_FIRST-53) -#define TVN_ITEMEXPANDINGA (TVN_FIRST-5) -#define TVN_ITEMEXPANDINGW (TVN_FIRST-54) -#define TVN_ITEMEXPANDEDA (TVN_FIRST-6) -#define TVN_ITEMEXPANDEDW (TVN_FIRST-55) -#define TVN_BEGINDRAGA (TVN_FIRST-7) -#define TVN_BEGINDRAGW (TVN_FIRST-56) -#define TVN_BEGINRDRAGA (TVN_FIRST-8) -#define TVN_BEGINRDRAGW (TVN_FIRST-57) -#define TVN_DELETEITEMA (TVN_FIRST-9) -#define TVN_DELETEITEMW (TVN_FIRST-58) -#define TVN_BEGINLABELEDITA (TVN_FIRST-10) -#define TVN_BEGINLABELEDITW (TVN_FIRST-59) -#define TVN_ENDLABELEDITA (TVN_FIRST-11) -#define TVN_ENDLABELEDITW (TVN_FIRST-60) -#define TVN_KEYDOWN (TVN_FIRST-12) -#if (_WIN32_IE >= 0x0400) -#define TVN_GETINFOTIPA (TVN_FIRST-13) -#define TVN_GETINFOTIPW (TVN_FIRST-14) -#define TVN_SINGLEEXPAND (TVN_FIRST-15) -#define TVNRET_DEFAULT 0 -#define TVNRET_SKIPOLD 1 -#define TVNRET_SKIPNEW 2 -#endif /* _WIN32_IE >= 0x0400 */ -#define TVIF_DI_SETITEM 0x1000 -#define TVHT_NOWHERE 1 -#define TVHT_ONITEMICON 2 -#define TVHT_ONITEMLABEL 4 -#define TVHT_ONITEM (TVHT_ONITEMICON|TVHT_ONITEMLABEL|TVHT_ONITEMSTATEICON) -#define TVHT_ONITEMINDENT 8 -#define TVHT_ONITEMBUTTON 16 -#define TVHT_ONITEMRIGHT 32 -#define TVHT_ONITEMSTATEICON 64 -#define TVHT_ABOVE 256 -#define TVHT_BELOW 512 -#define TVHT_TORIGHT 1024 -#define TVHT_TOLEFT 2048 -#define TCHT_NOWHERE 1 -#define TCHT_ONITEMICON 2 -#define TCHT_ONITEMLABEL 4 -#define TCHT_ONITEM (TCHT_ONITEMICON|TCHT_ONITEMLABEL) -#define TCS_FORCEICONLEFT 16 -#define TCS_FORCELABELLEFT 32 -#define TCS_TABS 0 -#define TCS_BUTTONS 256 -#define TCS_SINGLELINE 0 -#define TCS_MULTILINE 512 -#define TCS_RIGHTJUSTIFY 0 -#define TCS_FIXEDWIDTH 1024 -#define TCS_RAGGEDRIGHT 2048 -#define TCS_FOCUSONBUTTONDOWN 0x1000 -#define TCS_OWNERDRAWFIXED 0x2000 -#define TCS_TOOLTIPS 0x4000 -#define TCS_FOCUSNEVER 0x8000 -#if (_WIN32_IE >= 0x0300) -#define TCS_BOTTOM 2 -#define TCS_RIGHT 2 -#define TCS_VERTICAL 128 -#define TCS_SCROLLOPPOSITE 0x0001 -#define TCS_HOTTRACK 0x0040 -#define TCS_MULTISELECT 0x0004 -#endif -#if( _WIN32_IE >= 0x0400 ) -#define TCS_FLATBUTTONS 0x0008 -#define TCS_EX_FLATSEPARATORS 0x00000001 -#define TCS_EX_REGISTERDROP 0x00000002 -#endif /* _WIN32_IE >= 0x0400 */ -#define TCIF_TEXT 1 -#define TCIF_IMAGE 2 -#define TCIF_RTLREADING 4 -#define TCIF_PARAM 8 -#if (_WIN32_IE >= 0x0400) -#define TCIF_STATE 16 -#endif -#define TCIS_BUTTONPRESSED 1 -#if (_WIN32_IE >= 0x0400) -#define TCIS_HIGHLIGHTED 2 -#endif -#define TCM_FIRST 0x1300 -#define TCM_GETIMAGELIST (TCM_FIRST+2) -#define TCM_SETIMAGELIST (TCM_FIRST+3) -#define TCM_GETITEMCOUNT (TCM_FIRST+4) -#define TCM_GETITEMA (TCM_FIRST+5) -#define TCM_GETITEMW (TCM_FIRST+60) -#define TCM_SETITEMA (TCM_FIRST+6) -#define TCM_SETITEMW (TCM_FIRST+61) -#define TCM_INSERTITEMA (TCM_FIRST+7) -#define TCM_INSERTITEMW (TCM_FIRST+62) -#define TCM_DELETEITEM (TCM_FIRST+8) -#define TCM_DELETEALLITEMS (TCM_FIRST+9) -#define TCM_GETITEMRECT (TCM_FIRST+10) -#define TCM_GETCURSEL (TCM_FIRST+11) -#define TCM_SETCURSEL (TCM_FIRST+12) -#define TCM_HITTEST (TCM_FIRST+13) -#define TCM_SETITEMEXTRA (TCM_FIRST+14) +#define LVM_SETHOTITEM (LVM_FIRST+60) +#define LVM_GETHOTITEM (LVM_FIRST+61) +#define LVM_SETHOTCURSOR (LVM_FIRST+62) +#define LVM_GETHOTCURSOR (LVM_FIRST+63) +#define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64) +#define LVM_SETWORKAREAS (LVM_FIRST+65) +#define LVM_GETSELECTIONMARK (LVM_FIRST+66) +#define LVM_SETSELECTIONMARK (LVM_FIRST+67) +#define LVM_SETBKIMAGEA (LVM_FIRST+68) +#define LVM_SETBKIMAGEW (LVM_FIRST+138) +#define LVM_SETBKIMAGE WINELIB_NAME_AW(LVM_SETBKIMAGE) +#define LVM_GETBKIMAGEA (LVM_FIRST+69) +#define LVM_GETBKIMAGEW (LVM_FIRST+139) +#define LVM_GETBKIMAGE WINELIB_NAME_AW(LVM_GETBKIMAGE) +#define LVM_GETWORKAREAS (LVM_FIRST+70) +#define LVM_SETHOVERTIME (LVM_FIRST+71) +#define LVM_GETHOVERTIME (LVM_FIRST+72) +#define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73) +#define LVM_SETTOOLTIPS (LVM_FIRST+74) +#define LVM_GETTOOLTIPS (LVM_FIRST+78) +#define LVM_GETUNICODEFORMAT (CCM_GETUNICODEFORMAT) +#define LVM_SETUNICODEFORMAT (CCM_SETUNICODEFORMAT) +#define LVM_SETSELECTEDCOLUMN (LVM_FIRST + 140) +#define LVM_SETTILEWIDTH (LVM_FIRST + 141) +#define LVM_SETVIEW (LVM_FIRST + 142) +#define LVM_GETVIEW (LVM_FIRST + 143) +#define LVM_INSERTGROUP (LVM_FIRST + 145) +#define LVM_SETGROUPINFO (LVM_FIRST + 147) +#define LVM_GETGROUPINFO (LVM_FIRST + 149) +#define LVM_REMOVEGROUP (LVM_FIRST + 150) +#define LVM_MOVEGROUP (LVM_FIRST + 151) +#define LVM_MOVEITEMTOGROUP (LVM_FIRST + 154) +#define LVM_SETGROUPMETRICS (LVM_FIRST + 155) +#define LVM_GETGROUPMETRICS (LVM_FIRST + 156) +#define LVM_ENABLEGROUPVIEW (LVM_FIRST + 157) +#define LVM_SORTGROUPS (LVM_FIRST + 158) +#define LVM_INSERTGROUPSORTED (LVM_FIRST + 159) +#define LVM_REMOVEALLGROUPS (LVM_FIRST + 160) +#define LVM_HASGROUP (LVM_FIRST + 161) +#define LVM_SETTILEVIEWINFO (LVM_FIRST + 162) +#define LVM_GETTILEVIEWINFO (LVM_FIRST + 163) +#define LVM_SETTILEINFO (LVM_FIRST + 164) +#define LVM_GETTILEINFO (LVM_FIRST + 165) +#define LVM_SETINSERTMARK (LVM_FIRST + 166) +#define LVM_GETINSERTMARK (LVM_FIRST + 167) +#define LVM_INSERTMARKHITTEST (LVM_FIRST + 168) +#define LVM_GETINSERTMARKRECT (LVM_FIRST + 169) +#define LVM_SETINSERTMARKCOLOR (LVM_FIRST + 170) +#define LVM_GETINSERTMARKCOLOR (LVM_FIRST + 171) +#define LVM_SETINFOTIP (LVM_FIRST + 173) +#define LVM_GETSELECTEDCOLUMN (LVM_FIRST + 174) +#define LVM_ISGROUPVIEWENABLED (LVM_FIRST + 175) +#define LVM_GETOUTLINECOLOR (LVM_FIRST + 176) +#define LVM_SETOUTLINECOLOR (LVM_FIRST + 177) +#define LVM_CANCELEDITLABEL (LVM_FIRST + 179) +#define LVM_MAPINDEXTOID (LVM_FIRST + 180) +#define LVM_MAPIDTOINDEX (LVM_FIRST + 181) -#define TCM_ADJUSTRECT (TCM_FIRST+40) -#define TCM_SETITEMSIZE (TCM_FIRST+41) -#define TCM_REMOVEIMAGE (TCM_FIRST+42) -#define TCM_SETPADDING (TCM_FIRST+43) -#define TCM_GETROWCOUNT (TCM_FIRST+44) -#define TCM_GETTOOLTIPS (TCM_FIRST+45) -#define TCM_SETTOOLTIPS (TCM_FIRST+46) -#define TCM_GETCURFOCUS (TCM_FIRST+47) -#define TCM_SETCURFOCUS (TCM_FIRST+48) -#define TCM_SETMINTABWIDTH (TCM_FIRST + 49) -#define TCM_DESELECTALL (TCM_FIRST + 50) -#if (_WIN32_IE >=0x0400) -#define TCM_HIGHLIGHTITEM (TCM_FIRST + 51) -#define TCM_SETEXTENDEDSTYLE (TCM_FIRST + 52) -#define TCM_GETEXTENDEDSTYLE (TCM_FIRST + 53) -#define TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT -#define TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT -#endif /* _WIN32_IE >=0x0400 */ -#define TCN_KEYDOWN TCN_FIRST -#define TCN_SELCHANGE (TCN_FIRST-1) -#define TCN_SELCHANGING (TCN_FIRST-2) -#define TCN_GETOBJECT (TCN_FIRST-3) -#define NM_OUTOFMEMORY (NM_FIRST-1) -#define NM_CLICK (NM_FIRST-2) -#define NM_DBLCLK (NM_FIRST-3) -#define NM_RETURN (NM_FIRST-4) -#define NM_RCLICK (NM_FIRST-5) -#define NM_RDBLCLK (NM_FIRST-6) -#define NM_SETFOCUS (NM_FIRST-7) -#define NM_KILLFOCUS (NM_FIRST-8) -#define NM_CUSTOMDRAW (NM_FIRST-12) -#define NM_HOVER (NM_FIRST-13) -#define NM_NCHITTEST (NM_FIRST-14) -#define NM_KEYDOWN (NM_FIRST-15) -#define NM_RELEASEDCAPTURE (NM_FIRST-16) -#define NM_SETCURSOR (NM_FIRST-17) -#define NM_CHAR (NM_FIRST-18) -#define NM_TOOLTIPSCREATED (NM_FIRST-19) -#define NM_LDOWN (NM_FIRST-20) -#define NM_RDOWN (NM_FIRST-21) -#define NM_THEMECHANGED (NM_FIRST-22) -#define SBARS_SIZEGRIP 256 -#define CCM_FIRST 0x2000 -#define CCM_LAST (CCM_FIRST+0x200) -#define CCM_SETBKCOLOR 8193 -#define CCM_SETCOLORSCHEME 8194 -#define CCM_GETCOLORSCHEME 8195 -#define CCM_GETDROPTARGET 8196 -#define CCM_SETUNICODEFORMAT 8197 -#define CCM_GETUNICODEFORMAT 8198 -#define CCM_SETVERSION 0x2007 -#define CCM_GETVERSION 0x2008 -#define CCM_SETNOTIFYWINDOW 0x2009 -#if (_WIN32_WINNT >= 0x0501) -#define CCM_SETWINDOWTHEME 0x200b -#define CCM_DPISCALE 0x200c -#endif -#define ICC_LISTVIEW_CLASSES 1 -#define ICC_TREEVIEW_CLASSES 2 -#define ICC_BAR_CLASSES 4 -#define ICC_TAB_CLASSES 8 -#define ICC_UPDOWN_CLASS 16 -#define ICC_PROGRESS_CLASS 32 -#define ICC_HOTKEY_CLASS 64 -#define ICC_ANIMATE_CLASS 128 -#define ICC_WIN95_CLASSES 255 -#define ICC_DATE_CLASSES 256 -#define ICC_USEREX_CLASSES 512 -#define ICC_COOL_CLASSES 1024 -#if (_WIN32_IE >= 0x0400) -#define ICC_INTERNET_CLASSES 2048 -#define ICC_PAGESCROLLER_CLASS 4096 -#define ICC_NATIVEFNTCTL_CLASS 8192 -#define INFOTIPSIZE 1024 -#endif /* _WIN32_IE */ -#if (_WIN32_WINNT >= 0x501) -#define ICC_STANDARD_CLASSES 0x00004000 -#define ICC_LINK_CLASS 0x00008000 -#endif -#define GDTR_MIN 1 -#define GDTR_MAX 2 -#define GMR_VISIBLE 0 -#define GMR_DAYSTATE 1 -#define GDT_ERROR -1 -#define GDT_VALID 0 -#define GDT_NONE 1 -#define DTS_UPDOWN 1 -#define DTS_SHOWNONE 2 -#define DTS_SHORTDATEFORMAT 0 -#define DTS_LONGDATEFORMAT 4 -#define DTS_TIMEFORMAT 9 -#define DTS_APPCANPARSE 16 -#define DTS_RIGHTALIGN 32 -#if ( _WIN32_IE >= 0x500 ) -#define DTS_SHORTDATECENTURYFORMAT 0x000C -#endif /* _WIN32_IE >= 0x500 */ -#define MCS_DAYSTATE 1 -#define MCS_MULTISELECT 2 -#define MCS_WEEKNUMBERS 4 -#if (_WIN32_IE >= 0x0400) -#define MCS_NOTODAYCIRCLE 0x0008 -#define MCS_NOTODAY 0x0010 -#else /* _WIN32_IE >= 0x0400 */ -#define MCS_NOTODAY 0x0008 -#endif /* _WIN32_IE >= 0x0400 */ -#define DTM_GETSYSTEMTIME 0x1001 -#define DTM_SETSYSTEMTIME 0x1002 -#define DTM_GETRANGE 0x1003 -#define DTM_SETRANGE 0x1004 -#define DTM_SETFORMATA 0x1005 -#define DTM_SETFORMATW 0x1050 -#define DTM_SETMCCOLOR 0x1006 -#define DTM_GETMCCOLOR 0x1007 -#define DTM_GETMONTHCAL 0x1008 -#define DTM_SETMCFONT 0x1009 -#define DTM_GETMCFONT 0x100a -#define DTN_USERSTRINGA ((UINT)-758) -#define DTN_USERSTRINGW ((UINT)-745) -#define DTN_WMKEYDOWNA ((UINT)-757) -#define DTN_WMKEYDOWNW ((UINT)-744) -#define DTN_FORMATA ((UINT)-756) -#define DTN_FORMATW ((UINT)-743) -#define DTN_FORMATQUERYA ((UINT)-755) -#define DTN_FORMATQUERYW ((UINT)-742) -#define DTN_DROPDOWN ((UINT)-754) -#define DTN_CLOSEUP ((UINT)-753) -#define DTN_DATETIMECHANGE ((UINT)-759) -#define MCM_GETCURSEL 0x1001 -#define MCM_SETCURSEL 0x1002 -#define MCM_GETMAXSELCOUNT 0x1003 -#define MCM_SETMAXSELCOUNT 0x1004 -#define MCM_GETSELRANGE 0x1005 -#define MCM_SETSELRANGE 0x1006 -#define MCM_GETMONTHRANGE 0x1007 -#define MCM_SETDAYSTATE 0x1008 -#define MCM_GETMINREQRECT 0x1009 -#define MCM_SETCOLOR 0x100a -#define MCM_GETCOLOR 0x100b -#define MCM_SETTODAY 0x100c -#define MCM_GETTODAY 0x100d -#define MCM_HITTEST 0x100e -#define MCM_SETFIRSTDAYOFWEEK 0x100f -#define MCM_GETFIRSTDAYOFWEEK 0x1010 -#define MCM_GETRANGE 0x1011 -#define MCM_SETRANGE 0x1012 -#define MCM_GETMONTHDELTA 0x1013 -#define MCM_SETMONTHDELTA 0x1014 -#define MCM_GETMAXTODAYWIDTH 0x1015 -#define MCN_SELCHANGE ((UINT)-749) -#define MCN_GETDAYSTATE ((UINT)-747) -#define MCN_SELECT ((UINT)-746) -#define ODT_HEADER 100 -#define ODT_TAB 101 -#define ODT_LISTVIEW 102 -#define SB_SETBKCOLOR 0x2001 -#if (_WIN32_IE >= 0x0300) -#define SB_ISSIMPLE 1038 -#define MCSC_BACKGROUND 0 -#define MCSC_TEXT 1 -#define MCSC_TITLEBK 2 -#define MCSC_TITLETEXT 3 -#define MCSC_MONTHBK 4 -#define MCSC_TRAILINGTEXT 5 -#endif -#if (_WIN32_IE >= 0x0400) -#define MCHT_TITLE 0x10000 -#define MCHT_CALENDAR 0x20000 -#define MCHT_TODAYLINK 0x30000 -#define MCHT_NEXT 0x1000000 -#define MCHT_PREV 0x2000000 -#define MCHT_NOWHERE 0x00 -#define MCHT_TITLEBK (MCHT_TITLE) -#define MCHT_TITLEMONTH (MCHT_TITLE | 0x0001) -#define MCHT_TITLEYEAR (MCHT_TITLE | 0x0002) -#define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x0003) -#define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x0003) -#define MCHT_CALENDARBK (MCHT_CALENDAR) -#define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x0001) -#define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT) -#define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV) -#define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x0002) -#define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003) -#endif /* _WIN32_IE >= 0x0400 */ -#define RBS_TOOLTIPS 256 -#define RBS_VARHEIGHT 512 -#define RBS_BANDBORDERS 1024 -#define RBS_FIXEDORDER 2048 -#define RBIM_IMAGELIST 1 -#define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME -#define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME -#define RBBS_BREAK 1 -#define RBBS_FIXEDSIZE 2 -#define RBBS_CHILDEDGE 4 -#define RBBS_HIDDEN 8 -#define RBBS_NOVERT 16 -#define RBBS_FIXEDBMP 32 -#if (_WIN32_IE >= 0x0400) -#define RBBS_VARIABLEHEIGHT 0x40 -#define RBBS_GRIPPERALWAYS 0x80 -#define RBBS_NOGRIPPER 0x100 -#if (_WIN32_IE >= 0x0500) -#define RBBS_USECHEVRON 0x200 -#if (_WIN32_IE >= 0x0501) -#define RBBS_HIDETITLE 0x400 -#define RBBS_TOPALIGN 0x800 -#endif /* _WIN32_IE >= 0x0501 */ -#endif /* _WIN32_IE >= 0x0500 */ -#endif /* _WIN32_IE >= 0x0400 */ -#define RBBIM_STYLE 1 -#define RBBIM_COLORS 2 -#define RBBIM_TEXT 4 -#define RBBIM_IMAGE 8 -#define RBBIM_CHILD 16 -#define RBBIM_CHILDSIZE 32 -#define RBBIM_SIZE 64 -#define RBBIM_BACKGROUND 128 -#define RBBIM_ID 256 -#define RB_INSERTBANDA (WM_USER+1) -#define RB_INSERTBANDW (WM_USER+10) -#define RB_DELETEBAND (WM_USER+2) -#define RB_GETBARINFO (WM_USER+3) -#define RB_SETBARINFO (WM_USER+4) -#define RB_GETBANDCOUNT (WM_USER+12) -#define RB_GETROWCOUNT (WM_USER+13) -#define RB_GETROWHEIGHT (WM_USER+14) -#define RB_SETBANDINFOA (WM_USER+6) -#define RB_SETBANDINFOW (WM_USER+11) -#define RB_SETPARENT (WM_USER+7) -#define RBN_HEIGHTCHANGE RBN_FIRST -#if (_WIN32_IE >= 0x0300) -#define LVN_ODCACHEHINT (LVN_FIRST-13) -#define LVN_ODFINDITEMA (LVN_FIRST-52) -#define LVN_ODFINDITEMW (LVN_FIRST-79) -#define LVN_ITEMACTIVATE (LVN_FIRST-14) -#define LVN_ODSTATECHANGED (LVN_FIRST-15) -#define LVN_HOTTRACK (LVN_FIRST-21) -#ifdef UNICODE -#define LVN_ODFINDITEM LVN_ODFINDITEMW -#else -#define LVN_ODFINDITEM LVN_ODFINDITEMA -#endif -#endif /* _WIN32_IE */ -#if (_WIN32_IE >= 0x0400) -#define SB_SETICON 1039 -#define SB_SETTIPTEXTA 1040 -#define SB_SETTIPTEXTW 1041 -#define SB_GETTIPTEXTA 1042 -#define SB_GETTIPTEXTW 1043 -#define SB_GETICON 1044 -#define SB_SETUNICODEFORMAT 0x2005 -#define SB_GETUNICODEFORMAT 0x2006 -#define PGF_INVISIBLE 0 -#define PGF_NORMAL 1 -#define PGF_GRAYED 2 -#define PGF_DEPRESSED 4 -#define PGF_HOT 8 -#define PGB_TOPORLEFT 0 -#define PGB_BOTTOMORRIGHT 1 -#define PGF_SCROLLUP 1 -#define PGF_SCROLLDOWN 2 -#define PGF_SCROLLLEFT 4 -#define PGF_SCROLLRIGHT 8 -#define PGK_SHIFT 1 -#define PGK_CONTROL 2 -#define PGK_MENU 4 -#define PGF_CALCWIDTH 1 -#define PGF_CALCHEIGHT 2 -#define PGM_FIRST 0x1400 -#define PGM_SETCHILD (PGM_FIRST+1) -#define PGM_RECALCSIZE (PGM_FIRST+2) -#define PGM_FORWARDMOUSE (PGM_FIRST+3) -#define PGM_SETBKCOLOR (PGM_FIRST+4) -#define PGM_GETBKCOLOR (PGM_FIRST+5) -#define PGM_SETBORDER (PGM_FIRST+6) -#define PGM_GETBORDER (PGM_FIRST+7) -#define PGM_SETPOS (PGM_FIRST+8) -#define PGM_GETPOS (PGM_FIRST+9) -#define PGM_SETBUTTONSIZE (PGM_FIRST+10) -#define PGM_GETBUTTONSIZE (PGM_FIRST+11) -#define PGM_GETBUTTONSTATE (PGM_FIRST+12) -#define PGM_GETDROPTARGET CCM_GETDROPTARGET +#define LVN_FIRST (0U-100U) +#define LVN_LAST (0U-199U) +#define LVN_ITEMCHANGING (LVN_FIRST-0) +#define LVN_ITEMCHANGED (LVN_FIRST-1) +#define LVN_INSERTITEM (LVN_FIRST-2) +#define LVN_DELETEITEM (LVN_FIRST-3) +#define LVN_DELETEALLITEMS (LVN_FIRST-4) +#define LVN_BEGINLABELEDITA (LVN_FIRST-5) +#define LVN_BEGINLABELEDITW (LVN_FIRST-75) +#define LVN_BEGINLABELEDIT WINELIB_NAME_AW(LVN_BEGINLABELEDIT) +#define LVN_ENDLABELEDITA (LVN_FIRST-6) +#define LVN_ENDLABELEDITW (LVN_FIRST-76) +#define LVN_ENDLABELEDIT WINELIB_NAME_AW(LVN_ENDLABELEDIT) +#define LVN_COLUMNCLICK (LVN_FIRST-8) +#define LVN_BEGINDRAG (LVN_FIRST-9) +#define LVN_BEGINRDRAG (LVN_FIRST-11) +#define LVN_ODCACHEHINT (LVN_FIRST-13) +#define LVN_ITEMACTIVATE (LVN_FIRST-14) +#define LVN_ODSTATECHANGED (LVN_FIRST-15) +#define LVN_HOTTRACK (LVN_FIRST-21) +#define LVN_ODFINDITEMA (LVN_FIRST-52) +#define LVN_ODFINDITEMW (LVN_FIRST-79) +#define LVN_ODFINDITEM WINELIB_NAME_AW(LVN_ODFINDITEM) +#define LVN_GETDISPINFOA (LVN_FIRST-50) +#define LVN_GETDISPINFOW (LVN_FIRST-77) +#define LVN_GETDISPINFO WINELIB_NAME_AW(LVN_GETDISPINFO) +#define LVN_SETDISPINFOA (LVN_FIRST-51) +#define LVN_SETDISPINFOW (LVN_FIRST-78) +#define LVN_SETDISPINFO WINELIB_NAME_AW(LVN_SETDISPINFO) +#define LVN_KEYDOWN (LVN_FIRST-55) +#define LVN_MARQUEEBEGIN (LVN_FIRST-56) +#define LVN_GETINFOTIPA (LVN_FIRST-57) +#define LVN_GETINFOTIPW (LVN_FIRST-58) +#define LVN_GETINFOTIP WINELIB_NAME_AW(LVN_GETINFOTIP) +#define LVN_BEGINSCROLL (LVN_FIRST-80) +#define LVN_ENDSCROLL (LVN_FIRST-81) +#define LVN_LINKCLICK (LVN_FIRST-84) +#define LVN_ASYNCDRAWN (LVN_FIRST-86) +#define LVN_GETEMPTYMARKUP (LVN_FIRST-87) -#define RBS_REGISTERDROP 4096 -#define RBS_AUTOSIZE 8192 -#define RBS_VERTICALGRIPPER 16384 -#define RBS_DBLCLKTOGGLE 32768 -#define RBBIM_IDEALSIZE 512 -#define RBBIM_LPARAM 1024 -#define RBBIM_HEADERSIZE 2048 -#define RB_HITTEST (WM_USER+8) -#define RB_GETRECT (WM_USER+9) -#define RB_IDTOINDEX (WM_USER+16) -#define RB_GETTOOLTIPS (WM_USER+17) -#define RB_SETTOOLTIPS (WM_USER+18) -#define RB_SETBKCOLOR (WM_USER+19) -#define RB_GETBKCOLOR (WM_USER+20) -#define RB_SETTEXTCOLOR (WM_USER+21) -#define RB_GETTEXTCOLOR (WM_USER+22) -#define RB_SIZETORECT (WM_USER+23) -#define RB_BEGINDRAG (WM_USER+24) -#define RB_ENDDRAG (WM_USER+25) -#define RB_DRAGMOVE (WM_USER+26) -#define RB_GETBARHEIGHT (WM_USER+27) -#define RB_GETBANDINFOW (WM_USER+28) -#define RB_GETBANDINFOA (WM_USER+29) -#define RB_MINIMIZEBAND (WM_USER+30) -#define RB_MAXIMIZEBAND (WM_USER+31) -#define RB_GETDROPTARGET CCM_GETDROPTARGET -#define RB_GETBANDBORDERS (WM_USER+34) -#define RB_SHOWBAND (WM_USER+35) -#define RB_SETPALETTE (WM_USER+37) -#define RB_GETPALETTE (WM_USER+38) -#define RB_MOVEBAND (WM_USER+39) -#define RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT -#define RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT -#define RBN_GETOBJECT (RBN_FIRST-1) -#define RBN_LAYOUTCHANGED (RBN_FIRST-2) -#define RBN_AUTOSIZE (RBN_FIRST-3) -#define RBN_BEGINDRAG (RBN_FIRST-4) -#define RBN_ENDDRAG (RBN_FIRST-5) -#define RBN_DELETINGBAND (RBN_FIRST-6) -#define RBN_DELETEDBAND (RBN_FIRST-7) -#define RBN_CHILDSIZE (RBN_FIRST-8) -#if (_WIN32_IE >= 0x0500) -#define RBN_CHEVRONPUSHED (RBN_FIRST - 10) -#endif /* _WIN32_IE >= 0x0500 */ -#define RBNM_ID 1 -#define RBNM_STYLE 2 -#define RBNM_LPARAM 4 -#define RBHT_NOWHERE 1 -#define RBHT_CAPTION 2 -#define RBHT_CLIENT 3 -#define RBHT_GRABBER 4 -#ifdef UNICODE -#define SB_SETTIPTEXT SB_SETTIPTEXTW -#define SB_GETTIPTEXT SB_GETTIPTEXTW -#define RB_GETBANDINFO RB_GETBANDINFOW -#else -#define SB_SETTIPTEXT SB_SETTIPTEXTA -#define SB_GETTIPTEXT SB_GETTIPTEXTA -#define RB_GETBANDINFO RB_GETBANDINFOA -#endif -#else -#define RB_GETBANDINFO (WM_USER+5) -#endif /* _WIN32_IE >= 0x0400 */ +#define LVA_DEFAULT 0x0000 +#define LVA_ALIGNLEFT 0x0001 +#define LVA_ALIGNTOP 0x0002 +#define LVA_SNAPTOGRID 0x0005 -#if (_WIN32_IE >= 0x0500) -#define SB_SIMPLEID 0xFF -#endif /* _WIN32_IE >= 0x0500 */ +typedef struct tagLVITEMA +{ + UINT mask; + INT iItem; + INT iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + INT cchTextMax; + INT iImage; + LPARAM lParam; + INT iIndent; /* (_WIN32_IE >= 0x0300) */ + int iGroupId; /* (_WIN32_IE >= 0x560) */ + UINT cColumns; /* (_WIN32_IE >= 0x560) */ + PUINT puColumns; /* (_WIN32_IE >= 0x560) */ +} LVITEMA, *LPLVITEMA; -#if (_WIN32_WINNT >= 0x0501) -#define RB_GETBANDMARGINS (WM_USER+40) -#define RB_SETWINDOWTHEME CCM_SETWINDOWTHEME -#endif -#define CBEM_INSERTITEMA (WM_USER + 1) -#define CBEM_SETIMAGELIST (WM_USER + 2) -#define CBEM_GETIMAGELIST (WM_USER + 3) -#define CBEM_GETITEMA (WM_USER + 4) -#define CBEM_SETITEMA (WM_USER + 5) -#define CBEM_DELETEITEM CB_DELETESTRING -#define CBEM_GETCOMBOCONTROL (WM_USER + 6) -#define CBEM_GETEDITCONTROL (WM_USER + 7) -#define CBEM_SETEXSTYLE (WM_USER + 8) -#define CBEM_GETEXSTYLE (WM_USER + 9) -#if (_WIN32_IE >= 0x0400) -#define CBEM_SETEXTENDEDSTYLE (WM_USER + 14) -#define CBEM_GETEXTENDEDSTYLE (WM_USER + 9) -#define CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT -#define CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT -#endif /* _WIN32_IE >= 0x0400 */ -#define CBEM_HASEDITCHANGED (WM_USER + 10) -#define CBEM_INSERTITEMW (WM_USER + 11) -#define CBEM_SETITEMW (WM_USER + 12) -#define CBEM_GETITEMW (WM_USER + 13) -#define DA_LAST 0x7fffffff -#define DPA_APPEND 0x7fffffff -#define DPA_ERR -1 -#define DSA_APPEND 0x7fffffff -#define DSA_ERR -1 -#define DPAS_SORTED 1 -#define DPAS_INSERTBEFORE 2 -#define DPAS_INSERTAFTER 4 -#if (_WIN32_IE >= 0x400) -#define WSB_PROP_CYVSCROLL 1 -#define WSB_PROP_CXHSCROLL 2 -#define WSB_PROP_CYHSCROLL 4 -#define WSB_PROP_CXVSCROLL 8 -#define WSB_PROP_CXHTHUMB 16 -#define WSB_PROP_CYVTHUMB 32 -#define WSB_PROP_VBKGCOLOR 64 -#define WSB_PROP_HBKGCOLOR 128 -#define WSB_PROP_VSTYLE 256 -#define WSB_PROP_HSTYLE 512 -#define WSB_PROP_WINSTYLE 1024 -#define WSB_PROP_PALETTE 2048 -#define WSB_PROP_MASK 0xfff -#define FSB_FLAT_MODE 2 -#define FSB_ENCARTA_MODE 1 -#define FSB_REGULAR_MODE 0 -#endif /* _WIN32_IE >= 0x400 */ +typedef struct tagLVITEMW +{ + UINT mask; + INT iItem; + INT iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + INT cchTextMax; + INT iImage; + LPARAM lParam; + INT iIndent; /* (_WIN32_IE >= 0x0300) */ + int iGroupId; /* (_WIN32_IE >= 0x560) */ + UINT cColumns; /* (_WIN32_IE >= 0x560) */ + PUINT puColumns; /* (_WIN32_IE >= 0x560) */ +} LVITEMW, *LPLVITEMW; -#ifndef RC_INVOKED -typedef struct tagCOMBOBOXEXITEMA{ - UINT mask; - int iItem; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int iOverlay; - int iIndent; - LPARAM lParam; -} COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA; -typedef COMBOBOXEXITEMA CONST *PCCOMBOEXITEMA; -typedef struct tagCOMBOBOXEXITEMW{ - UINT mask; - int iItem; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int iOverlay; - int iIndent; - LPARAM lParam; -} COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW; -typedef COMBOBOXEXITEMW CONST *PCCOMBOEXITEMW; -#if (_WIN32_IE >= 0x0400) -typedef struct { - NMHDR hdr; - COMBOBOXEXITEMA ceItem; -} NMCOMBOBOXEXA, *PNMCOMBOBOXEXA; -typedef struct { - NMHDR hdr; - COMBOBOXEXITEMW ceItem; -} NMCOMBOBOXEXW, *PNMCOMBOBOXEXW; -typedef struct { - NMHDR hdr; - int iItemid; - WCHAR szText[CBEMAXSTRLEN]; -}NMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW; -typedef struct { - NMHDR hdr; - int iItemid; - char szText[CBEMAXSTRLEN]; -}NMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA; -typedef struct tagNMIPADDRESS{ - NMHDR hdr; - int iField; - int iValue; -} NMIPADDRESS, *LPNMIPADDRESS; -typedef struct tagLVKEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; -} NMLVKEYDOWN, *LPNMLVKEYDOWN; -typedef struct { - NMHDR hdr; - DWORD dwFlag; - int iWidth; - int iHeight; -} NMPGCALCSIZE, *LPNMPGCALCSIZE; -typedef struct { - NMHDR hdr; - BOOL fwKeys; - RECT rcParent; - int iDir; - int iXpos; - int iYpos; - int iScroll; -} NMPGSCROLL, *LPNMPGSCROLL; -typedef struct tagNMSELCHANGE { - NMHDR nmhdr; - SYSTEMTIME stSelStart; - SYSTEMTIME stSelEnd; -} NMSELCHANGE, *LPNMSELCHANGE; -typedef struct tagNMTBHOTITEM { - NMHDR hdr; - int idOld; - int idNew; - DWORD dwFlags; -} NMTBHOTITEM, *LPNMTBHOTITEM; -typedef struct { - NMHDR hdr; - DWORD dwMask; - int idCommand; - DWORD_PTR lParam; - int iImage; - LPSTR pszText; - int cchText; -} NMTBDISPINFOA, *LPNMTBDISPINFOA; -typedef struct { - NMHDR hdr; - DWORD dwMask; - int idCommand; - DWORD_PTR lParam; - int iImage; - LPWSTR pszText; - int cchText; -} NMTBDISPINFOW, *LPNMTBDISPINFOW; -typedef struct tagNMTBGETINFOTIPA +#define LVITEM WINELIB_NAME_AW(LVITEM) +#define LPLVITEM WINELIB_NAME_AW(LPLVITEM) + +#define LVITEM_V1_SIZEA CCSIZEOF_STRUCT(LVITEMA, lParam) +#define LVITEM_V1_SIZEW CCSIZEOF_STRUCT(LVITEMW, lParam) +#define LVITEM_V1_SIZE WINELIB_NAME_AW(LVITEM_V1_SIZE) + +#define LV_ITEM LVITEM +#define LV_ITEMA LVITEMA +#define LV_ITEMW LVITEMW + +typedef struct LVSETINFOTIP { - NMHDR hdr; - LPSTR pszText; - int cchTextMax; - int iItem; - LPARAM lParam; -} NMTBGETINFOTIPA, *LPNMTBGETINFOTIPA; -typedef struct tagNMTBGETINFOTIPW + UINT cbSize; + DWORD dwFlags; + LPWSTR pszText; + int iItem; + int iSubItem; +} LVSETINFOTIP, *PLVSETINFOTIP; + +/* ListView background image structs and constants + For _WIN32_IE version 0x400 and later. */ + +typedef struct tagLVBKIMAGEA { - NMHDR hdr; - LPWSTR pszText; - int cchTextMax; - int iItem; - LPARAM lParam; -} NMTBGETINFOTIPW, *LPNMTBGETINFOTIPW; -typedef struct tagNMMOUSE { - NMHDR hdr; - DWORD_PTR dwItemSpec; - DWORD_PTR dwItemData; - POINT pt; - LPARAM dwHitInfo; -} NMMOUSE, *LPNMMOUSE; -#endif /*_WIN32_IE >= 0x0400 */ -#if (_WIN32_IE >= 0x0401) -typedef struct tagNMTOOLTIPSCREATED -{ - NMHDR hdr; - HWND hwndToolTips; -} NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED; -#endif -typedef struct tagNMDATETIMECHANGE -{ - NMHDR nmhdr; - DWORD dwFlags; - SYSTEMTIME st; -} NMDATETIMECHANGE, *LPNMDATETIMECHANGE; -typedef struct { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - WCHAR szText[CBEMAXSTRLEN]; - int iWhy; -} NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW; -typedef struct { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - char szText[CBEMAXSTRLEN]; - int iWhy; -} NMCBEENDEDITA, *LPNMCBEENDEDITA,*PNMCBEENDEDITA; -typedef struct tagNMOBJECTNOTIFY -{ - NMHDR hdr; - int iItem; -#ifdef __IID_DEFINED__ - const IID *piid; -#else - const void *piid; -#endif - void *pObject; - HRESULT hResult; - DWORD dwFlags; -} NMOBJECTNOTIFY, *LPNMOBJECTNOTIFY; -typedef struct tagNMKEY -{ - NMHDR hdr; - UINT nVKey; - UINT uFlags; -} NMKEY, *LPNMKEY; -typedef struct tagNMCHAR -{ - NMHDR hdr; - UINT ch; - DWORD dwItemPrev; /* Item previously selected */ - DWORD dwItemNext; /* Item to be selected */ -} NMCHAR, *LPNMCHAR; -typedef struct _COLORMAP { - COLORREF from; - COLORREF to; -} COLORMAP,*LPCOLORMAP; -typedef struct { - UINT uNotification; - HWND hWnd; - POINT ptCursor; -} DRAGLISTINFO,*LPDRAGLISTINFO; -typedef struct _TBBUTTON { - int iBitmap; - int idCommand; - BYTE fsState; - BYTE fsStyle; - BYTE bReserved[2]; - DWORD dwData; - int iString; -} TBBUTTON,*PTBBUTTON,*LPTBBUTTON; -typedef const TBBUTTON *LPCTBBUTTON; -typedef struct tagNMTBRESTORE -{ - NMHDR hdr; - DWORD* pData; - DWORD* pCurrent; - UINT cbData; - int iItem; - int cButtons; - int cbBytesPerRecord; - TBBUTTON tbButton; -} NMTBRESTORE, *LPNMTBRESTORE; -#if _WIN32_IE >= 0x400 -typedef struct { - UINT cbSize; - DWORD dwMask; - int idCommand; - int iImage; - BYTE fsState; - BYTE fsStyle; - WORD cx; - DWORD lParam; - LPSTR pszText; - int cchText; -} TBBUTTONINFOA, *LPTBBUTTONINFOA; -typedef struct { - UINT cbSize; - DWORD dwMask; - int idCommand; - int iImage; - BYTE fsState; - BYTE fsStyle; - WORD cx; - DWORD lParam; - LPWSTR pszText; - int cchText; -} TBBUTTONINFOW, *LPTBBUTTONINFOW; -typedef struct { - int iButton; - DWORD dwFlags; -} TBINSERTMARK, *LPTBINSERTMARK; -typedef struct tagLVBKIMAGEA { - ULONG ulFlags; - HBITMAP hbm; - LPSTR pszImage; - UINT cchImageMax; - int xOffsetPercent; - int yOffsetPercent; + ULONG ulFlags; + HBITMAP hbm; + LPSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; } LVBKIMAGEA, *LPLVBKIMAGEA; -typedef struct tagLVBKIMAGEW { - ULONG ulFlags; - HBITMAP hbm; - LPWSTR pszImage; - UINT cchImageMax; - int xOffsetPercent; - int yOffsetPercent; -} LVBKIMAGEW, *LPLVBKIMAGEW; -#endif /* _WIN32_IE >= 0x400 */ -typedef struct _IMAGEINFO { - HBITMAP hbmImage; - HBITMAP hbmMask; - int Unused1; - int Unused2; - RECT rcImage; -} IMAGEINFO, *LPIMAGEINFO; -typedef struct _IMAGELIST *HIMAGELIST; -typedef struct _HDITEMA { - UINT mask; - int cxy; - LPSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; -#if (_WIN32_IE >= 0x0300) - int iImage; - int iOrder; -#endif -#if (_WIN32_IE >= 0x0500) - UINT type; - LPVOID pvFilter; -#endif -} HDITEMA, * LPHDITEMA; -typedef struct _HDITEMW { - UINT mask; - int cxy; - LPWSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; -#if (_WIN32_IE >= 0x0300) - int iImage; - int iOrder; -#endif -#if (_WIN32_IE >= 0x0500) - UINT type; - LPVOID pvFilter; -#endif -} HDITEMW, * LPHDITEMW; -/* for backward compatability */ -#define HD_ITEMA HDITEMA -#define HD_ITEMW HDITEMW -#define HD_ITEM HDITEM -typedef struct _HD_LAYOUT { - RECT *prc; - WINDOWPOS *pwpos; -} HDLAYOUT, *LPHDLAYOUT; -#define HD_LAYOUT HDLAYOUT /* backward compatability */ -typedef struct _HD_HITTESTINFO { - POINT pt; - UINT flags; - int iItem; -} HD_HITTESTINFO, *LPHDHITTESTINFO; -typedef struct _HD_NOTIFYA { - NMHDR hdr; - int iItem; - int iButton; - HD_ITEMA *pitem; -} HD_NOTIFYA; -typedef struct _HD_NOTIFYW { - NMHDR hdr; - int iItem; - int iButton; - HD_ITEMW *pitem; -} HD_NOTIFYW; -/* FIXME: NMHEADER structure (base for all events of the comctl controls) - is the same as HD_NOTIFY depending on the value of _WIN32_IE macro. - I'm defining both for now. */ -typedef struct _NMHEADERA { - NMHDR hdr; - int iItem; - int iButton; - HD_ITEMA* pitem; -} NMHEADERA, *LPNMHEADERA; -typedef struct _NMHEADERW { - NMHDR hdr; - int iItem; - int iButton; - HD_ITEMW* pitem; -} NMHEADERW, *LPNMHEADERW; -#ifdef UNICODE -#define NMHEADER NMHEADERW -#define LPNMHEADER LPNMHEADERW -#else -#define NMHEADER NMHEADERA -#define LPNMHEADER LPNMHEADERA -#endif -/* End FIXME. */ -typedef struct tagNMHDDISPINFOA { - NMHDR hdr; - int iItem; - UINT mask; - LPSTR pszText; - int cchTextMax; - int iImage; +typedef struct tagLVBKIMAGEW +{ + ULONG ulFlags; + HBITMAP hbm; + LPWSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; +} LVBKIMAGEW, *LPLVBKIMAGEW; + +#define LVBKIMAGE WINELIB_NAME_AW(LVBKIMAGE) +#define LPLVBKIMAGE WINELIB_NAME_AW(LPLVBKIMAGE) + +#define LVBKIF_SOURCE_NONE 0x00000000 +#define LVBKIF_SOURCE_HBITMAP 0x00000001 +#define LVBKIF_SOURCE_URL 0x00000002 +#define LVBKIF_SOURCE_MASK 0x00000003 +#define LVBKIF_STYLE_NORMAL 0x00000000 +#define LVBKIF_STYLE_TILE 0x00000010 +#define LVBKIF_STYLE_MASK 0x00000010 +#define LVBKIF_FLAG_TILEOFFSET 0x00000100 +#define LVBKIF_TYPE_WATERMARK 0x10000000 + +#define ListView_SetBkImage(hwnd, plvbki) \ + (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)plvbki) + +#define ListView_GetBkImage(hwnd, plvbki) \ + (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)plvbki) + +#define ListView_GetCheckState(w,i) ((((UINT)(SNDMSG((w),LVM_GETITEMSTATE,(WPARAM)(i),LVIS_STATEIMAGEMASK)))>>12)-1) +#define ListView_SetCheckState(w,i,f) ListView_SetItemState(w,i,INDEXTOSTATEIMAGEMASK((f)+1),LVIS_STATEIMAGEMASK) + +typedef struct tagLVCOLUMNA +{ + UINT mask; + INT fmt; + INT cx; + LPSTR pszText; + INT cchTextMax; + INT iSubItem; + INT iImage; /* (_WIN32_IE >= 0x0300) */ + INT iOrder; /* (_WIN32_IE >= 0x0300) */ +} LVCOLUMNA, *LPLVCOLUMNA; + +typedef struct tagLVCOLUMNW +{ + UINT mask; + INT fmt; + INT cx; + LPWSTR pszText; + INT cchTextMax; + INT iSubItem; + INT iImage; /* (_WIN32_IE >= 0x0300) */ + INT iOrder; /* (_WIN32_IE >= 0x0300) */ +} LVCOLUMNW, *LPLVCOLUMNW; + +#define LVCOLUMN WINELIB_NAME_AW(LVCOLUMN) +#define LPLVCOLUMN WINELIB_NAME_AW(LPLVCOLUMN) + +#define LVCOLUMN_V1_SIZEA CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem) +#define LVCOLUMN_V1_SIZEW CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem) +#define LVCOLUMN_V1_SIZE WINELIB_NAME_AW(LVCOLUMN_V1_SIZE) + +#define LV_COLUMN LVCOLUMN + + +typedef struct tagNMLISTVIEW +{ + NMHDR hdr; + INT iItem; + INT iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; LPARAM lParam; -} NMHDDISPINFOA, *LPNMHDDISPINFOA; -typedef struct tagNMHDDISPINFOW { - NMHDR hdr; - int iItem; - UINT mask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; -} NMHDDISPINFOW, *LPNMHDDISPINFOW; -typedef struct tagNMCUSTOMDRAWINFO { - NMHDR hdr; - DWORD dwDrawStage; - HDC hdc; - RECT rc; - DWORD dwItemSpec; - UINT uItemState; - LPARAM lItemlParam; -} NMCUSTOMDRAW, *LPNMCUSTOMDRAW; -typedef struct tagNMLVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; -#if _WIN32_IE >= 0x0400 - int iSubItem; -#endif -} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW; -#if (_WIN32_IE >= 0x0400) +} NMLISTVIEW, *LPNMLISTVIEW; + +#define NM_LISTVIEW NMLISTVIEW +#define LPNM_LISTVIEW LPNMLISTVIEW + +typedef struct tagNMITEMACTIVATE +{ + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; + UINT uKeyFlags; +} NMITEMACTIVATE, *LPNMITEMACTIVATE; + +#define LVKF_ALT 0x0001 +#define LVKF_CONTROL 0x0002 +#define LVKF_SHIFT 0x0004 + +typedef struct tagLVDISPINFO +{ + NMHDR hdr; + LVITEMA item; +} NMLVDISPINFOA, *LPNMLVDISPINFOA; + +typedef struct tagLVDISPINFOW +{ + NMHDR hdr; + LVITEMW item; +} NMLVDISPINFOW, *LPNMLVDISPINFOW; + +#define NMLVDISPINFO WINELIB_NAME_AW(NMLVDISPINFO) +#define LPNMLVDISPINFO WINELIB_NAME_AW(LPNMLVDISPINFO) + +#define LV_DISPINFO NMLVDISPINFO +#define LV_DISPINFOA NMLVDISPINFOA +#define LV_DISPINFOW NMLVDISPINFOW + +#include +typedef struct tagLVKEYDOWN +{ + NMHDR hdr; + WORD wVKey; + UINT flags; +} NMLVKEYDOWN, *LPNMLVKEYDOWN; +#include + +#define LV_KEYDOWN NMLVKEYDOWN + typedef struct tagNMLVGETINFOTIPA { - NMHDR hdr; - DWORD dwFlags; - LPSTR pszText; - int cchTextMax; - int iItem; - int iSubItem; - LPARAM lParam; + NMHDR hdr; + DWORD dwFlags; + LPSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; } NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA; + typedef struct tagNMLVGETINFOTIPW { - NMHDR hdr; - DWORD dwFlags; - LPWSTR pszText; - int cchTextMax; - int iItem; - int iSubItem; - LPARAM lParam; + NMHDR hdr; + DWORD dwFlags; + LPWSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; } NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW; -#endif /* _WIN32_IE >= 0x0400 */ + +#define NMLVGETINFOTIP WINELIB_NAME_AW(NMLVGETINFOTIP) +#define LPNMLVGETINFOTIP WINELIB_NAME_AW(LPNMLVGETINFOTIP) + +typedef struct tagLVHITTESTINFO +{ + POINT pt; + UINT flags; + INT iItem; + INT iSubItem; +} LVHITTESTINFO, *LPLVHITTESTINFO; + +#define LV_HITTESTINFO LVHITTESTINFO +#define _LV_HITTESTINFO tagLVHITTESTINFO +#define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO,iItem) + +typedef struct tagLVFINDINFOA +{ + UINT flags; + LPCSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} LVFINDINFOA, *LPLVFINDINFOA; + +typedef struct tagLVFINDINFOW +{ + UINT flags; + LPCWSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} LVFINDINFOW, *LPLVFINDINFOW; + +#define LVFINDINFO WINELIB_NAME_AW(LVFINDINFO) +#define LPLVFINDINFO WINELIB_NAME_AW(LPLVFINDINFO) + +#define LV_FINDINFO LVFINDINFO +#define LV_FINDINFOA LVFINDINFOA +#define LV_FINDINFOW LVFINDINFOW + +/* Groups relates structures */ + +typedef struct LVGROUP +{ + UINT cbSize; + UINT mask; + LPWSTR pszHeader; + int cchHeader; + LPWSTR pszFooter; + int cchFooter; + int iGroupId; + UINT stateMask; + UINT state; + UINT uAlign; +} LVGROUP, *PLVGROUP; + +typedef struct LVGROUPMETRICS +{ + UINT cbSize; + UINT mask; + UINT Left; + UINT Top; + UINT Right; + UINT Bottom; + COLORREF crLeft; + COLORREF crTop; + COLORREF crRight; + COLORREF crBottom; + COLORREF crRightHeader; + COLORREF crFooter; +} LVGROUPMETRICS, *PLVGROUPMETRICS; + +typedef INT (*PFNLVGROUPCOMPARE)(INT, INT, VOID*); + +typedef struct LVINSERTGROUPSORTED +{ + PFNLVGROUPCOMPARE pfnGroupCompare; + LPVOID *pvData; + LVGROUP lvGroup; +} LVINSERTGROUPSORTED, *PLVINSERTGROUPSORTED; + +/* Tile related structures */ + +typedef struct LVTILEINFO +{ + UINT cbSize; + int iItem; + UINT cColumns; + PUINT puColumns; +} LVTILEINFO, *PLVTILEINFO; + +typedef struct LVTILEVIEWINFO +{ + UINT cbSize; + DWORD dwMask; + DWORD dwFlags; + SIZE sizeTile; + int cLines; + RECT rcLabelMargin; +} LVTILEVIEWINFO, *PLVTILEVIEWINFO; + +typedef struct LVINSERTMARK +{ + UINT cbSize; + DWORD dwFlags; + int iItem; + DWORD dwReserved; +} LVINSERTMARK, *PLVINSERTMARK; + +typedef struct tagTCHITTESTINFO +{ + POINT pt; + UINT flags; +} TCHITTESTINFO, *LPTCHITTESTINFO; + +#define TC_HITTESTINFO TCHITTESTINFO + +typedef INT (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM); + +#define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLCUSTOMDRW, clrTextBk) + +typedef struct tagNMLVCUSTOMDRAW +{ + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + int iSubItem; /* (_WIN32_IE >= 0x0400) */ + DWORD dwItemType; /* (_WIN32_IE >= 0x560) */ + COLORREF clrFace; /* (_WIN32_IE >= 0x560) */ + int iIconEffect; /* (_WIN32_IE >= 0x560) */ + int iIconPhase; /* (_WIN32_IE >= 0x560) */ + int iPartId; /* (_WIN32_IE >= 0x560) */ + int iStateId; /* (_WIN32_IE >= 0x560) */ + RECT rcText; /* (_WIN32_IE >= 0x560) */ + UINT uAlign; /* (_WIN32_IE >= 0x560) */ +} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW; + +typedef struct tagNMLVCACHEHINT +{ + NMHDR hdr; + INT iFrom; + INT iTo; +} NMLVCACHEHINT, *LPNMLVCACHEHINT; + +#define LPNM_CACHEHINT LPNMLVCACHEHINT +#define PNM_CACHEHINT LPNMLVCACHEHINT +#define NM_CACHEHINT NMLVCACHEHINT + +typedef struct tagNMLVFINDITEMA +{ + NMHDR hdr; + int iStart; + LVFINDINFOA lvfi; +} NMLVFINDITEMA, *LPNMLVFINDITEMA; + +typedef struct tagNMLVFINDITEMW +{ + NMHDR hdr; + int iStart; + LVFINDINFOW lvfi; +} NMLVFINDITEMW, *LPNMLVFINDITEMW; + +#define NMLVFINDITEM WINELIB_NAME_AW(NMLVFINDITEM) +#define LPNMLVFINDITEM WINELIB_NAME_AW(LPNMLVFINDITEM) +#define NM_FINDITEM NMLVFINDITEM +#define LPNM_FINDITEM LPNMLVFINDITEM +#define PNM_FINDITEM LPNMLVFINDITEM + typedef struct tagNMLVODSTATECHANGE { NMHDR hdr; @@ -2283,1432 +3664,1375 @@ typedef struct tagNMLVODSTATECHANGE UINT uNewState; UINT uOldState; } NMLVODSTATECHANGE, *LPNMLVODSTATECHANGE; + #define PNM_ODSTATECHANGE LPNMLVODSTATECHANGE #define LPNM_ODSTATECHANGE LPNMLVODSTATECHANGE #define NM_ODSTATECHANGE NMLVODSTATECHANGE -typedef struct tagNMTVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; -#if _WIN32_IE >= 0x0400 - int iLevel; + +typedef struct NMLVSCROLL +{ + NMHDR hdr; + int dx; + int dy; +} NMLVSCROLL, *LPNMLVSCROLL; + +#define ListView_SetItemCount(hwnd,count) \ + (BOOL)SNDMSGA((hwnd),LVM_SETITEMCOUNT,(WPARAM)(INT)(count),0) +#define ListView_SetTextBkColor(hwnd,clrBk) \ + (BOOL)SNDMSGA((hwnd),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(clrBk)) +#define ListView_SetTextColor(hwnd,clrBk) \ + (BOOL)SNDMSGA((hwnd),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(clrBk)) +#define ListView_DeleteColumn(hwnd,col)\ + (LRESULT)SNDMSGA((hwnd),LVM_DELETECOLUMN,0,(LPARAM)(INT)(col)) +#define ListView_GetColumnA(hwnd,x,col)\ + (LRESULT)SNDMSGA((hwnd),LVM_GETCOLUMNA,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNA)(col)) +#define ListView_GetColumnW(hwnd,x,col)\ + (LRESULT)SNDMSGW((hwnd),LVM_GETCOLUMNW,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNW)(col)) +#define ListView_GetColumn WINELIB_NAME_AW(ListView_GetColumn) +#define ListView_SetColumnA(hwnd,x,col)\ + (LRESULT)SNDMSGA((hwnd),LVM_SETCOLUMNA,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNA)(col)) +#define ListView_SetColumnW(hwnd,x,col)\ + (LRESULT)SNDMSGW((hwnd),LVM_SETCOLUMNW,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNW)(col)) +#define ListView_SetColumn WINELIB_NAME_AW(ListView_SetColumn) +#define ListView_GetColumnWidth(hwnd,x)\ + (INT)SNDMSGW((hwnd),LVM_GETCOLUMNWIDTH,(WPARAM)(INT)(x),0L) +#define ListView_SetColumnWidth(hwnd,x,width)\ + (BOOL)SNDMSGW((hwnd),LVM_SETCOLUMNWIDTH,(WPARAM)(INT)(x),(LPARAM)(MAKELPARAM(width,0))) + + +#define ListView_GetNextItem(hwnd,nItem,flags) \ + (INT)SNDMSGA((hwnd),LVM_GETNEXTITEM,(WPARAM)(INT)(nItem),(LPARAM)(MAKELPARAM(flags,0))) +#define ListView_FindItemA(hwnd,nItem,plvfi) \ + (INT)SNDMSGA((hwnd),LVM_FINDITEMA,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOA*)(plvfi)) +#define ListView_FindItemW(hwnd,nItem,plvfi) \ + (INT)SNDMSGW((hwnd),LVM_FINDITEMW,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOW*)(plvfi)) +#define ListView_FindItem WINELIB_NAME_AW(ListView_FindItem) + +#define ListView_Arrange(hwnd,code) \ + (INT)SNDMSGA((hwnd),LVM_ARRANGE,(WPARAM)(INT)(code),0L) +#define ListView_GetItemPosition(hwnd,i,ppt) \ + (INT)SNDMSGA((hwnd),LVM_GETITEMPOSITION,(WPARAM)(INT)(i),(LPARAM)(LPPOINT)(ppt)) +#define ListView_GetItemRect(hwnd,i,prc,code) \ + (BOOL)SNDMSGA((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), \ + ((prc) ? (((RECT*)(prc))->left = (code),(LPARAM)(RECT \ + *)(prc)) : (LPARAM)(RECT*)NULL)) +#define ListView_SetItemA(hwnd,pitem) \ + (INT)SNDMSGA((hwnd),LVM_SETITEMA,0,(LPARAM)(const LVITEMA *)(pitem)) +#define ListView_SetItemW(hwnd,pitem) \ + (INT)SNDMSGW((hwnd),LVM_SETITEMW,0,(LPARAM)(const LVITEMW *)(pitem)) +#define ListView_SetItem WINELIB_NAME_AW(ListView_SetItem) +#define ListView_SetItemState(hwnd,i,data,dataMask) \ +{ LVITEMA _LVi; _LVi.state = data; _LVi.stateMask = dataMask;\ + SNDMSGA(hwnd, LVM_SETITEMSTATE, (WPARAM)(UINT)i, (LPARAM) (LPLVITEMA)&_LVi);} +#define ListView_GetItemState(hwnd,i,mask) \ + (BOOL)SNDMSGA((hwnd),LVM_GETITEMSTATE,(WPARAM)(UINT)(i),(LPARAM)(UINT)(mask)) +#define ListView_GetCountPerPage(hwnd) \ + (BOOL)SNDMSGW((hwnd),LVM_GETCOUNTPERPAGE,0,0L) +#define ListView_GetImageList(hwnd,iImageList) \ + (HIMAGELIST)SNDMSGA((hwnd),LVM_GETIMAGELIST,(WPARAM)(INT)(iImageList),0L) +#define ListView_GetStringWidthA(hwnd,pstr) \ + (INT)SNDMSGA((hwnd),LVM_GETSTRINGWIDTHA,0,(LPARAM)(LPCSTR)(pstr)) +#define ListView_GetStringWidthW(hwnd,pstr) \ + (INT)SNDMSGW((hwnd),LVM_GETSTRINGWIDTHW,0,(LPARAM)(LPCWSTR)(pstr)) +#define ListView_GetStringWidth WINELIB_NAME_AW(ListView_GetStringWidth) +#define ListView_GetTopIndex(hwnd) \ + (BOOL)SNDMSGA((hwnd),LVM_GETTOPINDEX,0,0L) +#define ListView_Scroll(hwnd,dx,dy) \ + (BOOL)SNDMSGA((hwnd),LVM_SCROLL,(WPARAM)(INT)(dx),(LPARAM)(INT)(dy)) +#define ListView_EnsureVisible(hwnd,i,fPartialOk) \ + (BOOL)SNDMSGA((hwnd),LVM_ENSUREVISIBLE,(WPARAM)(INT)i,(LPARAM)(BOOL)fPartialOk) +#define ListView_SetBkColor(hwnd,clrBk) \ + (BOOL)SNDMSGA((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk)) +#define ListView_SetImageList(hwnd,himl,iImageList) \ + (HIMAGELIST)SNDMSGA((hwnd),LVM_SETIMAGELIST,(WPARAM)(iImageList),(LPARAM)(HIMAGELIST)(himl)) +#define ListView_GetItemCount(hwnd) \ + (INT)SNDMSGA((hwnd),LVM_GETITEMCOUNT,0,0L) +#define ListView_RedrawItems(hwnd,first,last) \ + (BOOL)SNDMSGA((hwnd),LVM_REDRAWITEMS,(WPARAM)(INT)(first),(LPARAM)(INT)(last)) +#define ListView_GetEditControl(hwnd) \ + (HWND)SNDMSGA((hwnd), LVM_GETEDITCONTROL, 0, 0) +#define ListView_GetTextColor(hwnd) \ + (COLORREF)SNDMSGA((hwnd), LVM_GETTEXTCOLOR, 0, 0) +#define ListView_GetBkColor(hwnd) \ + (COLORREF)SNDMSGA((hwnd), LVM_GETBKCOLOR, 0, 0) +#define ListView_GetItemA(hwnd,pitem) \ + (BOOL)SNDMSGA((hwnd),LVM_GETITEMA,0,(LPARAM)(LVITEMA *)(pitem)) +#define ListView_GetItemW(hwnd,pitem) \ + (BOOL)SNDMSGW((hwnd),LVM_GETITEMW,0,(LPARAM)(LVITEMW *)(pitem)) +#define ListView_GetItem WINELIB_NAME_AW(ListView_GetItem) +#define ListView_GetOrigin(hwnd,ppt) \ + (BOOL)SNDMSGW((hwnd),LVM_GETORIGIN,0,(LPARAM)(POINT *)(ppt)) + +#define ListView_HitTest(hwnd,pinfo) \ + (INT)SNDMSGA((hwnd),LVM_HITTEST,0,(LPARAM)(LPLVHITTESTINFO)(pinfo)) + +#define ListView_InsertItemA(hwnd,pitem) \ + (INT)SNDMSGA((hwnd),LVM_INSERTITEMA,0,(LPARAM)(const LVITEMA *)(pitem)) +#define ListView_InsertItemW(hwnd,pitem) \ + (INT)SNDMSGW((hwnd),LVM_INSERTITEMW,0,(LPARAM)(const LVITEMW *)(pitem)) +#define ListView_InsertItem WINELIB_NAME_AW(ListView_InsertItem) + +#define ListView_DeleteAllItems(hwnd) \ + (BOOL)SNDMSGA((hwnd),LVM_DELETEALLITEMS,0,0L) + +#define ListView_InsertColumnA(hwnd,iCol,pcol) \ + (INT)SNDMSGA((hwnd),LVM_INSERTCOLUMNA,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNA *)(pcol)) +#define ListView_InsertColumnW(hwnd,iCol,pcol) \ + (INT)SNDMSGW((hwnd),LVM_INSERTCOLUMNW,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNW *)(pcol)) +#define ListView_InsertColumn WINELIB_NAME_AW(ListView_InsertColumn) + +#define ListView_SortItems(hwndLV,_pfnCompare,_lPrm) \ + (BOOL)SNDMSGA((hwndLV),LVM_SORTITEMS,(WPARAM)(LPARAM)_lPrm,(LPARAM)(PFNLVCOMPARE)_pfnCompare) +#define ListView_SetItemPosition(hwndLV, i, x, y) \ + (BOOL)SNDMSGA((hwndLV),LVM_SETITEMPOSITION,(WPARAM)(INT)(i),MAKELPARAM((x),(y))) +#define ListView_GetSelectedCount(hwndLV) \ + (UINT)SNDMSGA((hwndLV),LVM_GETSELECTEDCOUNT,0,0L) + +#define ListView_EditLabelA(hwndLV, i) \ + (HWND)SNDMSGA((hwndLV),LVM_EDITLABELA,(WPARAM)(int)(i), 0L) +#define ListView_EditLabelW(hwndLV, i) \ + (HWND)SNDMSGW((hwndLV),LVM_EDITLABELW,(WPARAM)(int)(i), 0L) +#define ListView_EditLabel WINELIB_NAME_AW(ListView_EditLabel) + +#define ListView_GetItemTextA(hwndLV, i, _iSubItem, _pszText, _cchTextMax) \ +{ \ + LVITEMA _LVi;\ + _LVi.iSubItem = _iSubItem;\ + _LVi.cchTextMax = _cchTextMax;\ + _LVi.pszText = _pszText;\ + SNDMSGA(hwndLV, LVM_GETITEMTEXTA, (WPARAM)(i), (LPARAM)&_LVi);\ +} +#define ListView_GetItemTextW(hwndLV, i, _iSubItem, _pszText, _cchTextMax) \ +{ \ + LVITEMW _LVi;\ + _LVi.iSubItem = _iSubItem;\ + _LVi.cchTextMax = _cchTextMax;\ + _LVi.pszText = _pszText;\ + SNDMSGW(hwndLV, LVM_GETITEMTEXTW, (WPARAM)(i), (LPARAM)&_LVi);\ +} +#define ListView_GetItemText WINELIB_NAME_AW(ListView_GetItemText) +#define ListView_SetItemPosition32(hwnd,n,x1,y1) \ +{ POINT ptNewPos; ptNewPos.x = (x1); ptNewPos.y = (y1); SNDMSGA((hwnd), LVM_SETITEMPOSITION32, (WPARAM)(int)(n), (LPARAM)&ptNewPos); } +#define ListView_SetItemTextA(hwndLV, i, _iSubItem, _pszText) \ +{ LVITEMA _LVi; _LVi.iSubItem = _iSubItem; _LVi.pszText = _pszText;\ + SNDMSGA(hwndLV, LVM_SETITEMTEXTA, (WPARAM)i, (LPARAM) (LVITEMA*)&_LVi);} +#define ListView_SetItemTextW(hwndLV, i, _iSubItem, _pszText) \ +{ LVITEMW _LVi; _LVi.iSubItem = _iSubItem; _LVi.pszText = _pszText;\ + SNDMSGW(hwndLV, LVM_SETITEMTEXTW, (WPARAM)i, (LPARAM) (LVITEMW*)& _LVi);} +#define ListView_SetItemText WINELIB_NAME_AW(ListView_SetItemText) + +#define ListView_DeleteItem(hwndLV, i) \ + (BOOL)SNDMSGA(hwndLV, LVM_DELETEITEM, (WPARAM)(int)(i), 0L) +#define ListView_Update(hwndLV, i) \ + (BOOL)SNDMSGA((hwndLV), LVM_UPDATE, (WPARAM)(i), 0L) +#define ListView_GetColumnOrderArray(hwndLV, iCount, pi) \ + (BOOL)SNDMSGA((hwndLV), LVM_GETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi) +#define ListView_GetExtendedListViewStyle(hwndLV) \ + (DWORD)SNDMSGA((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0L) +#define ListView_GetHotCursor(hwndLV) \ + (HCURSOR)SNDMSGA((hwndLV), LVM_GETHOTCURSOR, 0, 0L) +#define ListView_GetHotItem(hwndLV) \ + (int)SNDMSGA((hwndLV), LVM_GETHOTITEM, 0, 0L) +#define ListView_GetItemSpacing(hwndLV, fSmall) \ + (DWORD)SNDMSGA((hwndLV), LVM_GETITEMSPACING, (WPARAM)fSmall, 0L) +#define ListView_GetSubItemRect(hwndLV, iItem, iSubItem, code, prc) \ + (BOOL)SNDMSGA((hwndLV), LVM_GETSUBITEMRECT, (WPARAM)(int)(iItem), \ + ((prc) ? ((((LPRECT)(prc))->top = iSubItem), (((LPRECT)(prc))->left = code), (LPARAM)(prc)) : 0)) +#define ListView_GetToolTips(hwndLV) \ + (HWND)SNDMSGA((hwndLV), LVM_GETTOOLTIPS, 0, 0L) +#define ListView_SetColumnOrderArray(hwndLV, iCount, pi) \ + (BOOL)SNDMSGA((hwndLV), LVM_SETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi) +#define ListView_SetExtendedListViewStyle(hwndLV, dw) \ + (DWORD)SNDMSGA((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dw) +#define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw) \ + (DWORD)SNDMSGA((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, (WPARAM)dwMask, (LPARAM)dw) +#define ListView_SetHotCursor(hwndLV, hcur) \ + (HCURSOR)SNDMSGA((hwndLV), LVM_SETHOTCURSOR, 0, (LPARAM)hcur) +#define ListView_SetHotItem(hwndLV, i) \ + (int)SNDMSGA((hwndLV), LVM_SETHOTITEM, (WPARAM)i, 0L) +#define ListView_SetIconSpacing(hwndLV, cx, cy) \ + (DWORD)SNDMSGA((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy)) +#define ListView_SetToolTips(hwndLV, hwndNewHwnd) \ + (HWND)SNDMSGA((hwndLV), LVM_SETTOOLTIPS, (WPARAM)hwndNewHwnd, 0L) +#define ListView_SubItemHitTest(hwndLV, plvhti) \ + (int)SNDMSGA((hwndLV), LVM_SUBITEMHITTEST, 0, (LPARAM)(LPLVHITTESTINFO)(plvhti)) +#define ListView_GetSelectionMark(hwndLV) \ + (int)SNDMSG((hwndLV), LVM_GETSELECTIONMARK, 0, 0) +#define ListView_SetSelectionMark(hwndLV, iItem) \ + (int)SNDMSG((hwndLV), LVM_SETSELECTIONMARK, 0, (LPARAM)(iItem)) +#define ListView_GetViewRect(hwndLV, prc) \ + (BOOL)SNDMSG((hwndLV),LVM_GETVIEWRECT,0,(LPARAM)(LPRECT)(prc)) +#define ListView_GetHeader(hwndLV) \ + (HWND)SNDMSG((hwndLV),LVM_GETHEADER,0,0L) +#define ListView_SetSelectedColumn(hwnd, iCol) \ + SNDMSG((hwnd), LVM_SETSELECTEDCOLUMN, (WPARAM)iCol, 0) +#define ListView_SetTileWidth(hwnd, cpWidth) \ + SNDMSG((hwnd), LVM_SETTILEWIDTH, (WPARAM)cpWidth, 0) +#define ListView_SetView(hwnd, iView) \ + (DWORD)SNDMSG((hwnd), LVM_SETVIEW, (WPARAM)(DWORD)iView, 0) +#define ListView_GetView(hwnd) \ + (DWORD)SNDMSG((hwnd), LVM_GETVIEW, 0, 0) +#define ListView_InsertGroup(hwnd, index, pgrp) \ + SNDMSG((hwnd), LVM_INSERTGROUP, (WPARAM)index, (LPARAM)pgrp) +#define ListView_SetGroupHeaderImageList(hwnd, himl) \ + SNDMSG((hwnd), LVM_SETIMAGELIST, (WPARAM)LVSIL_GROUPHEADER, (LPARAM)himl) +#define ListView_GetGroupHeaderImageList(hwnd) \ + SNDMSG((hwnd), LVM_GETIMAGELIST, (WPARAM)LVSIL_GROUPHEADER, 0) +#define ListView_SetGroupInfo(hwnd, iGroupId, pgrp) \ + SNDMSG((hwnd), LVM_SETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp) +#define ListView_GetGroupInfo(hwnd, iGroupId, pgrp) \ + SNDMSG((hwnd), LVM_GETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp) +#define ListView_RemoveGroup(hwnd, iGroupId) \ + SNDMSG((hwnd), LVM_REMOVEGROUP, (WPARAM)iGroupId, 0) +#define ListView_MoveGroup(hwnd, iGroupId, toIndex) \ + SNDMSG((hwnd), LVM_MOVEGROUP, (WPARAM)iGroupId, (LPARAM)toIndex) +#define ListView_MoveItemToGroup(hwnd, idItemFrom, idGroupTo) \ + SNDMSG((hwnd), LVM_MOVEITEMTOGROUP, (WPARAM)idItemFrom, (LPARAM)idGroupTo) +#define ListView_SetGroupMetrics(hwnd, pGroupMetrics) \ + SNDMSG((hwnd), LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics) +#define ListView_GetGroupMetrics(hwnd, pGroupMetrics) \ + SNDMSG((hwnd), LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics) +#define ListView_EnableGroupView(hwnd, fEnable) \ + SNDMSG((hwnd), LVM_ENABLEGROUPVIEW, (WPARAM)fEnable, 0) +#define ListView_SortGroups(hwnd, _pfnGroupCompate, _plv) \ + SNDMSG((hwnd), LVM_SORTGROUPS, (WPARAM)_pfnGroupCompate, (LPARAM)_plv) +#define ListView_InsertGroupSorted(hwnd, structInsert) \ + SNDMSG((hwnd), LVM_INSERTGROUPSORTED, (WPARAM)structInsert, 0) +#define ListView_RemoveAllGroups(hwnd) \ + SNDMSG((hwnd), LVM_REMOVEALLGROUPS, 0, 0) +#define ListView_HasGroup(hwnd, dwGroupId) \ + SNDMSG((hwnd), LVM_HASGROUP, dwGroupId, 0) +#define ListView_SetTileViewInfo(hwnd, ptvi) \ + SNDMSG((hwnd), LVM_SETTILEVIEWINFO, 0, (LPARAM)ptvi) +#define ListView_GetTileViewInfo(hwnd, ptvi) \ + SNDMSG((hwnd), LVM_GETTILEVIEWINFO, 0, (LPARAM)ptvi) +#define ListView_SetTileInfo(hwnd, pti) \ + SNDMSG((hwnd), LVM_SETTILEINFO, 0, (LPARAM)pti) +#define ListView_GetTileInfo(hwnd, pti) \ + SNDMSG((hwnd), LVM_GETTILEINFO, 0, (LPARAM)pti) +#define ListView_SetInsertMark(hwnd, lvim) \ + (BOOL)SNDMSG((hwnd), LVM_SETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim)) +#define ListView_GetInsertMark(hwnd, lvim) \ + (BOOL)SNDMSG((hwnd), LVM_GETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim)) +#define ListView_InsertMarkHitTest(hwnd, point, lvim) \ + (int)SNDMSG((hwnd), LVM_INSERTMARKHITTEST, (WPARAM)(LPPOINT)(point), (LPARAM)(LPLVINSERTMARK)(lvim)) +#define ListView_GetInsertMarkRect(hwnd, rc) \ + (int)SNDMSG((hwnd), LVM_GETINSERTMARKRECT, (WPARAM)0, (LPARAM)(LPRECT)(rc)) +#define ListView_SetInsertMarkColor(hwnd, color) \ + (COLORREF)SNDMSG((hwnd), LVM_SETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color)) +#define ListView_GetInsertMarkColor(hwnd) \ + (COLORREF)SNDMSG((hwnd), LVM_GETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)0) +#define ListView_SetInfoTip(hwndLV, plvInfoTip)\ + (BOOL)SNDMSG((hwndLV), LVM_SETINFOTIP, (WPARAM)0, (LPARAM)plvInfoTip) +#define ListView_GetSelectedColumn(hwnd) \ + (UINT)SNDMSG((hwnd), LVM_GETSELECTEDCOLUMN, 0, 0) +#define ListView_IsGroupViewEnabled(hwnd) \ + (BOOL)SNDMSG((hwnd), LVM_ISGROUPVIEWENABLED, 0, 0) +#define ListView_GetOutlineColor(hwnd) \ + (COLORREF)SNDMSG((hwnd), LVM_GETOUTLINECOLOR, 0, 0) +#define ListView_SetOutlineColor(hwnd, color) \ + (COLORREF)SNDMSG((hwnd), LVM_SETOUTLINECOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color)) +#define ListView_CancelEditLabel(hwnd) \ + (VOID)SNDMSG((hwnd), LVM_CANCELEDITLABEL, (WPARAM)0, (LPARAM)0) +#define ListView_MapIndexToID(hwnd, index) \ + (UINT)SNDMSG((hwnd), LVM_MAPINDEXTOID, (WPARAM)index, (LPARAM)0) +#define ListView_MapIDToIndex(hwnd, id) \ + (UINT)SNDMSG((hwnd), LVM_MAPIDTOINDEX, (WPARAM)id, (LPARAM)0) + +/* Tab Control */ + +#define WC_TABCONTROLA "SysTabControl32" +#if defined(__GNUC__) +# define WC_TABCONTROLW (const WCHAR []){ 'S','y','s', \ + 'T','a','b','C','o','n','t','r','o','l','3','2',0 } +#elif defined(_MSC_VER) +# define WC_TABCONTROLW L"SysTabControl32" +#else +static const WCHAR WC_TABCONTROLW[] = { 'S','y','s', + 'T','a','b','C','o','n','t','r','o','l','3','2',0 }; #endif -} NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW; -#if (_WIN32_IE >= 0x400) -typedef struct _NMTBCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - HBRUSH hbrMonoDither; - HBRUSH hbrLines; - HPEN hpenLines; - COLORREF clrText; - COLORREF clrMark; - COLORREF clrTextHighlight; - COLORREF clrBtnFace; - COLORREF clrBtnHighlight; - COLORREF clrHighlightHotTrack; - RECT rcText; - int nStringBkMode; - int nHLStringBkMode; -#if (_WIN32_WINNT >= 0x0501) - int iListGap; -#endif -} NMTBCUSTOMDRAW, * LPNMTBCUSTOMDRAW; -typedef struct tagNMITEMACTIVATE { - NMHDR hdr; - int iItem; - int iSubItem; - UINT uNewState; - UINT uOldState; - UINT uChanged; - POINT ptAction; - LPARAM lParam; - UINT uKeyFlags; -} NMITEMACTIVATE, *LPNMITEMACTIVATE; -#endif /* _WIN32_IE >= 0x0400 */ -typedef struct tagTBADDBITMAP { - HINSTANCE hInst; - UINT nID; -} TBADDBITMAP,*LPTBADDBITMAP; -typedef struct tagTBSAVEPARAMSA { - HKEY hkr; - LPCSTR pszSubKey; - LPCSTR pszValueName; -} TBSAVEPARAMSA, *LPTBSAVEPARAMSA; -typedef struct tagTBSAVEPARAMSW { - HKEY hkr; - LPCWSTR pszSubKey; - LPCWSTR pszValueName; -} TBSAVEPARAMSW, *LPTBSAVEPARAMSW, *LPTBSAVEPARAMW; -typedef struct { - HINSTANCE hInstOld; - UINT nIDOld; - HINSTANCE hInstNew; - UINT nIDNew; - int nButtons; -} TBREPLACEBITMAP,*LPTBREPLACEBITMAP; -#if (_WIN32_WINNT >= 0x0501) -typedef struct { - UINT cbSize; - DWORD dwMask; - INT cxPad; - INT cyPad; - INT cxBarPad; - INT cyBarPad; - INT cxButtonSpacing; - INT cyButtonSpacing; -} TBMETRICS, *LPTBMETRICS; -#endif /* _WIN32_WINNT >= 0x0501 */ -typedef struct tagNMTOOLBARA { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPSTR pszText; -#if (_WIN32_IE >= 0x500) - RECT rcButton; -#endif -} NMTOOLBARA, *LPNMTOOLBARA; -#define TBNOTIFYA NMTOOLBARA -#define LPTBNOTIFYA LPNMTOOLBARA -typedef struct tagNMTOOLBARW { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPWSTR pszText; -#if (_WIN32_IE >= 0x500) - RECT rcButton; -#endif -} NMTOOLBARW, *LPNMTOOLBARW; -#define TBNOTIFYW NMTOOLBARW -#define LPTBNOTIFYW LPNMTOOLBARW -typedef struct tagTOOLINFOA { - UINT cbSize; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; -#if (_WIN32_IE >= 0x0300) - LPARAM lParam; -#endif -} TTTOOLINFOA,*LPTTTOOLINFOA,*PTOOLINFOA; -#define TOOLINFOA TTTOOLINFOA -#define LPTOOLINFOA LPTTTOOLINFOA -#define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText) -#define TTTOOLINFOA_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lParam) -#define TTTOOLINFOA_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpReserved) -typedef struct tagTOOLINFOW { - UINT cbSize; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; -#if (_WIN32_IE >= 0x0300) - LPARAM lParam; -#endif -} TTTOOLINFOW,*LPTTTOOLINFOW,*PTOOLINFOW; -#define TOOLINFOW TTTOOLINFOW -#define LPTOOLINFOW LPTTTOOLINFOW -#define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText) -#define TTTOOLINFOW_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lParam) -#define TTTOOLINFOW_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpReserved) -typedef struct _TT_HITTESTINFOA { - HWND hwnd; - POINT pt; - TOOLINFOA ti; -} TTHITTESTINFOA,*LPTTHITTESTINFOA; -#define LPHITTESTINFOA LPTTHITTESTINFOA -typedef struct _TT_HITTESTINFOW { - HWND hwnd; - POINT pt; - TOOLINFOW ti; -} TTHITTESTINFOW,*LPTTHITTESTINFOW; -#define LPHITTESTINFOW LPTTHITTESTINFOW -typedef struct tagNMTTDISPINFOA { - NMHDR hdr; - LPSTR lpszText; - char szText[80]; - HINSTANCE hinst; - UINT uFlags; -#if (_WIN32_IE >= 0x0300) - LPARAM lParam; -#endif -} NMTTDISPINFOA, *LPNMTTDISPINFOA; -#define TOOLTIPTEXTA NMTTDISPINFOA -#define LPTOOLTIPTEXTA LPNMTTDISPINFOA -typedef struct tagNMTTDISPINFOW { - NMHDR hdr; - LPWSTR lpszText; - WCHAR szText[80]; - HINSTANCE hinst; - UINT uFlags; -#if (_WIN32_IE >= 0x0300) - LPARAM lParam; -#endif -} NMTTDISPINFOW, *LPNMTTDISPINFOW; -#define TOOLTIPTEXTW NMTTDISPINFOW -#define LPTOOLTIPTEXTW LPNMTTDISPINFOW -typedef struct _UDACCEL { - UINT nSec; - UINT nInc; -} UDACCEL,*LPUDACCEL; -typedef struct _NM_UPDOWN { - NMHDR hdr; - int iPos; - int iDelta; -} NMUPDOWN,*LPNMUPDOWN; -#if (_WIN32_WINNT >= 0x0501) -typedef struct tagLITEM +#define WC_TABCONTROL WINELIB_NAME_AW(WC_TABCONTROL) + +/* tab control styles */ +#define TCS_SCROLLOPPOSITE 0x0001 /* assumes multiline tab */ +#define TCS_BOTTOM 0x0002 +#define TCS_RIGHT 0x0002 +#define TCS_MULTISELECT 0x0004 /* allow multi-select in button mode */ +#define TCS_FLATBUTTONS 0x0008 +#define TCS_FORCEICONLEFT 0x0010 +#define TCS_FORCELABELLEFT 0x0020 +#define TCS_HOTTRACK 0x0040 +#define TCS_VERTICAL 0x0080 +#define TCS_TABS 0x0000 +#define TCS_BUTTONS 0x0100 +#define TCS_SINGLELINE 0x0000 +#define TCS_MULTILINE 0x0200 +#define TCS_RIGHTJUSTIFY 0x0000 +#define TCS_FIXEDWIDTH 0x0400 +#define TCS_RAGGEDRIGHT 0x0800 +#define TCS_FOCUSONBUTTONDOWN 0x1000 +#define TCS_OWNERDRAWFIXED 0x2000 +#define TCS_TOOLTIPS 0x4000 +#define TCS_FOCUSNEVER 0x8000 +#define TCS_EX_FLATSEPARATORS 0x00000001 /* to be used with */ +#define TCS_EX_REGISTERDROP 0x00000002 /* TCM_SETEXTENDEDSTYLE */ + + +#define TCM_FIRST 0x1300 + +#define TCM_GETIMAGELIST (TCM_FIRST + 2) +#define TCM_SETIMAGELIST (TCM_FIRST + 3) +#define TCM_GETITEMCOUNT (TCM_FIRST + 4) +#define TCM_GETITEM WINELIB_NAME_AW(TCM_GETITEM) +#define TCM_GETITEMA (TCM_FIRST + 5) +#define TCM_GETITEMW (TCM_FIRST + 60) +#define TCM_SETITEMA (TCM_FIRST + 6) +#define TCM_SETITEMW (TCM_FIRST + 61) +#define TCM_SETITEM WINELIB_NAME_AW(TCM_SETITEM) +#define TCM_INSERTITEMA (TCM_FIRST + 7) +#define TCM_INSERTITEMW (TCM_FIRST + 62) +#define TCM_INSERTITEM WINELIB_NAME_AW(TCM_INSERTITEM) +#define TCM_DELETEITEM (TCM_FIRST + 8) +#define TCM_DELETEALLITEMS (TCM_FIRST + 9) +#define TCM_GETITEMRECT (TCM_FIRST + 10) +#define TCM_GETCURSEL (TCM_FIRST + 11) +#define TCM_SETCURSEL (TCM_FIRST + 12) +#define TCM_HITTEST (TCM_FIRST + 13) +#define TCM_SETITEMEXTRA (TCM_FIRST + 14) +#define TCM_ADJUSTRECT (TCM_FIRST + 40) +#define TCM_SETITEMSIZE (TCM_FIRST + 41) +#define TCM_REMOVEIMAGE (TCM_FIRST + 42) +#define TCM_SETPADDING (TCM_FIRST + 43) +#define TCM_GETROWCOUNT (TCM_FIRST + 44) +#define TCM_GETTOOLTIPS (TCM_FIRST + 45) +#define TCM_SETTOOLTIPS (TCM_FIRST + 46) +#define TCM_GETCURFOCUS (TCM_FIRST + 47) +#define TCM_SETCURFOCUS (TCM_FIRST + 48) +#define TCM_SETMINTABWIDTH (TCM_FIRST + 49) +#define TCM_DESELECTALL (TCM_FIRST + 50) +#define TCM_HIGHLIGHTITEM (TCM_FIRST + 51) +#define TCM_SETEXTENDEDSTYLE (TCM_FIRST + 52) +#define TCM_GETEXTENDEDSTYLE (TCM_FIRST + 53) +#define TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT + + +#define TCIF_TEXT 0x0001 +#define TCIF_IMAGE 0x0002 +#define TCIF_RTLREADING 0x0004 +#define TCIF_PARAM 0x0008 +#define TCIF_STATE 0x0010 + +#define TCIS_BUTTONPRESSED 0x0001 +#define TCIS_HIGHLIGHTED 0x0002 + +/* TabCtrl Macros */ +#define TabCtrl_GetImageList(hwnd) \ + (HIMAGELIST)SNDMSGA((hwnd), TCM_GETIMAGELIST, 0, 0L) +#define TabCtrl_SetImageList(hwnd, himl) \ + (HIMAGELIST)SNDMSGA((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(UINT)(HIMAGELIST)(himl)) +#define TabCtrl_GetItemCount(hwnd) \ + (int)SNDMSGA((hwnd), TCM_GETITEMCOUNT, 0, 0L) +#define TabCtrl_GetItemA(hwnd, iItem, pitem) \ + (BOOL)SNDMSGA((hwnd), TCM_GETITEMA, (WPARAM)(int)iItem, (LPARAM)(TCITEMA *)(pitem)) +#define TabCtrl_GetItemW(hwnd, iItem, pitem) \ + (BOOL)SNDMSGW((hwnd), TCM_GETITEMW, (WPARAM)(int)iItem, (LPARAM)(TCITEMW *)(pitem)) +#define TabCtrl_GetItem WINELIB_NAME_AW(TabCtrl_GetItem) +#define TabCtrl_SetItemA(hwnd, iItem, pitem) \ + (BOOL)SNDMSGA((hwnd), TCM_SETITEMA, (WPARAM)(int)iItem, (LPARAM)(TCITEMA *)(pitem)) +#define TabCtrl_SetItemW(hwnd, iItem, pitem) \ + (BOOL)SNDMSGW((hwnd), TCM_SETITEMW, (WPARAM)(int)iItem, (LPARAM)(TCITEMW *)(pitem)) +#define TabCtrl_SetItem WINELIB_NAME_AW(TabCtrl_SetItem) +#define TabCtrl_InsertItemA(hwnd, iItem, pitem) \ + (int)SNDMSGA((hwnd), TCM_INSERTITEMA, (WPARAM)(int)iItem, (LPARAM)(const TCITEMA *)(pitem)) +#define TabCtrl_InsertItemW(hwnd, iItem, pitem) \ + (int)SNDMSGW((hwnd), TCM_INSERTITEMW, (WPARAM)(int)iItem, (LPARAM)(const TCITEMW *)(pitem)) +#define TabCtrl_InsertItem WINELIB_NAME_AW(TabCtrl_InsertItem) +#define TabCtrl_DeleteItem(hwnd, i) \ + (BOOL)SNDMSGA((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L) +#define TabCtrl_DeleteAllItems(hwnd) \ + (BOOL)SNDMSGA((hwnd), TCM_DELETEALLITEMS, 0, 0L) +#define TabCtrl_GetItemRect(hwnd, i, prc) \ + (BOOL)SNDMSGA((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT *)(prc)) +#define TabCtrl_GetCurSel(hwnd) \ + (int)SNDMSGA((hwnd), TCM_GETCURSEL, 0, 0) +#define TabCtrl_SetCurSel(hwnd, i) \ + (int)SNDMSGA((hwnd), TCM_SETCURSEL, (WPARAM)i, 0) +#define TabCtrl_HitTest(hwndTC, pinfo) \ + (int)SNDMSGA((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO *)(pinfo)) +#define TabCtrl_SetItemExtra(hwndTC, cb) \ + (BOOL)SNDMSGA((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L) +#define TabCtrl_AdjustRect(hwnd, bLarger, prc) \ + (int)SNDMSGA(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)bLarger, (LPARAM)(RECT *)prc) +#define TabCtrl_SetItemSize(hwnd, x, y) \ + (DWORD)SNDMSGA((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y)) +#define TabCtrl_RemoveImage(hwnd, i) \ + (void)SNDMSGA((hwnd), TCM_REMOVEIMAGE, i, 0L) +#define TabCtrl_SetPadding(hwnd, cx, cy) \ + (void)SNDMSGA((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy)) +#define TabCtrl_GetRowCount(hwnd) \ + (int)SNDMSGA((hwnd), TCM_GETROWCOUNT, 0, 0L) +#define TabCtrl_GetToolTips(hwnd) \ + (HWND)SNDMSGA((hwnd), TCM_GETTOOLTIPS, 0, 0L) +#define TabCtrl_SetToolTips(hwnd, hwndTT) \ + (void)SNDMSGA((hwnd), TCM_SETTOOLTIPS, (WPARAM)hwndTT, 0L) +#define TabCtrl_GetCurFocus(hwnd) \ + (int)SNDMSGA((hwnd), TCM_GETCURFOCUS, 0, 0) +#define TabCtrl_SetCurFocus(hwnd, i) \ + SNDMSGA((hwnd),TCM_SETCURFOCUS, i, 0) +#define TabCtrl_SetMinTabWidth(hwnd, x) \ + (int)SNDMSGA((hwnd), TCM_SETMINTABWIDTH, 0, x) +#define TabCtrl_DeselectAll(hwnd, fExcludeFocus)\ + (void)SNDMSGA((hwnd), TCM_DESELECTALL, fExcludeFocus, 0) +#define TabCtrl_GetUnicodeFormat(hwnd) \ + (BOOL)SNDMSGA((hwnd), TCM_GETUNICODEFORMAT, 0, 0) +#define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) \ + (BOOL)SNDMSGA((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)fUnicode, 0) +#define TabCtrl_GetExtendedStyle(hwnd) \ + (BOOL)SNDMSGA((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0) +#define TabCtrl_SetExtendedStyle(hwnd, dwExStyle) \ + (BOOL)SNDMSGA((hwnd), TCM_GETEXTENDEDSTYLE, 0, (LPARAM)dwExStyle) +#define TabCtrl_HighlightItem(hwnd, i, fHighlight) \ + (BOOL)SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)i, (LPARAM)MAKELONG(fHighlight, 0)) + +/* constants for TCHITTESTINFO */ + +#define TCHT_NOWHERE 0x01 +#define TCHT_ONITEMICON 0x02 +#define TCHT_ONITEMLABEL 0x04 +#define TCHT_ONITEM (TCHT_ONITEMICON | TCHT_ONITEMLABEL) + +typedef struct tagTCITEMHEADERA +{ + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; +} TCITEMHEADERA, *LPTCITEMHEADERA; + +typedef struct tagTCITEMHEADERW +{ + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; +} TCITEMHEADERW, *LPTCITEMHEADERW; + +#define TCITEMHEADER WINELIB_NAME_AW(TCITEMHEADER) +#define LPTCITEMHEADER WINELIB_NAME_AW(LPTCITEMHEADER) +#define TC_ITEMHEADER WINELIB_NAME_AW(TCITEMHEADER) +#define LPTC_ITEMHEADER WINELIB_NAME_AW(LPTCITEMHEADER) + +typedef struct tagTCITEMA { UINT mask; - int iLink; - UINT state; - UINT stateMask; - WCHAR szID[MAX_LINKID_TEXT]; - WCHAR szUrl[L_MAX_URL_LENGTH]; + UINT dwState; + UINT dwStateMask; + LPSTR pszText; + INT cchTextMax; + INT iImage; + LPARAM lParam; +} TCITEMA, *LPTCITEMA; + +typedef struct tagTCITEMW +{ + UINT mask; + DWORD dwState; + DWORD dwStateMask; + LPWSTR pszText; + INT cchTextMax; + INT iImage; + LPARAM lParam; +} TCITEMW, *LPTCITEMW; + +#define TCITEM WINELIB_NAME_AW(TCITEM) +#define LPTCITEM WINELIB_NAME_AW(LPTCITEM) +#define TC_ITEM WINELIB_NAME_AW(TCITEM) +#define LPTC_ITEM WINELIB_NAME_AW(LPTCITEM) + +#define TCN_FIRST (0U-550U) +#define TCN_LAST (0U-580U) +#define TCN_KEYDOWN (TCN_FIRST - 0) +#define TCN_SELCHANGE (TCN_FIRST - 1) +#define TCN_SELCHANGING (TCN_FIRST - 2) +#define TCN_GETOBJECT (TCN_FIRST - 3) + +#include +typedef struct tagTCKEYDOWN +{ + NMHDR hdr; + WORD wVKey; + UINT flags; +} NMTCKEYDOWN; +#include + +#define TC_KEYDOWN NMTCKEYDOWN + +/* ComboBoxEx control */ + +#define WC_COMBOBOXEXA "ComboBoxEx32" +#if defined(__GNUC__) +# define WC_COMBOBOXEXW (const WCHAR []){ 'C','o','m','b','o', \ + 'B','o','x','E','x','3','2',0 } +#elif defined(_MSC_VER) +# define WC_COMBOBOXEXW L"ComboBoxEx32" +#else +static const WCHAR WC_COMBOBOXEXW[] = { 'C','o','m','b','o', + 'B','o','x','E','x','3','2',0 }; +#endif +#define WC_COMBOBOXEX WINELIB_NAME_AW(WC_COMBOBOXEX) + +#define CBEIF_TEXT 0x00000001 +#define CBEIF_IMAGE 0x00000002 +#define CBEIF_SELECTEDIMAGE 0x00000004 +#define CBEIF_OVERLAY 0x00000008 +#define CBEIF_INDENT 0x00000010 +#define CBEIF_LPARAM 0x00000020 +#define CBEIF_DI_SETITEM 0x10000000 + +#define CBEM_INSERTITEMA (WM_USER+1) +#define CBEM_INSERTITEMW (WM_USER+11) +#define CBEM_INSERTITEM WINELIB_NAME_AW(CBEM_INSERTITEM) +#define CBEM_SETIMAGELIST (WM_USER+2) +#define CBEM_GETIMAGELIST (WM_USER+3) +#define CBEM_GETITEMA (WM_USER+4) +#define CBEM_GETITEMW (WM_USER+13) +#define CBEM_GETITEM WINELIB_NAME_AW(CBEM_GETITEM) +#define CBEM_SETITEMA (WM_USER+5) +#define CBEM_SETITEMW (WM_USER+12) +#define CBEM_SETITEM WINELIB_NAME_AW(CBEM_SETITEM) +#define CBEM_DELETEITEM CB_DELETESTRING +#define CBEM_GETCOMBOCONTROL (WM_USER+6) +#define CBEM_GETEDITCONTROL (WM_USER+7) +#define CBEM_SETEXSTYLE (WM_USER+8) +#define CBEM_GETEXSTYLE (WM_USER+9) +#define CBEM_GETEXTENDEDSTYLE (WM_USER+9) +#define CBEM_SETEXTENDEDSTYLE (WM_USER+14) +#define CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define CBEM_HASEDITCHANGED (WM_USER+10) +#define CBEM_SETWINDOWTHEME CCM_SETWINDOWTHEME + +#define CBEIF_TEXT 0x00000001 +#define CBEIF_IMAGE 0x00000002 +#define CBEIF_SELECTEDIMAGE 0x00000004 +#define CBEIF_OVERLAY 0x00000008 +#define CBEIF_INDENT 0x00000010 +#define CBEIF_LPARAM 0x00000020 +#define CBEIF_DI_SETITEM 0x10000000 + +#define CBEN_FIRST (0U-800U) +#define CBEN_LAST (0U-830U) + +#define CBEN_GETDISPINFOA (CBEN_FIRST - 0) +#define CBEN_GETDISPINFOW (CBEN_FIRST - 7) +#define CBEN_GETDISPINFO WINELIB_NAME_AW(CBEN_GETDISPINFO) +#define CBEN_INSERTITEM (CBEN_FIRST - 1) +#define CBEN_DELETEITEM (CBEN_FIRST - 2) +#define CBEN_BEGINEDIT (CBEN_FIRST - 4) +#define CBEN_ENDEDITA (CBEN_FIRST - 5) +#define CBEN_ENDEDITW (CBEN_FIRST - 6) +#define CBEN_ENDEDIT WINELIB_NAME_AW(CBEN_ENDEDIT) +#define CBEN_DRAGBEGINA (CBEN_FIRST - 8) +#define CBEN_DRAGBEGINW (CBEN_FIRST - 9) +#define CBEN_DRAGBEGIN WINELIB_NAME_AW(CBEN_DRAGBEGIN) + +#define CBES_EX_NOEDITIMAGE 0x00000001 +#define CBES_EX_NOEDITIMAGEINDENT 0x00000002 +#define CBES_EX_PATHWORDBREAKPROC 0x00000004 +#define CBES_EX_NOSIZELIMIT 0x00000008 +#define CBES_EX_CASESENSITIVE 0x00000010 + + +typedef struct tagCOMBOBOXEXITEMA +{ + UINT mask; + int iItem; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA; +typedef COMBOBOXEXITEMA const *PCCOMBOEXITEMA; /* Yes, there's a BOX missing */ + +typedef struct tagCOMBOBOXEXITEMW +{ + UINT mask; + int iItem; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW; +typedef COMBOBOXEXITEMW const *PCCOMBOEXITEMW; /* Yes, there's a BOX missing */ + +#define COMBOBOXEXITEM WINELIB_NAME_AW(COMBOBOXEXITEM) +#define PCOMBOBOXEXITEM WINELIB_NAME_AW(PCOMBOBOXEXITEM) +#define PCCOMBOBOXEXITEM WINELIB_NAME_AW(PCCOMBOEXITEM) /* Yes, there's a BOX missing */ + +#define CBENF_KILLFOCUS 1 +#define CBENF_RETURN 2 +#define CBENF_ESCAPE 3 +#define CBENF_DROPDOWN 4 + +#define CBEMAXSTRLEN 260 + +typedef struct tagNMCBEENDEDITW +{ + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + WCHAR szText[CBEMAXSTRLEN]; + int iWhy; +} NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW; + +typedef struct tagNMCBEENDEDITA +{ + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + char szText[CBEMAXSTRLEN]; + int iWhy; +} NMCBEENDEDITA, *LPNMCBEENDEDITA, *PNMCBEENDEDITA; + +#define NMCBEENDEDIT WINELIB_NAME_AW(NMCBEENDEDIT) +#define LPNMCBEENDEDIT WINELIB_NAME_AW(LPNMCBEENDEDIT) +#define PNMCBEENDEDIT WINELIB_NAME_AW(PNMCBEENDEDIT) + +typedef struct +{ + NMHDR hdr; + COMBOBOXEXITEMA ceItem; +} NMCOMBOBOXEXA, *PNMCOMBOBOXEXA; + +typedef struct +{ + NMHDR hdr; + COMBOBOXEXITEMW ceItem; +} NMCOMBOBOXEXW, *PNMCOMBOBOXEXW; + +#define NMCOMBOBOXEX WINELIB_NAME_AW(NMCOMBOBOXEX) +#define PNMCOMBOBOXEX WINELIB_NAME_AW(PNMCOMBOBOXEX) + +typedef struct +{ + NMHDR hdr; + int iItemid; + char szText[CBEMAXSTRLEN]; +} NMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA; + +typedef struct +{ + NMHDR hdr; + int iItemid; + WCHAR szText[CBEMAXSTRLEN]; +} NMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW; + +#define NMCBEDRAGBEGIN WINELIB_NAME_AW(NMCBEDRAGBEGIN) +#define PNMCBEDRAGBEGIN WINELIB_NAME_AW(PNMCBEDRAGBEGIN) +#define LPNMCBEDRAGBEGIN WINELIB_NAME_AW(LPNMCBEDRAGBEGIN) + + +/* Hotkey control */ + +#define HOTKEY_CLASSA "msctls_hotkey32" +#if defined(__GNUC__) +# define HOTKEY_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \ + 'h','o','t','k','e','y','3','2',0 } +#elif defined(_MSC_VER) +# define HOTKEY_CLASSW L"msctls_hotkey32" +#else +static const WCHAR HOTKEY_CLASSW[] = { 'm','s','c','t','l','s','_', + 'h','o','t','k','e','y','3','2',0 }; +#endif +#define HOTKEY_CLASS WINELIB_NAME_AW(HOTKEY_CLASS) + +#define HOTKEYF_SHIFT 0x01 +#define HOTKEYF_CONTROL 0x02 +#define HOTKEYF_ALT 0x04 +#define HOTKEYF_EXT 0x08 + +#define HKCOMB_NONE 0x0001 +#define HKCOMB_S 0x0002 +#define HKCOMB_C 0x0004 +#define HKCOMB_A 0x0008 +#define HKCOMB_SC 0x0010 +#define HKCOMB_SA 0x0020 +#define HKCOMB_CA 0x0040 +#define HKCOMB_SCA 0x0080 + +#define HKM_SETHOTKEY (WM_USER+1) +#define HKM_GETHOTKEY (WM_USER+2) +#define HKM_SETRULES (WM_USER+3) + + +/* animate control */ + +#define ANIMATE_CLASSA "SysAnimate32" +#if defined(__GNUC__) +# define ANIMATE_CLASSW (const WCHAR []){ 'S','y','s', \ + 'A','n','i','m','a','t','e','3','2',0 } +#elif defined(_MSC_VER) +# define ANIMATE_CLASSW L"SysAnimate32" +#else +static const WCHAR ANIMATE_CLASSW[] = { 'S','y','s', + 'A','n','i','m','a','t','e','3','2',0 }; +#endif +#define ANIMATE_CLASS WINELIB_NAME_AW(ANIMATE_CLASS) + +#define ACS_CENTER 0x0001 +#define ACS_TRANSPARENT 0x0002 +#define ACS_AUTOPLAY 0x0004 +#define ACS_TIMER 0x0008 /* no threads, just timers */ + +#define ACM_OPENA (WM_USER+100) +#define ACM_OPENW (WM_USER+103) +#define ACM_OPEN WINELIB_NAME_AW(ACM_OPEN) +#define ACM_PLAY (WM_USER+101) +#define ACM_STOP (WM_USER+102) + +#define ACN_START 1 +#define ACN_STOP 2 + +#define Animate_CreateA(hwndP,id,dwStyle,hInstance) \ + CreateWindowA(ANIMATE_CLASSA,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL) +#define Animate_CreateW(hwndP,id,dwStyle,hInstance) \ + CreateWindowW(ANIMATE_CLASSW,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL) +#define Animate_Create WINELIB_NAME_AW(Animate_Create) +#define Animate_OpenA(hwnd,szName) \ + (BOOL)SNDMSGA(hwnd,ACM_OPENA,0,(LPARAM)(LPSTR)(szName)) +#define Animate_OpenW(hwnd,szName) \ + (BOOL)SNDMSGW(hwnd,ACM_OPENW,0,(LPARAM)(LPWSTR)(szName)) +#define Animate_Open WINELIB_NAME_AW(Animate_Open) +#define Animate_OpenExA(hwnd,hInst,szName) \ + (BOOL)SNDMSGA(hwnd,ACM_OPENA,(WPARAM)hInst,(LPARAM)(LPSTR)(szName)) +#define Animate_OpenExW(hwnd,hInst,szName) \ + (BOOL)SNDMSGW(hwnd,ACM_OPENW,(WPARAM)hInst,(LPARAM)(LPWSTR)(szName)) +#define Animate_OpenEx WINELIB_NAME_AW(Animate_OpenEx) +#define Animate_Play(hwnd,from,to,rep) \ + (BOOL)SNDMSGA(hwnd,ACM_PLAY,(WPARAM)(UINT)(rep),(LPARAM)MAKELONG(from,to)) +#define Animate_Stop(hwnd) \ + (BOOL)SNDMSGA(hwnd,ACM_STOP,0,0) +#define Animate_Close(hwnd) \ + (BOOL)SNDMSGA(hwnd,ACM_OPENA,0,0) +#define Animate_Seek(hwnd,frame) \ + (BOOL)SNDMSGA(hwnd,ACM_PLAY,1,(LPARAM)MAKELONG(frame,frame)) + + +/************************************************************************** + * IP Address control + */ + +#define WC_IPADDRESSA "SysIPAddress32" +#if defined(__GNUC__) +# define WC_IPADDRESSW (const WCHAR []){ 'S','y','s', \ + 'I','P','A','d','d','r','e','s','s','3','2',0 } +#elif defined(_MSC_VER) +# define WC_IPADDRESSW L"SysIPAddress32" +#else +static const WCHAR WC_IPADDRESSW[] = { 'S','y','s', + 'I','P','A','d','d','r','e','s','s','3','2',0 }; +#endif +#define WC_IPADDRESS WINELIB_NAME_AW(WC_IPADDRESS) + +#define IPM_CLEARADDRESS (WM_USER+100) +#define IPM_SETADDRESS (WM_USER+101) +#define IPM_GETADDRESS (WM_USER+102) +#define IPM_SETRANGE (WM_USER+103) +#define IPM_SETFOCUS (WM_USER+104) +#define IPM_ISBLANK (WM_USER+105) + +#define IPN_FIRST (0U-860U) +#define IPN_LAST (0U-879U) +#define IPN_FIELDCHANGED (IPN_FIRST-0) + +typedef struct tagNMIPADDRESS +{ + NMHDR hdr; + INT iField; + INT iValue; +} NMIPADDRESS, *LPNMIPADDRESS; + +#define MAKEIPRANGE(low,high) \ + ((LPARAM)(WORD)(((BYTE)(high)<<8)+(BYTE)(low))) +#define MAKEIPADDRESS(b1,b2,b3,b4) \ + ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<16)+((DWORD)(b3)<<8)+((DWORD)(b4)))) + +#define FIRST_IPADDRESS(x) (((x)>>24)&0xff) +#define SECOND_IPADDRESS(x) (((x)>>16)&0xff) +#define THIRD_IPADDRESS(x) (((x)>>8)&0xff) +#define FOURTH_IPADDRESS(x) ((x)&0xff) + + +/************************************************************************** + * Native Font control + */ + +#define WC_NATIVEFONTCTLA "NativeFontCtl" +#if defined(__GNUC__) +# define WC_NATIVEFONTCTLW (const WCHAR []){ 'N','a','t','i','v','e', \ + 'F','o','n','t','C','t','l',0 } +#elif defined(_MSC_VER) +# define WC_NATIVEFONTCTLW L"NativeFontCtl" +#else +static const WCHAR WC_NATIVEFONTCTLW[] = { 'N','a','t','i','v','e', + 'F','o','n','t','C','t','l',0 }; +#endif +#define WC_NATIVEFONTCTL WINELIB_NAME_AW(WC_NATIVEFONTCTL) + +#define NFS_EDIT 0x0001 +#define NFS_STATIC 0x0002 +#define NFS_LISTCOMBO 0x0004 +#define NFS_BUTTON 0x0008 +#define NFS_ALL 0x0010 + + +/************************************************************************** + * Month calendar control + * + */ + +#define MONTHCAL_CLASSA "SysMonthCal32" +#if defined(__GNUC__) +# define MONTHCAL_CLASSW (const WCHAR []){ 'S','y','s', \ + 'M','o','n','t','h','C','a','l','3','2',0 } +#elif defined(_MSC_VER) +# define MONTHCAL_CLASSW L"SysMonthCal32" +#else +static const WCHAR MONTHCAL_CLASSW[] = { 'S','y','s', + 'M','o','n','t','h','C','a','l','3','2',0 }; +#endif +#define MONTHCAL_CLASS WINELIB_NAME_AW(MONTHCAL_CLASS) + +#define MCM_FIRST 0x1000 +#define MCN_FIRST (0U-750U) +#define MCN_LAST (0U-759U) + + +#define MCM_GETCURSEL (MCM_FIRST + 1) +#define MCM_SETCURSEL (MCM_FIRST + 2) +#define MCM_GETMAXSELCOUNT (MCM_FIRST + 3) +#define MCM_SETMAXSELCOUNT (MCM_FIRST + 4) +#define MCM_GETSELRANGE (MCM_FIRST + 5) +#define MCM_SETSELRANGE (MCM_FIRST + 6) +#define MCM_GETMONTHRANGE (MCM_FIRST + 7) +#define MCM_SETDAYSTATE (MCM_FIRST + 8) +#define MCM_GETMINREQRECT (MCM_FIRST + 9) +#define MCM_SETCOLOR (MCM_FIRST + 10) +#define MCM_GETCOLOR (MCM_FIRST + 11) +#define MCM_SETTODAY (MCM_FIRST + 12) +#define MCM_GETTODAY (MCM_FIRST + 13) +#define MCM_HITTEST (MCM_FIRST + 14) +#define MCM_SETFIRSTDAYOFWEEK (MCM_FIRST + 15) +#define MCM_GETFIRSTDAYOFWEEK (MCM_FIRST + 16) +#define MCM_GETRANGE (MCM_FIRST + 17) +#define MCM_SETRANGE (MCM_FIRST + 18) +#define MCM_GETMONTHDELTA (MCM_FIRST + 19) +#define MCM_SETMONTHDELTA (MCM_FIRST + 20) +#define MCM_GETMAXTODAYWIDTH (MCM_FIRST + 21) +#define MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT + + +/* Notifications */ + +#define MCN_SELCHANGE (MCN_FIRST + 1) +#define MCN_GETDAYSTATE (MCN_FIRST + 3) +#define MCN_SELECT (MCN_FIRST + 4) + +#define MCSC_BACKGROUND 0 +#define MCSC_TEXT 1 +#define MCSC_TITLEBK 2 +#define MCSC_TITLETEXT 3 +#define MCSC_MONTHBK 4 +#define MCSC_TRAILINGTEXT 5 + +#define MCS_DAYSTATE 0x0001 +#define MCS_MULTISELECT 0x0002 +#define MCS_WEEKNUMBERS 0x0004 +#define MCS_NOTODAY 0x0010 +#define MCS_NOTODAYCIRCLE 0x0008 + +#define MCHT_TITLE 0x00010000 +#define MCHT_CALENDAR 0x00020000 +#define MCHT_TODAYLINK 0x00030000 + +#define MCHT_NEXT 0x01000000 +#define MCHT_PREV 0x02000000 +#define MCHT_NOWHERE 0x00000000 +#define MCHT_TITLEBK (MCHT_TITLE) +#define MCHT_TITLEMONTH (MCHT_TITLE | 0x0001) +#define MCHT_TITLEYEAR (MCHT_TITLE | 0x0002) +#define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x0003) +#define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x0003) + +#define MCHT_CALENDARBK (MCHT_CALENDAR) +#define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x0001) +#define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT) +#define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV) +#define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x0002) +#define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003) + + + +#define GMR_VISIBLE 0 +#define GMR_DAYSTATE 1 + + +/* Month calendar's structures */ + + +typedef struct { + UINT cbSize; + POINT pt; + UINT uHit; + SYSTEMTIME st; +} MCHITTESTINFO, *PMCHITTESTINFO; + +typedef struct tagNMSELCHANGE +{ + NMHDR nmhdr; + SYSTEMTIME stSelStart; + SYSTEMTIME stSelEnd; +} NMSELCHANGE, *LPNMSELCHANGE; + +typedef NMSELCHANGE NMSELECT, *LPNMSELECT; +typedef DWORD MONTHDAYSTATE, *LPMONTHDAYSTATE; + +typedef struct tagNMDAYSTATE +{ + NMHDR nmhdr; + SYSTEMTIME stStart; + int cDayState; + LPMONTHDAYSTATE prgDayState; +} NMDAYSTATE, *LPNMDAYSTATE; + + +/* macros */ + +#define MonthCal_GetCurSel(hmc, pst) \ + (BOOL)SNDMSGA(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst)) +#define MonthCal_SetCurSel(hmc, pst) \ + (BOOL)SNDMSGA(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst)) +#define MonthCal_GetMaxSelCount(hmc) \ + (DWORD)SNDMSGA(hmc, MCM_GETMAXSELCOUNT, 0, 0L) +#define MonthCal_SetMaxSelCount(hmc, n) \ + (BOOL)SNDMSGA(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), 0L) +#define MonthCal_GetSelRange(hmc, rgst) \ + SNDMSGA(hmc, MCM_GETSELRANGE, 0, (LPARAM) (rgst)) +#define MonthCal_SetSelRange(hmc, rgst) \ + SNDMSGA(hmc, MCM_SETSELRANGE, 0, (LPARAM) (rgst)) +#define MonthCal_GetMonthRange(hmc, gmr, rgst) \ + (DWORD)SNDMSGA(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst)) +#define MonthCal_SetDayState(hmc, cbds, rgds) \ + SNDMSGA(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds)) +#define MonthCal_GetMinReqRect(hmc, prc) \ + SNDMSGA(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc)) +#define MonthCal_SetColor(hmc, iColor, clr)\ + SNDMSGA(hmc, MCM_SETCOLOR, iColor, clr) +#define MonthCal_GetColor(hmc, iColor) \ + SNDMSGA(hmc, MCM_SETCOLOR, iColor, 0) +#define MonthCal_GetToday(hmc, pst)\ + (BOOL)SNDMSGA(hmc, MCM_GETTODAY, 0, (LPARAM)pst) +#define MonthCal_SetToday(hmc, pst)\ + SNDMSGA(hmc, MCM_SETTODAY, 0, (LPARAM)pst) +#define MonthCal_HitTest(hmc, pinfo) \ + SNDMSGA(hmc, MCM_HITTEST, 0, (LPARAM)(PMCHITTESTINFO)pinfo) +#define MonthCal_SetFirstDayOfWeek(hmc, iDay) \ + SNDMSGA(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay) +#define MonthCal_GetFirstDayOfWeek(hmc) \ + (DWORD)SNDMSGA(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0) +#define MonthCal_GetRange(hmc, rgst) \ + (DWORD)SNDMSGA(hmc, MCM_GETRANGE, 0, (LPARAM)(rgst)) +#define MonthCal_SetRange(hmc, gd, rgst) \ + (BOOL)SNDMSGA(hmc, MCM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst)) +#define MonthCal_GetMonthDelta(hmc) \ + (int)SNDMSGA(hmc, MCM_GETMONTHDELTA, 0, 0) +#define MonthCal_SetMonthDelta(hmc, n) \ + (int)SNDMSGA(hmc, MCM_SETMONTHDELTA, n, 0) +#define MonthCal_GetMaxTodayWidth(hmc) \ + (DWORD)SNDMSGA(hmc, MCM_GETMAXTODAYWIDTH, 0, 0) +#define MonthCal_SetUnicodeFormat(hwnd, fUnicode) \ + (BOOL)SNDMSGA((hwnd), MCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) +#define MonthCal_GetUnicodeFormat(hwnd) \ + (BOOL)SNDMSGA((hwnd), MCM_GETUNICODEFORMAT, 0, 0) + + +/************************************************************************** + * Date and time picker control + */ + +#define DATETIMEPICK_CLASSA "SysDateTimePick32" +#if defined(__GNUC__) +# define DATETIMEPICK_CLASSW (const WCHAR []){ 'S','y','s', \ + 'D','a','t','e','T','i','m','e','P','i','c','k','3','2',0 } +#elif defined(_MSC_VER) +# define DATETIMEPICK_CLASSW L"SysDateTimePick32" +#else +static const WCHAR DATETIMEPICK_CLASSW[] = { 'S','y','s', + 'D','a','t','e','T','i','m','e','P','i','c','k','3','2',0 }; +#endif +#define DATETIMEPICK_CLASS WINELIB_NAME_AW(DATETIMEPICK_CLASS) + +#define DTM_FIRST 0x1000 +#define DTN_FIRST (0U-760U) +#define DTN_LAST (0U-799U) + + +#define DTM_GETSYSTEMTIME (DTM_FIRST+1) +#define DTM_SETSYSTEMTIME (DTM_FIRST+2) +#define DTM_GETRANGE (DTM_FIRST+3) +#define DTM_SETRANGE (DTM_FIRST+4) +#define DTM_SETFORMATA (DTM_FIRST+5) +#define DTM_SETFORMATW (DTM_FIRST + 50) +#define DTM_SETFORMAT WINELIB_NAME_AW(DTM_SETFORMAT) +#define DTM_SETMCCOLOR (DTM_FIRST+6) +#define DTM_GETMCCOLOR (DTM_FIRST+7) +#define DTM_GETMONTHCAL (DTM_FIRST+8) +#define DTM_SETMCFONT (DTM_FIRST+9) +#define DTM_GETMCFONT (DTM_FIRST+10) + + +/* Datetime Notifications */ + +#define DTN_DATETIMECHANGE (DTN_FIRST + 1) +#define DTN_USERSTRINGA (DTN_FIRST + 2) +#define DTN_WMKEYDOWNA (DTN_FIRST + 3) +#define DTN_FORMATA (DTN_FIRST + 4) +#define DTN_FORMATQUERYA (DTN_FIRST + 5) +#define DTN_DROPDOWN (DTN_FIRST + 6) +#define DTN_CLOSEUP (DTN_FIRST + 7) +#define DTN_USERSTRINGW (DTN_FIRST + 15) +#define DTN_WMKEYDOWNW (DTN_FIRST + 16) +#define DTN_FORMATW (DTN_FIRST + 17) +#define DTN_FORMATQUERYW (DTN_FIRST + 18) + +#define DTN_USERSTRING WINELIB_NAME_AW(DTN_USERSTRING) +#define DTN_WMKEYDOWN WINELIB_NAME_AW(DTN_WMKEYDOWN) +#define DTN_FORMAT WINELIB_NAME_AW(DTN_FORMAT) +#define DTN_FORMATQUERY WINELIB_NAME_AW(DTN_FORMATQUERY) + +#define DTS_SHORTDATEFORMAT 0x0000 +#define DTS_UPDOWN 0x0001 +#define DTS_SHOWNONE 0x0002 +#define DTS_LONGDATEFORMAT 0x0004 +#define DTS_TIMEFORMAT 0x0009 +#define DTS_APPCANPARSE 0x0010 +#define DTS_RIGHTALIGN 0x0020 + +typedef struct tagNMDATETIMECHANGE +{ + NMHDR nmhdr; + DWORD dwFlags; + SYSTEMTIME st; +} NMDATETIMECHANGE, *LPNMDATETIMECHANGE; + +typedef struct tagNMDATETIMESTRINGA +{ + NMHDR nmhdr; + LPCSTR pszUserString; + SYSTEMTIME st; + DWORD dwFlags; +} NMDATETIMESTRINGA, *LPNMDATETIMESTRINGA; + +typedef struct tagNMDATETIMESTRINGW +{ + NMHDR nmhdr; + LPCWSTR pszUserString; + SYSTEMTIME st; + DWORD dwFlags; +} NMDATETIMESTRINGW, *LPNMDATETIMESTRINGW; + +DECL_WINELIB_TYPE_AW(NMDATETIMESTRING) +DECL_WINELIB_TYPE_AW(LPNMDATETIMESTRING) + +typedef struct tagNMDATETIMEWMKEYDOWNA +{ + NMHDR nmhdr; + int nVirtKey; + LPCSTR pszFormat; + SYSTEMTIME st; +} NMDATETIMEWMKEYDOWNA, *LPNMDATETIMEWMKEYDOWNA; + +typedef struct tagNMDATETIMEWMKEYDOWNW +{ + NMHDR nmhdr; + int nVirtKey; + LPCWSTR pszFormat; + SYSTEMTIME st; +} NMDATETIMEWMKEYDOWNW, *LPNMDATETIMEWMKEYDOWNW; + +DECL_WINELIB_TYPE_AW(NMDATETIMEWMKEYDOWN) +DECL_WINELIB_TYPE_AW(LPNMDATETIMEWMKEYDOWN) + +typedef struct tagNMDATETIMEFORMATA +{ + NMHDR nmhdr; + LPCSTR pszFormat; + SYSTEMTIME st; + LPCSTR pszDisplay; + CHAR szDisplay[64]; +} NMDATETIMEFORMATA, *LPNMDATETIMEFORMATA; + + +typedef struct tagNMDATETIMEFORMATW +{ + NMHDR nmhdr; + LPCWSTR pszFormat; + SYSTEMTIME st; + LPCWSTR pszDisplay; + WCHAR szDisplay[64]; +} NMDATETIMEFORMATW, *LPNMDATETIMEFORMATW; + +DECL_WINELIB_TYPE_AW(NMDATETIMEFORMAT) +DECL_WINELIB_TYPE_AW(LPNMDATETIMEFORMAT) + +typedef struct tagNMDATETIMEFORMATQUERYA +{ + NMHDR nmhdr; + LPCSTR pszFormat; + SIZE szMax; +} NMDATETIMEFORMATQUERYA, *LPNMDATETIMEFORMATQUERYA; + +typedef struct tagNMDATETIMEFORMATQUERYW +{ + NMHDR nmhdr; + LPCWSTR pszFormat; + SIZE szMax; +} NMDATETIMEFORMATQUERYW, *LPNMDATETIMEFORMATQUERYW; + +DECL_WINELIB_TYPE_AW(NMDATETIMEFORMATQUERY) +DECL_WINELIB_TYPE_AW(LPNMDATETIMEFORMATQUERY) + + + +#define GDT_ERROR -1 +#define GDT_VALID 0 +#define GDT_NONE 1 + +#define GDTR_MIN 0x0001 +#define GDTR_MAX 0x0002 + + +#define DateTime_GetSystemtime(hdp, pst) \ + (DWORD)SNDMSGA (hdp, DTM_GETSYSTEMTIME , 0, (LPARAM)(pst)) +#define DateTime_SetSystemtime(hdp, gd, pst) \ + (BOOL)SNDMSGA (hdp, DTM_SETSYSTEMTIME, (LPARAM)(gd), (LPARAM)(pst)) +#define DateTime_GetRange(hdp, rgst) \ + (DWORD)SNDMSGA (hdp, DTM_GETRANGE, 0, (LPARAM)(rgst)) +#define DateTime_SetRange(hdp, gd, rgst) \ + (BOOL)SNDMSGA (hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst)) +#define DateTime_SetFormatA(hdp, sz) \ + (BOOL)SNDMSGA (hdp, DTM_SETFORMATA, 0, (LPARAM)(sz)) +#define DateTime_SetFormatW(hdp, sz) \ + (BOOL)SNDMSGW (hdp, DTM_SETFORMATW, 0, (LPARAM)(sz)) +#define DateTime_SetFormat WINELIB_NAME_AW(DateTime_SetFormat) +#define DateTime_GetMonthCalColor(hdp, iColor) \ + SNDMSGA (hdp, DTM_GETMCCOLOR, iColor, 0) +#define DateTime_SetMonthCalColor(hdp, iColor, clr) \ + SNDMSGA (hdp, DTM_SETMCCOLOR, iColor, clr) +#define DateTime_GetMonthCal(hdp) \ + (HWND) SNDMSGA (hdp, DTM_GETMONTHCAL, 0, 0) +#define DateTime_SetMonthCalFont(hdp, hfont, fRedraw) \ + SNDMSGA (hdp, DTM_SETMCFONT, (WPARAM)hfont, (LPARAM)fRedraw) +#define DateTime_GetMonthCalFont(hdp) \ + SNDMSGA (hdp, DTM_GETMCFONT, 0, 0) + +#define DA_LAST (0x7fffffff) +#define DPA_APPEND (0x7fffffff) +#define DPA_ERR (-1) + +#define DSA_APPEND (0x7fffffff) +#define DSA_ERR (-1) + +struct _DSA; +typedef struct _DSA *HDSA; + +typedef INT (CALLBACK *PFNDSAENUMCALLBACK)(LPVOID, LPVOID); + +HDSA WINAPI DSA_Create(INT, INT); +BOOL WINAPI DSA_Destroy(HDSA); +void WINAPI DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, LPVOID); +LPVOID WINAPI DSA_GetItemPtr(HDSA, INT); +INT WINAPI DSA_InsertItem(HDSA, INT, LPVOID); + +#define DPAS_SORTED 0x0001 +#define DPAS_INSERTBEFORE 0x0002 +#define DPAS_INSERTAFTER 0x0004 + + +struct _DPA; +typedef struct _DPA *HDPA; + +typedef INT (CALLBACK *PFNDPAENUMCALLBACK)(LPVOID, LPVOID); +typedef INT (CALLBACK *PFNDPACOMPARE)(LPVOID, LPVOID, LPARAM); + +HDPA WINAPI DPA_Create(INT); +BOOL WINAPI DPA_Destroy(HDPA); +LPVOID WINAPI DPA_DeletePtr(HDPA, INT); +BOOL WINAPI DPA_DeleteAllPtrs(HDPA); +BOOL WINAPI DPA_SetPtr(HDPA, INT, LPVOID); +LPVOID WINAPI DPA_GetPtr(HDPA, INT); +INT WINAPI DPA_InsertPtr(HDPA, INT, LPVOID); +BOOL WINAPI DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM); +void WINAPI DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, LPVOID); +void WINAPI DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, LPVOID); +INT WINAPI DPA_Search(HDPA, LPVOID, INT, PFNDPACOMPARE, LPARAM, UINT); + +BOOL WINAPI Str_SetPtrW (LPWSTR *, LPCWSTR); + +/************************************************************************** + * SysLink control + */ + +#if defined(__GNUC__) +# define WC_LINK (const WCHAR []){ 'S','y','s','L','i','n','k',0 } +#elif defined(_MSC_VER) +# define WC_LINK L"SysLink" +#else +static const WCHAR WC_LINK[] = { 'S','y','s','L','i','n','k',0 }; +#endif + +/* SysLink messages */ +#define LM_HITTEST (WM_USER + 768) +#define LM_GETIDEALHEIGHT (WM_USER + 769) +#define LM_GETIDEALSIZE (LM_GETIDEALHEIGHT) +#define LM_SETITEM (WM_USER + 770) +#define LM_GETITEM (WM_USER + 771) + +/* SysLink links flags */ + +#define LIF_ITEMINDEX 1 +#define LIF_STATE 2 +#define LIF_ITEMID 4 +#define LIF_URL 8 + +/* SysLink links states */ + +#define LIS_FOCUSED 1 +#define LIS_ENABLED 2 +#define LIS_VISITED 4 + +/* SysLink misc. */ + +#define INVALID_LINK_INDEX (-1) +#define MAX_LINKID_TEXT 48 +#define L_MAX_URL_LENGTH 2084 + +/* SysLink structures */ + +typedef struct tagLITEM +{ + UINT mask; + int iLink; + UINT state; + UINT stateMask; + WCHAR szID[MAX_LINKID_TEXT]; + WCHAR szUrl[L_MAX_URL_LENGTH]; } LITEM, *PLITEM; + typedef struct tagLHITTESTINFO { - POINT pt; - LITEM item; -} LHITTESTINFO, *PLHITTESTINFO ; + POINT pt; + LITEM item; +} LHITTESTINFO, *PLHITTESTINFO; + typedef struct tagNMLINK { - NMHDR hdr; - LITEM item; + NMHDR hdr; + LITEM item; } NMLINK, *PNMLINK; -#endif -/* for backward compatability */ -#define NM_UPDOWN NMUPDOWN -#define LPNM_UPDOWN LPNMUPDOWN -typedef struct _LVITEMA { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; -#if (_WIN32_IE >= 0x0300) - int iIndent; -#endif -#if (_WIN32_WINNT >= 0x0501) - int iGroupId; - UINT cColumns; - PUINT puColumns; -#endif -} LVITEMA, FAR *LPLVITEMA; -#define _LV_ITEMA _LVITEMA -#define LV_ITEMA LVITEMA -typedef struct _LVITEMW { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; -#if (_WIN32_IE >= 0x0300) - int iIndent; -#endif -#if (_WIN32_WINNT >= 0x0501) - int iGroupId; - UINT cColumns; - PUINT puColumns; -#endif -} LVITEMW, FAR *LPLVITEMW; -#define _LV_ITEMW _LVITEMW -#define LV_ITEMW LVITEMW -typedef struct tagLVFINDINFOA { - UINT flags; - LPCSTR psz; - LPARAM lParam; - POINT pt; - UINT vkDirection; -} LVFINDINFOA, FAR* LPFINDINFOA; -#define _LV_FINDINFOA tagLVFINDINFOA -#define LV_FINDINFOA LVFINDINFOA -typedef struct tagLVFINDINFOW { - UINT flags; - LPCWSTR psz; - LPARAM lParam; - POINT pt; - UINT vkDirection; -} LVFINDINFOW, FAR* LPFINDINFOW; -#define _LV_FINDINFOW tagLVFINDINFOW -#define LV_FINDINFOW LVFINDINFOW -typedef struct _LVHITTESTINFO { - POINT pt; - UINT flags; - int iItem; -#if (_WIN32_IE >= 0x0300) - int iSubItem; -#endif -} LVHITTESTINFO, FAR *LPLVHITTESTINFO; -#define _LV_HITTESTINFO _LVHITTESTINFO -#define LV_HITTESTINFO LVHITTESTINFO -typedef struct _LVCOLUMNA { - UINT mask; - int fmt; - int cx; - LPSTR pszText; - int cchTextMax; - int iSubItem; -#if (_WIN32_IE >= 0x0300) - int iImage; - int iOrder; -#endif -} LVCOLUMNA, FAR *LPLVCOLUMNA; -#define _LV_COLUMNA _LVCOLUMNA -#define LV_COLUMNA LVCOLUMNA -typedef struct _LVCOLUMNW { - UINT mask; - int fmt; - int cx; - LPWSTR pszText; - int cchTextMax; - int iSubItem; -#if (_WIN32_IE >= 0x0300) - int iImage; - int iOrder; -#endif -} LVCOLUMNW, FAR *LPLVCOLUMNW; -#define _LV_COLUMNW _LVCOLUMNW -#define LV_COLUMNW LVCOLUMNW -typedef int(CALLBACK *PFNLVCOMPARE)(LPARAM,LPARAM,LPARAM); -typedef struct tagNMLISTVIEW { - NMHDR hdr; - int iItem; - int iSubItem; - UINT uNewState; - UINT uOldState; - UINT uChanged; - POINT ptAction; - LPARAM lParam; -} NMLISTVIEW, *LPNMLISTVIEW; -/* for backward compatability */ -#define _NM_LISTVIEW tagNMLISTVIEW -#define NM_LISTVIEW NMLISTVIEW -#define LPNM_LISTVIEW LPNMLISTVIEW -typedef struct tagNMLVDISPINFOA { - NMHDR hdr; - LV_ITEMA item; -} NMLVDISPINFOA, FAR *LPNMLVDISPINFOA; -#define _LV_DISPINFOA tagNMLVDISPINFOA -#define LV_DISPINFOA NMLVDISPINFOA -typedef struct tagNMLVDISPINFOW { - NMHDR hdr; - LV_ITEMW item; -} NMLVDISPINFOW, FAR *LPNMLVDISPINFOW; -#define _LV_DISPINFOW tagNMLVDISPINFOW -#define LV_DISPINFOW NMLVDISPINFOW -typedef struct _LV_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; -} LV_KEYDOWN; -typedef struct tagNMLVCACHEHINT { - NMHDR hdr; - int iFrom; - int iTo; -} NMLVCACHEHINT, *PNMLVCACHEHINT; -#define NM_CACHEHINT NMLVCACHEHINT -typedef struct tagNMLVFINDITEMA + +typedef struct tagNMLVLINK { - NMHDR hdr; - int iStart; - LVFINDINFOA lvfi; -} NMLVFINDITEMA, *LPNMLVFINDITEMA; -typedef struct tagNMLVFINDITEMW -{ - NMHDR hdr; - int iStart; - LVFINDINFOW lvfi; -} NMLVFINDITEMW, *LPNMLVFINDITEMW; + NMHDR hdr; + LITEM link; + int iItem; + int iSubItem; +} NMLVLINK, *PNMLVLINK; -typedef struct _TREEITEM *HTREEITEM; -typedef struct tagTVITEMA { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; -} TVITEMA,*LPTVITEMA; -#define _TV_ITEMA tagTVITEMA -#define TV_ITEMA TVITEMA -#define LPTV_ITEMA LPTVITEMA -typedef struct tagTVITEMW { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; -} TVITEMW,*LPTVITEMW; -#define _TV_ITEMW tagTVITEMW -#define TV_ITEMW TVITEMW -#define LPTV_ITEMW LPTVITEMW -#if (_WIN32_IE >= 0x0400) -typedef struct tagTVITEMEXA { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; - int iIntegral; -} TVITEMEXA, *LPTVITEMEXA; -typedef struct tagTVITEMEXW { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; - int iIntegral; -} TVITEMEXW, *LPTVITEMEXW; -#endif /* _WIN32_IE >= 0x0400 */ -typedef struct tagTVINSERTSTRUCTA { - HTREEITEM hParent; - HTREEITEM hInsertAfter; -#if (_WIN32_IE >= 0x0400) - _ANONYMOUS_UNION union { - TVITEMEXA itemex; - TV_ITEMA item; - } DUMMYUNIONNAME; -#else - TV_ITEMA item; -#endif -} TVINSERTSTRUCTA,*LPTVINSERTSTRUCTA; -#define _TV_INSERTSTRUCTA tagTVINSERTSTRUCTA -#define TV_INSERTSTRUCTA TVINSERTSTRUCTA -#define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA -typedef struct tagTVINSERTSTRUCTW { - HTREEITEM hParent; - HTREEITEM hInsertAfter; -#if (_WIN32_IE >= 0x0400) - _ANONYMOUS_UNION union { - TVITEMEXW itemex; - TV_ITEMW item; - } DUMMYUNIONNAME; -#else - TV_ITEMW item; -#endif -} TVINSERTSTRUCTW,*LPTVINSERTSTRUCTW; -#define _TV_INSERTSTRUCTW tagTVINSERTSTRUCTW -#define TV_INSERTSTRUCTW TVINSERTSTRUCTW -#define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW -typedef struct tagTVHITTESTINFO { - POINT pt; - UINT flags; - HTREEITEM hItem; -} TVHITTESTINFO, *LPTVHITTESTINFO; -#define _TV_HITTESTINFO tagTVHITTESTINFO -#define TV_HITTESTINFO TVHITTESTINFO -#define LPTV_HITTESTINFO LPTVHITTESTINFO -typedef int(CALLBACK *PFNTVCOMPARE)(LPARAM,LPARAM,LPARAM); -typedef struct tagTVSORTCB { - HTREEITEM hParent; - PFNTVCOMPARE lpfnCompare; - LPARAM lParam; -} TVSORTCB,*LPTVSORTCB; -#define _TV_SORTCB tagTVSORTCB -#define TV_SORTCB TVSORTCB -#define LPTV_SORTCB LPTVSORTCB -typedef struct tagNMTREEVIEWA { - NMHDR hdr; - UINT action; - TV_ITEMA itemOld; - TV_ITEMA itemNew; - POINT ptDrag; -} NMTREEVIEWA,*LPNMTREEVIEWA; -#define _NM_TREEVIEWA tagNMTREEVIEWA -#define NM_TREEVIEWA NMTREEVIEWA -#define LPNM_TREEVIEWA LPNMTREEVIEWA -typedef struct tagNMTREEVIEWW { - NMHDR hdr; - UINT action; - TV_ITEMW itemOld; - TV_ITEMW itemNew; - POINT ptDrag; -} NMTREEVIEWW,*LPNMTREEVIEWW; -#define _NM_TREEVIEWW tagNMTREEVIEWW -#define NM_TREEVIEWW NMTREEVIEWW -#define LPNM_TREEVIEWW LPNMTREEVIEWW -typedef struct tagNMTVDISPINFOA { - NMHDR hdr; - TVITEMA item; -} NMTVDISPINFOA, *LPNMTVDISPINFOA; -#define _TV_DISPINFOA tagNMTVDISPINFOA -#define TV_DISPINFOA NMTVDISPINFOA -typedef struct tagNMTVDISPINFOW { - NMHDR hdr; - TVITEMW item; -} NMTVDISPINFOW, *LPNMTVDISPINFOW; -#define _TV_DISPINFOW tagNMTVDISPINFOW -#define TV_DISPINFOW NMTVDISPINFOW -#if (_WIN32_IE >= 0x0400) -typedef struct tagNMTVGETINFOTIPA { - NMHDR hdr; - LPSTR pszText; - int cchTextMax; - HTREEITEM hItem; - LPARAM lParam; -} NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA; -typedef struct tagNMTVGETINFOTIPW { - NMHDR hdr; - LPWSTR pszText; - int cchTextMax; - HTREEITEM hItem; - LPARAM lParam; -} NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW; -#endif -#include -typedef struct tagTVKEYDOWN -{ - NMHDR hdr; - WORD wVKey; - UINT flags; -} NMTVKEYDOWN, *LPNMTVKEYDOWN; -#include -#define TV_KEYDOWN NMTVKEYDOWN +/************************************************************************** + * Static control + */ -typedef struct _TC_ITEMHEADERA { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPSTR pszText; - int cchTextMax; - int iImage; -} TC_ITEMHEADERA; -typedef struct _TC_ITEMHEADERW { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPWSTR pszText; - int cchTextMax; - int iImage; -} TC_ITEMHEADERW; -typedef struct tagTCITEMA { - UINT mask; -#if (_WIN32_IE >= 0x0300) - DWORD dwState; - DWORD dwStateMask; +#define WC_STATICA "Static" +#if defined(__GNUC__) +# define WC_STATICW (const WCHAR []){ 'S','t','a','t','i','c',0 } +#elif defined(_MSC_VER) +# define WC_STATICW L"Static" #else - UINT lpReserved1; - UINT lpReserved2; +static const WCHAR WC_STATICW[] = { 'S','t','a','t','i','c',0 }; #endif - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; -} TCITEMA, *LPTCITEMA; -#define TC_ITEMA TCITEMA -typedef struct tagTCITEMW { - UINT mask; -#if (_WIN32_IE >= 0x0300) - DWORD dwState; - DWORD dwStateMask; +#define WC_STATIC WINELIB_NAME_AW(WC_STATIC) + +/************************************************************************** + * Combobox control + */ + +#define WC_COMBOBOXA "ComboBox" +#if defined(__GNUC__) +# define WC_COMBOBOXW (const WCHAR []){ 'C','o','m','b','o','B','o','x',0 } +#elif defined(_MSC_VER) +# define WC_COMBOBOXW L"ComboBox" #else - UINT lpReserved1; - UINT lpReserved2; +static const WCHAR WC_COMBOBOXW[] = { 'C','o','m','b','o','B','o','x',0 }; #endif - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; -} TCITEMW, *LPTCITEMW; -#define TC_ITEMW TCITEMW -typedef struct tagTCHITTESTINFO { - POINT pt; - UINT flags; -} TCHITTESTINFO, *LPTCHITTESTINFO; -#define TC_HITTESTINFO TCHITTESTINFO -#define LPTC_HITTESTINFO LPTCHITTESTINFO -typedef struct _TC_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; -} TC_KEYDOWN; -#if (_WIN32_IE >= 0x0300) -typedef struct tagINITCOMMONCONTROLSEX { - DWORD dwSize; - DWORD dwICC; -} INITCOMMONCONTROLSEX,*LPINITCOMMONCONTROLSEX; -#endif -typedef struct tagPBRANGE { - int iLow; - int iHigh; -} PBRANGE,*PPBRANGE; -typedef struct tagCOLORSCHEME { - DWORD dwSize; - COLORREF clrBtnHighlight; - COLORREF clrBtnShadow; -} COLORSCHEME,*LPCOLORSCHEME; -typedef struct tagMCHITTESTINFO { - UINT cbSize; - POINT pt; - UINT uHit; - SYSTEMTIME st; -}MCHITTESTINFO, *PMCHITTESTINFO; -typedef DWORD MONTHDAYSTATE; -typedef MONTHDAYSTATE *LPMONTHDAYSTATE; -typedef struct tagNMDAYSTATE { - NMHDR nmhdr; - SYSTEMTIME stStart; - int cDayState; - LPMONTHDAYSTATE prgDayState; -}NMDAYSTATE,*LPNMDAYSTATE; -typedef struct tagREBARINFO { - UINT cbSize; - UINT fMask; - HIMAGELIST himl; -} REBARINFO,*LPREBARINFO; -typedef struct tagREBARBANDINFOA { - UINT cbSize; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; -#if (_WIN32_IE >= 0x0400) - UINT cyChild; - UINT cyMaxChild; - UINT cyIntegral; - UINT cxIdeal; - LPARAM lParam; - UINT cxHeader; -#endif -} REBARBANDINFOA,*LPREBARBANDINFOA; -typedef struct tagREBARBANDINFOW { - UINT cbSize; - UINT fMask; - UINT fStyle; - COLORREF clrFore; - COLORREF clrBack; - LPWSTR lpText; - UINT cch; - int iImage; - HWND hwndChild; - UINT cxMinChild; - UINT cyMinChild; - UINT cx; - HBITMAP hbmBack; - UINT wID; -#if (_WIN32_IE >= 0x0400) - UINT cyChild; - UINT cyMaxChild; - UINT cyIntegral; - UINT cxIdeal; - LPARAM lParam; - UINT cxHeader; -#endif -} REBARBANDINFOW,*LPREBARBANDINFOW; -typedef REBARBANDINFOA const *LPCREBARBANDINFOA; -typedef REBARBANDINFOW const *LPCREBARBANDINFOW; -#define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA,wID) -#define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID) -#if (_WIN32_IE >= 0x0300) -typedef struct tagIMAGELISTDRAWPARAMS { - DWORD cbSize; - HIMAGELIST himl; - int i; - HDC hdcDst; - int x; - int y; - int cx; - int cy; - int xBitmap; - int yBitmap; - COLORREF rgbBk; - COLORREF rgbFg; - UINT fStyle; - DWORD dwRop; -#if (_WIN32_WINNT >= 0x0501) - DWORD fState; - DWORD Frame; - COLORREF crEffect; -#endif -} IMAGELISTDRAWPARAMS,*LPIMAGELISTDRAWPARAMS; -#endif /* (_WIN32_IE >= 0x0300) */ -#if (_WIN32_IE >= 0x0400) -typedef struct tagNMREBARCHILDSIZE { - NMHDR hdr; - UINT uBand; - UINT wID; - RECT rcChild; - RECT rcBand; -} NMREBARCHILDSIZE,*LPNMREBARCHILDSIZE; -typedef struct tagNMREBAR { - NMHDR hdr; - DWORD dwMask; - UINT uBand; - UINT fStyle; - UINT wID; - LPARAM lParam; -} NMREBAR,*LPNMREBAR; -typedef struct tagNMRBAUTOSIZE { - NMHDR hdr; - BOOL fChanged; - RECT rcTarget; - RECT rcActual; -} NMRBAUTOSIZE,*LPNMRBAUTOSIZE; -#if (_WIN32_IE >= 0x0500) -typedef struct tagNMREBARCHEVRON { - NMHDR hdr; - UINT uBand; - UINT wID; - LPARAM lParam; - RECT rc; - LPARAM lParamNM; -} NMREBARCHEVRON, *LPNMREBARCHEVRON; -#endif -typedef struct _RB_HITTESTINFO { - POINT pt; - UINT flags; - int iBand; -} RBHITTESTINFO,*LPRBHITTESTINFO; -#endif -typedef struct _DSA *HDSA; -typedef struct _DPA *HDPA; -typedef INT (CALLBACK *PFNDPAENUMCALLBACK)(PVOID,PVOID); -typedef INT (CALLBACK *PFNDSAENUMCALLBACK)(PVOID,PVOID); -typedef INT (CALLBACK *PFNDPACOMPARE)(PVOID,PVOID,LPARAM); -#if (_WIN32_WINNT >= 0x0501) -typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND,UINT,WPARAM,LPARAM,UINT_PTR,DWORD_PTR); -#endif /* _WIN32_WINNT >= 0x0501 */ +#define WC_COMBOBOX WINELIB_NAME_AW(WC_COMBOBOX) -#define INDEXTOOVERLAYMASK(i) ((i)<<8) -#define INDEXTOSTATEIMAGEMASK(i) ((i)<<12) -#define HANDLE_WM_NOTIFY(h,w,l,f) (f)((h),(int)(w),(NMHDR*)(l)) -#define FORWARD_WM_NOTIFY(h,i,p,f) (LRESULT)(f)((h),WM_NOTIFY,(WPARAM)(int)(i),(LPARAM)(NMHDR*)(p)) -#define CCSIZEOF_STRUCT(s,m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m)) -#define MAKEIPADDRESS(b1,b2,b3,b4) ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4)))) -#define MAKEIPRANGE(low,high) ((LPARAM)(WORD)(((BYTE)(high)<<8)+(BYTE)(low))) -#define FIRST_IPADDRESS(a) ((a>>24) & 0xff) -#define SECOND_IPADDRESS(a) ((a>>16) & 0xff) -#define THIRD_IPADDRESS(a) ((a>>8) & 0xff) -#define FOURTH_IPADDRESS(a) (a & 0xff) -#define Animate_Create(w,i,s,hI) CreateWindow(ANIMATE_CLASS,NULL,s,0,0,0,0,w,(HMENU)(i),hI,NULL) -#define Animate_Open(w,f) (BOOL)SNDMSG(w,ACM_OPEN,0,(LPARAM)f) -#define Animate_Play(w,f,t,r) (BOOL)SNDMSG(w,ACM_PLAY,(r),(LPARAM)MAKELONG(f,t)) -#define Animate_Stop(w) (BOOL)SNDMSG(w,ACM_STOP,0,0) -#define Animate_Close(w) Animate_Open(w,NULL) -#define Animate_Seek(w,f) Animate_Play(w,f,f,1) -HBITMAP WINAPI CreateMappedBitmap(HINSTANCE,int,UINT,LPCOLORMAP,int); -HWND WINAPI CreateStatusWindowA(LONG,LPCSTR,HWND,UINT); -HWND WINAPI CreateStatusWindowW(LONG,LPCWSTR,HWND,UINT); -HWND WINAPI CreateToolbarEx(HWND,DWORD,UINT,int,HINSTANCE,UINT,LPCTBBUTTON,int,int,int,int,int,UINT); -HWND WINAPI CreateUpDownControl(DWORD,int,int,int,int,HWND,int,HINSTANCE,HWND,int,int,int); -#define DateTime_GetMonthCal(hwnd) SNDMSG(hwnd, DTM_GETMONTHCAL, 0, 0) -#define DateTime_GetMonthCalColor(hwnd, icolor) SNDMSG(hwnd, DTM_GETMONTHCAL, (WPARAM)icolor,0) -#define DateTime_GetMonthCalFont(hwnd) SNDMSG(hwnd,DTM_GETMCFONT,0,0) -#define DateTime_GetRange(hwnd,lpsystimearray) SNDMSG(hwnd,DTM_GETRANGE,0,(LPARAM)lpsystimearray) -#define DateTime_GetSystemtime(hwnd,lpsystime) SNDMSG(hwnd,DTM_GETSYSTEMTIME,0,(LPARAM)lpsystime) -#define DateTime_SetFormat(hwnd,lpszformat) SNDMSG(hwnd,DTM_SETFORMAT,0,(LPARAM)lpszformat) -#define DateTime_SetMonthCalColor(hwnd,icolor,clr) SNDMSG(hwnd,DTM_SETMCCOLOR,(WPARAM)icolor,(LPARAM)clr) -#define DateTime_SetMonthCalFont(hwnd,hfont,lparam) SNDMSG(hwnd,DTM_SETMCFONT,(WPARAM)hfont,(LPARAM)lparam) -#define DateTime_SetRange(hwnd,flags,lpsystimearray) SNDMSG(hwnd,DTM_SETRANGE,(WPARAM)flags,(LPARAM)lpsystimearray) -#define DateTime_SetSystemTime(hwnd,flag,lpsystime) SNDMSG(hwnd,DTM_SETSYSTEMTIME,(WPARAM)flag,(LPARAM)lpsystime) -void WINAPI DrawInsert(HWND,HWND,int); -void WINAPI DrawStatusTextA(HDC,LPRECT,LPCSTR,UINT); -void WINAPI DrawStatusTextW(HDC,LPRECT,LPCWSTR,UINT); -void WINAPI GetEffectiveClientRect(HWND,LPRECT,LPINT); -#define Header_GetItemCount(w) (int)SNDMSG((w),HDM_GETITEMCOUNT,0,0) -#define Header_InsertItem(w,i,phdi) (int)SNDMSG((w),HDM_INSERTITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi)) -#define Header_DeleteItem(w,i) (BOOL)SNDMSG((w),HDM_DELETEITEM,(WPARAM)(int)(i),0) -#define Header_GetItem(w,i,phdi) (BOOL)SNDMSG((w),HDM_GETITEM,(WPARAM)(int)(i),(LPARAM)(HD_ITEM*)(phdi)) -#define Header_SetItem(w,i,phdi) (BOOL)SNDMSG((w),HDM_SETITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi)) -#define Header_Layout(w,l) (BOOL)SNDMSG((w),HDM_LAYOUT,0,(LPARAM)(HD_LAYOUT*)(l)) -#if (_WIN32_IE >= 0x0300) -#define Header_OrderToIndex(w,o) (int)SNDMSG((w),HDM_ORDERTOINDEX,(WPARAM)(o),0) -#define Header_GetItemRect(w,i,r) (BOOL)SNDMSG((w),HDM_GETITEMRECT,(WPARAM)(i),(LPARAM)(r)) -#define Header_GetOrderArray(w,l,a) (BOOL)SNDMSG((w),HDM_GETORDERARRAY,(WPARAM)(l),(LPARAM)(a)) -#define Header_SetOrderArray(w,l,a) (BOOL)SNDMSG((w),HDM_SETORDERARRAY,(WPARAM)(l),(LPARAM)(a)) -#endif -HDSA WINAPI DSA_Create(INT,INT); -BOOL WINAPI DSA_Destroy(HDSA); -VOID WINAPI DSA_DestroyCallback(HDSA,PFNDSAENUMCALLBACK,PVOID); -PVOID WINAPI DSA_GetItemPtr(HDSA,INT); -INT WINAPI DSA_InsertItem(HDSA,INT,PVOID); -HDPA WINAPI DPA_Create(INT); -BOOL WINAPI DPA_Destroy(HDPA); -PVOID WINAPI DPA_DeletePtr(HDPA,INT); -BOOL WINAPI DPA_DeleteAllPtrs(HDPA); -VOID WINAPI DPA_EnumCallback(HDPA,PFNDPAENUMCALLBACK,PVOID); -VOID WINAPI DPA_DestroyCallback(HDPA,PFNDPAENUMCALLBACK,PVOID); -BOOL WINAPI DPA_SetPtr(HDPA,INT,PVOID); -INT WINAPI DPA_InsertPtr(HDPA,INT,PVOID); -PVOID WINAPI DPA_GetPtr(HDPA,INT_PTR); -BOOL WINAPI DPA_Sort(HDPA,PFNDPACOMPARE,LPARAM); -INT WINAPI DPA_Search(HDPA,PVOID,INT,PFNDPACOMPARE,LPARAM,UINT); -BOOL WINAPI Str_SetPtrW(LPWSTR*,LPCWSTR); -#if (_WIN32_IE >= 0x0400) -BOOL WINAPI FlatSB_EnableScrollBar(HWND,INT,UINT); -BOOL WINAPI FlatSB_ShowScrollBar(HWND,INT,BOOL); -BOOL WINAPI FlatSB_GetScrollRange(HWND,INT,LPINT,LPINT); -BOOL WINAPI FlatSB_GetScrollInfo(HWND,INT,LPSCROLLINFO); -INT WINAPI FlatSB_GetScrollPos(HWND,INT); -BOOL WINAPI FlatSB_GetScrollProp(HWND,INT,LPINT); -#ifdef _WIN64 -BOOL WINAPI FlatSB_GetScrollPropPtr(HWND,INT,PINT_PTR); +/************************************************************************** + * Edit control + */ + +#define WC_EDITA "Edit" +#if defined(__GNUC__) +# define WC_EDITW (const WCHAR []){ 'E','d','i','t',0 } +#elif defined(_MSC_VER) +# define WC_EDITW L"Edit" #else -#define FlatSB_GetScrollPropPtr FlatSB_GetScrollProp +static const WCHAR WC_EDITW[] = { 'E','d','i','t',0 }; #endif -INT WINAPI FlatSB_SetScrollPos(HWND,INT,INT,BOOL); -INT WINAPI FlatSB_SetScrollInfo(HWND,INT,LPSCROLLINFO,BOOL); -INT WINAPI FlatSB_SetScrollRange(HWND,INT,INT,INT,BOOL); -BOOL WINAPI FlatSB_SetScrollProp(HWND,UINT,INT_PTR,BOOL); -#define FlatSB_SetScrollPropPtr FlatSB_SetScrollProp -BOOL WINAPI InitializeFlatSB(HWND); -HRESULT WINAPI UninitializeFlatSB(HWND); -#endif /* _WIN32_IE >= 0x0400 */ -#if (_WIN32_WINNT >= 0x0501) -BOOL WINAPI SetWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR,DWORD_PTR); -BOOL WINAPI GetWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR,DWORD_PTR*); -BOOL WINAPI RemoveWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR); -LRESULT WINAPI DefSubclassProc(HWND,UINT,WPARAM,LPARAM); -INT WINAPI DrawShadowText(HDC,LPCWSTR,UINT,RECT*,DWORD,COLORREF,COLORREF,INT,INT); -#endif /* _WIN32_WINNT >= 0x0501 */ -int WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP); -#define ImageList_AddIcon(l,i) ImageList_ReplaceIcon(l,-1,i) -int WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF); -BOOL WINAPI ImageList_BeginDrag(HIMAGELIST,int,int,int); -HIMAGELIST WINAPI ImageList_Create(int,int,UINT,int,int); -BOOL WINAPI ImageList_Destroy(HIMAGELIST); -BOOL WINAPI ImageList_DragEnter(HWND,int,int); -BOOL WINAPI ImageList_DragLeave(HWND); -BOOL WINAPI ImageList_DragMove(int,int); -BOOL WINAPI ImageList_DragShowNolock(BOOL); -BOOL WINAPI ImageList_Draw(HIMAGELIST,int,HDC,int,int,UINT); -BOOL WINAPI ImageList_DrawEx(HIMAGELIST,int,HDC,int,int,int,int,COLORREF,COLORREF,UINT); -void WINAPI ImageList_EndDrag(VOID); -#define ImageList_ExtractIcon(h,l,i) ImageList_GetIcon(l,i,0) -COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST); -HIMAGELIST WINAPI ImageList_GetDragImage(LPPOINT,LPPOINT); -HICON WINAPI ImageList_GetIcon(HIMAGELIST,int,UINT); -BOOL WINAPI ImageList_GetIconSize(HIMAGELIST,int*,int*); -int WINAPI ImageList_GetImageCount(HIMAGELIST); -BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST,int,IMAGEINFO*); -#define ImageList_LoadBitmap(h,l,x,G,M) ImageList_LoadImage(h,l,x,G,M,IMAGE_BITMAP,0) -HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,int,int,COLORREF,UINT,UINT); -HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,int,int,COLORREF,UINT,UINT); -HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,int,HIMAGELIST,int,int,int); -BOOL WINAPI ImageList_Remove(HIMAGELIST,int); -#define ImageList_RemoveAll(l) ImageList_Remove(l,-1) -BOOL WINAPI ImageList_Replace(HIMAGELIST,int,HBITMAP,HBITMAP); -int WINAPI ImageList_ReplaceIcon(HIMAGELIST,int,HICON); -COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF); -BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST,int,int,int); -BOOL WINAPI ImageList_SetIconSize(HIMAGELIST,int,int); -BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST,int,int); -#ifdef _OBJIDL_H -HIMAGELIST WINAPI ImageList_Read(LPSTREAM); -BOOL WINAPI ImageList_Write(HIMAGELIST,LPSTREAM); -#endif -void WINAPI InitCommonControls(void); -#if (_WIN32_IE >= 0x0300) -BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX*); -#endif -int WINAPI LBItemFromPt(HWND,POINT,BOOL); -#define ListView_GetBkColor(w) (COLORREF)SNDMSG((w),LVM_GETBKCOLOR,0,0) -#define ListView_GetImageList(w,i) (HIMAGELIST)SNDMSG((w),LVM_GETIMAGELIST,(i),0) -#define ListView_GetItemCount(w) (int)SNDMSG((w),LVM_GETITEMCOUNT,0,0) -#define ListView_GetItem(w,i) (BOOL)SNDMSG((w),LVM_GETITEM,0,(LPARAM)(i)) -#define ListView_SetBkColor(w,c) (BOOL)SNDMSG((w),LVM_SETBKCOLOR,0,(LPARAM)c) -#define ListView_SetImageList(w,h,i) (HIMAGELIST)(UINT)SNDMSG((w),LVM_SETIMAGELIST,(i),(LPARAM)(h)) -#define ListView_SetItem(w,i) (BOOL)SNDMSG((w),LVM_SETITEM,0,(LPARAM)(const LV_ITEM*)(i)) -#define ListView_InsertItem(w,i) (int)SNDMSG((w),LVM_INSERTITEM,0,(LPARAM)(const LV_ITEM*)(i)) -#define ListView_DeleteItem(w,i) (BOOL)SNDMSG((w),LVM_DELETEITEM,i,0) -#define ListView_DeleteAllItems(w) (BOOL)SNDMSG((w),LVM_DELETEALLITEMS,0,0) -#define ListView_GetCallbackMask(w) (BOOL)SNDMSG((w),LVM_GETCALLBACKMASK,0,0) -#define ListView_SetCallbackMask(w,m) (BOOL)SNDMSG((w),LVM_SETCALLBACKMASK,m,0) -#define ListView_GetNextItem(w,i,f) (int)SNDMSG((w),LVM_GETNEXTITEM,i,MAKELPARAM((f),0)) -#define ListView_FindItem(w,i,p) (int)SNDMSG((w), LVM_FINDITEM,(WPARAM)i,(LPARAM)(const LV_FINDINFO*)(p)) -#define ListView_GetItemRect(w,i,p,c) (BOOL)SNDMSG((w),LVM_GETITEMRECT,i,((p)?(((LPRECT)(p))->left=(c),(LPARAM)(LPRECT)(p)):0)) -#define ListView_SetItemPosition(w,i,x,y) (BOOL)SNDMSG((w),LVM_SETITEMPOSITION,i,MAKELPARAM(x,y)) -#define ListView_GetItemPosition(w,i,p) (BOOL)SNDMSG((w),LVM_GETITEMPOSITION,i,(LPARAM)p) -#define ListView_GetItemSpacing(w,f) (DWORD)SNDMSG((w),LVM_GETITEMSPACING,f,0) -#define ListView_GetStringWidth(w,s) (int)SNDMSG((w),LVM_GETSTRINGWIDTH,0,(LPARAM)s) -#define ListView_HitTest(w,p) (int)SNDMSG((w),LVM_HITTEST,0,(LPARAM)(LV_HITTESTINFO*)(p)) -#define ListView_EnsureVisible(w,i,f) (BOOL)SNDMSG((w),LVM_ENSUREVISIBLE,i,MAKELPARAM((f),0)) -#define ListView_Scroll(w,dx,dy) (BOOL)SNDMSG((w),LVM_SCROLL,dx,dy) -#define ListView_RedrawItems(w,f,l) (BOOL)SNDMSG((w),LVM_REDRAWITEMS,f,l) -#define ListView_Arrange(w,c) (BOOL)SNDMSG((w),LVM_ARRANGE,c,0) -#define ListView_EditLabel(w,i) (HWND)SNDMSG((w),LVM_EDITLABEL,i,0) -#define ListView_GetEditControl(w) (HWND)SNDMSG((w),LVM_GETEDITCONTROL,0,0) -#define ListView_GetColumn(w,i,p) (BOOL)SNDMSG((w),LVM_GETCOLUMN,i,(LPARAM)(LV_COLUMN*)(p)) -#define ListView_SetColumn(w,i,p) (BOOL)SNDMSG((w),LVM_SETCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p)) -#define ListView_InsertColumn(w,i,p) (int)SNDMSG((w),LVM_INSERTCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p)) -#define ListView_DeleteColumn(w,i) (BOOL)SNDMSG((w),LVM_DELETECOLUMN,i,0) -#define ListView_GetColumnWidth(w,i) (int)SNDMSG((w),LVM_GETCOLUMNWIDTH,i,0) -#define ListView_SetColumnWidth(w,i,x) (BOOL)SNDMSG((w),LVM_SETCOLUMNWIDTH,i,MAKELPARAM((x),0)) -#define ListView_CreateDragImage(w,i,p) (HIMAGELIST)SNDMSG((w),LVM_CREATEDRAGIMAGE,i,(LPARAM)(LPPOINT)(p)) -#define ListView_GetViewRect(w,p) (BOOL)SNDMSG((w),LVM_GETVIEWRECT,0,(LPARAM)(LPRECT)(p)) -#define ListView_GetTextColor(w) (COLORREF)SNDMSG((w),LVM_GETTEXTCOLOR,0,0) -#define ListView_SetTextColor(w,c) (BOOL)SNDMSG((w),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(c)) -#define ListView_GetTextBkColor(w) (COLORREF)SNDMSG((w),LVM_GETTEXTBKCOLOR,0,0) -#define ListView_SetTextBkColor(w,c) (BOOL)SNDMSG((w),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(c)) -#define ListView_GetTopIndex(w) (int)SNDMSG((w),LVM_GETTOPINDEX,0,0) -#define ListView_GetCountPerPage(w) (int)SNDMSG((w),LVM_GETCOUNTPERPAGE,0,0) -#define ListView_GetOrigin(w,p) (BOOL)SNDMSG((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p)) -#define ListView_GetOrigin(w,p) (BOOL)SNDMSG((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p)) -#define ListView_Update(w,i) (BOOL)SNDMSG((w),LVM_UPDATE,i,0) -#define ListView_SetItemState(w,i,d,m) \ -{ \ - LV_ITEM _lvi;\ - _lvi.stateMask=m;\ - _lvi.state=d;\ - SNDMSG((w),LVM_SETITEMSTATE,i,(LPARAM)(LV_ITEM*)&_lvi);\ -} -#define ListView_GetItemState(w,i,m) (UINT)SNDMSG((w),LVM_GETITEMSTATE,i,m) -#define ListView_GetItemText(w,i,iS,s,n) \ -{ \ - LV_ITEM _lvi;\ - _lvi.iSubItem=iS;\ - _lvi.cchTextMax=n;\ - _lvi.pszText=s;\ - SNDMSG((w),LVM_GETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\ -} -#define ListView_SetItemText(w,i,iS,s) \ -{ \ - LV_ITEM _lvi;\ - _lvi.iSubItem=iS;\ - _lvi.pszText=s;\ - SNDMSG((w),LVM_SETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\ -} -#define ListView_SetItemCount(w,n) SNDMSG((w),LVM_SETITEMCOUNT,n,0) -#define ListView_SortItems(w,f,l) (BOOL)SNDMSG((w),LVM_SORTITEMS,l,(LPARAM)f) -#define ListView_SetItemPosition32(w,i,x,y) \ -{ \ - POINT p={x,y}; \ - SNDMSG((w),LVM_SETITEMPOSITION32,i,(LPARAM)&p);\ -} -#define ListView_GetSelectedCount(w) (UINT)SNDMSG((w),LVM_GETSELECTEDCOUNT,0,0) -#define ListView_GetCheckState(w,i) ((((UINT)(SNDMSG((w),LVM_GETITEMSTATE,(WPARAM)(i),LVIS_STATEIMAGEMASK)))>>12)-1) -#define ListView_SetCheckState(w,i,f) ListView_SetItemState(w,i,INDEXTOSTATEIMAGEMASK((f)+1),LVIS_STATEIMAGEMASK) +#define WC_EDIT WINELIB_NAME_AW(WC_EDIT) -BOOL WINAPI MakeDragList(HWND); -void WINAPI MenuHelp(UINT,WPARAM,LPARAM,HMENU,HINSTANCE,HWND,PUINT); -#define MonthCal_GetColor(hwnd,icolor) SNDMSG(hwnd,MCM_GETCOLOR,(WPARAM)icolor,(LPARAM)0) -#define MonthCal_GetCurSel(hwnd,lpsystime) SNDMSG(hwnd,MCM_GETCURSEL,0,(LPARAM)lpsystime) -#define MonthCal_GetFirstDayOfWeek(hwnd) SNDMSG(hwnd,MCM_GETFIRSTDAYOFWEEK,0,0) -#define MonthCal_GetMaxSelCount(hwnd) SNDMSG(hwnd,MCM_GETMAXSELCOUNT,0,0) -#define MonthCal_GetMaxTodayWidth(hwnd) SNDMSG(hwnd,MCM_GETMAXTODAYWIDTH,0,0) -#define MonthCal_GetMinReqRect(hwnd,lpRectInfo) SNDMSG(hwnd,MCM_GETMINREQRECT,0,(LPARAM)lpRectInfo) -#define MonthCal_GetMonthDelta(hwnd) SNDMSG(hwnd,MCM_GETMONTHDELTA,0,0) -#define MonthCal_GetMonthRange(hwnd,flag,systimearray) SNDMSG(hwnd,MCM_GETMONTHRANGE,(WPARAM)flag,(LPARAM)systimearray) -#define MonthCal_GetRange(hwnd,systimearray) SNDMSG(hwnd,MCM_GETRANGE,0,(LPARAM)systimearray) -#define MonthCal_GetSelRange(hwnd,systimearray) SNDMSG(hwnd,MCM_GETSELRANGE,0,(LPARAM)systimearray) -#define MonthCal_GetToday(hwnd,systime) SNDMSG(hwnd,MCM_GETTODAY,0,(LPARAM)systime) -#define MonthCal_GetUnicodeFormat(hwnd) SNDMSG(hwnd,MCM_GETUNICODEFORMAT,0,0) -#define MonthCal_HitTest(hwnd,pmchittest) SNDMSG(hwnd,MCM_HITTEST,0,(LPARAM)pmchittest) -#define MonthCal_SetColor(hwnd,icolor,clr) SNDMSG(hwnd,MCM_SETCOLOR,(WPARAM)icolor,(LPARAM)clr) -#define MonthCal_SetCurSel(hwnd,lpsystime) SNDMSG(hwnd,MCM_SETCURSEL,0,(LPARAM)lpsystime) -#define MonthCal_SetDayState(hwnd,imonths,lpdatestatearray) SNDMSG(hwnd,MCM_SETDAYSTATE,(WPARAM)imonths,(LPARAM)lpdatestatearray) -#define MonthCal_SetFirstDayOfWeek(hwnd,iday) SNDMSG(hwnd,MCM_SETFIRSTDAYOFWEEK,0,(LPARAM)iday) -#define MonthCal_SetMaxSelCount(hwnd,imax) SNDMSG(hwnd,MCM_SETMAXSELCOUNT,(WPARAM)imax,0) -#define MonthCal_SetMonthDelta(hwnd,idelta) SNDMSG(hwnd,MCM_SETMONTHDELTA,(WPARAM)idelta,0) -#define MonthCal_SetRange(hwnd,whichlimit,systimearray) SNDMSG(hwnd,MCM_SETRANGE,whichlimit,systimearray) -#define MonthCal_SetSelRange(hwnd,systimearray) SNDMSG(hwnd,MCM_SETSELRANGE,0,(LPARAM)systimearray) -#define MonthCal_SetToday(hwnd,systime) SNDMSG(hwnd,MCM_SETTODAY,0,(LPARAM)systime) -#define MonthCal_SetUnicodeFormat(hwnd,unicode) SNDMSG(hwnd,MCM_SETUNICODEFORMAT,(WPARAM)unicode,0) -BOOL WINAPI ShowHideMenuCtl(HWND,UINT,PINT); -#define TabCtrl_GetItem(w,i,p) (BOOL)SNDMSG((w),TCM_GETITEM,i,(LPARAM)(TC_ITEM*)(p)) -#define TabCtrl_SetItem(w,i,p) (BOOL)SNDMSG((w),TCM_SETITEM,i,(LPARAM)(TC_ITEM*)(p)) -#define TabCtrl_InsertItem(w,i,p) (int)SNDMSG((w),TCM_INSERTITEM,i,(LPARAM)(const TC_ITEM*)(p)) -#define TabCtrl_DeleteItem(w,i) (BOOL)SNDMSG((w),TCM_DELETEITEM,i,0) -#define TabCtrl_DeleteAllItems(w) (BOOL)SNDMSG((w),TCM_DELETEALLITEMS,0,0) -#define TabCtrl_GetItemRect(w,i,p) (BOOL)SNDMSG((w),TCM_GETITEMRECT,i,(LPARAM)(LPRECT)(p)) -#define TabCtrl_GetCurSel(w) (int)SNDMSG((w),TCM_GETCURSEL,0,0) -#define TabCtrl_SetCurSel(w,i) (int)SNDMSG((w),TCM_SETCURSEL,i,0) -#define TabCtrl_HitTest(w,p) (int)SNDMSG((w),TCM_HITTEST,0,(LPARAM)(TC_HITTESTINFO*)(p)) -#define TabCtrl_SetItemExtra(w,c) (BOOL)SNDMSG((w),TCM_SETITEMEXTRA,c,0) -#define TabCtrl_AdjustRect(w,b,p) (int)SNDMSG((w),TCM_ADJUSTRECT,b,(LPARAM)(LPRECT)p) -#define TabCtrl_SetItemSize(w,x,y) (DWORD)SNDMSG((w),TCM_SETITEMSIZE,0,MAKELPARAM(x,y)) -#define TabCtrl_RemoveImage(w,i) (void)SNDMSG((w),TCM_REMOVEIMAGE,i,0) -#define TabCtrl_SetPadding(w,x,y) (void)SNDMSG((w),TCM_SETPADDING,0,MAKELPARAM(x,y)) -#define TabCtrl_GetRowCount(w) (int)SNDMSG((w),TCM_GETROWCOUNT,0,0) -#define TabCtrl_GetToolTips(w) (HWND)SNDMSG((w),TCM_GETTOOLTIPS,0,0) -#define TabCtrl_SetToolTips(w,t) (void)SNDMSG((w),TCM_SETTOOLTIPS,(WPARAM)t,0) -#define TabCtrl_GetCurFocus(w) (int)SNDMSG((w),TCM_GETCURFOCUS,0,0) -#define TabCtrl_SetCurFocus(w,i) (void)SNDMSG((w),TCM_SETCURFOCUS,i,0) -#define TabCtrl_GetImageList(w) (HIMAGELIST)SNDMSG((w),TCM_GETIMAGELIST,0,0) -#define TabCtrl_SetImageList(w,h) (HIMAGELIST)SNDMSG((w),TCM_SETIMAGELIST,0,(LPARAM)(UINT)(h)) -#define TabCtrl_GetItemCount(w) (int)SNDMSG((w),TCM_GETITEMCOUNT,0,0) -BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT); -#define TreeView_InsertItem(w,i) (HTREEITEM)SNDMSG((w),TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)(i)) -#define TreeView_DeleteItem(w,i) (BOOL)SNDMSG((w),TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)(i)) -#define TreeView_DeleteAllItems(w) (BOOL)SNDMSG((w),TVM_DELETEITEM,0,(LPARAM)TVI_ROOT) -#define TreeView_Expand(w,i,c) (BOOL)SNDMSG((w),TVM_EXPAND,c,(LPARAM)(HTREEITEM)(i)) -#define TreeView_GetItemRect(w,i,p,c) (*(HTREEITEM*)p=(i),(BOOL)SNDMSG((w),TVM_GETITEMRECT,c,(LPARAM)(LPRECT)(p))) -#define TreeView_GetCount(w) (UINT)SNDMSG((w),TVM_GETCOUNT,0,0) -#define TreeView_GetIndent(w) (UINT)SNDMSG((w),TVM_GETINDENT,0,0) -#define TreeView_SetIndent(w,i) (BOOL)SNDMSG((w),TVM_SETINDENT,i,0) -#define TreeView_GetImageList(w,i) (HIMAGELIST)SNDMSG((w),TVM_GETIMAGELIST,i,0) -#define TreeView_SetImageList(w,h,i) (HIMAGELIST)SNDMSG((w),TVM_SETIMAGELIST,i,(LPARAM)(HIMAGELIST)(h)) -#define TreeView_GetNextItem(w,i,c) (HTREEITEM)SNDMSG((w),TVM_GETNEXTITEM,c,(LPARAM)(HTREEITEM)(i)) -#define TreeView_GetChild(w,i) TreeView_GetNextItem(w,i,TVGN_CHILD) -#define TreeView_GetNextSibling(w,i) TreeView_GetNextItem(w,i,TVGN_NEXT) -#define TreeView_GetPrevSibling(w,i) TreeView_GetNextItem(w,i,TVGN_PREVIOUS) -#define TreeView_GetParent(w,i) TreeView_GetNextItem(w,i,TVGN_PARENT) -#define TreeView_GetFirstVisible(w) TreeView_GetNextItem(w,NULL,TVGN_FIRSTVISIBLE) -#define TreeView_GetNextVisible(w,i) TreeView_GetNextItem(w,i,TVGN_NEXTVISIBLE) -#define TreeView_GetPrevVisible(w,i) TreeView_GetNextItem(w,i,TVGN_PREVIOUSVISIBLE) -#define TreeView_GetSelection(w) TreeView_GetNextItem(w,NULL,TVGN_CARET) -#define TreeView_GetDropHilight(w) TreeView_GetNextItem(w,NULL,TVGN_DROPHILITE) -#define TreeView_GetRoot(w) TreeView_GetNextItem(w,NULL,TVGN_ROOT) -#define TreeView_Select(w,i,c) (BOOL)SNDMSG((w),TVM_SELECTITEM,c,(LPARAM)(HTREEITEM)(i)) -#define TreeView_SelectItem(w,i) TreeView_Select(w,i,TVGN_CARET) -#define TreeView_SelectDropTarget(w,i) TreeView_Select(w,i,TVGN_DROPHILITE) -#define TreeView_SelectSetFirstVisible(w,i) TreeView_Select(w,i,TVGN_FIRSTVISIBLE) -#define TreeView_GetItem(w,i) (BOOL)SNDMSG((w),TVM_GETITEM,0,(LPARAM)(TV_ITEM*)(i)) -#define TreeView_SetItem(w,i) (BOOL)SNDMSG((w),TVM_SETITEM,0,(LPARAM)(const TV_ITEM*)(i)) -#define TreeView_EditLabel(w,i) (HWND)SNDMSG((w),TVM_EDITLABEL,0,(LPARAM)(HTREEITEM)(i)) -#define TreeView_GetEditControl(w) (HWND)SNDMSG((w),TVM_GETEDITCONTROL,0,0) -#define TreeView_GetVisibleCount(w) (UINT)SNDMSG((w),TVM_GETVISIBLECOUNT,0,0) -#define TreeView_HitTest(w,p) (HTREEITEM)SNDMSG((w),TVM_HITTEST,0,(LPARAM)(LPTV_HITTESTINFO)(p)) -#define TreeView_CreateDragImage(w,i) (HIMAGELIST)SNDMSG((w),TVM_CREATEDRAGIMAGE,0,(LPARAM)(HTREEITEM)(i)) -#define TreeView_SortChildren(w,i,r) (BOOL)SNDMSG((w),TVM_SORTCHILDREN,r,(LPARAM)(HTREEITEM)(i)) -#define TreeView_EnsureVisible(w,i) (BOOL)SNDMSG((w),TVM_ENSUREVISIBLE,0,(LPARAM)(HTREEITEM)(i)) -#define TreeView_SortChildrenCB(w,s,r) (BOOL)SNDMSG((w),TVM_SORTCHILDRENCB,r,(LPARAM)(LPTVSORTCB)(s)) -#define TreeView_EndEditLabelNow(w,f) (BOOL)SNDMSG((w),TVM_ENDEDITLABELNOW,f,0) -#define TreeView_GetISearchString(w,s) (BOOL)SNDMSG((w),TVM_GETISEARCHSTRING,0,(LPARAM)s) -#if (_WIN32_IE >= 0x0300) -#define ListView_ApproximateViewRect(w,iw,ih,i) (DWORD)SNDMSG((w),LVM_APPROXIMATEVIEWRECT,(i),MAKELPARAM((iw),(ih))) -#define ListView_SetExtendedListViewStyle(w,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,0,(s)) -#define ListView_GetExtendedListViewStyle(w) (DWORD)SNDMSG((w),LVM_GETEXTENDEDLISTVIEWSTYLE,0,0) -#define ListView_SetColumnOrderArray(w,i,a) (BOOL)SNDMSG((w),LVM_SETCOLUMNORDERARRAY,(WPARAM)(i),(LPARAM)(LPINT)(a)) -#define ListView_GetColumnOrderArray(w,i,a) (BOOL)SNDMSG((w),LVM_GETCOLUMNORDERARRAY,(WPARAM)(i),(LPARAM)(LPINT)(a)) -#define ListView_GetHeader(w) (HWND)SNDMSG((w),LVM_GETHEADER,0,0) -#define ListView_GetHotCursor(w) (HCURSOR)SNDMSG((w),LVM_GETHOTCURSOR,0,0) -#define ListView_GetHotItem(w) (INT)SNDMSG((w),LVM_GETHOTITEM,0,0) -#define ListView_GetSubItemRect(w,i,is,c,p) (BOOL)SNDMSG((w),LVM_GETSUBITEMRECT,(WPARAM)(int)(i),((p)?(((LPRECT)(p))->left=(c),(((LPRECT)(p))->top=(is)),(LPARAM)(LPRECT)(p)):0)) -#define ListView_SetHotCursor(w,c) (HCURSOR)SNDMSG((w),LVM_SETHOTCURSOR,0,(LPARAM)(c)) -#define ListView_SetHotItem(w,i) (int)SNDMSG((w),LVM_SETHOTITEM,(WPARAM)(i),0) -#define ListView_SetIconSpacing(w,x,y) (DWORD)SNDMSG((w),LVM_SETICONSPACING,0,MAKELONG(x,y)) -#define ListView_SubItemHitTest(w,p) (int)SNDMSG((w),LVM_SUBITEMHITTEST,0,(LPARAM)(LPLVHITTESTINFO)(p)) -WINBOOL WINAPI ImageList_SetImageCount(HIMAGELIST,UINT); -WINBOOL WINAPI ImageList_Copy(HIMAGELIST,int,HIMAGELIST,int,UINT); -WINBOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); -#define TabCtrl_SetMinTabWidth(hwnd, x) SNDMSG((hwnd), TCM_SETMINTABWIDTH, 0, x) -#define TabCtrl_DeselectAll(hwnd, fExcludeFocus) SNDMSG((hwnd), TCM_DESELECTALL, fExcludeFocus, 0) -#define TreeView_GetToolTips(w) (HWND)SNDMSG((w),TVM_GETTOOLTIPS,0,0) -#define TreeView_SetToolTips(w,wt) (HWND)SNDMSG((w),TVM_SETTOOLTIPS,(WPARAM)(wt),0) -#endif -#if (_WIN32_IE >= 0x0400) -#define ListView_GetBkImage(h,plvbki) (BOOL)SNDMSG((h), LVM_GETBKIMAGE, 0, (LPARAM)(plvbki)) -#define ListView_SetBkImage(h, plvbki) (BOOL)SNDMSG((h), LVM_SETBKIMAGE, 0, (LPARAM)(plvbki)) -#define ListView_SetExtendedListViewStyleEx(w,m,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,(m),(s)) -#define ListView_SetWorkAreas(w,n,r) (BOOL)SNDMSG((w),LVM_SETWORKAREAS,(WPARAM)(n),(LPARAM)(RECT *)(r)) -#define ListView_GetWorkAreas(w,n,r) (BOOL)SNDMSG((w),LVM_GETWORKAREAS,(WPARAM)(n),(LPARAM)(RECT *)(r)) -#define ListView_GetNumberOfWorkAreas(w,n) (BOOL)SNDMSG((w),LVM_GETNUMBEROFWORKAREAS,0,(LPARAM)(UINT *)(pnWorkAreas)) -#define ListView_SetHoverTime(w,t) (DWORD)SNDMSG((w),LVM_SETHOVERTIME,0,(LPARAM)(t)) -#define ListView_GetHoverTime(w) (DWORD)SNDMSG((w),LVM_GETHOVERTIME,0,0) -#define ListView_GetSelectionMark(w) (INT)SNDMSG((w),LVM_GETSELECTIONMARK,0,0) -#define ListView_SetSelectionMark(w,i) (INT)SNDMSG((w),LVM_SETSELECTIONMARK,0,(LPARAM)(i)) -#define ListView_SetToolTips(w,n) (HWND)SNDMSG((w),LVM_SETTOOLTIPS,(WPARAM)(n),0) -#define ListView_GetToolTips(w) (HWND)SNDMSG((w),LVM_GETTOOLTIPS,0,0) -#define TabCtrl_HighlightItem(hwnd, i, fHighlight) SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)i, (LPARAM)MAKELONG (fHighlight, 0)) -#define TabCtrl_SetExtendedStyle(hwnd, dw) SNDMSG((hwnd), TCM_SETEXTENDEDSTYLE, 0, dw) -#define TabCtrl_GetExtendedStyle(hwnd) SNDMSG((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0) -#define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) SNDMSG((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) -#define TabCtrl_GetUnicodeFormat(hwnd) SNDMSG((hwnd), TCM_GETUNICODEFORMAT, 0, 0) -#define TreeView_GetBkColor(w) (COLORREF)SNDMSG((w),TVM_GETBKCOLOR,0,0) -#define TreeView_GetInsertMarkColor(w) (COLORREF)SNDMSG((w),TVM_GETINSERTMARKCOLOR,0,0) -#define TreeView_GetItemHeight(w) (int)SNDMSG((w),TVM_GETITEMHEIGHT,0,0) -#define TreeView_GetScrollTime(w) (UINT)SNDMSG((w),TVM_GETSCROLLTIME,0,0) -#define TreeView_GetTextColor(w) (COLORREF)SNDMSG((w),TVM_GETTEXTCOLOR,0,0) -#define TreeView_SetBkColor(w,c) (COLORREF)SNDMSG((w),TVM_SETBKCOLOR,0,(LPARAM)(c)) -#define TreeView_SetInsertMarkColor(w,c) (COLORREF)SNDMSG((w),TVM_SETINSERTMARKCOLOR,0,(LPARAM)(c)) -#define TreeView_SetItemHeight(w,h) (int)SNDMSG((w),TVM_SETITEMHEIGHT,(WPARAM)(h),0) -#define TreeView_SetScrollTime(w,t) (UINT)SNDMSG((w),TVM_SETSCROLLTIME,(WPARAM)(UINT)(t),0) -#define TreeView_SetTextColor(w,c) (COLORREF)SNDMSG((w),TVM_SETTEXTCOLOR,0,(LPARAM)(c)) -#define TreeView_SetInsertMark(w,i,a) (BOOL)SNDMSG((w),TVM_SETINSERTMARK,(WPARAM)(a),(LPARAM)(i)) -#define TreeView_SetUnicodeFormat(w,u) (BOOL)SNDMSG((w),TVM_SETUNICODEFORMAT,(WPARAM)(u),0) -#define TreeView_GetUnicodeFormat(w) (BOOL)SNDMSG((w),TVM_GETUNICODEFORMAT,0,0) -#endif -#if (_WIN32_IE >= 0x0500) -#define TreeView_GetItemState(w,i,m) (UINT)SNDMSG((w),TVM_GETITEMSTATE,(WPARAM)(i),(LPARAM)(m)) -#endif +/************************************************************************** + * List box control + */ -#ifdef UNICODE -typedef HDITEMW HDITEM; -typedef TOOLINFOW TOOLINFO,*PTOOLINFO,*LPTOOLINFO; -typedef TTHITTESTINFOW TTHITTESTINFO,*LPHITTESTINFO,*LPTTHITTESTINFO; -typedef TOOLTIPTEXTW TOOLTIPTEXT,*LPTOOLTIPTEXT; -typedef NMTTDISPINFOW NMTTDISPINFO, *LPNMTTDISPINFO; -typedef TV_ITEMW TV_ITEM,*LPTV_ITEM; -typedef TVITEMW TVITEM,*LPTVITEM; -#if (_WIN32_IE >= 0x0400) -typedef TVITEMEXW TVITEMEX,*LPTVITEMEX; +#define WC_LISTBOXA "ListBox" +#if defined(__GNUC__) +# define WC_LISTBOXW (const WCHAR []){ 'L','i','s','t','B','o','x',0 } +#elif defined(_MSC_VER) +# define WC_LISTBOXW L"ListBox" +#else +static const WCHAR WC_LISTBOXW[] = { 'L','i','s','t','B','o','x',0 }; #endif -typedef TV_INSERTSTRUCTW TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT; -typedef TVINSERTSTRUCTW TVINSERTSTRUCT,*LPTVINSERTSTRUCT; -typedef NM_TREEVIEWW NM_TREEVIEW,*LPNM_TREEVIEW; -typedef NMTREEVIEWW NMTREEVIEW,*LPNMTREEVIEW; -typedef NMHDDISPINFOW NMHDDISPINFO, *LPNMHDDISPINFO; -#define ACM_OPEN ACM_OPENW -#define COMBOBOXEXITEM COMBOBOXEXITEMW -#define PCOMBOBOXEXITEM PCOMBOBOXEXITEMW -#define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMW -#define CBEM_INSERTITEM CBEM_INSERTITEMW -#define CBEM_SETITEM CBEM_SETITEMW -#define CBEM_GETITEM CBEM_GETITEMW -#define CBEN_ENDEDIT CBEN_ENDEDITW -#define NMCBEENDEDIT NMCBEENDEDITW -#define LPNMCBEENDEDIT LPNMCBEENDEDITW -#define PNMCBEENDEDIT PNMCBEENDEDITW -#if _WIN32_IE >= 0x0400 -#define NMCOMBOBOXEX NMCOMBOBOXEXW -#define PNMCOMBOBOXEX PNMCOMBOBOXEXW -#define CBEN_GETDISPINFO CBEN_GETDISPINFOW -#define CBEN_DRAGBEGIN CBEN_DRAGBEGINW -#define NMCBEDRAGBEGIN NMCBEDRAGBEGINW -#define LPNMCBEDRAGBEGIN LPNMCBEDRAGBEGINW -#define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINW -#endif /* _WIN32_IE >= 0x0400 */ -#define SB_GETTEXT SB_GETTEXTW -#define SB_SETTEXT SB_SETTEXTW -#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW -#define HDM_INSERTITEM HDM_INSERTITEMW -#define HDM_GETITEM HDM_GETITEMW -#define HDM_SETITEM HDM_SETITEMW -#define HDN_ITEMCHANGING HDN_ITEMCHANGINGW -#define HDN_ITEMCHANGED HDN_ITEMCHANGEDW -#define HDN_ITEMCLICK HDN_ITEMCLICKW -#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKW -#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKW -#define HDN_BEGINTRACK HDN_BEGINTRACKW -#define HDN_ENDTRACK HDN_ENDTRACKW -#define HDN_TRACK HDN_TRACKW -#if (_WIN32_IE >= 0x0300) -#define HDN_GETDISPINFO HDN_GETDISPINFOW +#define WC_LISTBOX WINELIB_NAME_AW(WC_LISTBOX) + +/************************************************************************** + * Scroll bar control + */ + +#define WC_SCROLLBARA "ScrollBar" +#if defined(__GNUC__) +# define WC_SCROLLBARW (const WCHAR []){ 'S','c','r','o','l','l','B','a','r',0 } +#elif defined(_MSC_VER) +# define WC_SCROLLBARW L"ScrollBar" +#else +static const WCHAR WC_SCROLLBARW[] = { 'S','c','r','o','l','l','B','a','r',0 }; #endif -#define HD_NOTIFY HD_NOTIFYW -#define TBSAVEPARAMS TBSAVEPARAMSW -#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTW -#define TB_SAVERESTORE TB_SAVERESTOREW -#define TB_ADDSTRING TB_ADDSTRINGW -#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOW -#if _WIN32_IE >= 0x400 -#define TB_GETBUTTONINFO TB_GETBUTTONINFOW -#define TB_SETBUTTONINFO TB_SETBUTTONINFOW -#define TB_INSERTBUTTON TB_INSERTBUTTONW -#define TB_ADDBUTTONS TB_ADDBUTTONSW -#define TB_MAPACCELERATOR TB_MAPACCELERATORW -#define TB_GETSTRING TB_GETSTRINGW -#define TBBUTTONINFO TBBUTTONINFOW -#define LPTBBUTTONINFO LPTBBUTTONINFOW -#define TBN_GETDISPINFO TBN_GETDISPINFOW -#define NMTBDISPINFO NMTBDISPINFOW -#define LPNMTBDISPINFO LPNMTBDISPINFOW -#endif -#define TBNOTIFY TBNOTIFYW -#define LPTBNOTIFY LPTBNOTIFYW -#define NMTOOLBAR NMTOOLBARW -#define LPNMTOOLBAR LPNMTOOLBARW -#define TTM_ADDTOOL TTM_ADDTOOLW -#define TTM_DELTOOL TTM_DELTOOLW -#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTW -#define TTM_GETTOOLINFO TTM_GETTOOLINFOW -#define TTM_SETTOOLINFO TTM_SETTOOLINFOW -#define TTM_HITTEST TTM_HITTESTW -#define TTM_GETTEXT TTM_GETTEXTW -#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTW -#define TTM_ENUMTOOLS TTM_ENUMTOOLSW -#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLW -#define TTN_NEEDTEXT TTN_NEEDTEXTW -#define TTN_GETDISPINFO TTN_GETDISPINFOW -#define SB_GETTEXT SB_GETTEXTW -#define SB_SETTEXT SB_SETTEXTW -#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW -#define LV_ITEM LV_ITEMW -#define LVITEM LVITEMW -#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW -#if _WIN32_IE >= 0x0400 -#define LVBKIMAGE LVBKIMAGEW -#define LPLVBKIMAGE LPLVBKIMAGEW -#define LVM_SETBKIMAGE LVM_SETBKIMAGEW -#define LVM_GETBKIMAGE LVM_GETBKIMAGEW -#endif /* _WIN32_IE >= 0x400 */ -#define LVM_GETITEM LVM_GETITEMW -#define LVM_SETITEM LVM_SETITEMW -#define LVM_INSERTITEM LVM_INSERTITEMW -#define LV_FINDINFO LV_FINDINFOW -#define LVFINDINFO LVFINDINFOW -#define LPFINDINFO LPFINDINFOW -#define LVM_FINDITEM LVM_FINDITEMW -#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW -#define LVM_EDITLABEL LVM_EDITLABELW -#define LV_COLUMN LV_COLUMNW -#define LVCOLUMN LVCOLUMNW -#define LVM_GETCOLUMN LVM_GETCOLUMNW -#define LVM_SETCOLUMN LVM_SETCOLUMNW -#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW -#define LVM_GETITEMTEXT LVM_GETITEMTEXTW -#define LVM_SETITEMTEXT LVM_SETITEMTEXTW -#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW -#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW -#define LVN_ENDLABELEDIT LVN_ENDLABELEDITW -#define LVN_GETDISPINFO LVN_GETDISPINFOW -#define LVN_SETDISPINFO LVN_SETDISPINFOW -#define LVN_GETINFOTIP LVN_GETINFOTIPW -#define NMLVGETINFOTIP NMLVGETINFOTIPW -#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPW -#define LV_DISPINFO LV_DISPINFOW -#define NMLVDISPINFO NMLVDISPINFOW -#define TVM_INSERTITEM TVM_INSERTITEMW -#define TVM_GETITEM TVM_GETITEMW -#define TVM_SETITEM TVM_SETITEMW -#define TVM_EDITLABEL TVM_EDITLABELW -#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW -#define TV_DISPINFO NMTVDISPINFOW -#define NMTVDISPINFO NMTVDISPINFOW -#define LPNMTVDISPINFO LPNMTVDISPINFOW -#if (_WIN32_IE >= 0x0400) -#define NMTVGETINFOTIP NMTVGETINFOTIPW -#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPW -#define TVN_GETINFOTIP TVN_GETINFOTIPW -#endif -#define TVN_SELCHANGING TVN_SELCHANGINGW -#define TVN_SELCHANGED TVN_SELCHANGEDW -#define TVN_GETDISPINFO TVN_GETDISPINFOW -#define TVN_SETDISPINFO TVN_SETDISPINFOW -#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW -#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW -#define TVN_BEGINDRAG TVN_BEGINDRAGW -#define TVN_BEGINRDRAG TVN_BEGINRDRAGW -#define TVN_DELETEITEM TVN_DELETEITEMW -#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW -#define TVN_ENDLABELEDIT TVN_ENDLABELEDITW -#define TC_ITEMHEADER TC_ITEMHEADERW -#define TC_ITEM TC_ITEMW -#define TCITEM TCITEMW -#define LPTCITEM LPTCITEMW -#define TCM_GETITEM TCM_GETITEMW -#define TCM_SETITEM TCM_SETITEMW -#define TCM_INSERTITEM TCM_INSERTITEMW -#define CreateStatusWindow CreateStatusWindowW -#define DrawStatusText DrawStatusTextW -#define ImageList_LoadImage ImageList_LoadImageW -#define DTM_SETFORMAT DTM_SETFORMATW -#define DTN_USERSTRING DTN_USERSTRINGW -#define DTN_WMKEYDOWN DTN_WMKEYDOWNW -#define DTN_FORMAT DTN_FORMATW -#define DTN_FORMATQUERY DTN_FORMATQUERYW -typedef REBARBANDINFOW REBARBANDINFO,*LPREBARBANDINFO; -#define LPCREBARBANDINFO LPCREBARBANDINFOW -#define REBARBANDINFO_V3_SIZE REBARBANDINFOW_V3_SIZE -#define RB_INSERTBAND RB_INSERTBANDW -#define RB_SETBANDINFO RB_SETBANDINFOW -#else /* UNICODE */ -typedef HDITEMA HDITEM; -typedef TOOLINFOA TOOLINFO,*PTOOLINFO,*LPTOOLINFO; -typedef TTHITTESTINFOA TTHITTESTINFO,*LPHITTESTINFO,*LPTTHITTESTINFO; -typedef TOOLTIPTEXTA TOOLTIPTEXT,*LPTOOLTIPTEXT; -typedef NMTTDISPINFOA NMTTDISPINFO, *LPNMTTDISPINFO; -typedef TV_ITEMA TV_ITEM,*LPTV_ITEM; -typedef TVITEMA TVITEM,*LPTVITEM; -#if (_WIN32_IE >= 0x0400) -typedef TVITEMEXA TVITEMEX,*LPTVITEMEX; -#endif -typedef TV_INSERTSTRUCTA TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT; -typedef TVINSERTSTRUCTA TVINSERTSTRUCT,*LPTVINSERTSTRUCT; -typedef NM_TREEVIEWA NM_TREEVIEW,*LPNM_TREEVIEW; -typedef NMTREEVIEWA NMTREEVIEW,*LPNMTREEVIEW; -typedef NMHDDISPINFOW NMHDDISPINFO, *LPNMHDDISPINFO; -#define ACM_OPEN ACM_OPENA -#define COMBOBOXEXITEM COMBOBOXEXITEMA -#define PCOMBOBOXEXITEM PCOMBOBOXEXITEMA -#define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMA -#define CBEM_INSERTITEM CBEM_INSERTITEMA -#define CBEM_SETITEM CBEM_SETITEMA -#define CBEM_GETITEM CBEM_GETITEMA -#define CBEN_ENDEDIT CBEN_ENDEDITA -#define NMCBEENDEDIT NMCBEENDEDITA -#define LPNMCBEENDEDIT LPNMCBEENDEDITA -#define PNMCBEENDEDIT PNMCBEENDEDITA -#if _WIN32_IE >= 0x0400 -#define TB_GETBUTTONINFO TB_GETBUTTONINFOA -#define TB_SETBUTTONINFO TB_SETBUTTONINFOA -#define TB_INSERTBUTTON TB_INSERTBUTTONA -#define TB_ADDBUTTONS TB_ADDBUTTONSA -#define TB_MAPACCELERATOR TB_MAPACCELERATORA -#define TB_GETSTRING TB_GETSTRINGA -#define NMCOMBOBOXEX NMCOMBOBOXEXA -#define PNMCOMBOBOXEX PNMCOMBOBOXEXA -#define CBEN_DRAGBEGIN CBEN_DRAGBEGINA -#define CBEN_GETDISPINFO CBEN_GETDISPINFOA -#define NMCBEDRAGBEGIN NMCBEDRAGBEGINA -#define LPNMCBEDRAGBEGIN LPNMCBEDRAGBEGINA -#define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINA -#define TBN_GETDISPINFO TBN_GETDISPINFOA -#define NMTBDISPINFO NMTBDISPINFOA -#define LPNMTBDISPINFO LPNMTBDISPINFOA -#endif /* _WIN32_IE >= 0x0400 */ -#define SB_GETTEXT SB_GETTEXTA -#define SB_SETTEXT SB_SETTEXTA -#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA -#define HDM_INSERTITEM HDM_INSERTITEMA -#define HDM_GETITEM HDM_GETITEMA -#define HDM_SETITEM HDM_SETITEMA -#define HDN_ITEMCHANGING HDN_ITEMCHANGINGA -#define HDN_ITEMCHANGED HDN_ITEMCHANGEDA -#define HDN_ITEMCLICK HDN_ITEMCLICKA -#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKA -#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKA -#define HDN_BEGINTRACK HDN_BEGINTRACKA -#define HDN_ENDTRACK HDN_ENDTRACKA -#define HDN_TRACK HDN_TRACKA -#if (_WIN32_IE >= 0x0300) -#define HDN_GETDISPINFO HDN_GETDISPINFOA -#endif -#define HD_NOTIFY HD_NOTIFYA -#define TBSAVEPARAMS TBSAVEPARAMSA -#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTA -#define TB_SAVERESTORE TB_SAVERESTOREA -#define TB_ADDSTRING TB_ADDSTRINGA -#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOA -#if _WIN32_IE >= 0x400 -#define TBBUTTONINFO TBBUTTONINFOA -#define LPTBBUTTONINFO LPTBBUTTONINFOA -#endif -#define TBNOTIFY TBNOTIFYA -#define LPTBNOTIFY LPTBNOTIFYA -#define NMTOOLBAR NMTOOLBARA -#define LPNMTOOLBAR LPNMTOOLBARA -#define TTM_ADDTOOL TTM_ADDTOOLA -#define TTM_DELTOOL TTM_DELTOOLA -#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTA -#define TTM_GETTOOLINFO TTM_GETTOOLINFOA -#define TTM_SETTOOLINFO TTM_SETTOOLINFOA -#define TTM_HITTEST TTM_HITTESTA -#define TTM_GETTEXT TTM_GETTEXTA -#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTA -#define TTM_ENUMTOOLS TTM_ENUMTOOLSA -#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLA -#define TTN_NEEDTEXT TTN_NEEDTEXTA -#define TTN_GETDISPINFO TTN_GETDISPINFOA -#define SB_GETTEXT SB_GETTEXTA -#define SB_SETTEXT SB_SETTEXTA -#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA -#define LV_ITEM LV_ITEMA -#define LVITEM LVITEMA -#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA -#if _WIN32_IE >= 0x0400 -#define LVBKIMAGE LVBKIMAGEA -#define LPLVBKIMAGE LPLVBKIMAGEA -#define LVM_SETBKIMAGE LVM_SETBKIMAGEA -#define LVM_GETBKIMAGE LVM_GETBKIMAGEA -#endif /* _WIN32_IE >= 0x0400 */ -#define LVM_GETITEM LVM_GETITEMA -#define LVM_SETITEM LVM_SETITEMA -#define LVM_INSERTITEM LVM_INSERTITEMA -#define LV_FINDINFO LV_FINDINFOA -#define LVFINDINFO LVFINDINFOA -#define LPFINDINFO LPFINDINFOA -#define LVM_FINDITEM LVM_FINDITEMA -#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA -#define LVM_EDITLABEL LVM_EDITLABELA -#define LV_COLUMN LV_COLUMNA -#define LVCOLUMN LVCOLUMNA -#define LVM_GETCOLUMN LVM_GETCOLUMNA -#define LVM_SETCOLUMN LVM_SETCOLUMNA -#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA -#define LVM_GETITEMTEXT LVM_GETITEMTEXTA -#define LVM_SETITEMTEXT LVM_SETITEMTEXTA -#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA -#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA -#define LVN_ENDLABELEDIT LVN_ENDLABELEDITA -#define LVN_GETDISPINFO LVN_GETDISPINFOA -#define LVN_SETDISPINFO LVN_SETDISPINFOA -#define LVN_GETINFOTIP LVN_GETINFOTIPA -#define NMLVGETINFOTIP NMLVGETINFOTIPA -#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPA -#define LV_DISPINFO LV_DISPINFOA -#define NMLVDISPINFO NMLVDISPINFOA -#define TVM_INSERTITEM TVM_INSERTITEMA -#define TVM_GETITEM TVM_GETITEMA -#define TVM_SETITEM TVM_SETITEMA -#define TVM_EDITLABEL TVM_EDITLABELA -#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA -#define TV_DISPINFO NMTVDISPINFOA -#define NMTVDISPINFO NMTVDISPINFOA -#define LPNMTVDISPINFO LPNMTVDISPINFOA -#if (_WIN32_IE >= 0x0400) -#define NMTVGETINFOTIP NMTVGETINFOTIPA -#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPA -#define TVN_GETINFOTIP TVN_GETINFOTIPA -#endif -#define TVN_SELCHANGING TVN_SELCHANGINGA -#define TVN_SELCHANGED TVN_SELCHANGEDA -#define TVN_GETDISPINFO TVN_GETDISPINFOA -#define TVN_SETDISPINFO TVN_SETDISPINFOA -#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA -#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA -#define TVN_BEGINDRAG TVN_BEGINDRAGA -#define TVN_BEGINRDRAG TVN_BEGINRDRAGA -#define TVN_DELETEITEM TVN_DELETEITEMA -#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA -#define TVN_ENDLABELEDIT TVN_ENDLABELEDITA -#define TC_ITEMHEADER TC_ITEMHEADERA -#define TC_ITEM TC_ITEMA -#define TCITEM TCITEMA -#define LPTCITEM LPTCITEMA -#define TCM_GETITEM TCM_GETITEMA -#define TCM_SETITEM TCM_SETITEMA -#define TCM_INSERTITEM TCM_INSERTITEMA -#define CreateStatusWindow CreateStatusWindowA -#define DrawStatusText DrawStatusTextA -#define ImageList_LoadImage ImageList_LoadImageA -#define DTM_SETFORMAT DTM_SETFORMATA -#define DTN_USERSTRING DTN_USERSTRINGA -#define DTN_WMKEYDOWN DTN_WMKEYDOWNA -#define DTN_FORMAT DTN_FORMATA -#define DTN_FORMATQUERY DTN_FORMATQUERYA -typedef REBARBANDINFOA REBARBANDINFO,*LPREBARBANDINFO; -#define LPCREBARBANDINFO LPCREBARBANDINFOA -#define REBARBANDINFO_V3_SIZE REBARBANDINFOA_V3_SIZE -#define RB_INSERTBAND RB_INSERTBANDA -#define RB_SETBANDINFO RB_SETBANDINFOA -#endif -#endif /* RC_INVOKED */ +#define WC_SCROLLBAR WINELIB_NAME_AW(WC_SCROLLBAR) #ifdef __cplusplus } #endif -#endif + +#endif /* __WINE_COMMCTRL_H */ diff --git a/reactos/include/psdk/commdlg.h b/reactos/include/psdk/commdlg.h index 939d00f9e78..c39904c5295 100644 --- a/reactos/include/psdk/commdlg.h +++ b/reactos/include/psdk/commdlg.h @@ -9,6 +9,9 @@ extern "C" { #endif #pragma pack(push,1) +#define SAVE_DIALOG 1 +#define OPEN_DIALOG 2 + #define LBSELCHSTRINGA "commdlg_LBSelChangedNotify" #define SHAREVISTRINGA "commdlg_ShareViolation" #define FILEOKSTRINGA "commdlg_FileNameOK" @@ -441,7 +444,6 @@ typedef struct tagPDW { HANDLE hSetupTemplate; } PRINTDLGW,*LPPRINTDLGW; #if (WINVER >= 0x0500) && !defined (__OBJC__) -#include /* for LPUNKNOWN */ #include /* for HPROPSHEETPAGE */ typedef struct tagPRINTPAGERANGE { DWORD nFromPage; @@ -464,7 +466,7 @@ typedef struct tagPDEXA { DWORD nCopies; HINSTANCE hInstance; LPCSTR lpPrintTemplateName; - LPUNKNOWN lpCallback; + void* /*LPUNKNOWN*/ lpCallback; DWORD nPropertyPages; HPROPSHEETPAGE *lphPropertyPages; DWORD nStartPage; @@ -487,7 +489,7 @@ typedef struct tagPDEXW { DWORD nCopies; HINSTANCE hInstance; LPCWSTR lpPrintTemplateName; - LPUNKNOWN lpCallback; + void* /*LPUNKNOWN*/ lpCallback; DWORD nPropertyPages; HPROPSHEETPAGE *lphPropertyPages; DWORD nStartPage; diff --git a/reactos/include/psdk/control.h b/reactos/include/psdk/control.h new file mode 100644 index 00000000000..8c3a31bffb7 --- /dev/null +++ b/reactos/include/psdk/control.h @@ -0,0 +1,2447 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\control.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_CONTROL_H +#define __WIDL_INCLUDE_PSDK_CONTROL_H +#ifdef __cplusplus +extern "C" { +#endif +#if 0 +#include +#include +#endif +#ifndef __IMediaControl_FWD_DEFINED__ +#define __IMediaControl_FWD_DEFINED__ +typedef interface IMediaControl IMediaControl; +#endif + +#ifndef __IBasicAudio_FWD_DEFINED__ +#define __IBasicAudio_FWD_DEFINED__ +typedef interface IBasicAudio IBasicAudio; +#endif + +#ifndef __IBasicVideo_FWD_DEFINED__ +#define __IBasicVideo_FWD_DEFINED__ +typedef interface IBasicVideo IBasicVideo; +#endif + +#ifndef __IVideoWindow_FWD_DEFINED__ +#define __IVideoWindow_FWD_DEFINED__ +typedef interface IVideoWindow IVideoWindow; +#endif + +#ifndef __IMediaEvent_FWD_DEFINED__ +#define __IMediaEvent_FWD_DEFINED__ +typedef interface IMediaEvent IMediaEvent; +#endif + +#ifndef __IMediaEventEx_FWD_DEFINED__ +#define __IMediaEventEx_FWD_DEFINED__ +typedef interface IMediaEventEx IMediaEventEx; +#endif + +#ifndef __IMediaPosition_FWD_DEFINED__ +#define __IMediaPosition_FWD_DEFINED__ +typedef interface IMediaPosition IMediaPosition; +#endif + +typedef long OAFilterState; +typedef LONG_PTR OAHWND; +typedef LONG_PTR OAEVENT; +/***************************************************************************** + * IMediaControl interface + */ +#ifndef __IMediaControl_INTERFACE_DEFINED__ +#define __IMediaControl_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMediaControl, 0x56a868b1, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMediaControl : public IDispatch +{ + virtual HRESULT STDMETHODCALLTYPE Run( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Pause( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Stop( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetState( + LONG msTimeout, + OAFilterState* pfs) = 0; + + virtual HRESULT STDMETHODCALLTYPE RenderFile( + BSTR strFilename) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddSourceFilter( + BSTR strFilename, + IDispatch** ppUnk) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_FilterCollection( + IDispatch** ppUnk) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_RegFilterCollection( + IDispatch** ppUnk) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopWhenReady( + ) = 0; + +}; +#else +typedef struct IMediaControlVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMediaControl* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMediaControl* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMediaControl* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IMediaControl* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IMediaControl* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IMediaControl* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IMediaControl* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + /*** IMediaControl methods ***/ + HRESULT (STDMETHODCALLTYPE *Run)( + IMediaControl* This); + + HRESULT (STDMETHODCALLTYPE *Pause)( + IMediaControl* This); + + HRESULT (STDMETHODCALLTYPE *Stop)( + IMediaControl* This); + + HRESULT (STDMETHODCALLTYPE *GetState)( + IMediaControl* This, + LONG msTimeout, + OAFilterState* pfs); + + HRESULT (STDMETHODCALLTYPE *RenderFile)( + IMediaControl* This, + BSTR strFilename); + + HRESULT (STDMETHODCALLTYPE *AddSourceFilter)( + IMediaControl* This, + BSTR strFilename, + IDispatch** ppUnk); + + HRESULT (STDMETHODCALLTYPE *get_FilterCollection)( + IMediaControl* This, + IDispatch** ppUnk); + + HRESULT (STDMETHODCALLTYPE *get_RegFilterCollection)( + IMediaControl* This, + IDispatch** ppUnk); + + HRESULT (STDMETHODCALLTYPE *StopWhenReady)( + IMediaControl* This); + + END_INTERFACE +} IMediaControlVtbl; +interface IMediaControl { + const IMediaControlVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMediaControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMediaControl_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMediaControl_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IMediaControl_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IMediaControl_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IMediaControl_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IMediaControl_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +/*** IMediaControl methods ***/ +#define IMediaControl_Run(p) (p)->lpVtbl->Run(p) +#define IMediaControl_Pause(p) (p)->lpVtbl->Pause(p) +#define IMediaControl_Stop(p) (p)->lpVtbl->Stop(p) +#define IMediaControl_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b) +#define IMediaControl_RenderFile(p,a) (p)->lpVtbl->RenderFile(p,a) +#define IMediaControl_AddSourceFilter(p,a,b) (p)->lpVtbl->AddSourceFilter(p,a,b) +#define IMediaControl_get_FilterCollection(p,a) (p)->lpVtbl->get_FilterCollection(p,a) +#define IMediaControl_get_RegFilterCollection(p,a) (p)->lpVtbl->get_RegFilterCollection(p,a) +#define IMediaControl_StopWhenReady(p) (p)->lpVtbl->StopWhenReady(p) +#endif + +#endif + +HRESULT CALLBACK IMediaControl_Run_Proxy( + IMediaControl* This); +void __RPC_STUB IMediaControl_Run_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaControl_Pause_Proxy( + IMediaControl* This); +void __RPC_STUB IMediaControl_Pause_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaControl_Stop_Proxy( + IMediaControl* This); +void __RPC_STUB IMediaControl_Stop_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaControl_GetState_Proxy( + IMediaControl* This, + LONG msTimeout, + OAFilterState* pfs); +void __RPC_STUB IMediaControl_GetState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaControl_RenderFile_Proxy( + IMediaControl* This, + BSTR strFilename); +void __RPC_STUB IMediaControl_RenderFile_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaControl_AddSourceFilter_Proxy( + IMediaControl* This, + BSTR strFilename, + IDispatch** ppUnk); +void __RPC_STUB IMediaControl_AddSourceFilter_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaControl_get_FilterCollection_Proxy( + IMediaControl* This, + IDispatch** ppUnk); +void __RPC_STUB IMediaControl_get_FilterCollection_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaControl_get_RegFilterCollection_Proxy( + IMediaControl* This, + IDispatch** ppUnk); +void __RPC_STUB IMediaControl_get_RegFilterCollection_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaControl_StopWhenReady_Proxy( + IMediaControl* This); +void __RPC_STUB IMediaControl_StopWhenReady_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMediaControl_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IBasicAudio interface + */ +#ifndef __IBasicAudio_INTERFACE_DEFINED__ +#define __IBasicAudio_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IBasicAudio, 0x56a868b3, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IBasicAudio : public IDispatch +{ + virtual HRESULT STDMETHODCALLTYPE put_Volume( + long lVolume) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Volume( + long* plVolume) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Balance( + long lBalance) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Balance( + long* plBalance) = 0; + +}; +#else +typedef struct IBasicAudioVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IBasicAudio* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IBasicAudio* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IBasicAudio* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IBasicAudio* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IBasicAudio* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IBasicAudio* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IBasicAudio* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + /*** IBasicAudio methods ***/ + HRESULT (STDMETHODCALLTYPE *put_Volume)( + IBasicAudio* This, + long lVolume); + + HRESULT (STDMETHODCALLTYPE *get_Volume)( + IBasicAudio* This, + long* plVolume); + + HRESULT (STDMETHODCALLTYPE *put_Balance)( + IBasicAudio* This, + long lBalance); + + HRESULT (STDMETHODCALLTYPE *get_Balance)( + IBasicAudio* This, + long* plBalance); + + END_INTERFACE +} IBasicAudioVtbl; +interface IBasicAudio { + const IBasicAudioVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IBasicAudio_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IBasicAudio_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IBasicAudio_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IBasicAudio_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IBasicAudio_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IBasicAudio_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IBasicAudio_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +/*** IBasicAudio methods ***/ +#define IBasicAudio_put_Volume(p,a) (p)->lpVtbl->put_Volume(p,a) +#define IBasicAudio_get_Volume(p,a) (p)->lpVtbl->get_Volume(p,a) +#define IBasicAudio_put_Balance(p,a) (p)->lpVtbl->put_Balance(p,a) +#define IBasicAudio_get_Balance(p,a) (p)->lpVtbl->get_Balance(p,a) +#endif + +#endif + +HRESULT CALLBACK IBasicAudio_put_Volume_Proxy( + IBasicAudio* This, + long lVolume); +void __RPC_STUB IBasicAudio_put_Volume_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicAudio_get_Volume_Proxy( + IBasicAudio* This, + long* plVolume); +void __RPC_STUB IBasicAudio_get_Volume_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicAudio_put_Balance_Proxy( + IBasicAudio* This, + long lBalance); +void __RPC_STUB IBasicAudio_put_Balance_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicAudio_get_Balance_Proxy( + IBasicAudio* This, + long* plBalance); +void __RPC_STUB IBasicAudio_get_Balance_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IBasicAudio_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IVideoWindow interface + */ +#ifndef __IVideoWindow_INTERFACE_DEFINED__ +#define __IVideoWindow_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IVideoWindow, 0x56a868b4, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IVideoWindow : public IDispatch +{ + virtual HRESULT STDMETHODCALLTYPE put_Caption( + BSTR strCaption) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Caption( + BSTR* strCaption) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_WindowStyle( + long WindowStyle) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_WindowStyle( + long* WindowStyle) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_WindowStyleEx( + long WindowStyleEx) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_WindowStyleEx( + long* WindowStyleEx) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_AutoShow( + long AutoShow) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_AutoShow( + long* AutoShow) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_WindowState( + long WindowState) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_WindowState( + long* WindowState) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_BackgroundPalette( + long BackgroundPalette) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_BackgroundPalette( + long* pBackgroundPalette) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Visible( + long Visible) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Visible( + long* pVisible) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Left( + long Left) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Left( + long* pLeft) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Width( + long Width) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Width( + long* pWidth) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Top( + long Top) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Top( + long* pTop) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Height( + long Height) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Height( + long* pHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Owner( + OAHWND Owner) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Owner( + OAHWND* Owner) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_MessageDrain( + OAHWND Drain) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_MessageDrain( + OAHWND* Drain) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_BorderColor( + long* Color) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_BorderColor( + long Color) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_FullScreenMode( + long* FullScreenMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_FullScreenMode( + long FullScreenMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetWindowForeground( + long Focus) = 0; + + virtual HRESULT STDMETHODCALLTYPE NotifyOwnerMessage( + OAHWND hwnd, + long uMsg, + LONG_PTR wParam, + LONG_PTR lParam) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetWindowPosition( + long Left, + long Top, + long Width, + long Height) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetWindowPosition( + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMinIdealImageSize( + long* pWidth, + long* pHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMaxIdealImageSize( + long* pWidth, + long* pHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRestorePosition( + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE HideCursor( + long HideCursor) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsCursorHidden( + long* CursorHidden) = 0; + +}; +#else +typedef struct IVideoWindowVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IVideoWindow* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IVideoWindow* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IVideoWindow* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IVideoWindow* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IVideoWindow* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IVideoWindow* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IVideoWindow* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + /*** IVideoWindow methods ***/ + HRESULT (STDMETHODCALLTYPE *put_Caption)( + IVideoWindow* This, + BSTR strCaption); + + HRESULT (STDMETHODCALLTYPE *get_Caption)( + IVideoWindow* This, + BSTR* strCaption); + + HRESULT (STDMETHODCALLTYPE *put_WindowStyle)( + IVideoWindow* This, + long WindowStyle); + + HRESULT (STDMETHODCALLTYPE *get_WindowStyle)( + IVideoWindow* This, + long* WindowStyle); + + HRESULT (STDMETHODCALLTYPE *put_WindowStyleEx)( + IVideoWindow* This, + long WindowStyleEx); + + HRESULT (STDMETHODCALLTYPE *get_WindowStyleEx)( + IVideoWindow* This, + long* WindowStyleEx); + + HRESULT (STDMETHODCALLTYPE *put_AutoShow)( + IVideoWindow* This, + long AutoShow); + + HRESULT (STDMETHODCALLTYPE *get_AutoShow)( + IVideoWindow* This, + long* AutoShow); + + HRESULT (STDMETHODCALLTYPE *put_WindowState)( + IVideoWindow* This, + long WindowState); + + HRESULT (STDMETHODCALLTYPE *get_WindowState)( + IVideoWindow* This, + long* WindowState); + + HRESULT (STDMETHODCALLTYPE *put_BackgroundPalette)( + IVideoWindow* This, + long BackgroundPalette); + + HRESULT (STDMETHODCALLTYPE *get_BackgroundPalette)( + IVideoWindow* This, + long* pBackgroundPalette); + + HRESULT (STDMETHODCALLTYPE *put_Visible)( + IVideoWindow* This, + long Visible); + + HRESULT (STDMETHODCALLTYPE *get_Visible)( + IVideoWindow* This, + long* pVisible); + + HRESULT (STDMETHODCALLTYPE *put_Left)( + IVideoWindow* This, + long Left); + + HRESULT (STDMETHODCALLTYPE *get_Left)( + IVideoWindow* This, + long* pLeft); + + HRESULT (STDMETHODCALLTYPE *put_Width)( + IVideoWindow* This, + long Width); + + HRESULT (STDMETHODCALLTYPE *get_Width)( + IVideoWindow* This, + long* pWidth); + + HRESULT (STDMETHODCALLTYPE *put_Top)( + IVideoWindow* This, + long Top); + + HRESULT (STDMETHODCALLTYPE *get_Top)( + IVideoWindow* This, + long* pTop); + + HRESULT (STDMETHODCALLTYPE *put_Height)( + IVideoWindow* This, + long Height); + + HRESULT (STDMETHODCALLTYPE *get_Height)( + IVideoWindow* This, + long* pHeight); + + HRESULT (STDMETHODCALLTYPE *put_Owner)( + IVideoWindow* This, + OAHWND Owner); + + HRESULT (STDMETHODCALLTYPE *get_Owner)( + IVideoWindow* This, + OAHWND* Owner); + + HRESULT (STDMETHODCALLTYPE *put_MessageDrain)( + IVideoWindow* This, + OAHWND Drain); + + HRESULT (STDMETHODCALLTYPE *get_MessageDrain)( + IVideoWindow* This, + OAHWND* Drain); + + HRESULT (STDMETHODCALLTYPE *get_BorderColor)( + IVideoWindow* This, + long* Color); + + HRESULT (STDMETHODCALLTYPE *put_BorderColor)( + IVideoWindow* This, + long Color); + + HRESULT (STDMETHODCALLTYPE *get_FullScreenMode)( + IVideoWindow* This, + long* FullScreenMode); + + HRESULT (STDMETHODCALLTYPE *put_FullScreenMode)( + IVideoWindow* This, + long FullScreenMode); + + HRESULT (STDMETHODCALLTYPE *SetWindowForeground)( + IVideoWindow* This, + long Focus); + + HRESULT (STDMETHODCALLTYPE *NotifyOwnerMessage)( + IVideoWindow* This, + OAHWND hwnd, + long uMsg, + LONG_PTR wParam, + LONG_PTR lParam); + + HRESULT (STDMETHODCALLTYPE *SetWindowPosition)( + IVideoWindow* This, + long Left, + long Top, + long Width, + long Height); + + HRESULT (STDMETHODCALLTYPE *GetWindowPosition)( + IVideoWindow* This, + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight); + + HRESULT (STDMETHODCALLTYPE *GetMinIdealImageSize)( + IVideoWindow* This, + long* pWidth, + long* pHeight); + + HRESULT (STDMETHODCALLTYPE *GetMaxIdealImageSize)( + IVideoWindow* This, + long* pWidth, + long* pHeight); + + HRESULT (STDMETHODCALLTYPE *GetRestorePosition)( + IVideoWindow* This, + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight); + + HRESULT (STDMETHODCALLTYPE *HideCursor)( + IVideoWindow* This, + long HideCursor); + + HRESULT (STDMETHODCALLTYPE *IsCursorHidden)( + IVideoWindow* This, + long* CursorHidden); + + END_INTERFACE +} IVideoWindowVtbl; +interface IVideoWindow { + const IVideoWindowVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IVideoWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IVideoWindow_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IVideoWindow_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IVideoWindow_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IVideoWindow_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IVideoWindow_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IVideoWindow_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +/*** IVideoWindow methods ***/ +#define IVideoWindow_put_Caption(p,a) (p)->lpVtbl->put_Caption(p,a) +#define IVideoWindow_get_Caption(p,a) (p)->lpVtbl->get_Caption(p,a) +#define IVideoWindow_put_WindowStyle(p,a) (p)->lpVtbl->put_WindowStyle(p,a) +#define IVideoWindow_get_WindowStyle(p,a) (p)->lpVtbl->get_WindowStyle(p,a) +#define IVideoWindow_put_WindowStyleEx(p,a) (p)->lpVtbl->put_WindowStyleEx(p,a) +#define IVideoWindow_get_WindowStyleEx(p,a) (p)->lpVtbl->get_WindowStyleEx(p,a) +#define IVideoWindow_put_AutoShow(p,a) (p)->lpVtbl->put_AutoShow(p,a) +#define IVideoWindow_get_AutoShow(p,a) (p)->lpVtbl->get_AutoShow(p,a) +#define IVideoWindow_put_WindowState(p,a) (p)->lpVtbl->put_WindowState(p,a) +#define IVideoWindow_get_WindowState(p,a) (p)->lpVtbl->get_WindowState(p,a) +#define IVideoWindow_put_BackgroundPalette(p,a) (p)->lpVtbl->put_BackgroundPalette(p,a) +#define IVideoWindow_get_BackgroundPalette(p,a) (p)->lpVtbl->get_BackgroundPalette(p,a) +#define IVideoWindow_put_Visible(p,a) (p)->lpVtbl->put_Visible(p,a) +#define IVideoWindow_get_Visible(p,a) (p)->lpVtbl->get_Visible(p,a) +#define IVideoWindow_put_Left(p,a) (p)->lpVtbl->put_Left(p,a) +#define IVideoWindow_get_Left(p,a) (p)->lpVtbl->get_Left(p,a) +#define IVideoWindow_put_Width(p,a) (p)->lpVtbl->put_Width(p,a) +#define IVideoWindow_get_Width(p,a) (p)->lpVtbl->get_Width(p,a) +#define IVideoWindow_put_Top(p,a) (p)->lpVtbl->put_Top(p,a) +#define IVideoWindow_get_Top(p,a) (p)->lpVtbl->get_Top(p,a) +#define IVideoWindow_put_Height(p,a) (p)->lpVtbl->put_Height(p,a) +#define IVideoWindow_get_Height(p,a) (p)->lpVtbl->get_Height(p,a) +#define IVideoWindow_put_Owner(p,a) (p)->lpVtbl->put_Owner(p,a) +#define IVideoWindow_get_Owner(p,a) (p)->lpVtbl->get_Owner(p,a) +#define IVideoWindow_put_MessageDrain(p,a) (p)->lpVtbl->put_MessageDrain(p,a) +#define IVideoWindow_get_MessageDrain(p,a) (p)->lpVtbl->get_MessageDrain(p,a) +#define IVideoWindow_get_BorderColor(p,a) (p)->lpVtbl->get_BorderColor(p,a) +#define IVideoWindow_put_BorderColor(p,a) (p)->lpVtbl->put_BorderColor(p,a) +#define IVideoWindow_get_FullScreenMode(p,a) (p)->lpVtbl->get_FullScreenMode(p,a) +#define IVideoWindow_put_FullScreenMode(p,a) (p)->lpVtbl->put_FullScreenMode(p,a) +#define IVideoWindow_SetWindowForeground(p,a) (p)->lpVtbl->SetWindowForeground(p,a) +#define IVideoWindow_NotifyOwnerMessage(p,a,b,c,d) (p)->lpVtbl->NotifyOwnerMessage(p,a,b,c,d) +#define IVideoWindow_SetWindowPosition(p,a,b,c,d) (p)->lpVtbl->SetWindowPosition(p,a,b,c,d) +#define IVideoWindow_GetWindowPosition(p,a,b,c,d) (p)->lpVtbl->GetWindowPosition(p,a,b,c,d) +#define IVideoWindow_GetMinIdealImageSize(p,a,b) (p)->lpVtbl->GetMinIdealImageSize(p,a,b) +#define IVideoWindow_GetMaxIdealImageSize(p,a,b) (p)->lpVtbl->GetMaxIdealImageSize(p,a,b) +#define IVideoWindow_GetRestorePosition(p,a,b,c,d) (p)->lpVtbl->GetRestorePosition(p,a,b,c,d) +#define IVideoWindow_HideCursor(p,a) (p)->lpVtbl->HideCursor(p,a) +#define IVideoWindow_IsCursorHidden(p,a) (p)->lpVtbl->IsCursorHidden(p,a) +#endif + +#endif + +HRESULT CALLBACK IVideoWindow_put_Caption_Proxy( + IVideoWindow* This, + BSTR strCaption); +void __RPC_STUB IVideoWindow_put_Caption_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_Caption_Proxy( + IVideoWindow* This, + BSTR* strCaption); +void __RPC_STUB IVideoWindow_get_Caption_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_WindowStyle_Proxy( + IVideoWindow* This, + long WindowStyle); +void __RPC_STUB IVideoWindow_put_WindowStyle_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_WindowStyle_Proxy( + IVideoWindow* This, + long* WindowStyle); +void __RPC_STUB IVideoWindow_get_WindowStyle_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_WindowStyleEx_Proxy( + IVideoWindow* This, + long WindowStyleEx); +void __RPC_STUB IVideoWindow_put_WindowStyleEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_WindowStyleEx_Proxy( + IVideoWindow* This, + long* WindowStyleEx); +void __RPC_STUB IVideoWindow_get_WindowStyleEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_AutoShow_Proxy( + IVideoWindow* This, + long AutoShow); +void __RPC_STUB IVideoWindow_put_AutoShow_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_AutoShow_Proxy( + IVideoWindow* This, + long* AutoShow); +void __RPC_STUB IVideoWindow_get_AutoShow_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_WindowState_Proxy( + IVideoWindow* This, + long WindowState); +void __RPC_STUB IVideoWindow_put_WindowState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_WindowState_Proxy( + IVideoWindow* This, + long* WindowState); +void __RPC_STUB IVideoWindow_get_WindowState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_BackgroundPalette_Proxy( + IVideoWindow* This, + long BackgroundPalette); +void __RPC_STUB IVideoWindow_put_BackgroundPalette_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_BackgroundPalette_Proxy( + IVideoWindow* This, + long* pBackgroundPalette); +void __RPC_STUB IVideoWindow_get_BackgroundPalette_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_Visible_Proxy( + IVideoWindow* This, + long Visible); +void __RPC_STUB IVideoWindow_put_Visible_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_Visible_Proxy( + IVideoWindow* This, + long* pVisible); +void __RPC_STUB IVideoWindow_get_Visible_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_Left_Proxy( + IVideoWindow* This, + long Left); +void __RPC_STUB IVideoWindow_put_Left_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_Left_Proxy( + IVideoWindow* This, + long* pLeft); +void __RPC_STUB IVideoWindow_get_Left_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_Width_Proxy( + IVideoWindow* This, + long Width); +void __RPC_STUB IVideoWindow_put_Width_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_Width_Proxy( + IVideoWindow* This, + long* pWidth); +void __RPC_STUB IVideoWindow_get_Width_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_Top_Proxy( + IVideoWindow* This, + long Top); +void __RPC_STUB IVideoWindow_put_Top_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_Top_Proxy( + IVideoWindow* This, + long* pTop); +void __RPC_STUB IVideoWindow_get_Top_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_Height_Proxy( + IVideoWindow* This, + long Height); +void __RPC_STUB IVideoWindow_put_Height_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_Height_Proxy( + IVideoWindow* This, + long* pHeight); +void __RPC_STUB IVideoWindow_get_Height_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_Owner_Proxy( + IVideoWindow* This, + OAHWND Owner); +void __RPC_STUB IVideoWindow_put_Owner_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_Owner_Proxy( + IVideoWindow* This, + OAHWND* Owner); +void __RPC_STUB IVideoWindow_get_Owner_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_MessageDrain_Proxy( + IVideoWindow* This, + OAHWND Drain); +void __RPC_STUB IVideoWindow_put_MessageDrain_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_MessageDrain_Proxy( + IVideoWindow* This, + OAHWND* Drain); +void __RPC_STUB IVideoWindow_get_MessageDrain_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_BorderColor_Proxy( + IVideoWindow* This, + long* Color); +void __RPC_STUB IVideoWindow_get_BorderColor_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_BorderColor_Proxy( + IVideoWindow* This, + long Color); +void __RPC_STUB IVideoWindow_put_BorderColor_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_get_FullScreenMode_Proxy( + IVideoWindow* This, + long* FullScreenMode); +void __RPC_STUB IVideoWindow_get_FullScreenMode_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_put_FullScreenMode_Proxy( + IVideoWindow* This, + long FullScreenMode); +void __RPC_STUB IVideoWindow_put_FullScreenMode_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_SetWindowForeground_Proxy( + IVideoWindow* This, + long Focus); +void __RPC_STUB IVideoWindow_SetWindowForeground_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_NotifyOwnerMessage_Proxy( + IVideoWindow* This, + OAHWND hwnd, + long uMsg, + LONG_PTR wParam, + LONG_PTR lParam); +void __RPC_STUB IVideoWindow_NotifyOwnerMessage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_SetWindowPosition_Proxy( + IVideoWindow* This, + long Left, + long Top, + long Width, + long Height); +void __RPC_STUB IVideoWindow_SetWindowPosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_GetWindowPosition_Proxy( + IVideoWindow* This, + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight); +void __RPC_STUB IVideoWindow_GetWindowPosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_GetMinIdealImageSize_Proxy( + IVideoWindow* This, + long* pWidth, + long* pHeight); +void __RPC_STUB IVideoWindow_GetMinIdealImageSize_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_GetMaxIdealImageSize_Proxy( + IVideoWindow* This, + long* pWidth, + long* pHeight); +void __RPC_STUB IVideoWindow_GetMaxIdealImageSize_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_GetRestorePosition_Proxy( + IVideoWindow* This, + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight); +void __RPC_STUB IVideoWindow_GetRestorePosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_HideCursor_Proxy( + IVideoWindow* This, + long HideCursor); +void __RPC_STUB IVideoWindow_HideCursor_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IVideoWindow_IsCursorHidden_Proxy( + IVideoWindow* This, + long* CursorHidden); +void __RPC_STUB IVideoWindow_IsCursorHidden_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IVideoWindow_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IBasicVideo interface + */ +#ifndef __IBasicVideo_INTERFACE_DEFINED__ +#define __IBasicVideo_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IBasicVideo, 0x56a868b5, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IBasicVideo : public IDispatch +{ + virtual HRESULT STDMETHODCALLTYPE get_AvgTimePerFrame( + REFTIME* pAvgTimePerFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_BitRate( + long* pBitRate) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_BitErrorRate( + long* pBitErrorRate) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_VideoWidth( + long* pVideoWidth) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_VideoHeight( + long* pVideoHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_SourceLeft( + long SourceLeft) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_SourceLeft( + long* pSourceLeft) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_SourceWidth( + long SourceWidth) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_SourceWidth( + long* pSourceWidth) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_SourceTop( + long SourceTop) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_SourceTop( + long* pSourceTop) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_SourceHeight( + long SourceHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_SourceHeight( + long* pSourceHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_DestinationLeft( + long DestinationLeft) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_DestinationLeft( + long* pDestinationLeft) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_DestinationWidth( + long DestinationWidth) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_DestinationWidth( + long* pDestinationWidth) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_DestinationTop( + long DestinationTop) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_DestinationTop( + long* pDestinationTop) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_DestinationHeight( + long DestinationHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_DestinationHeight( + long* pDestinationHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSourcePosition( + long Left, + long Top, + long Width, + long Height) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourcePosition( + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefaultSourcePosition( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDestinationPosition( + long Left, + long Top, + long Width, + long Height) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDestinationPosition( + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDefaultDestinationPosition( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVideoSize( + long* pWidth, + long* pHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVideoPaletteEntries( + long StartIndex, + long Entries, + long* pRetrieved, + long* pPalette) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentImage( + long* pBufferSize, + long* pDIBImage) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsUsingDefaultSource( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsUsingDefaultDestination( + ) = 0; + +}; +#else +typedef struct IBasicVideoVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IBasicVideo* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IBasicVideo* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IBasicVideo* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IBasicVideo* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IBasicVideo* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IBasicVideo* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IBasicVideo* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + /*** IBasicVideo methods ***/ + HRESULT (STDMETHODCALLTYPE *get_AvgTimePerFrame)( + IBasicVideo* This, + REFTIME* pAvgTimePerFrame); + + HRESULT (STDMETHODCALLTYPE *get_BitRate)( + IBasicVideo* This, + long* pBitRate); + + HRESULT (STDMETHODCALLTYPE *get_BitErrorRate)( + IBasicVideo* This, + long* pBitErrorRate); + + HRESULT (STDMETHODCALLTYPE *get_VideoWidth)( + IBasicVideo* This, + long* pVideoWidth); + + HRESULT (STDMETHODCALLTYPE *get_VideoHeight)( + IBasicVideo* This, + long* pVideoHeight); + + HRESULT (STDMETHODCALLTYPE *put_SourceLeft)( + IBasicVideo* This, + long SourceLeft); + + HRESULT (STDMETHODCALLTYPE *get_SourceLeft)( + IBasicVideo* This, + long* pSourceLeft); + + HRESULT (STDMETHODCALLTYPE *put_SourceWidth)( + IBasicVideo* This, + long SourceWidth); + + HRESULT (STDMETHODCALLTYPE *get_SourceWidth)( + IBasicVideo* This, + long* pSourceWidth); + + HRESULT (STDMETHODCALLTYPE *put_SourceTop)( + IBasicVideo* This, + long SourceTop); + + HRESULT (STDMETHODCALLTYPE *get_SourceTop)( + IBasicVideo* This, + long* pSourceTop); + + HRESULT (STDMETHODCALLTYPE *put_SourceHeight)( + IBasicVideo* This, + long SourceHeight); + + HRESULT (STDMETHODCALLTYPE *get_SourceHeight)( + IBasicVideo* This, + long* pSourceHeight); + + HRESULT (STDMETHODCALLTYPE *put_DestinationLeft)( + IBasicVideo* This, + long DestinationLeft); + + HRESULT (STDMETHODCALLTYPE *get_DestinationLeft)( + IBasicVideo* This, + long* pDestinationLeft); + + HRESULT (STDMETHODCALLTYPE *put_DestinationWidth)( + IBasicVideo* This, + long DestinationWidth); + + HRESULT (STDMETHODCALLTYPE *get_DestinationWidth)( + IBasicVideo* This, + long* pDestinationWidth); + + HRESULT (STDMETHODCALLTYPE *put_DestinationTop)( + IBasicVideo* This, + long DestinationTop); + + HRESULT (STDMETHODCALLTYPE *get_DestinationTop)( + IBasicVideo* This, + long* pDestinationTop); + + HRESULT (STDMETHODCALLTYPE *put_DestinationHeight)( + IBasicVideo* This, + long DestinationHeight); + + HRESULT (STDMETHODCALLTYPE *get_DestinationHeight)( + IBasicVideo* This, + long* pDestinationHeight); + + HRESULT (STDMETHODCALLTYPE *SetSourcePosition)( + IBasicVideo* This, + long Left, + long Top, + long Width, + long Height); + + HRESULT (STDMETHODCALLTYPE *GetSourcePosition)( + IBasicVideo* This, + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight); + + HRESULT (STDMETHODCALLTYPE *SetDefaultSourcePosition)( + IBasicVideo* This); + + HRESULT (STDMETHODCALLTYPE *SetDestinationPosition)( + IBasicVideo* This, + long Left, + long Top, + long Width, + long Height); + + HRESULT (STDMETHODCALLTYPE *GetDestinationPosition)( + IBasicVideo* This, + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight); + + HRESULT (STDMETHODCALLTYPE *SetDefaultDestinationPosition)( + IBasicVideo* This); + + HRESULT (STDMETHODCALLTYPE *GetVideoSize)( + IBasicVideo* This, + long* pWidth, + long* pHeight); + + HRESULT (STDMETHODCALLTYPE *GetVideoPaletteEntries)( + IBasicVideo* This, + long StartIndex, + long Entries, + long* pRetrieved, + long* pPalette); + + HRESULT (STDMETHODCALLTYPE *GetCurrentImage)( + IBasicVideo* This, + long* pBufferSize, + long* pDIBImage); + + HRESULT (STDMETHODCALLTYPE *IsUsingDefaultSource)( + IBasicVideo* This); + + HRESULT (STDMETHODCALLTYPE *IsUsingDefaultDestination)( + IBasicVideo* This); + + END_INTERFACE +} IBasicVideoVtbl; +interface IBasicVideo { + const IBasicVideoVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IBasicVideo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IBasicVideo_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IBasicVideo_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IBasicVideo_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IBasicVideo_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IBasicVideo_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IBasicVideo_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +/*** IBasicVideo methods ***/ +#define IBasicVideo_get_AvgTimePerFrame(p,a) (p)->lpVtbl->get_AvgTimePerFrame(p,a) +#define IBasicVideo_get_BitRate(p,a) (p)->lpVtbl->get_BitRate(p,a) +#define IBasicVideo_get_BitErrorRate(p,a) (p)->lpVtbl->get_BitErrorRate(p,a) +#define IBasicVideo_get_VideoWidth(p,a) (p)->lpVtbl->get_VideoWidth(p,a) +#define IBasicVideo_get_VideoHeight(p,a) (p)->lpVtbl->get_VideoHeight(p,a) +#define IBasicVideo_put_SourceLeft(p,a) (p)->lpVtbl->put_SourceLeft(p,a) +#define IBasicVideo_get_SourceLeft(p,a) (p)->lpVtbl->get_SourceLeft(p,a) +#define IBasicVideo_put_SourceWidth(p,a) (p)->lpVtbl->put_SourceWidth(p,a) +#define IBasicVideo_get_SourceWidth(p,a) (p)->lpVtbl->get_SourceWidth(p,a) +#define IBasicVideo_put_SourceTop(p,a) (p)->lpVtbl->put_SourceTop(p,a) +#define IBasicVideo_get_SourceTop(p,a) (p)->lpVtbl->get_SourceTop(p,a) +#define IBasicVideo_put_SourceHeight(p,a) (p)->lpVtbl->put_SourceHeight(p,a) +#define IBasicVideo_get_SourceHeight(p,a) (p)->lpVtbl->get_SourceHeight(p,a) +#define IBasicVideo_put_DestinationLeft(p,a) (p)->lpVtbl->put_DestinationLeft(p,a) +#define IBasicVideo_get_DestinationLeft(p,a) (p)->lpVtbl->get_DestinationLeft(p,a) +#define IBasicVideo_put_DestinationWidth(p,a) (p)->lpVtbl->put_DestinationWidth(p,a) +#define IBasicVideo_get_DestinationWidth(p,a) (p)->lpVtbl->get_DestinationWidth(p,a) +#define IBasicVideo_put_DestinationTop(p,a) (p)->lpVtbl->put_DestinationTop(p,a) +#define IBasicVideo_get_DestinationTop(p,a) (p)->lpVtbl->get_DestinationTop(p,a) +#define IBasicVideo_put_DestinationHeight(p,a) (p)->lpVtbl->put_DestinationHeight(p,a) +#define IBasicVideo_get_DestinationHeight(p,a) (p)->lpVtbl->get_DestinationHeight(p,a) +#define IBasicVideo_SetSourcePosition(p,a,b,c,d) (p)->lpVtbl->SetSourcePosition(p,a,b,c,d) +#define IBasicVideo_GetSourcePosition(p,a,b,c,d) (p)->lpVtbl->GetSourcePosition(p,a,b,c,d) +#define IBasicVideo_SetDefaultSourcePosition(p) (p)->lpVtbl->SetDefaultSourcePosition(p) +#define IBasicVideo_SetDestinationPosition(p,a,b,c,d) (p)->lpVtbl->SetDestinationPosition(p,a,b,c,d) +#define IBasicVideo_GetDestinationPosition(p,a,b,c,d) (p)->lpVtbl->GetDestinationPosition(p,a,b,c,d) +#define IBasicVideo_SetDefaultDestinationPosition(p) (p)->lpVtbl->SetDefaultDestinationPosition(p) +#define IBasicVideo_GetVideoSize(p,a,b) (p)->lpVtbl->GetVideoSize(p,a,b) +#define IBasicVideo_GetVideoPaletteEntries(p,a,b,c,d) (p)->lpVtbl->GetVideoPaletteEntries(p,a,b,c,d) +#define IBasicVideo_GetCurrentImage(p,a,b) (p)->lpVtbl->GetCurrentImage(p,a,b) +#define IBasicVideo_IsUsingDefaultSource(p) (p)->lpVtbl->IsUsingDefaultSource(p) +#define IBasicVideo_IsUsingDefaultDestination(p) (p)->lpVtbl->IsUsingDefaultDestination(p) +#endif + +#endif + +HRESULT CALLBACK IBasicVideo_get_AvgTimePerFrame_Proxy( + IBasicVideo* This, + REFTIME* pAvgTimePerFrame); +void __RPC_STUB IBasicVideo_get_AvgTimePerFrame_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_BitRate_Proxy( + IBasicVideo* This, + long* pBitRate); +void __RPC_STUB IBasicVideo_get_BitRate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_BitErrorRate_Proxy( + IBasicVideo* This, + long* pBitErrorRate); +void __RPC_STUB IBasicVideo_get_BitErrorRate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_VideoWidth_Proxy( + IBasicVideo* This, + long* pVideoWidth); +void __RPC_STUB IBasicVideo_get_VideoWidth_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_VideoHeight_Proxy( + IBasicVideo* This, + long* pVideoHeight); +void __RPC_STUB IBasicVideo_get_VideoHeight_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_put_SourceLeft_Proxy( + IBasicVideo* This, + long SourceLeft); +void __RPC_STUB IBasicVideo_put_SourceLeft_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_SourceLeft_Proxy( + IBasicVideo* This, + long* pSourceLeft); +void __RPC_STUB IBasicVideo_get_SourceLeft_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_put_SourceWidth_Proxy( + IBasicVideo* This, + long SourceWidth); +void __RPC_STUB IBasicVideo_put_SourceWidth_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_SourceWidth_Proxy( + IBasicVideo* This, + long* pSourceWidth); +void __RPC_STUB IBasicVideo_get_SourceWidth_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_put_SourceTop_Proxy( + IBasicVideo* This, + long SourceTop); +void __RPC_STUB IBasicVideo_put_SourceTop_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_SourceTop_Proxy( + IBasicVideo* This, + long* pSourceTop); +void __RPC_STUB IBasicVideo_get_SourceTop_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_put_SourceHeight_Proxy( + IBasicVideo* This, + long SourceHeight); +void __RPC_STUB IBasicVideo_put_SourceHeight_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_SourceHeight_Proxy( + IBasicVideo* This, + long* pSourceHeight); +void __RPC_STUB IBasicVideo_get_SourceHeight_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_put_DestinationLeft_Proxy( + IBasicVideo* This, + long DestinationLeft); +void __RPC_STUB IBasicVideo_put_DestinationLeft_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_DestinationLeft_Proxy( + IBasicVideo* This, + long* pDestinationLeft); +void __RPC_STUB IBasicVideo_get_DestinationLeft_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_put_DestinationWidth_Proxy( + IBasicVideo* This, + long DestinationWidth); +void __RPC_STUB IBasicVideo_put_DestinationWidth_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_DestinationWidth_Proxy( + IBasicVideo* This, + long* pDestinationWidth); +void __RPC_STUB IBasicVideo_get_DestinationWidth_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_put_DestinationTop_Proxy( + IBasicVideo* This, + long DestinationTop); +void __RPC_STUB IBasicVideo_put_DestinationTop_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_DestinationTop_Proxy( + IBasicVideo* This, + long* pDestinationTop); +void __RPC_STUB IBasicVideo_get_DestinationTop_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_put_DestinationHeight_Proxy( + IBasicVideo* This, + long DestinationHeight); +void __RPC_STUB IBasicVideo_put_DestinationHeight_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_get_DestinationHeight_Proxy( + IBasicVideo* This, + long* pDestinationHeight); +void __RPC_STUB IBasicVideo_get_DestinationHeight_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_SetSourcePosition_Proxy( + IBasicVideo* This, + long Left, + long Top, + long Width, + long Height); +void __RPC_STUB IBasicVideo_SetSourcePosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_GetSourcePosition_Proxy( + IBasicVideo* This, + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight); +void __RPC_STUB IBasicVideo_GetSourcePosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_SetDefaultSourcePosition_Proxy( + IBasicVideo* This); +void __RPC_STUB IBasicVideo_SetDefaultSourcePosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_SetDestinationPosition_Proxy( + IBasicVideo* This, + long Left, + long Top, + long Width, + long Height); +void __RPC_STUB IBasicVideo_SetDestinationPosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_GetDestinationPosition_Proxy( + IBasicVideo* This, + long* pLeft, + long* pTop, + long* pWidth, + long* pHeight); +void __RPC_STUB IBasicVideo_GetDestinationPosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_SetDefaultDestinationPosition_Proxy( + IBasicVideo* This); +void __RPC_STUB IBasicVideo_SetDefaultDestinationPosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_GetVideoSize_Proxy( + IBasicVideo* This, + long* pWidth, + long* pHeight); +void __RPC_STUB IBasicVideo_GetVideoSize_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_GetVideoPaletteEntries_Proxy( + IBasicVideo* This, + long StartIndex, + long Entries, + long* pRetrieved, + long* pPalette); +void __RPC_STUB IBasicVideo_GetVideoPaletteEntries_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_GetCurrentImage_Proxy( + IBasicVideo* This, + long* pBufferSize, + long* pDIBImage); +void __RPC_STUB IBasicVideo_GetCurrentImage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_IsUsingDefaultSource_Proxy( + IBasicVideo* This); +void __RPC_STUB IBasicVideo_IsUsingDefaultSource_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IBasicVideo_IsUsingDefaultDestination_Proxy( + IBasicVideo* This); +void __RPC_STUB IBasicVideo_IsUsingDefaultDestination_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IBasicVideo_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMediaEvent interface + */ +#ifndef __IMediaEvent_INTERFACE_DEFINED__ +#define __IMediaEvent_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMediaEvent, 0x56a868b6, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMediaEvent : public IDispatch +{ + virtual HRESULT STDMETHODCALLTYPE GetEventHandle( + OAEVENT* hEvent) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetEvent( + long* lEventCode, + LONG_PTR* lParam1, + LONG_PTR* lParam2, + long msTimeout) = 0; + + virtual HRESULT STDMETHODCALLTYPE WaitForCompletion( + long msTimeout, + long* pEvCode) = 0; + + virtual HRESULT STDMETHODCALLTYPE CancelDefaultHandling( + long lEvCode) = 0; + + virtual HRESULT STDMETHODCALLTYPE RestoreDefaultHandling( + long lEvCode) = 0; + + virtual HRESULT STDMETHODCALLTYPE FreeEventParams( + long lEvCode, + LONG_PTR lParam1, + LONG_PTR lParam2) = 0; + +}; +#else +typedef struct IMediaEventVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMediaEvent* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMediaEvent* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMediaEvent* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IMediaEvent* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IMediaEvent* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IMediaEvent* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IMediaEvent* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + /*** IMediaEvent methods ***/ + HRESULT (STDMETHODCALLTYPE *GetEventHandle)( + IMediaEvent* This, + OAEVENT* hEvent); + + HRESULT (STDMETHODCALLTYPE *GetEvent)( + IMediaEvent* This, + long* lEventCode, + LONG_PTR* lParam1, + LONG_PTR* lParam2, + long msTimeout); + + HRESULT (STDMETHODCALLTYPE *WaitForCompletion)( + IMediaEvent* This, + long msTimeout, + long* pEvCode); + + HRESULT (STDMETHODCALLTYPE *CancelDefaultHandling)( + IMediaEvent* This, + long lEvCode); + + HRESULT (STDMETHODCALLTYPE *RestoreDefaultHandling)( + IMediaEvent* This, + long lEvCode); + + HRESULT (STDMETHODCALLTYPE *FreeEventParams)( + IMediaEvent* This, + long lEvCode, + LONG_PTR lParam1, + LONG_PTR lParam2); + + END_INTERFACE +} IMediaEventVtbl; +interface IMediaEvent { + const IMediaEventVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMediaEvent_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMediaEvent_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMediaEvent_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IMediaEvent_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IMediaEvent_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IMediaEvent_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IMediaEvent_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +/*** IMediaEvent methods ***/ +#define IMediaEvent_GetEventHandle(p,a) (p)->lpVtbl->GetEventHandle(p,a) +#define IMediaEvent_GetEvent(p,a,b,c,d) (p)->lpVtbl->GetEvent(p,a,b,c,d) +#define IMediaEvent_WaitForCompletion(p,a,b) (p)->lpVtbl->WaitForCompletion(p,a,b) +#define IMediaEvent_CancelDefaultHandling(p,a) (p)->lpVtbl->CancelDefaultHandling(p,a) +#define IMediaEvent_RestoreDefaultHandling(p,a) (p)->lpVtbl->RestoreDefaultHandling(p,a) +#define IMediaEvent_FreeEventParams(p,a,b,c) (p)->lpVtbl->FreeEventParams(p,a,b,c) +#endif + +#endif + +HRESULT CALLBACK IMediaEvent_GetEventHandle_Proxy( + IMediaEvent* This, + OAEVENT* hEvent); +void __RPC_STUB IMediaEvent_GetEventHandle_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaEvent_GetEvent_Proxy( + IMediaEvent* This, + long* lEventCode, + LONG_PTR* lParam1, + LONG_PTR* lParam2, + long msTimeout); +void __RPC_STUB IMediaEvent_GetEvent_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaEvent_WaitForCompletion_Proxy( + IMediaEvent* This, + long msTimeout, + long* pEvCode); +void __RPC_STUB IMediaEvent_WaitForCompletion_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaEvent_CancelDefaultHandling_Proxy( + IMediaEvent* This, + long lEvCode); +void __RPC_STUB IMediaEvent_CancelDefaultHandling_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaEvent_RestoreDefaultHandling_Proxy( + IMediaEvent* This, + long lEvCode); +void __RPC_STUB IMediaEvent_RestoreDefaultHandling_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaEvent_FreeEventParams_Proxy( + IMediaEvent* This, + long lEvCode, + LONG_PTR lParam1, + LONG_PTR lParam2); +void __RPC_STUB IMediaEvent_FreeEventParams_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMediaEvent_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMediaEventEx interface + */ +#ifndef __IMediaEventEx_INTERFACE_DEFINED__ +#define __IMediaEventEx_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMediaEventEx, 0x56a868c0, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMediaEventEx : public IMediaEvent +{ + virtual HRESULT STDMETHODCALLTYPE SetNotifyWindow( + OAHWND hwnd, + long lMsg, + LONG_PTR lInstanceData) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetNotifyFlags( + long lNoNotifyFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNotifyFlags( + long* lplNoNotifyFlags) = 0; + +}; +#else +typedef struct IMediaEventExVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMediaEventEx* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMediaEventEx* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMediaEventEx* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IMediaEventEx* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IMediaEventEx* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IMediaEventEx* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IMediaEventEx* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + /*** IMediaEvent methods ***/ + HRESULT (STDMETHODCALLTYPE *GetEventHandle)( + IMediaEventEx* This, + OAEVENT* hEvent); + + HRESULT (STDMETHODCALLTYPE *GetEvent)( + IMediaEventEx* This, + long* lEventCode, + LONG_PTR* lParam1, + LONG_PTR* lParam2, + long msTimeout); + + HRESULT (STDMETHODCALLTYPE *WaitForCompletion)( + IMediaEventEx* This, + long msTimeout, + long* pEvCode); + + HRESULT (STDMETHODCALLTYPE *CancelDefaultHandling)( + IMediaEventEx* This, + long lEvCode); + + HRESULT (STDMETHODCALLTYPE *RestoreDefaultHandling)( + IMediaEventEx* This, + long lEvCode); + + HRESULT (STDMETHODCALLTYPE *FreeEventParams)( + IMediaEventEx* This, + long lEvCode, + LONG_PTR lParam1, + LONG_PTR lParam2); + + /*** IMediaEventEx methods ***/ + HRESULT (STDMETHODCALLTYPE *SetNotifyWindow)( + IMediaEventEx* This, + OAHWND hwnd, + long lMsg, + LONG_PTR lInstanceData); + + HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)( + IMediaEventEx* This, + long lNoNotifyFlags); + + HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)( + IMediaEventEx* This, + long* lplNoNotifyFlags); + + END_INTERFACE +} IMediaEventExVtbl; +interface IMediaEventEx { + const IMediaEventExVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMediaEventEx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMediaEventEx_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMediaEventEx_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IMediaEventEx_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IMediaEventEx_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IMediaEventEx_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IMediaEventEx_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +/*** IMediaEvent methods ***/ +#define IMediaEventEx_GetEventHandle(p,a) (p)->lpVtbl->GetEventHandle(p,a) +#define IMediaEventEx_GetEvent(p,a,b,c,d) (p)->lpVtbl->GetEvent(p,a,b,c,d) +#define IMediaEventEx_WaitForCompletion(p,a,b) (p)->lpVtbl->WaitForCompletion(p,a,b) +#define IMediaEventEx_CancelDefaultHandling(p,a) (p)->lpVtbl->CancelDefaultHandling(p,a) +#define IMediaEventEx_RestoreDefaultHandling(p,a) (p)->lpVtbl->RestoreDefaultHandling(p,a) +#define IMediaEventEx_FreeEventParams(p,a,b,c) (p)->lpVtbl->FreeEventParams(p,a,b,c) +/*** IMediaEventEx methods ***/ +#define IMediaEventEx_SetNotifyWindow(p,a,b,c) (p)->lpVtbl->SetNotifyWindow(p,a,b,c) +#define IMediaEventEx_SetNotifyFlags(p,a) (p)->lpVtbl->SetNotifyFlags(p,a) +#define IMediaEventEx_GetNotifyFlags(p,a) (p)->lpVtbl->GetNotifyFlags(p,a) +#endif + +#endif + +HRESULT CALLBACK IMediaEventEx_SetNotifyWindow_Proxy( + IMediaEventEx* This, + OAHWND hwnd, + long lMsg, + LONG_PTR lInstanceData); +void __RPC_STUB IMediaEventEx_SetNotifyWindow_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaEventEx_SetNotifyFlags_Proxy( + IMediaEventEx* This, + long lNoNotifyFlags); +void __RPC_STUB IMediaEventEx_SetNotifyFlags_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaEventEx_GetNotifyFlags_Proxy( + IMediaEventEx* This, + long* lplNoNotifyFlags); +void __RPC_STUB IMediaEventEx_GetNotifyFlags_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMediaEventEx_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMediaPosition interface + */ +#ifndef __IMediaPosition_INTERFACE_DEFINED__ +#define __IMediaPosition_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMediaPosition, 0x56a868b2, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMediaPosition : public IDispatch +{ + virtual HRESULT STDMETHODCALLTYPE get_Duration( + REFTIME* plength) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_CurrentPosition( + REFTIME llTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_CurrentPosition( + REFTIME* pllTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_StopTime( + REFTIME* pllTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_StopTime( + REFTIME llTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_PrerollTime( + REFTIME* pllTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_PrerollTime( + REFTIME llTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Rate( + double dRate) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Rate( + double* pdRate) = 0; + + virtual HRESULT STDMETHODCALLTYPE CanSeekForward( + LONG* pCanSeekForward) = 0; + + virtual HRESULT STDMETHODCALLTYPE CanSeekBackward( + LONG* pCanSeekBackward) = 0; + +}; +#else +typedef struct IMediaPositionVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMediaPosition* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMediaPosition* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMediaPosition* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IMediaPosition* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IMediaPosition* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IMediaPosition* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IMediaPosition* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + /*** IMediaPosition methods ***/ + HRESULT (STDMETHODCALLTYPE *get_Duration)( + IMediaPosition* This, + REFTIME* plength); + + HRESULT (STDMETHODCALLTYPE *put_CurrentPosition)( + IMediaPosition* This, + REFTIME llTime); + + HRESULT (STDMETHODCALLTYPE *get_CurrentPosition)( + IMediaPosition* This, + REFTIME* pllTime); + + HRESULT (STDMETHODCALLTYPE *get_StopTime)( + IMediaPosition* This, + REFTIME* pllTime); + + HRESULT (STDMETHODCALLTYPE *put_StopTime)( + IMediaPosition* This, + REFTIME llTime); + + HRESULT (STDMETHODCALLTYPE *get_PrerollTime)( + IMediaPosition* This, + REFTIME* pllTime); + + HRESULT (STDMETHODCALLTYPE *put_PrerollTime)( + IMediaPosition* This, + REFTIME llTime); + + HRESULT (STDMETHODCALLTYPE *put_Rate)( + IMediaPosition* This, + double dRate); + + HRESULT (STDMETHODCALLTYPE *get_Rate)( + IMediaPosition* This, + double* pdRate); + + HRESULT (STDMETHODCALLTYPE *CanSeekForward)( + IMediaPosition* This, + LONG* pCanSeekForward); + + HRESULT (STDMETHODCALLTYPE *CanSeekBackward)( + IMediaPosition* This, + LONG* pCanSeekBackward); + + END_INTERFACE +} IMediaPositionVtbl; +interface IMediaPosition { + const IMediaPositionVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMediaPosition_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMediaPosition_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMediaPosition_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IMediaPosition_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IMediaPosition_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IMediaPosition_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IMediaPosition_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +/*** IMediaPosition methods ***/ +#define IMediaPosition_get_Duration(p,a) (p)->lpVtbl->get_Duration(p,a) +#define IMediaPosition_put_CurrentPosition(p,a) (p)->lpVtbl->put_CurrentPosition(p,a) +#define IMediaPosition_get_CurrentPosition(p,a) (p)->lpVtbl->get_CurrentPosition(p,a) +#define IMediaPosition_get_StopTime(p,a) (p)->lpVtbl->get_StopTime(p,a) +#define IMediaPosition_put_StopTime(p,a) (p)->lpVtbl->put_StopTime(p,a) +#define IMediaPosition_get_PrerollTime(p,a) (p)->lpVtbl->get_PrerollTime(p,a) +#define IMediaPosition_put_PrerollTime(p,a) (p)->lpVtbl->put_PrerollTime(p,a) +#define IMediaPosition_put_Rate(p,a) (p)->lpVtbl->put_Rate(p,a) +#define IMediaPosition_get_Rate(p,a) (p)->lpVtbl->get_Rate(p,a) +#define IMediaPosition_CanSeekForward(p,a) (p)->lpVtbl->CanSeekForward(p,a) +#define IMediaPosition_CanSeekBackward(p,a) (p)->lpVtbl->CanSeekBackward(p,a) +#endif + +#endif + +HRESULT CALLBACK IMediaPosition_get_Duration_Proxy( + IMediaPosition* This, + REFTIME* plength); +void __RPC_STUB IMediaPosition_get_Duration_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_put_CurrentPosition_Proxy( + IMediaPosition* This, + REFTIME llTime); +void __RPC_STUB IMediaPosition_put_CurrentPosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_get_CurrentPosition_Proxy( + IMediaPosition* This, + REFTIME* pllTime); +void __RPC_STUB IMediaPosition_get_CurrentPosition_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_get_StopTime_Proxy( + IMediaPosition* This, + REFTIME* pllTime); +void __RPC_STUB IMediaPosition_get_StopTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_put_StopTime_Proxy( + IMediaPosition* This, + REFTIME llTime); +void __RPC_STUB IMediaPosition_put_StopTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_get_PrerollTime_Proxy( + IMediaPosition* This, + REFTIME* pllTime); +void __RPC_STUB IMediaPosition_get_PrerollTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_put_PrerollTime_Proxy( + IMediaPosition* This, + REFTIME llTime); +void __RPC_STUB IMediaPosition_put_PrerollTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_put_Rate_Proxy( + IMediaPosition* This, + double dRate); +void __RPC_STUB IMediaPosition_put_Rate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_get_Rate_Proxy( + IMediaPosition* This, + double* pdRate); +void __RPC_STUB IMediaPosition_get_Rate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_CanSeekForward_Proxy( + IMediaPosition* This, + LONG* pCanSeekForward); +void __RPC_STUB IMediaPosition_CanSeekForward_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaPosition_CanSeekBackward_Proxy( + IMediaPosition* This, + LONG* pCanSeekBackward); +void __RPC_STUB IMediaPosition_CanSeekBackward_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMediaPosition_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + +unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); +unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); +void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_CONTROL_H */ diff --git a/reactos/include/psdk/control.idl b/reactos/include/psdk/control.idl new file mode 100644 index 00000000000..78316403941 --- /dev/null +++ b/reactos/include/psdk/control.idl @@ -0,0 +1,233 @@ +/* + * Copyright (C) 2002 Lionel Ulmer + * Copyright (C) 2004 Alexandre Julliard + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +cpp_quote("#if 0") /* FIXME: these files are not included on Windows */ +import "shldisp.idl"; +import "strmif.idl"; +cpp_quote("#endif") + +interface IMediaControl; +interface IBasicAudio; +interface IBasicVideo; +interface IVideoWindow; +interface IMediaEvent; +interface IMediaEventEx; +interface IMediaPosition; + +typedef long OAFilterState; +typedef LONG_PTR OAHWND; +typedef LONG_PTR OAEVENT; + +/***************************************************************************** + * IMediaControl interface + */ +[ + object, + uuid(56a868b1-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IMediaControl : IDispatch +{ + HRESULT Run(); + HRESULT Pause(); + HRESULT Stop(); + HRESULT GetState( [in] LONG msTimeout, [out] OAFilterState *pfs ); + HRESULT RenderFile( [in] BSTR strFilename ); + HRESULT AddSourceFilter( [in] BSTR strFilename, [out] IDispatch **ppUnk ); + [propget] HRESULT FilterCollection( [out] IDispatch **ppUnk ); + [propget] HRESULT RegFilterCollection( [out] IDispatch **ppUnk ); + HRESULT StopWhenReady(); +} + + +/***************************************************************************** + * IBasicAudio interface + */ +[ + object, + uuid(56a868b3-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IBasicAudio : IDispatch +{ + [propput] HRESULT Volume( [in] long lVolume ); + [propget] HRESULT Volume( [out] long *plVolume ); + [propput] HRESULT Balance( [in] long lBalance ); + [propget] HRESULT Balance( [out] long *plBalance ); +} + + +/***************************************************************************** + * IVideoWindow interface + */ +[ + object, + uuid(56a868b4-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IVideoWindow : IDispatch +{ + [propput] HRESULT Caption( [in] BSTR strCaption ); + [propget] HRESULT Caption( [out] BSTR *strCaption ); + [propput] HRESULT WindowStyle( [in] long WindowStyle ); + [propget] HRESULT WindowStyle( [out] long *WindowStyle ); + [propput] HRESULT WindowStyleEx( [in] long WindowStyleEx ); + [propget] HRESULT WindowStyleEx( [out] long *WindowStyleEx ); + [propput] HRESULT AutoShow( [in] long AutoShow ); + [propget] HRESULT AutoShow( [out] long *AutoShow ); + [propput] HRESULT WindowState( [in] long WindowState ); + [propget] HRESULT WindowState( [out] long *WindowState ); + [propput] HRESULT BackgroundPalette( [in] long BackgroundPalette ); + [propget] HRESULT BackgroundPalette( [out] long *pBackgroundPalette ); + [propput] HRESULT Visible( [in] long Visible ); + [propget] HRESULT Visible( [out] long *pVisible ); + [propput] HRESULT Left( [in] long Left ); + [propget] HRESULT Left( [out] long *pLeft ); + [propput] HRESULT Width( [in] long Width ); + [propget] HRESULT Width( [out] long *pWidth ); + [propput] HRESULT Top( [in] long Top ); + [propget] HRESULT Top( [out] long *pTop ); + [propput] HRESULT Height( [in] long Height ); + [propget] HRESULT Height( [out] long *pHeight ); + [propput] HRESULT Owner( [in] OAHWND Owner ); + [propget] HRESULT Owner( [out] OAHWND *Owner ); + [propput] HRESULT MessageDrain( [in] OAHWND Drain ); + [propget] HRESULT MessageDrain( [out] OAHWND *Drain ); + [propget] HRESULT BorderColor( [out] long *Color ); + [propput] HRESULT BorderColor( [in] long Color ); + [propget] HRESULT FullScreenMode( [out] long *FullScreenMode ); + [propput] HRESULT FullScreenMode( [in] long FullScreenMode ); + HRESULT SetWindowForeground( [in] long Focus ); + HRESULT NotifyOwnerMessage( [in] OAHWND hwnd, [in] long uMsg, [in] LONG_PTR wParam, [in] LONG_PTR lParam ); + HRESULT SetWindowPosition( [in] long Left, [in] long Top, [in] long Width, [in] long Height ); + HRESULT GetWindowPosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight ); + HRESULT GetMinIdealImageSize( [out] long *pWidth, [out] long *pHeight ); + HRESULT GetMaxIdealImageSize( [out] long *pWidth, [out] long *pHeight ); + HRESULT GetRestorePosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight ); + HRESULT HideCursor( [in] long HideCursor ); + HRESULT IsCursorHidden( [out] long *CursorHidden ); +} + + +/***************************************************************************** + * IBasicVideo interface + */ +[ + object, + uuid(56a868b5-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IBasicVideo : IDispatch +{ + [propget] HRESULT AvgTimePerFrame( [out] REFTIME *pAvgTimePerFrame ); + [propget] HRESULT BitRate( [out] long *pBitRate ); + [propget] HRESULT BitErrorRate( [out] long *pBitErrorRate ); + [propget] HRESULT VideoWidth( [out] long *pVideoWidth ); + [propget] HRESULT VideoHeight( [out] long *pVideoHeight ); + [propput] HRESULT SourceLeft( [in] long SourceLeft ); + [propget] HRESULT SourceLeft( [out] long *pSourceLeft ); + [propput] HRESULT SourceWidth( [in] long SourceWidth ); + [propget] HRESULT SourceWidth( [out] long *pSourceWidth ); + [propput] HRESULT SourceTop( [in] long SourceTop ); + [propget] HRESULT SourceTop( [out] long *pSourceTop ); + [propput] HRESULT SourceHeight( [in] long SourceHeight ); + [propget] HRESULT SourceHeight( [out] long *pSourceHeight ); + [propput] HRESULT DestinationLeft( [in] long DestinationLeft ); + [propget] HRESULT DestinationLeft( [out] long *pDestinationLeft ); + [propput] HRESULT DestinationWidth( [in] long DestinationWidth ); + [propget] HRESULT DestinationWidth( [out] long *pDestinationWidth ); + [propput] HRESULT DestinationTop( [in] long DestinationTop ); + [propget] HRESULT DestinationTop( [out] long *pDestinationTop ); + [propput] HRESULT DestinationHeight( [in] long DestinationHeight ); + [propget] HRESULT DestinationHeight( [out] long *pDestinationHeight ); + HRESULT SetSourcePosition( [in] long Left, [in] long Top, [in] long Width, [in] long Height ); + HRESULT GetSourcePosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight ); + HRESULT SetDefaultSourcePosition(); + HRESULT SetDestinationPosition( [in] long Left, [in] long Top, [in] long Width, [in] long Height ); + HRESULT GetDestinationPosition( [out] long *pLeft, [out] long *pTop, [out] long *pWidth, [out] long *pHeight ); + HRESULT SetDefaultDestinationPosition(); + HRESULT GetVideoSize( [out] long *pWidth, [out] long *pHeight ); + HRESULT GetVideoPaletteEntries( [in] long StartIndex, + [in] long Entries, + [out] long *pRetrieved, + [out, size_is(Entries), length_is(*pRetrieved)] long *pPalette ); + HRESULT GetCurrentImage( [in, out] long *pBufferSize, + [out, size_is(*pBufferSize), length_is(*pBufferSize)] long *pDIBImage ); + HRESULT IsUsingDefaultSource(); + HRESULT IsUsingDefaultDestination(); +} + + +/***************************************************************************** + * IMediaEvent interface + */ +[ + object, + uuid(56a868b6-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IMediaEvent : IDispatch +{ + HRESULT GetEventHandle( [out] OAEVENT *hEvent ); + HRESULT GetEvent( [out] long *lEventCode, [out] LONG_PTR *lParam1, [out] LONG_PTR *lParam2, [in] long msTimeout ); + HRESULT WaitForCompletion( [in] long msTimeout, [out] long *pEvCode ); + HRESULT CancelDefaultHandling( [in] long lEvCode ); + HRESULT RestoreDefaultHandling( [in] long lEvCode ); + HRESULT FreeEventParams( [in] long lEvCode, [in] LONG_PTR lParam1, [in] LONG_PTR lParam2 ); +} + + +/***************************************************************************** + * IMediaEventEx interface + */ +[ + object, + uuid(56a868c0-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IMediaEventEx : IMediaEvent +{ + HRESULT SetNotifyWindow( [in] OAHWND hwnd, [in] long lMsg, [in] LONG_PTR lInstanceData ); + HRESULT SetNotifyFlags( [in] long lNoNotifyFlags ); + HRESULT GetNotifyFlags( [out] long *lplNoNotifyFlags ); +} + + +/***************************************************************************** + * IMediaPosition interface + */ +[ + object, + uuid(56a868b2-0ad4-11ce-b03a-0020af0ba770), + pointer_default(unique) +] +interface IMediaPosition : IDispatch +{ + HRESULT get_Duration( [out] REFTIME *plength ); + HRESULT put_CurrentPosition( [in] REFTIME llTime ); + HRESULT get_CurrentPosition( [out] REFTIME *pllTime ); + HRESULT get_StopTime( [out] REFTIME *pllTime ); + HRESULT put_StopTime( [in] REFTIME llTime ); + HRESULT get_PrerollTime( [out] REFTIME *pllTime ); + HRESULT put_PrerollTime( [in] REFTIME llTime ); + HRESULT put_Rate( [in] double dRate ); + HRESULT get_Rate( [out] double *pdRate ); + HRESULT CanSeekForward( [out] LONG *pCanSeekForward ); + HRESULT CanSeekBackward( [out] LONG *pCanSeekBackward ); +} diff --git a/reactos/include/psdk/dbinit.idl b/reactos/include/psdk/dbinit.idl new file mode 100644 index 00000000000..e2edd17eac2 --- /dev/null +++ b/reactos/include/psdk/dbinit.idl @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2006 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +[ + object, + uuid(0c733a8b-2a1c-11ce-ade5-00aa0044773d), + pointer_default(unique) +] +interface IDBInitialize : IUnknown { + [local] HRESULT Initialize(); + [call_as(Initialize)] HRESULT RemoteInitialize( [out] IErrorInfo **ppErrorInfoRem ); + [local] HRESULT Uninitialize(); + [call_as(Uninitialize)] HRESULT RemoteUninitialize( [out] IErrorInfo **ppErrorInfoRem ); +} diff --git a/reactos/include/psdk/dbprop.idl b/reactos/include/psdk/dbprop.idl new file mode 100644 index 00000000000..5ed5301385f --- /dev/null +++ b/reactos/include/psdk/dbprop.idl @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2006 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +[ + object, + uuid(0c733a8a-2a1c-11ce-ade5-00aa0044773d), + pointer_default(unique) +] +interface IDBProperties : IUnknown { + [local] HRESULT GetProperties( + [in] ULONG cPropertyIDSets, + [in, size_is(cPropertyIDSets)] const DBPROPIDSET rgPropertyIDSets[], + [in, out] ULONG *pcPropertySets, + [out, size_is(,*pcPropertySets)] DBPROPSET **prgPropertySets); + + [call_as(GetProperties)] HRESULT RemoteGetProperties( + [in] ULONG cPropertyIDSets, + [in, size_is(cPropertyIDSets)] const DBPROPIDSET rgPropertyIDSets[], + [in, out] ULONG *pcPropertySets, + [out, size_is(,*pcPropertySets)] DBPROPSET **prgPropertySets, + [out] IErrorInfo **ppErrorInfoRem); + + [local] HRESULT GetPropertyInfo( + [in] ULONG cPropertyIDSets, + [in, size_is(cPropertyIDSets)] const DBPROPIDSET rgPropertyIDSets[], + [in, out] ULONG *pcPropertyInfoSets, + [out, size_is(,*pcPropertyInfoSets)] DBPROPINFOSET **prgPropertyInfoSets); + + [call_as(GetPropertyInfo)] HRESULT RemoteGetPropertyInfo( + [in] ULONG cPropertyIDSets, + [in,size_is(cPropertyIDSets)] const DBPROPIDSET *rgPropertyIDSets, + [in, out] ULONG *pcPropertyInfoSets, + [out, size_is(,*pcPropertyInfoSets)] DBPROPINFOSET **prgPropertyInfoSets, + [in, out] ULONG *pcOffsets, + [out, size_is(,*pcOffsets)] DBBYTEOFFSET **prgDescOffsets, + [in, out] ULONG *pcbDescBuffer, + [out, size_is(,*pcbDescBuffer)] OLECHAR **ppDescBuffer, + [out] IErrorInfo **ppErrorInfoRem); + + [local] HRESULT SetProperties( + [in] ULONG cPropertySets, + [in, out, size_is(cPropertySets)] DBPROPSET rgPropertySets[]); + + [call_as(SetProperties)] HRESULT RemoteSetProperties( + [in] ULONG cPropertySets, + [in, out, size_is(cPropertySets)] DBPROPSET *rgPropertySets, + [in] ULONG cTotalProps, + [out, size_is(cTotalProps)] DBPROPSTATUS *rgPropStatus, + [out] IErrorInfo **ppErrorInfoRem); +} diff --git a/reactos/include/psdk/dbs.idl b/reactos/include/psdk/dbs.idl new file mode 100644 index 00000000000..19c2997b3ab --- /dev/null +++ b/reactos/include/psdk/dbs.idl @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2006 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +typedef DWORD DBKIND; + +enum DBKINDENUM { + DBKIND_GUID_NAME, + DBKIND_GUID_PROPID, + DBKIND_NAME, + DBKIND_PGUID_NAME, + DBKIND_PGUID_PROPID, + DBKIND_PROPID, + DBKIND_GUID, +}; + +typedef struct tagDBID { + [switch_type(DBKIND), switch_is(eKind)] union + { + [case(DBKIND_GUID_NAME, DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_NAME, DBKIND_PROPID)] + GUID guid; + [case(DBKIND_PGUID_NAME, DBKIND_PGUID_PROPID)] + GUID *pguid; + [default] + ; + } uGuid; + DBKIND eKind; + [switch_type(DBKIND), switch_is(eKind)] union + { + [case(DBKIND_GUID_NAME, DBKIND_NAME, DBKIND_PGUID_NAME)] + LPOLESTR pwszName; + [case(DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_PGUID_PROPID, DBKIND_PROPID)] + ULONG ulPropid; + [default] + ; + } uName; +} DBID; + +typedef DWORD DBPROPID; + +typedef struct tagDBPROPIDSET { + [size_is(cPropertyIDs)] DBPROPID *rgPropertyIDs; + ULONG cPropertyIDs; + GUID guidPropertySet; +} DBPROPIDSET; + +typedef DWORD DBPROPOPTIONS; + +enum DBPROPOPTIONENUM { + DBPROPOPTIONS_REQUIRED = 0, + DBPROPOPTIONS_SETIFCHEAP = 1, + DBPROPOPTIONS_OPTIONAL = 1, +}; + +typedef DWORD DBPROPSTATUS; + +typedef struct tagDBPROP { + DBPROPID dwPropertyID; + DBPROPOPTIONS dwOptions; + DBPROPSTATUS dwStatus; + DBID colid; + VARIANT vValue; +} DBPROP; + +typedef struct tagDBPROPSET { + [size_is(cProperties)] DBPROP *rgProperties; + ULONG cProperties; + GUID guidPropertySet; +} DBPROPSET; + +typedef DWORD DBPROPFLAGS; + +typedef struct tagDBPROPINFO { + LPOLESTR pwszDescription; + DBPROPID dwPropertyID; + DBPROPFLAGS dwFlags; + VARTYPE vtType; + VARIANT vValues; +} DBPROPINFO; + +typedef DBPROPINFO *PDBPROPINFO; + +typedef struct tagDBPROPINFOSET { + [size_is(cPropertyInfos)] PDBPROPINFO rgPropertyInfos; + ULONG cPropertyInfos; + GUID guidPropertySet; +} DBPROPINFOSET; diff --git a/reactos/include/psdk/ddstream.h b/reactos/include/psdk/ddstream.h new file mode 100644 index 00000000000..bc1c136f294 --- /dev/null +++ b/reactos/include/psdk/ddstream.h @@ -0,0 +1,371 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\ddstream.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_DDSTREAM_H +#define __WIDL_INCLUDE_PSDK_DDSTREAM_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#ifndef __WINE_DDRAW_H +typedef void *LPDDSURFACEDESC; +typedef struct tDDSURFACEDESC DDSURFACEDESC; +#ifndef __IDirectDraw_FWD_DEFINED__ +#define __IDirectDraw_FWD_DEFINED__ +typedef interface IDirectDraw IDirectDraw; +#endif + +#ifndef __IDirectDrawSurface_FWD_DEFINED__ +#define __IDirectDrawSurface_FWD_DEFINED__ +typedef interface IDirectDrawSurface IDirectDrawSurface; +#endif + +#ifndef __IDirectDrawPalette_FWD_DEFINED__ +#define __IDirectDrawPalette_FWD_DEFINED__ +typedef interface IDirectDrawPalette IDirectDrawPalette; +#endif + +#endif +#include +enum { + DDSFF_PROGRESSIVERENDER = 0x1 +}; + +#ifndef __IDirectDrawMediaStream_FWD_DEFINED__ +#define __IDirectDrawMediaStream_FWD_DEFINED__ +typedef interface IDirectDrawMediaStream IDirectDrawMediaStream; +#endif + +#ifndef __IDirectDrawStreamSample_FWD_DEFINED__ +#define __IDirectDrawStreamSample_FWD_DEFINED__ +typedef interface IDirectDrawStreamSample IDirectDrawStreamSample; +#endif + +/***************************************************************************** + * IDirectDrawMediaStream interface + */ +#ifndef __IDirectDrawMediaStream_INTERFACE_DEFINED__ +#define __IDirectDrawMediaStream_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IDirectDrawMediaStream, 0xf4104fce, 0x9a70, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IDirectDrawMediaStream : public IMediaStream +{ + virtual HRESULT STDMETHODCALLTYPE GetFormat( + DDSURFACEDESC* pDDSDCurrent, + IDirectDrawPalette** ppDirectDrawPalette, + DDSURFACEDESC* pDDSDDesired, + DWORD* pdwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFormat( + const DDSURFACEDESC* pDDSurfaceDesc, + IDirectDrawPalette* pDirectDrawPalette) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDirectDraw( + IDirectDraw** ppDirectDraw) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDirectDraw( + IDirectDraw* pDirectDraw) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSample( + IDirectDrawSurface* pSurface, + const RECT* pRect, + DWORD dwFlags, + IDirectDrawStreamSample** ppSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimePerFrame( + STREAM_TIME* pFrameTime) = 0; + +}; +#else +typedef struct IDirectDrawMediaStreamVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IDirectDrawMediaStream* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IDirectDrawMediaStream* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IDirectDrawMediaStream* This); + + /*** IMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)( + IDirectDrawMediaStream* This, + IMultiMediaStream** ppMultiMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetInformation)( + IDirectDrawMediaStream* This, + MSPID* pPurposeId, + STREAM_TYPE* pType); + + HRESULT (STDMETHODCALLTYPE *SetSameFormat)( + IDirectDrawMediaStream* This, + IMediaStream* pStreamThatHasDesiredFormat, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *AllocateSample)( + IDirectDrawMediaStream* This, + DWORD dwFlags, + IStreamSample** ppSample); + + HRESULT (STDMETHODCALLTYPE *CreateSharedSample)( + IDirectDrawMediaStream* This, + IStreamSample* pExistingSample, + DWORD dwFlags, + IStreamSample** ppNewSample); + + HRESULT (STDMETHODCALLTYPE *SendEndOfStream)( + IDirectDrawMediaStream* This, + DWORD dwFlags); + + /*** IDirectDrawMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetFormat)( + IDirectDrawMediaStream* This, + DDSURFACEDESC* pDDSDCurrent, + IDirectDrawPalette** ppDirectDrawPalette, + DDSURFACEDESC* pDDSDDesired, + DWORD* pdwFlags); + + HRESULT (STDMETHODCALLTYPE *SetFormat)( + IDirectDrawMediaStream* This, + const DDSURFACEDESC* pDDSurfaceDesc, + IDirectDrawPalette* pDirectDrawPalette); + + HRESULT (STDMETHODCALLTYPE *GetDirectDraw)( + IDirectDrawMediaStream* This, + IDirectDraw** ppDirectDraw); + + HRESULT (STDMETHODCALLTYPE *SetDirectDraw)( + IDirectDrawMediaStream* This, + IDirectDraw* pDirectDraw); + + HRESULT (STDMETHODCALLTYPE *CreateSample)( + IDirectDrawMediaStream* This, + IDirectDrawSurface* pSurface, + const RECT* pRect, + DWORD dwFlags, + IDirectDrawStreamSample** ppSample); + + HRESULT (STDMETHODCALLTYPE *GetTimePerFrame)( + IDirectDrawMediaStream* This, + STREAM_TIME* pFrameTime); + + END_INTERFACE +} IDirectDrawMediaStreamVtbl; +interface IDirectDrawMediaStream { + const IDirectDrawMediaStreamVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IDirectDrawMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawMediaStream_Release(p) (p)->lpVtbl->Release(p) +/*** IMediaStream methods ***/ +#define IDirectDrawMediaStream_GetMultiMediaStream(p,a) (p)->lpVtbl->GetMultiMediaStream(p,a) +#define IDirectDrawMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b) +#define IDirectDrawMediaStream_SetSameFormat(p,a,b) (p)->lpVtbl->SetSameFormat(p,a,b) +#define IDirectDrawMediaStream_AllocateSample(p,a,b) (p)->lpVtbl->AllocateSample(p,a,b) +#define IDirectDrawMediaStream_CreateSharedSample(p,a,b,c) (p)->lpVtbl->CreateSharedSample(p,a,b,c) +#define IDirectDrawMediaStream_SendEndOfStream(p,a) (p)->lpVtbl->SendEndOfStream(p,a) +/*** IDirectDrawMediaStream methods ***/ +#define IDirectDrawMediaStream_GetFormat(p,a,b,c,d) (p)->lpVtbl->GetFormat(p,a,b,c,d) +#define IDirectDrawMediaStream_SetFormat(p,a,b) (p)->lpVtbl->SetFormat(p,a,b) +#define IDirectDrawMediaStream_GetDirectDraw(p,a) (p)->lpVtbl->GetDirectDraw(p,a) +#define IDirectDrawMediaStream_SetDirectDraw(p,a) (p)->lpVtbl->SetDirectDraw(p,a) +#define IDirectDrawMediaStream_CreateSample(p,a,b,c,d) (p)->lpVtbl->CreateSample(p,a,b,c,d) +#define IDirectDrawMediaStream_GetTimePerFrame(p,a) (p)->lpVtbl->GetTimePerFrame(p,a) +#endif + +#endif + +HRESULT CALLBACK IDirectDrawMediaStream_GetFormat_Proxy( + IDirectDrawMediaStream* This, + DDSURFACEDESC* pDDSDCurrent, + IDirectDrawPalette** ppDirectDrawPalette, + DDSURFACEDESC* pDDSDDesired, + DWORD* pdwFlags); +void __RPC_STUB IDirectDrawMediaStream_GetFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawMediaStream_SetFormat_Proxy( + IDirectDrawMediaStream* This, + const DDSURFACEDESC* pDDSurfaceDesc, + IDirectDrawPalette* pDirectDrawPalette); +void __RPC_STUB IDirectDrawMediaStream_SetFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawMediaStream_GetDirectDraw_Proxy( + IDirectDrawMediaStream* This, + IDirectDraw** ppDirectDraw); +void __RPC_STUB IDirectDrawMediaStream_GetDirectDraw_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawMediaStream_SetDirectDraw_Proxy( + IDirectDrawMediaStream* This, + IDirectDraw* pDirectDraw); +void __RPC_STUB IDirectDrawMediaStream_SetDirectDraw_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawMediaStream_CreateSample_Proxy( + IDirectDrawMediaStream* This, + IDirectDrawSurface* pSurface, + const RECT* pRect, + DWORD dwFlags, + IDirectDrawStreamSample** ppSample); +void __RPC_STUB IDirectDrawMediaStream_CreateSample_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawMediaStream_GetTimePerFrame_Proxy( + IDirectDrawMediaStream* This, + STREAM_TIME* pFrameTime); +void __RPC_STUB IDirectDrawMediaStream_GetTimePerFrame_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IDirectDrawMediaStream_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IDirectDrawStreamSample interface + */ +#ifndef __IDirectDrawStreamSample_INTERFACE_DEFINED__ +#define __IDirectDrawStreamSample_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IDirectDrawStreamSample, 0xf4104fcf, 0x9a70, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IDirectDrawStreamSample : public IStreamSample +{ + virtual HRESULT STDMETHODCALLTYPE GetSurface( + IDirectDrawSurface** ppDirectDrawSurface, + RECT* pRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetRect( + const RECT* pRect) = 0; + +}; +#else +typedef struct IDirectDrawStreamSampleVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IDirectDrawStreamSample* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IDirectDrawStreamSample* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IDirectDrawStreamSample* This); + + /*** IStreamSample methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMediaStream)( + IDirectDrawStreamSample* This, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetSampleTimes)( + IDirectDrawStreamSample* This, + STREAM_TIME* pStartTime, + STREAM_TIME* pEndTime, + STREAM_TIME* pCurrentTime); + + HRESULT (STDMETHODCALLTYPE *SetSampleTimes)( + IDirectDrawStreamSample* This, + const STREAM_TIME* pStartTime, + const STREAM_TIME* pEndTime); + + HRESULT (STDMETHODCALLTYPE *Update)( + IDirectDrawStreamSample* This, + DWORD dwFlags, + HANDLE hEvent, + PAPCFUNC pfnAPC, + DWORD dwAPCData); + + HRESULT (STDMETHODCALLTYPE *CompletionStatus)( + IDirectDrawStreamSample* This, + DWORD dwFlags, + DWORD dwMilliseconds); + + /*** IDirectDrawStreamSample methods ***/ + HRESULT (STDMETHODCALLTYPE *GetSurface)( + IDirectDrawStreamSample* This, + IDirectDrawSurface** ppDirectDrawSurface, + RECT* pRect); + + HRESULT (STDMETHODCALLTYPE *SetRect)( + IDirectDrawStreamSample* This, + const RECT* pRect); + + END_INTERFACE +} IDirectDrawStreamSampleVtbl; +interface IDirectDrawStreamSample { + const IDirectDrawStreamSampleVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IDirectDrawStreamSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectDrawStreamSample_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectDrawStreamSample_Release(p) (p)->lpVtbl->Release(p) +/*** IStreamSample methods ***/ +#define IDirectDrawStreamSample_GetMediaStream(p,a) (p)->lpVtbl->GetMediaStream(p,a) +#define IDirectDrawStreamSample_GetSampleTimes(p,a,b,c) (p)->lpVtbl->GetSampleTimes(p,a,b,c) +#define IDirectDrawStreamSample_SetSampleTimes(p,a,b) (p)->lpVtbl->SetSampleTimes(p,a,b) +#define IDirectDrawStreamSample_Update(p,a,b,c,d) (p)->lpVtbl->Update(p,a,b,c,d) +#define IDirectDrawStreamSample_CompletionStatus(p,a,b) (p)->lpVtbl->CompletionStatus(p,a,b) +/*** IDirectDrawStreamSample methods ***/ +#define IDirectDrawStreamSample_GetSurface(p,a,b) (p)->lpVtbl->GetSurface(p,a,b) +#define IDirectDrawStreamSample_SetRect(p,a) (p)->lpVtbl->SetRect(p,a) +#endif + +#endif + +HRESULT CALLBACK IDirectDrawStreamSample_GetSurface_Proxy( + IDirectDrawStreamSample* This, + IDirectDrawSurface** ppDirectDrawSurface, + RECT* pRect); +void __RPC_STUB IDirectDrawStreamSample_GetSurface_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDirectDrawStreamSample_SetRect_Proxy( + IDirectDrawStreamSample* This, + const RECT* pRect); +void __RPC_STUB IDirectDrawStreamSample_SetRect_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IDirectDrawStreamSample_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_DDSTREAM_H */ diff --git a/reactos/include/psdk/ddstream.idl b/reactos/include/psdk/ddstream.idl new file mode 100644 index 00000000000..644401559ac --- /dev/null +++ b/reactos/include/psdk/ddstream.idl @@ -0,0 +1,88 @@ +/* + * Copyright 2004 Christian Costa + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; +import "mmstream.idl"; + +cpp_quote("#ifndef __WINE_DDRAW_H") +typedef void * LPDDSURFACEDESC; +typedef struct tDDSURFACEDESC DDSURFACEDESC; +interface IDirectDraw; +interface IDirectDrawSurface; +interface IDirectDrawPalette; +cpp_quote("#endif") +cpp_quote("#include ") + +enum { + DDSFF_PROGRESSIVERENDER = 0x00000001 +}; + +interface IDirectDrawMediaStream; +interface IDirectDrawStreamSample; + +[ +object, +local, +uuid(F4104FCE-9A70-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IDirectDrawMediaStream : IMediaStream +{ + HRESULT GetFormat( + [out, optional] DDSURFACEDESC *pDDSDCurrent, + [out, optional] IDirectDrawPalette **ppDirectDrawPalette, + [out, optional] DDSURFACEDESC *pDDSDDesired, + [out, optional] DWORD *pdwFlags); + + HRESULT SetFormat( + [in] const DDSURFACEDESC *pDDSurfaceDesc, + [in, optional] IDirectDrawPalette *pDirectDrawPalette); + + HRESULT GetDirectDraw( + [out] IDirectDraw **ppDirectDraw); + + HRESULT SetDirectDraw( + [in] IDirectDraw *pDirectDraw); + + HRESULT CreateSample( + [in, optional] IDirectDrawSurface *pSurface, + [in, optional] const RECT *pRect, + [in] DWORD dwFlags, + [out] IDirectDrawStreamSample **ppSample); + + HRESULT GetTimePerFrame( + [out] STREAM_TIME *pFrameTime); +} + + +[ +object, +local, +uuid(F4104FCF-9A70-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IDirectDrawStreamSample : IStreamSample +{ + HRESULT GetSurface( + [out, optional] IDirectDrawSurface ** ppDirectDrawSurface, + [out, optional] RECT * pRect); + + HRESULT SetRect( + [in] const RECT * pRect); + +} diff --git a/reactos/include/psdk/devenum.idl b/reactos/include/psdk/devenum.idl new file mode 100644 index 00000000000..046d2b50f18 --- /dev/null +++ b/reactos/include/psdk/devenum.idl @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2002 Robert Shearman + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "oaidl.idl"; + +cpp_quote("#define CDEF_CLASS_DEFAULT 0x0001") +cpp_quote("#define CDEF_BYPASS_CLASS_MANAGER 0x0002") +cpp_quote("#define CDEF_CLASS_LEGACY 0x0004") +cpp_quote("#define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008") + +[ + object, + uuid(29840822-5B84-11D0-BD3B-00A0C911CE86), + pointer_default(unique) +] +interface ICreateDevEnum : IUnknown +{ + HRESULT CreateClassEnumerator( + [in] REFCLSID clsidDeviceClass, + [out] IEnumMoniker ** ppEnumMoniker, + [in] DWORD dwFlags); +} diff --git a/reactos/include/psdk/dispex.h b/reactos/include/psdk/dispex.h new file mode 100644 index 00000000000..250c21d18f3 --- /dev/null +++ b/reactos/include/psdk/dispex.h @@ -0,0 +1,645 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\dispex.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_DISPEX_H +#define __WIDL_INCLUDE_PSDK_DISPEX_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#include +#include +#define fdexNameCaseSensitive 0x00000001L +#define fdexNameEnsure 0x00000002L +#define fdexNameImplicit 0x00000004L +#define fdexNameCaseInsensitive 0x00000008L +#define fdexNameInternal 0x00000010L +#define fdexNameNoDynamicProperties 0x00000020L +#define fdexPropCanGet 0x00000001L +#define fdexPropCannotGet 0x00000002L +#define fdexPropCanPut 0x00000004L +#define fdexPropCannotPut 0x00000008L +#define fdexPropCanPutRef 0x00000010L +#define fdexPropCannotPutRef 0x00000020L +#define fdexPropNoSideEffects 0x00000040L +#define fdexPropDynamicType 0x00000080L +#define fdexPropCanCall 0x00000100L +#define fdexPropCannotCall 0x00000200L +#define fdexPropCanConstruct 0x00000400L +#define fdexPropCannotConstruct 0x00000800L +#define fdexPropCanSourceEvents 0x00001000L +#define fdexPropCannotSourceEvents 0x00002000L +#define fdexEnumDefault 0x00000001L +#define fdexEnumAll 0x00000002L +#define grfdexPropCanAll \ + (fdexPropCanGet | fdexPropCanPut | fdexPropCanPutRef | \ + fdexPropCanCall | fdexPropCanConstruct | fdexPropCanSourceEvents) +#define grfdexPropCannotAll \ + (fdexPropCannotGet | fdexPropCannotPut | fdexPropCannotPutRef | \ + fdexPropCannotCall | fdexPropCannotConstruct | fdexPropCannotSourceEvents) +#define grfdexPropExtraAll \ + (fdexPropNoSideEffects | fdexPropDynamicType) +#define grfdexPropAll \ + (grfdexPropCanAll | grfdexPropCannotAll | grfdexPropExtraAll) +#define DISPATCH_CONSTRUCT 0x4000 +#define DISPID_THIS (-613) +#define DISPID_STARTENUM DISPID_UNKNOWN +#ifndef __IDispatchEx_FWD_DEFINED__ +#define __IDispatchEx_FWD_DEFINED__ +typedef interface IDispatchEx IDispatchEx; +#endif + +/***************************************************************************** + * IDispatchEx interface + */ +#ifndef __IDispatchEx_INTERFACE_DEFINED__ +#define __IDispatchEx_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IDispatchEx, 0xa6ef9860, 0xc720, 0x11d0, 0x93,0x37, 0x00,0xa0,0xc9,0x0d,0xca,0xa9); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IDispatchEx : public IDispatch +{ + virtual HRESULT STDMETHODCALLTYPE GetDispID( + BSTR bstrName, + DWORD grfdex, + DISPID* pid) = 0; + + virtual HRESULT STDMETHODCALLTYPE InvokeEx( + DISPID id, + LCID lcid, + WORD wFlags, + DISPPARAMS* pdp, + VARIANT* pvarRes, + EXCEPINFO* pei, + IServiceProvider* pspCaller) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeleteMemberByName( + BSTR bstrName, + DWORD grfdex) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeleteMemberByDispID( + DISPID id) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMemberProperties( + DISPID id, + DWORD grfdexFetch, + DWORD* pgrfdex) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMemberName( + DISPID id, + BSTR* pbstrName) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNextDispID( + DWORD grfdex, + DISPID id, + DISPID* pid) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNameSpaceParent( + IUnknown** ppunk) = 0; + +}; +#else +typedef struct IDispatchExVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IDispatchEx* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IDispatchEx* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IDispatchEx* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IDispatchEx* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IDispatchEx* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IDispatchEx* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IDispatchEx* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + /*** IDispatchEx methods ***/ + HRESULT (STDMETHODCALLTYPE *GetDispID)( + IDispatchEx* This, + BSTR bstrName, + DWORD grfdex, + DISPID* pid); + + HRESULT (STDMETHODCALLTYPE *InvokeEx)( + IDispatchEx* This, + DISPID id, + LCID lcid, + WORD wFlags, + DISPPARAMS* pdp, + VARIANT* pvarRes, + EXCEPINFO* pei, + IServiceProvider* pspCaller); + + HRESULT (STDMETHODCALLTYPE *DeleteMemberByName)( + IDispatchEx* This, + BSTR bstrName, + DWORD grfdex); + + HRESULT (STDMETHODCALLTYPE *DeleteMemberByDispID)( + IDispatchEx* This, + DISPID id); + + HRESULT (STDMETHODCALLTYPE *GetMemberProperties)( + IDispatchEx* This, + DISPID id, + DWORD grfdexFetch, + DWORD* pgrfdex); + + HRESULT (STDMETHODCALLTYPE *GetMemberName)( + IDispatchEx* This, + DISPID id, + BSTR* pbstrName); + + HRESULT (STDMETHODCALLTYPE *GetNextDispID)( + IDispatchEx* This, + DWORD grfdex, + DISPID id, + DISPID* pid); + + HRESULT (STDMETHODCALLTYPE *GetNameSpaceParent)( + IDispatchEx* This, + IUnknown** ppunk); + + END_INTERFACE +} IDispatchExVtbl; +interface IDispatchEx { + const IDispatchExVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IDispatchEx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDispatchEx_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDispatchEx_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IDispatchEx_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IDispatchEx_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IDispatchEx_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IDispatchEx_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +/*** IDispatchEx methods ***/ +#define IDispatchEx_GetDispID(p,a,b,c) (p)->lpVtbl->GetDispID(p,a,b,c) +#define IDispatchEx_InvokeEx(p,a,b,c,d,e,f,g) (p)->lpVtbl->InvokeEx(p,a,b,c,d,e,f,g) +#define IDispatchEx_DeleteMemberByName(p,a,b) (p)->lpVtbl->DeleteMemberByName(p,a,b) +#define IDispatchEx_DeleteMemberByDispID(p,a) (p)->lpVtbl->DeleteMemberByDispID(p,a) +#define IDispatchEx_GetMemberProperties(p,a,b,c) (p)->lpVtbl->GetMemberProperties(p,a,b,c) +#define IDispatchEx_GetMemberName(p,a,b) (p)->lpVtbl->GetMemberName(p,a,b) +#define IDispatchEx_GetNextDispID(p,a,b,c) (p)->lpVtbl->GetNextDispID(p,a,b,c) +#define IDispatchEx_GetNameSpaceParent(p,a) (p)->lpVtbl->GetNameSpaceParent(p,a) +#endif + +#endif + +HRESULT CALLBACK IDispatchEx_GetDispID_Proxy( + IDispatchEx* This, + BSTR bstrName, + DWORD grfdex, + DISPID* pid); +void __RPC_STUB IDispatchEx_GetDispID_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispatchEx_RemoteInvokeEx_Proxy( + IDispatchEx* This, + DISPID id, + LCID lcid, + DWORD dwFlags, + DISPPARAMS* pdp, + VARIANT* pvarRes, + EXCEPINFO* pei, + IServiceProvider* pspCaller, + UINT cvarRefArg, + UINT* rgiRefArg, + VARIANT* rgvarRefArg); +void __RPC_STUB IDispatchEx_RemoteInvokeEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispatchEx_InvokeEx_Proxy( + IDispatchEx* This, + DISPID id, + LCID lcid, + WORD wFlags, + DISPPARAMS* pdp, + VARIANT* pvarRes, + EXCEPINFO* pei, + IServiceProvider* pspCaller); +HRESULT __RPC_STUB IDispatchEx_InvokeEx_Stub( + IDispatchEx* This, + DISPID id, + LCID lcid, + DWORD dwFlags, + DISPPARAMS* pdp, + VARIANT* pvarRes, + EXCEPINFO* pei, + IServiceProvider* pspCaller, + UINT cvarRefArg, + UINT* rgiRefArg, + VARIANT* rgvarRefArg); +HRESULT CALLBACK IDispatchEx_DeleteMemberByName_Proxy( + IDispatchEx* This, + BSTR bstrName, + DWORD grfdex); +void __RPC_STUB IDispatchEx_DeleteMemberByName_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispatchEx_DeleteMemberByDispID_Proxy( + IDispatchEx* This, + DISPID id); +void __RPC_STUB IDispatchEx_DeleteMemberByDispID_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispatchEx_GetMemberProperties_Proxy( + IDispatchEx* This, + DISPID id, + DWORD grfdexFetch, + DWORD* pgrfdex); +void __RPC_STUB IDispatchEx_GetMemberProperties_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispatchEx_GetMemberName_Proxy( + IDispatchEx* This, + DISPID id, + BSTR* pbstrName); +void __RPC_STUB IDispatchEx_GetMemberName_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispatchEx_GetNextDispID_Proxy( + IDispatchEx* This, + DWORD grfdex, + DISPID id, + DISPID* pid); +void __RPC_STUB IDispatchEx_GetNextDispID_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispatchEx_GetNameSpaceParent_Proxy( + IDispatchEx* This, + IUnknown** ppunk); +void __RPC_STUB IDispatchEx_GetNameSpaceParent_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IDispatchEx_INTERFACE_DEFINED__ */ + +#ifndef __IDispError_FWD_DEFINED__ +#define __IDispError_FWD_DEFINED__ +typedef interface IDispError IDispError; +#endif + +/***************************************************************************** + * IDispError interface + */ +#ifndef __IDispError_INTERFACE_DEFINED__ +#define __IDispError_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IDispError, 0xa6ef9861, 0xc720, 0x11d0, 0x93,0x37, 0x00,0xa0,0xc9,0x0d,0xca,0xa9); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IDispError : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE QueryErrorInfo( + GUID guidErrorType, + IDispError** ppde) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNext( + IDispError** ppde) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHresult( + HRESULT* phr) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSource( + BSTR* pbstrSource) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHelpInfo( + BSTR* pbstrFileName, + DWORD* pdwContext) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDescription( + BSTR* pbstrDescription) = 0; + +}; +#else +typedef struct IDispErrorVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IDispError* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IDispError* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IDispError* This); + + /*** IDispError methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryErrorInfo)( + IDispError* This, + GUID guidErrorType, + IDispError** ppde); + + HRESULT (STDMETHODCALLTYPE *GetNext)( + IDispError* This, + IDispError** ppde); + + HRESULT (STDMETHODCALLTYPE *GetHresult)( + IDispError* This, + HRESULT* phr); + + HRESULT (STDMETHODCALLTYPE *GetSource)( + IDispError* This, + BSTR* pbstrSource); + + HRESULT (STDMETHODCALLTYPE *GetHelpInfo)( + IDispError* This, + BSTR* pbstrFileName, + DWORD* pdwContext); + + HRESULT (STDMETHODCALLTYPE *GetDescription)( + IDispError* This, + BSTR* pbstrDescription); + + END_INTERFACE +} IDispErrorVtbl; +interface IDispError { + const IDispErrorVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IDispError_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDispError_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDispError_Release(p) (p)->lpVtbl->Release(p) +/*** IDispError methods ***/ +#define IDispError_QueryErrorInfo(p,a,b) (p)->lpVtbl->QueryErrorInfo(p,a,b) +#define IDispError_GetNext(p,a) (p)->lpVtbl->GetNext(p,a) +#define IDispError_GetHresult(p,a) (p)->lpVtbl->GetHresult(p,a) +#define IDispError_GetSource(p,a) (p)->lpVtbl->GetSource(p,a) +#define IDispError_GetHelpInfo(p,a,b) (p)->lpVtbl->GetHelpInfo(p,a,b) +#define IDispError_GetDescription(p,a) (p)->lpVtbl->GetDescription(p,a) +#endif + +#endif + +HRESULT CALLBACK IDispError_QueryErrorInfo_Proxy( + IDispError* This, + GUID guidErrorType, + IDispError** ppde); +void __RPC_STUB IDispError_QueryErrorInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispError_GetNext_Proxy( + IDispError* This, + IDispError** ppde); +void __RPC_STUB IDispError_GetNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispError_GetHresult_Proxy( + IDispError* This, + HRESULT* phr); +void __RPC_STUB IDispError_GetHresult_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispError_GetSource_Proxy( + IDispError* This, + BSTR* pbstrSource); +void __RPC_STUB IDispError_GetSource_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispError_GetHelpInfo_Proxy( + IDispError* This, + BSTR* pbstrFileName, + DWORD* pdwContext); +void __RPC_STUB IDispError_GetHelpInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IDispError_GetDescription_Proxy( + IDispError* This, + BSTR* pbstrDescription); +void __RPC_STUB IDispError_GetDescription_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IDispError_INTERFACE_DEFINED__ */ + +#ifndef __IVariantChangeType_FWD_DEFINED__ +#define __IVariantChangeType_FWD_DEFINED__ +typedef interface IVariantChangeType IVariantChangeType; +#endif + +/***************************************************************************** + * IVariantChangeType interface + */ +#ifndef __IVariantChangeType_INTERFACE_DEFINED__ +#define __IVariantChangeType_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IVariantChangeType, 0xa6ef9862, 0xc720, 0x11d0, 0x93,0x37, 0x00,0xa0,0xc9,0x0d,0xca,0xa9); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IVariantChangeType : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE ChangeType( + VARIANT* pvarDst, + VARIANT* pvarSrc, + LCID lcid, + VARTYPE vtNew) = 0; + +}; +#else +typedef struct IVariantChangeTypeVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IVariantChangeType* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IVariantChangeType* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IVariantChangeType* This); + + /*** IVariantChangeType methods ***/ + HRESULT (STDMETHODCALLTYPE *ChangeType)( + IVariantChangeType* This, + VARIANT* pvarDst, + VARIANT* pvarSrc, + LCID lcid, + VARTYPE vtNew); + + END_INTERFACE +} IVariantChangeTypeVtbl; +interface IVariantChangeType { + const IVariantChangeTypeVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IVariantChangeType_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IVariantChangeType_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IVariantChangeType_Release(p) (p)->lpVtbl->Release(p) +/*** IVariantChangeType methods ***/ +#define IVariantChangeType_ChangeType(p,a,b,c,d) (p)->lpVtbl->ChangeType(p,a,b,c,d) +#endif + +#endif + +HRESULT CALLBACK IVariantChangeType_ChangeType_Proxy( + IVariantChangeType* This, + VARIANT* pvarDst, + VARIANT* pvarSrc, + LCID lcid, + VARTYPE vtNew); +void __RPC_STUB IVariantChangeType_ChangeType_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IVariantChangeType_INTERFACE_DEFINED__ */ + +#ifndef __IObjectIdentity_FWD_DEFINED__ +#define __IObjectIdentity_FWD_DEFINED__ +typedef interface IObjectIdentity IObjectIdentity; +#endif + +/***************************************************************************** + * IObjectIdentity interface + */ +#ifndef __IObjectIdentity_INTERFACE_DEFINED__ +#define __IObjectIdentity_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IObjectIdentity, 0xca04b7e6, 0x0d21, 0x11d1, 0x8c,0xc5, 0x00,0xc0,0x4f,0xc2,0xb0,0x85); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IObjectIdentity : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE IsEqualObject( + IUnknown* punk) = 0; + +}; +#else +typedef struct IObjectIdentityVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IObjectIdentity* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IObjectIdentity* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IObjectIdentity* This); + + /*** IObjectIdentity methods ***/ + HRESULT (STDMETHODCALLTYPE *IsEqualObject)( + IObjectIdentity* This, + IUnknown* punk); + + END_INTERFACE +} IObjectIdentityVtbl; +interface IObjectIdentity { + const IObjectIdentityVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IObjectIdentity_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IObjectIdentity_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IObjectIdentity_Release(p) (p)->lpVtbl->Release(p) +/*** IObjectIdentity methods ***/ +#define IObjectIdentity_IsEqualObject(p,a) (p)->lpVtbl->IsEqualObject(p,a) +#endif + +#endif + +HRESULT CALLBACK IObjectIdentity_IsEqualObject_Proxy( + IObjectIdentity* This, + IUnknown* punk); +void __RPC_STUB IObjectIdentity_IsEqualObject_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IObjectIdentity_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + +unsigned long __RPC_USER VARIANT_UserSize (unsigned long *, unsigned long, VARIANT *); +unsigned char * __RPC_USER VARIANT_UserMarshal (unsigned long *, unsigned char *, VARIANT *); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT *); +void __RPC_USER VARIANT_UserFree (unsigned long *, VARIANT *); +unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); +unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); +void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_DISPEX_H */ diff --git a/reactos/include/psdk/dispex.idl b/reactos/include/psdk/dispex.idl new file mode 100644 index 00000000000..3ba6f743975 --- /dev/null +++ b/reactos/include/psdk/dispex.idl @@ -0,0 +1,176 @@ +/* + * Copyright 2004 Kevin Koltzau + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "ocidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; +import "servprov.idl"; + +cpp_quote("#define fdexNameCaseSensitive 0x00000001L") +cpp_quote("#define fdexNameEnsure 0x00000002L") +cpp_quote("#define fdexNameImplicit 0x00000004L") +cpp_quote("#define fdexNameCaseInsensitive 0x00000008L") +cpp_quote("#define fdexNameInternal 0x00000010L") +cpp_quote("#define fdexNameNoDynamicProperties 0x00000020L") + +cpp_quote("#define fdexPropCanGet 0x00000001L") +cpp_quote("#define fdexPropCannotGet 0x00000002L") +cpp_quote("#define fdexPropCanPut 0x00000004L") +cpp_quote("#define fdexPropCannotPut 0x00000008L") +cpp_quote("#define fdexPropCanPutRef 0x00000010L") +cpp_quote("#define fdexPropCannotPutRef 0x00000020L") +cpp_quote("#define fdexPropNoSideEffects 0x00000040L") +cpp_quote("#define fdexPropDynamicType 0x00000080L") +cpp_quote("#define fdexPropCanCall 0x00000100L") +cpp_quote("#define fdexPropCannotCall 0x00000200L") +cpp_quote("#define fdexPropCanConstruct 0x00000400L") +cpp_quote("#define fdexPropCannotConstruct 0x00000800L") +cpp_quote("#define fdexPropCanSourceEvents 0x00001000L") +cpp_quote("#define fdexPropCannotSourceEvents 0x00002000L") + +cpp_quote("#define fdexEnumDefault 0x00000001L") +cpp_quote("#define fdexEnumAll 0x00000002L") + +cpp_quote("#define grfdexPropCanAll \\") +cpp_quote(" (fdexPropCanGet | fdexPropCanPut | fdexPropCanPutRef | \\") +cpp_quote(" fdexPropCanCall | fdexPropCanConstruct | fdexPropCanSourceEvents)") +cpp_quote("#define grfdexPropCannotAll \\") +cpp_quote(" (fdexPropCannotGet | fdexPropCannotPut | fdexPropCannotPutRef | \\") +cpp_quote(" fdexPropCannotCall | fdexPropCannotConstruct | fdexPropCannotSourceEvents)") +cpp_quote("#define grfdexPropExtraAll \\") +cpp_quote(" (fdexPropNoSideEffects | fdexPropDynamicType)") +cpp_quote("#define grfdexPropAll \\") +cpp_quote(" (grfdexPropCanAll | grfdexPropCannotAll | grfdexPropExtraAll)") + +cpp_quote("#define DISPATCH_CONSTRUCT 0x4000") + +cpp_quote("#define DISPID_THIS (-613)") +cpp_quote("#define DISPID_STARTENUM DISPID_UNKNOWN") + +[ +object, +uuid(A6EF9860-C720-11d0-9337-00A0C90DCAA9), +pointer_default(unique) +] +interface IDispatchEx : IDispatch +{ + HRESULT GetDispID( + [in] BSTR bstrName, + [in] DWORD grfdex, + [out] DISPID *pid); + + [local] + HRESULT InvokeEx( + [in] DISPID id, + [in] LCID lcid, + [in] WORD wFlags, + [in] DISPPARAMS *pdp, + [out] VARIANT *pvarRes, + [out] EXCEPINFO *pei, + [in, unique] IServiceProvider *pspCaller); + + [call_as(InvokeEx)] + HRESULT RemoteInvokeEx( + [in] DISPID id, + [in] LCID lcid, + [in] DWORD dwFlags, + [in] DISPPARAMS *pdp, + [out] VARIANT *pvarRes, + [out] EXCEPINFO *pei, + [in, unique] IServiceProvider *pspCaller, + [in] UINT cvarRefArg, + [in, size_is(cvarRefArg)] UINT *rgiRefArg, + [in, out, size_is(cvarRefArg)] VARIANT *rgvarRefArg); + + HRESULT DeleteMemberByName( + [in] BSTR bstrName, + [in] DWORD grfdex); + + HRESULT DeleteMemberByDispID( + [in] DISPID id); + + HRESULT GetMemberProperties( + [in] DISPID id, + [in] DWORD grfdexFetch, + [out] DWORD *pgrfdex); + + HRESULT GetMemberName( + [in] DISPID id, + [out] BSTR *pbstrName); + + HRESULT GetNextDispID( + [in] DWORD grfdex, + [in] DISPID id, + [out] DISPID *pid); + + HRESULT GetNameSpaceParent([out] IUnknown **ppunk); +} + +[ +object, +uuid(A6EF9861-C720-11d0-9337-00A0C90DCAA9), +pointer_default(unique) +] +interface IDispError : IUnknown +{ + HRESULT QueryErrorInfo( + [in] GUID guidErrorType, + [out] IDispError **ppde); + + HRESULT GetNext( + [out] IDispError **ppde); + + HRESULT GetHresult( + [out] HRESULT *phr); + + HRESULT GetSource( + [out] BSTR *pbstrSource); + + HRESULT GetHelpInfo( + [out] BSTR *pbstrFileName, + [out] DWORD *pdwContext); + + HRESULT GetDescription( + [out] BSTR *pbstrDescription); +} + +[ +object, +uuid(A6EF9862-C720-11d0-9337-00A0C90DCAA9), +pointer_default(unique) +] +interface IVariantChangeType : IUnknown +{ + HRESULT ChangeType( + [in, out, unique] VARIANT *pvarDst, + [in, unique] VARIANT *pvarSrc, + [in] LCID lcid, + [in] VARTYPE vtNew); +} + + +[ +object, +uuid(CA04B7E6-0D21-11d1-8CC5-00C04FC2B085), +pointer_default(unique) +] +interface IObjectIdentity : IUnknown +{ + HRESULT IsEqualObject( + [in] IUnknown *punk); +} diff --git a/reactos/include/psdk/docobj.h b/reactos/include/psdk/docobj.h deleted file mode 100644 index 43a72782dc2..00000000000 --- a/reactos/include/psdk/docobj.h +++ /dev/null @@ -1,148 +0,0 @@ -#ifndef _DOCOBJ_H -#define _DOCOBJ_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define OLECMDERR_E_UNKNOWNGROUP (-2147221244) -#define OLECMDERR_E_DISABLED (-2147221247) -#define OLECMDERR_E_NOHELP (-2147221246) -#define OLECMDERR_E_CANCELED (-2147221245) -#define OLECMDERR_E_NOTSUPPORTED (-2147221248) - -typedef enum { - OLECMDID_OPEN = 1, - OLECMDID_NEW = 2, - OLECMDID_SAVE = 3, - OLECMDID_SAVEAS = 4, - OLECMDID_SAVECOPYAS = 5, - OLECMDID_PRINT = 6, - OLECMDID_PRINTPREVIEW = 7, - OLECMDID_PAGESETUP = 8, - OLECMDID_SPELL = 9, - OLECMDID_PROPERTIES = 10, - OLECMDID_CUT = 11, - OLECMDID_COPY = 12, - OLECMDID_PASTE = 13, - OLECMDID_PASTESPECIAL = 14, - OLECMDID_UNDO = 15, - OLECMDID_REDO = 16, - OLECMDID_SELECTALL = 17, - OLECMDID_CLEARSELECTION = 18, - OLECMDID_ZOOM = 19, - OLECMDID_GETZOOMRANGE = 20, - OLECMDID_UPDATECOMMANDS = 21, - OLECMDID_REFRESH = 22, - OLECMDID_STOP = 23, - OLECMDID_HIDETOOLBARS = 24, - OLECMDID_SETPROGRESSMAX = 25, - OLECMDID_SETPROGRESSPOS = 26, - OLECMDID_SETPROGRESSTEXT = 27, - OLECMDID_SETTITLE = 28, - OLECMDID_SETDOWNLOADSTATE = 29, - OLECMDID_STOPDOWNLOAD = 30 -} OLECMDID; -typedef enum { - OLECMDF_SUPPORTED = 1, - OLECMDF_ENABLED = 2, - OLECMDF_LATCHED = 4, - OLECMDF_NINCHED = 8 -} OLECMDF; -typedef enum { - OLECMDEXECOPT_DODEFAULT = 0, - OLECMDEXECOPT_PROMPTUSER = 1, - OLECMDEXECOPT_DONTPROMPTUSER = 2, - OLECMDEXECOPT_SHOWHELP = 3 -} OLECMDEXECOPT; - -typedef struct _tagOLECMDTEXT { - DWORD cmdtextf; - ULONG cwActual; - ULONG cwBuf; - wchar_t rgwz[1]; -} OLECMDTEXT; -typedef struct _tagOLECMD { - ULONG cmdID; - DWORD cmdf; -} OLECMD; - -typedef interface IOleInPlaceSite *LPOLEINPLACESITE; -typedef interface IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS; - -EXTERN_C const IID IID_IContinueCallback; -EXTERN_C const IID IID_IEnumOleDocumentViews; -EXTERN_C const IID IID_IPrint; - -EXTERN_C const IID IID_IOleDocumentView; -#define INTERFACE IOleDocumentView -DECLARE_INTERFACE_(IOleDocumentView,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - STDMETHOD(SetInPlaceSite)(THIS_ LPOLEINPLACESITE) PURE; - STDMETHOD(GetInPlaceSite)(THIS_ LPOLEINPLACESITE*) PURE; - STDMETHOD(GetDocument)(THIS_ IUnknown*) PURE; - STDMETHOD(SetRect)(THIS_ LPRECT) PURE; - STDMETHOD(GetRect)(THIS_ LPRECT) PURE; - STDMETHOD(SetRectComplex)(THIS_ LPRECT,LPRECT,LPRECT,LPRECT) PURE; - STDMETHOD(Show)(THIS_ BOOL) PURE; - STDMETHOD(UIActivate)(THIS_ BOOL) PURE; - STDMETHOD(Open)(THIS) PURE; - STDMETHOD(Close)(THIS_ DWORD) PURE; - STDMETHOD(SaveViewState)(THIS_ IStream*) PURE; - STDMETHOD(ApplyViewState)(THIS_ IStream*) PURE; - STDMETHOD(Clone)(THIS_ LPOLEINPLACESITE,IOleDocumentView**) PURE; -}; -#undef INTERFACE - -DECLARE_ENUMERATOR_(IEnumOleDocumentViews,IOleDocumentView); - -EXTERN_C const IID IID_IOleDocument; -#define INTERFACE IOleDocument -DECLARE_INTERFACE_(IOleDocument,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - STDMETHOD(CreateView)(THIS_ LPOLEINPLACESITE,IStream*,DWORD,IOleDocumentView**) PURE; - STDMETHOD(GetDocMiscStatus)(THIS_ DWORD*) PURE; - STDMETHOD(EnumViews)(THIS_ LPENUMOLEDOCUMENTVIEWS*,IOleDocumentView**) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IOleCommandTarget; -#define INTERFACE IOleCommandTarget -DECLARE_INTERFACE_(IOleCommandTarget,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - STDMETHOD(QueryStatus)(THIS_ const GUID*,ULONG,OLECMD*,OLECMDTEXT*) PURE; - STDMETHOD(Exec)(THIS_ const GUID*,DWORD,DWORD,VARIANTARG*,VARIANTARG*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IOleDocumentSite; -#define INTERFACE IOleDocumentSite -DECLARE_INTERFACE_(IOleDocumentSite,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - STDMETHOD(ActivateMe)(THIS_ IOleDocumentView*) PURE; -}; -#undef INTERFACE - -#ifdef __cplusplus -} -#endif -#endif diff --git a/reactos/include/psdk/docobj.idl b/reactos/include/psdk/docobj.idl new file mode 100644 index 00000000000..efa2066eb00 --- /dev/null +++ b/reactos/include/psdk/docobj.idl @@ -0,0 +1,396 @@ +/* + * Copyright (C) 1999 Paul Quinn + * Copyright (C) 2003 Alexandre Julliard + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "ocidl.idl"; +import "objidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; +import "servprov.idl"; + + +interface IOleDocumentView; +interface IEnumOleDocumentViews; + + +/***************************************************************************** + * IOleDocument interface + */ +[ + object, + uuid(b722bcc5-4e68-101b-a2bc-00aa00404770), + pointer_default(unique) +] +interface IOleDocument : IUnknown +{ + typedef [unique] IOleDocument *LPOLEDOCUMENT; + + typedef enum + { + DOCMISC_CANCREATEMULTIPLEVIEWS = 1, + DOCMISC_SUPPORTCOMPLEXRECTANGLES = 2, + DOCMISC_CANTOPENEDIT = 4, + DOCMISC_NOFILESUPPORT = 8 + } DOCMISC; + + HRESULT CreateView( + [in, unique] IOleInPlaceSite *pIPSite, + [in, unique] IStream *pstm, + [in] DWORD dwReserved, + [out] IOleDocumentView **ppView); + + HRESULT GetDocMiscStatus( + [out] DWORD *pdwStatus); + + HRESULT EnumViews( + [out] IEnumOleDocumentViews **ppEnum, + [out] IOleDocumentView **ppView); +} + + +/***************************************************************************** + * IOleDocumentSite interface + */ +[ + object, + uuid(b722bcc7-4e68-101b-a2bc-00aa00404770), + pointer_default(unique) +] +interface IOleDocumentSite : IUnknown +{ + typedef [unique] IOleDocumentSite *LPOLEDOCUMENTSITE; + + HRESULT ActivateMe( [in] IOleDocumentView *pViewToActivate ); +} + + +/***************************************************************************** + * IOleDocumentView interface + */ +[ + object, + uuid(b722bcc6-4e68-101b-a2bc-00aa00404770), + pointer_default(unique) +] +interface IOleDocumentView : IUnknown +{ + typedef [unique] IOleDocumentView *LPOLEDOCUMENTVIEW; + + HRESULT SetInPlaceSite( [in, unique] IOleInPlaceSite *pIPSite ); + + HRESULT GetInPlaceSite( [out] IOleInPlaceSite **ppIPSite ); + + HRESULT GetDocument( [out] IUnknown **ppunk ); + + HRESULT SetRect( [in] LPRECT prcView ); + + HRESULT GetRect( [out] LPRECT prcView ); + + HRESULT SetRectComplex( + [in, unique] LPRECT prcView, + [in, unique] LPRECT prcHScroll, + [in, unique] LPRECT prcVScroll, + [in, unique] LPRECT prcSizeBox); + + HRESULT Show( [in] BOOL fShow ); + + HRESULT UIActivate( [in] BOOL fUIActivate ); + + HRESULT Open(); + + HRESULT CloseView( [in] DWORD dwReserved ); + + HRESULT SaveViewState( [in] LPSTREAM pstm ); + + HRESULT ApplyViewState( [in] LPSTREAM pstm ); + + HRESULT Clone( + [in] IOleInPlaceSite *pIPSiteNew, + [out] IOleDocumentView **ppViewNew); +} + + +/***************************************************************************** + * IEnumOleDocumentViews interface + */ +[ + object, + uuid(b722bcc8-4e68-101b-a2bc-00aa00404770), + pointer_default(unique) +] +interface IEnumOleDocumentViews : IUnknown +{ + typedef [unique] IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS; + + [local] + HRESULT Next( + [in] ULONG cViews, + [out] IOleDocumentView **rgpView, + [out] ULONG *pcFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG cViews, + [out, size_is(cViews), length_is(*pcFetched)] IOleDocumentView **rgpView, + [out] ULONG *pcFetched); + + HRESULT Skip( [in] ULONG cViews ); + + HRESULT Reset(); + + HRESULT Clone( [out] IEnumOleDocumentViews **ppEnum ); +} + + +/***************************************************************************** + * IOleCommandTarget interface + */ +[ + object, + uuid(b722bccb-4e68-101b-a2bc-00aa00404770), + pointer_default(unique) +] +interface IOleCommandTarget : IUnknown +{ + typedef [unique] IOleCommandTarget *LPOLECOMMANDTARGET; + + typedef enum OLECMDF + { + OLECMDF_SUPPORTED = 0x1, + OLECMDF_ENABLED = 0x2, + OLECMDF_LATCHED = 0x4, + OLECMDF_NINCHED = 0x8, + OLECMDF_INVISIBLE = 0x10, + OLECMDF_DEFHIDEONCTXTMENU = 0x20 + } OLECMDF; + + typedef struct _tagOLECMD + { + ULONG cmdID; + DWORD cmdf; + } OLECMD; + + typedef struct _tagOLECMDTEXT + { + DWORD cmdtextf; + ULONG cwActual; + ULONG cwBuf; + [size_is(cwBuf)] WCHAR rgwz[]; + } OLECMDTEXT; + + typedef enum OLECMDTEXTF + { + OLECMDTEXTF_NONE = 0, + OLECMDTEXTF_NAME = 1, + OLECMDTEXTF_STATUS = 2 + } OLECMDTEXTF; + + typedef enum OLECMDEXECOPT + { + OLECMDEXECOPT_DODEFAULT = 0, + OLECMDEXECOPT_PROMPTUSER = 1, + OLECMDEXECOPT_DONTPROMPTUSER = 2, + OLECMDEXECOPT_SHOWHELP = 3 + } OLECMDEXECOPT; + + typedef enum OLECMDID + { + OLECMDID_OPEN = 1, + OLECMDID_NEW = 2, + OLECMDID_SAVE = 3, + OLECMDID_SAVEAS = 4, + OLECMDID_SAVECOPYAS = 5, + OLECMDID_PRINT = 6, + OLECMDID_PRINTPREVIEW = 7, + OLECMDID_PAGESETUP = 8, + OLECMDID_SPELL = 9, + OLECMDID_PROPERTIES = 10, + OLECMDID_CUT = 11, + OLECMDID_COPY = 12, + OLECMDID_PASTE = 13, + OLECMDID_PASTESPECIAL = 14, + OLECMDID_UNDO = 15, + OLECMDID_REDO = 16, + OLECMDID_SELECTALL = 17, + OLECMDID_CLEARSELECTION = 18, + OLECMDID_ZOOM = 19, + OLECMDID_GETZOOMRANGE = 20, + OLECMDID_UPDATECOMMANDS = 21, + OLECMDID_REFRESH = 22, + OLECMDID_STOP = 23, + OLECMDID_HIDETOOLBARS = 24, + OLECMDID_SETPROGRESSMAX = 25, + OLECMDID_SETPROGRESSPOS = 26, + OLECMDID_SETPROGRESSTEXT = 27, + OLECMDID_SETTITLE = 28, + OLECMDID_SETDOWNLOADSTATE = 29, + OLECMDID_STOPDOWNLOAD = 30, + OLECMDID_ONTOOLBARACTIVATED = 31, + OLECMDID_FIND = 32, + OLECMDID_DELETE = 33, + OLECMDID_HTTPEQUIV = 34, + OLECMDID_HTTPEQUIV_DONE = 35, + OLECMDID_ENABLE_INTERACTION = 36, + OLECMDID_ONUNLOAD = 37, + OLECMDID_PROPERTYBAG2 = 38, + OLECMDID_PREREFRESH = 39, + /* iexplorer uses ... 44 */ + OLECMDID_SHOWSCRIPTERROR = 40, + OLECMDID_SHOWMESSAGE = 41, + OLECMDID_SHOWFIND = 42, + OLECMDID_SHOWPAGESETUP = 43, + OLECMDID_SHOWPRINT = 44, + OLECMDID_CLOSE = 45, + OLECMDID_ALLOWUILESSSAVEAS = 46, + OLECMDID_DONTDOWNLOADCSS = 47, + OLECMDID_UPDATEPAGESTATUS = 48, + OLECMDID_PRINT2 = 49, + OLECMDID_PRINTPREVIEW2 = 50, + OLECMDID_SETPRINTTEMPLATE = 51, + OLECMDID_GETPRINTTEMPLATE = 52 + } OLECMDID; + + HRESULT QueryStatus( + [in, unique] const GUID *pguidCmdGroup, + [in] ULONG cCmds, + [in, out, size_is(cCmds)] OLECMD prgCmds[], + [in, out, unique] OLECMDTEXT *pCmdText); + + HRESULT Exec( + [in, unique] const GUID *pguidCmdGroup, + [in] DWORD nCmdID, + [in] DWORD nCmdexecopt, + [in, unique] VARIANT *pvaIn, + [in, out, unique] VARIANT *pvaOut); +} + + +/***************************************************************************** + * IContinueCallback interface + */ +[ + object, + uuid(b722bcca-4e68-101b-a2bc-00aa00404770), + pointer_default(unique) +] +interface IContinueCallback : IUnknown +{ + typedef [unique] IContinueCallback *LPCONTINUECALLBACK; + + HRESULT FContinue(); + + HRESULT FContinuePrinting( + [in] LONG nCntPrinted, + [in] LONG nCurPage, + [in, unique] WCHAR *pwszPrintStatus); +} + + +/***************************************************************************** + * IPrint interface + */ +[ + object, + uuid(b722bcc9-4e68-101b-a2bc-00aa00404770), + pointer_default(unique) +] +interface IPrint : IUnknown +{ + typedef [unique] IPrint *LPPRINT; + + typedef enum + { + PRINTFLAG_MAYBOTHERUSER = 1, + PRINTFLAG_PROMPTUSER = 2, + PRINTFLAG_USERMAYCHANGEPRINTER = 4, + PRINTFLAG_RECOMPOSETODEVICE = 8, + PRINTFLAG_DONTACTUALLYPRINT = 16, + PRINTFLAG_FORCEPROPERTIES = 32, + PRINTFLAG_PRINTTOFILE = 64 + } PRINTFLAG; + + typedef struct tagPAGERANGE + { + LONG nFromPage; + LONG nToPage; + } PAGERANGE; + + typedef struct tagPAGESET + { + ULONG cbStruct; + BOOL fOddPages; + BOOL fEvenPages; + ULONG cPageRange; + [size_is(cPageRange)] PAGERANGE rgPages[]; + } PAGESET; + + HRESULT SetInitialPageNum( + [in] LONG nFirstPage); + + HRESULT GetPageInfo( + [out] LONG *pnFirstPage, + [out] LONG *pcPages); + + [local] + HRESULT Print( + [in] DWORD grfFlags, + [in, out] DVTARGETDEVICE **pptd, + [in, out] PAGESET **ppPageSet, + [in, out, unique] STGMEDIUM *pstgmOptions, + [in] IContinueCallback *pcallback, + [in] LONG nFirstPage, + [out] LONG *pcPagesPrinted, + [out] LONG *pnLastPage); + + [call_as(Print)] + HRESULT RemotePrint( + [in] DWORD grfFlags, + [in, out] DVTARGETDEVICE **pptd, + [in, out] PAGESET **pppageset, + [in, out, unique] RemSTGMEDIUM *pstgmOptions, + [in] IContinueCallback *pcallback, + [in] LONG nFirstPage, + [out] LONG *pcPagesPrinted, + [out] LONG *pnLastPage); +} + + +cpp_quote("#define OLECMDERR_E_FIRST (OLE_E_LAST+1)") +cpp_quote("#define OLECMDERR_E_NOTSUPPORTED (OLECMDERR_E_FIRST)") +cpp_quote("#define OLECMDERR_E_DISABLED (OLECMDERR_E_FIRST+1)") +cpp_quote("#define OLECMDERR_E_NOHELP (OLECMDERR_E_FIRST+2)") +cpp_quote("#define OLECMDERR_E_CANCELED (OLECMDERR_E_FIRST+3)") +cpp_quote("#define OLECMDERR_E_UNKNOWNGROUP (OLECMDERR_E_FIRST+4)") + +cpp_quote("#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST") +cpp_quote("#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED") +cpp_quote("#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED") +cpp_quote("#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP") +cpp_quote("#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED") +cpp_quote("#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP") + +cpp_quote("#define LPMSODOCUMENT LPOLEDOCUMENT") +cpp_quote("#define LPMSODOCUMENTSITE LPOLEDOCUMENTSITE") +cpp_quote("#define LPMSOVIEW LPOLEDOCUMENTVIEW") +cpp_quote("#define LPENUMMSOVIEW LPENUMOLEDOCUMENTVIEWS") +cpp_quote("#define LPMSOCOMMANDTARGET LPOLECOMMANDTARGET") +cpp_quote("#define IID_IMsoDocument IID_IOleDocument") +cpp_quote("#define IID_IMsoDocumentSite IID_IOleDocumentSite") +cpp_quote("#define IID_IMsoView IID_IOleDocumentView") +cpp_quote("#define IID_IEnumMsoView IID_IEnumOleDocumentViews") +cpp_quote("#define IID_IMsoCommandTarget IID_IOleCommandTarget") diff --git a/reactos/include/psdk/downloadmgr.h b/reactos/include/psdk/downloadmgr.h new file mode 100644 index 00000000000..4bbf3eee0d7 --- /dev/null +++ b/reactos/include/psdk/downloadmgr.h @@ -0,0 +1,115 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\downloadmgr.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_DOWNLOADMGR_H +#define __WIDL_INCLUDE_PSDK_DOWNLOADMGR_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#include +#include +#ifndef __IDownloadManager_FWD_DEFINED__ +#define __IDownloadManager_FWD_DEFINED__ +typedef interface IDownloadManager IDownloadManager; +#endif + +/***************************************************************************** + * IDownloadManager interface + */ +#ifndef __IDownloadManager_INTERFACE_DEFINED__ +#define __IDownloadManager_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IDownloadManager, 0x988934a4, 0x064b, 0x11d3, 0xbb,0x80, 0x00,0x10,0x4b,0x35,0xe7,0xf9); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IDownloadManager : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Download( + IMoniker* pmk, + IBindCtx* pbc, + DWORD dwBindVerb, + LONG grfBINDF, + BINDINFO* pBindInfo, + LPCOLESTR pszHeaders, + LPCOLESTR pszRedir, + UINT uiCP) = 0; + +}; +#else +typedef struct IDownloadManagerVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IDownloadManager* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IDownloadManager* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IDownloadManager* This); + + /*** IDownloadManager methods ***/ + HRESULT (STDMETHODCALLTYPE *Download)( + IDownloadManager* This, + IMoniker* pmk, + IBindCtx* pbc, + DWORD dwBindVerb, + LONG grfBINDF, + BINDINFO* pBindInfo, + LPCOLESTR pszHeaders, + LPCOLESTR pszRedir, + UINT uiCP); + + END_INTERFACE +} IDownloadManagerVtbl; +interface IDownloadManager { + const IDownloadManagerVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IDownloadManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDownloadManager_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDownloadManager_Release(p) (p)->lpVtbl->Release(p) +/*** IDownloadManager methods ***/ +#define IDownloadManager_Download(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Download(p,a,b,c,d,e,f,g,h) +#endif + +#endif + +HRESULT CALLBACK IDownloadManager_Download_Proxy( + IDownloadManager* This, + IMoniker* pmk, + IBindCtx* pbc, + DWORD dwBindVerb, + LONG grfBINDF, + BINDINFO* pBindInfo, + LPCOLESTR pszHeaders, + LPCOLESTR pszRedir, + UINT uiCP); +void __RPC_STUB IDownloadManager_Download_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IDownloadManager_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + +unsigned long __RPC_USER STGMEDIUM_UserSize (unsigned long *, unsigned long, STGMEDIUM *); +unsigned char * __RPC_USER STGMEDIUM_UserMarshal (unsigned long *, unsigned char *, STGMEDIUM *); +unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long *, unsigned char *, STGMEDIUM *); +void __RPC_USER STGMEDIUM_UserFree (unsigned long *, STGMEDIUM *); + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_DOWNLOADMGR_H */ diff --git a/reactos/include/psdk/downloadmgr.idl b/reactos/include/psdk/downloadmgr.idl new file mode 100644 index 00000000000..2ba6573834d --- /dev/null +++ b/reactos/include/psdk/downloadmgr.idl @@ -0,0 +1,43 @@ +/* + * Copyright 2005 Jacek Caban + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef DO_NO_IMPORTS +import "unknwn.idl"; +import "ocidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; +#endif + +[ + object, + uuid(988934A4-064B-11D3-BB80-00104B35E7F9), + pointer_default(unique), + local +] +interface IDownloadManager : IUnknown +{ + HRESULT Download( + [in] IMoniker *pmk, + [in] IBindCtx *pbc, + [in] DWORD dwBindVerb, + [in] LONG grfBINDF, + [in] BINDINFO *pBindInfo, + [in] LPCOLESTR pszHeaders, + [in] LPCOLESTR pszRedir, + [in] UINT uiCP); +} diff --git a/reactos/include/psdk/dyngraph.idl b/reactos/include/psdk/dyngraph.idl new file mode 100644 index 00000000000..7330cb914bc --- /dev/null +++ b/reactos/include/psdk/dyngraph.idl @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2002 Robert Shearman + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +interface IPinConnection; +interface IPinFlowControl; +interface IGraphConfig; +interface IGraphConfigCallback; + +[ + local, + object, + uuid(4a9a62d3-27d4-403d-91e9-89f540e55534), + pointer_default(unique) +] +interface IPinConnection : IUnknown +{ + HRESULT DynamicQueryAccept([in] const AM_MEDIA_TYPE *pmt); + + HRESULT NotifyEndOfStream([in] HANDLE hNotifyEvent); + + HRESULT IsEndPin(); + + HRESULT DynamicDisconnect(); +} + +[ + local, + object, + uuid(c56e9858-dbf3-4f6b-8119-384af2060deb), + pointer_default(unique) +] +interface IPinFlowControl : IUnknown +{ + HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent); +} + +enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS +{ + AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001, +}; + +typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS +{ + AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001, + AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002, + AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004 +} AM_GRAPH_CONFIG_RECONNECT_FLAGS; + +enum _REM_FILTER_FLAGS +{ + REMFILTERF_LEAVECONNECTED = 0x00000001 +}; + +typedef enum _AM_FILTER_FLAGS +{ + AM_FILTER_FLAGS_REMOVABLE = 0x00000001 +} AM_FILTER_FLAGS; + +[ + local, + object, + uuid(03A1EB8E-32BF-4245-8502-114D08A9CB88), + pointer_default(unique) +] +interface IGraphConfig : IUnknown +{ + HRESULT Reconnect( + [in] IPin *pOutputPin, + [in] IPin *pInputPin, + [in] const AM_MEDIA_TYPE *pmtFirstConnection, + [in] IBaseFilter *pUsingFilter, + [in] HANDLE hAbortEvent, + [in] DWORD dwFlags); + + HRESULT Reconfigure( + [in] IGraphConfigCallback *pCallback, + [in] PVOID pvContext, + [in] DWORD dwFlags, + [in] HANDLE hAbortEvent); + + HRESULT AddFilterToCache([in] IBaseFilter *pFilter); + + HRESULT EnumCacheFilter([out] IEnumFilters **pEnum); + + HRESULT RemoveFilterFromCache([in]IBaseFilter *pFilter); + + HRESULT GetStartTime([out] REFERENCE_TIME *prtStart); + + HRESULT PushThroughData( + [in] IPin *pOutputPin, + [in] IPinConnection *pConnection, + [in] HANDLE hEventAbort); + + HRESULT SetFilterFlags([in] IBaseFilter *pFilter, [in] DWORD dwFlags); + + HRESULT GetFilterFlags([in] IBaseFilter *pFilter, [out] DWORD *pdwFlags); + + HRESULT RemoveFilterEx([in] IBaseFilter *pFilter, DWORD Flags); +} + +[ + local, + object, + uuid(ade0fd60-d19d-11d2-abf6-00a0c905f375), + pointer_default(unique) +] +interface IGraphConfigCallback : IUnknown +{ + HRESULT Reconfigure(PVOID pvContext, DWORD dwFlags); +} + +[ + local, + object, + uuid(DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29), + pointer_default(unique) +] +interface IFilterChain : IUnknown +{ + HRESULT StartChain( + [in] IBaseFilter *pStartFilter, + [in] IBaseFilter *pEndFilter); + + HRESULT PauseChain( + [in] IBaseFilter *pStartFilter, + [in] IBaseFilter *pEndFilter); + + HRESULT StopChain( + [in] IBaseFilter *pStartFilter, + [in] IBaseFilter *pEndFilter); + + HRESULT RemoveChain( + [in] IBaseFilter *pStartFilter, + [in] IBaseFilter *pEndFilter); +} diff --git a/reactos/include/psdk/exdisp.h b/reactos/include/psdk/exdisp.h deleted file mode 100644 index 0656c063b82..00000000000 --- a/reactos/include/psdk/exdisp.h +++ /dev/null @@ -1,257 +0,0 @@ -#ifndef _EXDISP_H -#define _EXDISP_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include - -EXTERN_C const CLSID CLSID_WebBrowser; -EXTERN_C const IID DIID_DWebBrowserEvents; - -typedef enum { - navOpenInNewWindow = 0x1, - navNoHistory = 0x2, - navNoReadFromCache = 0x4, - navNoWriteTocache = 0x8, - navAllowAutosearch = 0x10, - navBrowserBar = 0x20, - navHyperLink = 0x40 -} BrowserNavConstants; - -EXTERN_C const IID IID_IWebBrowser; -#define INTERFACE IWebBrowser -DECLARE_INTERFACE_(IWebBrowser,IDispatch) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; - STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; - - STDMETHOD(GoBack)(THIS) PURE; - STDMETHOD(GoForward)(THIS) PURE; - STDMETHOD(GoHome)(THIS) PURE; - STDMETHOD(GoSearch)(THIS) PURE; - STDMETHOD(Navigate)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE; - STDMETHOD(Refresh)(THIS) PURE; - STDMETHOD(Refresh2)(THIS_ VARIANT*) PURE; - STDMETHOD(Stop)(THIS) PURE; - STDMETHOD(get_Application)(THIS_ IDispatch**) PURE; - STDMETHOD(get_Parent)(THIS_ IDispatch**) PURE; - STDMETHOD(get_Container)(THIS_ IDispatch**) PURE; - STDMETHOD(get_Document)(THIS_ IDispatch**) PURE; - STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(get_Type)(THIS_ BSTR*) PURE; - STDMETHOD(get_Left)(THIS_ long*) PURE; - STDMETHOD(put_Left)(THIS_ long) PURE; - STDMETHOD(get_Top)(THIS_ long*) PURE; - STDMETHOD(put_Top)(THIS_ long) PURE; - STDMETHOD(get_Width)(THIS_ long*) PURE; - STDMETHOD(put_Width)(THIS_ long) PURE; - STDMETHOD(get_Height)(THIS_ long*) PURE; - STDMETHOD(put_Height)(THIS_ long) PURE; - STDMETHOD(get_LocationName)(THIS_ BSTR*) PURE; - STDMETHOD(get_LocationURL)(THIS_ BSTR*) PURE; - STDMETHOD(get_Busy)(THIS_ VARIANT_BOOL*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IWebBrowserApp; -#define INTERFACE IWebBrowserApp -DECLARE_INTERFACE_(IWebBrowserApp,IWebBrowser) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; - STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; - - STDMETHOD(GoBack)(THIS) PURE; - STDMETHOD(GoForward)(THIS) PURE; - STDMETHOD(GoHome)(THIS) PURE; - STDMETHOD(GoSearch)(THIS) PURE; - STDMETHOD(Navigate)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE; - STDMETHOD(Refresh)(THIS) PURE; - STDMETHOD(Refresh2)(THIS_ VARIANT*) PURE; - STDMETHOD(Stop)(THIS) PURE; - STDMETHOD(get_Application)(THIS_ IDispatch**) PURE; - STDMETHOD(get_Parent)(THIS_ IDispatch**) PURE; - STDMETHOD(get_Container)(THIS_ IDispatch**) PURE; - STDMETHOD(get_Document)(THIS_ IDispatch**) PURE; - STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(get_Type)(THIS_ BSTR*) PURE; - STDMETHOD(get_Left)(THIS_ long*) PURE; - STDMETHOD(put_Left)(THIS_ long) PURE; - STDMETHOD(get_Top)(THIS_ long*) PURE; - STDMETHOD(put_Top)(THIS_ long) PURE; - STDMETHOD(get_Width)(THIS_ long*) PURE; - STDMETHOD(put_Width)(THIS_ long) PURE; - STDMETHOD(get_Height)(THIS_ long*) PURE; - STDMETHOD(put_Height)(THIS_ long) PURE; - STDMETHOD(get_LocationName)(THIS_ BSTR*) PURE; - STDMETHOD(get_LocationURL)(THIS_ BSTR*) PURE; - STDMETHOD(get_Busy)(THIS_ VARIANT_BOOL*) PURE; - - STDMETHOD(Quit)(THIS) PURE; - STDMETHOD(ClientToWindow)(THIS_ int*,int*) PURE; - STDMETHOD(PutProperty)(THIS_ BSTR,VARIANT) PURE; - STDMETHOD(GetProperty)(THIS_ BSTR,VARIANT*) PURE; - STDMETHOD(get_Name)(THIS_ BSTR*) PURE; - STDMETHOD(get_HWND)(THIS_ long*) PURE; - STDMETHOD(get_FullName)(THIS_ BSTR*) PURE; - STDMETHOD(get_Path)(THIS_ BSTR*) PURE; - STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_StatusBar)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_StatusBar)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_StatusText)(THIS_ BSTR*) PURE; - STDMETHOD(put_StatusText)(THIS_ BSTR) PURE; - STDMETHOD(get_ToolBar)(THIS_ int*) PURE; - STDMETHOD(put_ToolBar)(THIS_ int) PURE; - STDMETHOD(get_MenuBar)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_MenuBar)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_FullScreen)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_FullScreen)(THIS_ VARIANT_BOOL) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IWebBrowser2; -#define INTERFACE IWebBrowser2 -DECLARE_INTERFACE_(IWebBrowser2,IWebBrowserApp) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; - STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; - - STDMETHOD(GoBack)(THIS) PURE; - STDMETHOD(GoForward)(THIS) PURE; - STDMETHOD(GoHome)(THIS) PURE; - STDMETHOD(GoSearch)(THIS) PURE; - STDMETHOD(Navigate)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE; - STDMETHOD(Refresh)(THIS) PURE; - STDMETHOD(Refresh2)(THIS_ VARIANT*) PURE; - STDMETHOD(Stop)(THIS) PURE; - STDMETHOD(get_Application)(THIS_ IDispatch**) PURE; - STDMETHOD(get_Parent)(THIS_ IDispatch**) PURE; - STDMETHOD(get_Container)(THIS_ IDispatch**) PURE; - STDMETHOD(get_Document)(THIS_ IDispatch**) PURE; - STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(get_Type)(THIS_ BSTR*) PURE; - STDMETHOD(get_Left)(THIS_ long*) PURE; - STDMETHOD(put_Left)(THIS_ long) PURE; - STDMETHOD(get_Top)(THIS_ long*) PURE; - STDMETHOD(put_Top)(THIS_ long) PURE; - STDMETHOD(get_Width)(THIS_ long*) PURE; - STDMETHOD(put_Width)(THIS_ long) PURE; - STDMETHOD(get_Height)(THIS_ long*) PURE; - STDMETHOD(put_Height)(THIS_ long) PURE; - STDMETHOD(get_LocationName)(THIS_ BSTR*) PURE; - STDMETHOD(get_LocationURL)(THIS_ BSTR*) PURE; - STDMETHOD(get_Busy)(THIS_ VARIANT_BOOL*) PURE; - - STDMETHOD(Quit)(THIS) PURE; - STDMETHOD(ClientToWindow)(THIS_ int*,int*) PURE; - STDMETHOD(PutProperty)(THIS_ BSTR,VARIANT) PURE; - STDMETHOD(GetProperty)(THIS_ BSTR,VARIANT*) PURE; - STDMETHOD(get_Name)(THIS_ BSTR*) PURE; - STDMETHOD(get_HWND)(THIS_ long*) PURE; - STDMETHOD(get_FullName)(THIS_ BSTR*) PURE; - STDMETHOD(get_Path)(THIS_ BSTR*) PURE; - STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_StatusBar)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_StatusBar)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_StatusText)(THIS_ BSTR*) PURE; - STDMETHOD(put_StatusText)(THIS_ BSTR) PURE; - STDMETHOD(get_ToolBar)(THIS_ int*) PURE; - STDMETHOD(put_ToolBar)(THIS_ int) PURE; - STDMETHOD(get_MenuBar)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_MenuBar)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_FullScreen)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_FullScreen)(THIS_ VARIANT_BOOL) PURE; - - STDMETHOD(Navigate2)(THIS_ VARIANT*,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE; - STDMETHOD(QueryStatusWB)(THIS_ OLECMDID,OLECMDF*) PURE; - STDMETHOD(ExecWB)(THIS_ OLECMDID,OLECMDEXECOPT,VARIANT*,VARIANT*) PURE; - STDMETHOD(ShowBrowserBar)(THIS_ VARIANT*,VARIANT*,VARIANT*) PURE; - STDMETHOD(get_ReadyState)(THIS_ READYSTATE*) PURE; - STDMETHOD(get_Offline)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_Offline)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_Silent)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_Silent)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_RegistaerAsBrowser)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_RegisterAsBrowser)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_RegistaerAsDropTarget)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_RegisterAsDropTarget)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_TheaterMode)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_TheaterMode)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_AddressBar)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_AddressBar)(THIS_ VARIANT_BOOL) PURE; - STDMETHOD(get_Resizable)(THIS_ VARIANT_BOOL*) PURE; - STDMETHOD(put_Resizable)(THIS_ VARIANT_BOOL) PURE; -}; -#undef INTERFACE - -#define STDDISP(m) STDMETHOD_(void,m) - -EXTERN_C const IID DIID_DWebBrowserEvents2; -#define INTERFACE DWebBrowserEvents2 -DECLARE_INTERFACE_(DWebBrowserEvents2,IDispatch) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; - STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; - - STDDISP(StatusTextChange)(THIS_ BSTR) PURE; - STDDISP(ProgressChange)(THIS_ long,long) PURE; - STDDISP(CommandStateChange)(THIS_ long,VARIANT_BOOL) PURE; - STDDISP(DownloadBegin)(THIS) PURE; - STDDISP(DownloadComplete)(THIS) PURE; - STDDISP(TitleChange)(THIS_ BSTR) PURE; - STDDISP(PropertyChange)(THIS_ BSTR) PURE; - STDDISP(BeforeNavigate2)(THIS_ IDispatch*,VARIANT*,VARIANT*,VARIANT*,VARIANT*,VARIANT*,VARIANT_BOOL*) PURE; - STDDISP(NewWindow2)(THIS_ IDispatch**,VARIANT_BOOL*) PURE; - STDDISP(NavigateComplete)(THIS_ IDispatch*,VARIANT*) PURE; - STDDISP(DocumentComplete)(THIS_ IDispatch*,VARIANT*) PURE; - STDDISP(OnQuit)(THIS) PURE; - STDDISP(OnVisible)(THIS_ VARIANT_BOOL) PURE; - STDDISP(OnToolBar)(THIS_ VARIANT_BOOL) PURE; - STDDISP(OnMenuBar)(THIS_ VARIANT_BOOL) PURE; - STDDISP(OnStatusBar)(THIS_ VARIANT_BOOL) PURE; - STDDISP(OnFullScreen)(THIS_ VARIANT_BOOL) PURE; - STDDISP(OnTheaterMode)(THIS_ VARIANT_BOOL) PURE; - STDDISP(WindowSetResizable)(THIS_ VARIANT_BOOL) PURE; - STDDISP(WindowSetLeft)(THIS_ long) PURE; - STDDISP(WindowSetTop)(THIS_ long) PURE; - STDDISP(WindowSetWidth)(THIS_ long) PURE; - STDDISP(WindowSetHeight)(THIS_ long) PURE; - STDDISP(WindowClosing)(THIS_ VARIANT_BOOL,VARIANT_BOOL*) PURE; - STDDISP(ClientToHostWindow)(THIS_ long*,long*) PURE; - STDDISP(SetSecureLockIcon)(THIS_ long) PURE; - STDDISP(FileDownload)(THIS_ VARIANT_BOOL*) PURE; -}; -#undef INTERFACE - -#undef STDDISP - -#ifdef __cplusplus -} -#endif -#endif diff --git a/reactos/include/psdk/exdisp.idl b/reactos/include/psdk/exdisp.idl new file mode 100644 index 00000000000..4e0740075b2 --- /dev/null +++ b/reactos/include/psdk/exdisp.idl @@ -0,0 +1,907 @@ +/* + * Defines the COM interfaces and APIs related to the IE Web browser + * + * Copyright (C) 2001 John R. Sheets (for CodeWeavers) + * Copyright (C) 2003 Alexandre Julliard + * Copuright (C) 2004 Jacek Caban + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "ocidl.idl"; +import "docobj.idl"; + +#include +#include + +/***************************************************************************** + * SHDocVw library + */ +[ + uuid(EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B), + version(1.1), + helpstring("Microsoft Internet Controls") +] +library SHDocVw +{ + +importlib("stdole2.tlb"); + + +/***************************************************************************** + * IWebBrowser interface + */ +[ + object, + oleautomation, + uuid(eab22ac1-30c1-11cf-a7eb-0000c05bae0b), + hidden, + dual +] +interface IWebBrowser : IDispatch +{ + typedef enum BrowserNavConstants + { + navOpenInNewWindow = 0x1, + navNoHistory = 0x2, + navNoReadFromCache = 0x4, + navNoWriteToCache = 0x8, + navAllowAutosearch = 0x10, + navBrowserBar = 0x20, + navHyperlink = 0x40, + navEnforceRestricted = 0x80 + } BrowserNavConstants; + + typedef enum RefreshConstants + { + REFRESH_NORMAL = 0, + REFRESH_IFEXPIRED = 1, + REFRESH_COMPLETELY = 3 + } RefreshConstants; + + [id(100)] HRESULT GoBack(); + [id(101)] HRESULT GoForward(); + [id(102)] HRESULT GoHome(); + [id(103)] HRESULT GoSearch(); + + [id(104)] + HRESULT Navigate( + [in] BSTR URL, + [in, optional] VARIANT *Flags, + [in, optional] VARIANT *TargetFrameName, + [in, optional] VARIANT *PostData, + [in, optional] VARIANT *Headers); + + [id(DISPID_REFRESH)] HRESULT Refresh(); + [id(105)] HRESULT Refresh2([in, optional] VARIANT *Level); + [id(106)] HRESULT Stop(); + [id(200), propget] HRESULT Application([out, retval] IDispatch** ppDisp); + [id(201), propget] HRESULT Parent([out, retval] IDispatch** ppDisp); + [id(202), propget] HRESULT Container([out, retval] IDispatch** ppDisp); + [id(203), propget] HRESULT Document([out, retval] IDispatch** ppDisp); + [id(204), propget] HRESULT TopLevelContainer([out, retval] VARIANT_BOOL* pBool); + [id(205), propget] HRESULT Type([out, retval] BSTR* Type); + [id(206), propget] HRESULT Left([out, retval] long *pl); + [id(206), propput] HRESULT Left([in] long Left); + [id(207), propget] HRESULT Top([out, retval] long *pl); + [id(207), propput] HRESULT Top([in] long Top); + [id(208), propget] HRESULT Width([out, retval] long *pl); + [id(208), propput] HRESULT Width([in] long Width); + [id(209), propget] HRESULT Height([out, retval] long *pl); + [id(209), propput] HRESULT Height([in] long Height); + [id(210), propget] HRESULT LocationName([out, retval] BSTR *LocationName); + [id(211), propget] HRESULT LocationURL([out, retval] BSTR *LocationURL); + [id(212), propget] HRESULT Busy([out, retval] VARIANT_BOOL *pBool); +} + +/***************************************************************************** + * DWebBrowserEvents dispinterface + */ +[ + uuid(eab22ac2-30c1-11CF-a7eb-0000C05bae0b), + hidden +] +dispinterface DWebBrowserEvents +{ + properties: + methods: + [id(DISPID_BEFORENAVIGATE)] + void BeforeNavigate( + [in] BSTR URL, + long Flags, + BSTR TargetFrameName, + VARIANT *PostData, + BSTR Headers, + [in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_NAVIGATECOMPLETE)] + void NavigateComplete([in] BSTR URL); + + [id(DISPID_STATUSTEXTCHANGE)] + void StatusTextChange([in] BSTR Text); + + [id(DISPID_PROGRESSCHANGE)] + void ProgressChange([in] long Progress, [in] long ProgressMax); + + [id(DISPID_DOWNLOADCOMPLETE)] + void DownloadComplete(); + + [id(DISPID_COMMANDSTATECHANGE)] + void CommandStateChange([in] long Command, [in]VARIANT_BOOL Enable); + + [id(DISPID_DOWNLOADBEGIN)] + void DownloadBegin(); + + [id(DISPID_NEWWINDOW)] + void NewWindow( + [in] BSTR URL, + [in] long Flags, + [in] BSTR TargetFrameName, + [in] VARIANT *PostData, + [in] BSTR Headers, + [in,out] VARIANT_BOOL *Processed); + + [id(DISPID_TITLECHANGE)] + void TitleChange([in] BSTR Text); + + [id(DISPID_FRAMEBEFORENAVIGATE)] + void FrameBeforeNavigate( + [in] BSTR URL, + long Flags, + BSTR TargetFrameName, + VARIANT *PostData, + BSTR Headers, + [in, out]VARIANT_BOOL *Cancel); + + [id(DISPID_FRAMENAVIGATECOMPLETE)] + void FrameNavigateComplete([in] BSTR URL); + + [id(DISPID_FRAMENEWWINDOW)] + void FrameNewWindow( + [in] BSTR URL, + [in] long Flags, + [in] BSTR TargetFrameName, + [in] VARIANT *PostData, + [in] BSTR Headers, + [in,out] VARIANT_BOOL *Processed); + + [id(DISPID_QUIT)] + void Quit([in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_WINDOWMOVE)] + void WindowMove(); + + [id(DISPID_WINDOWRESIZE)] + void WindowResize(); + + [id(DISPID_WINDOWACTIVATE)] + void WindowActivate(); + + [id(DISPID_PROPERTYCHANGE)] + void PropertyChange([in] BSTR Property); +} + +typedef +[ + uuid(34a226e0-df30-11cf-89a9-00a0c9054129) +] +enum CommandStateChangeConstants { + CSC_UPDATECOMMANDS = -1, + CSC_NAVIGATEFORWARD = 1, + CSC_NAVIGATEBACK = 2 +} CommandStateChangeConstants; + +/***************************************************************************** + * IWebBrowserApp interface + */ +[ + object, + oleautomation, + uuid(0002df05-0000-0000-c000-000000000046), + hidden, + dual +] +interface IWebBrowserApp : IWebBrowser +{ + [id(300)] HRESULT Quit(); + [id(301)] HRESULT ClientToWindow([in,out] int* pcx, [in,out] int* pcy); + [id(302)] HRESULT PutProperty([in] BSTR Property, [in] VARIANT vtValue); + [id(303)] HRESULT GetProperty([in] BSTR Property, [out, retval] VARIANT *pvtValue); + [id(0), propget] HRESULT Name([out, retval] BSTR* Name); + [id(DISPID_HWND), propget] HRESULT HWND([out, retval] long *pHWND); + [id(400), propget] HRESULT FullName([out, retval] BSTR* FullName); + [id(401), propget] HRESULT Path([out, retval] BSTR* Path); + [id(402), propget] HRESULT Visible([out, retval] VARIANT_BOOL* pBool); + [id(402), propput] HRESULT Visible([in] VARIANT_BOOL Value); + [id(403), propget] HRESULT StatusBar([out, retval] VARIANT_BOOL* pBool); + [id(403), propput] HRESULT StatusBar([in] VARIANT_BOOL Value); + [id(404), propget] HRESULT StatusText([out, retval] BSTR *StatusText); + [id(404), propput] HRESULT StatusText([in] BSTR StatusText); + [id(405), propget] HRESULT ToolBar([out, retval] int * Value); + [id(405), propput] HRESULT ToolBar([in] int Value); + [id(406), propget] HRESULT MenuBar([out, retval] VARIANT_BOOL *Value); + [id(406), propput] HRESULT MenuBar([in] VARIANT_BOOL Value); + [id(407), propget] HRESULT FullScreen([out, retval] VARIANT_BOOL *pbFullScreen); + [id(407), propput] HRESULT FullScreen([in] VARIANT_BOOL bFullScreen); +} + +/***************************************************************************** + * IWebBrowser2 interface + */ +[ + object, + oleautomation, + uuid(d30c1661-cdaf-11d0-8a3e-00c04fc9e26e), + hidden, + dual +] +interface IWebBrowser2 : IWebBrowserApp +{ + [id(500)] HRESULT Navigate2( + [in] VARIANT *URL, + [in, optional] VARIANT *Flags, + [in, optional] VARIANT *TargetFrameName, + [in, optional] VARIANT *PostData, + [in, optional] VARIANT *Headers); + + [id(501)] HRESULT QueryStatusWB( + [in] OLECMDID cmdID, + [out, retval] OLECMDF *pcmdf); + + [id(502)] HRESULT ExecWB( + [in] OLECMDID cmdID, + [in] OLECMDEXECOPT cmdexecopt, + [in, optional] VARIANT *pvaIn, + [out, in, optional] VARIANT *pvaOut); + + [id(503)] HRESULT ShowBrowserBar( + [in] VARIANT *pvaClsid, + [in, optional] VARIANT *pvarShow, + [in, optional] VARIANT *pvarSize); + + [id(DISPID_READYSTATE), propget, bindable] + HRESULT ReadyState([out, retval] READYSTATE *plReadyState); + + [id(550), propget] HRESULT Offline([out, retval] VARIANT_BOOL *pbOffline); + [id(550), propput] HRESULT Offline([in] VARIANT_BOOL bOffline); + [id(551), propget] HRESULT Silent([out, retval] VARIANT_BOOL *pbSilent); + [id(551), propput] HRESULT Silent([in] VARIANT_BOOL bSilent); + [id(552), propget] HRESULT RegisterAsBrowser([out, retval] VARIANT_BOOL *pbRegister); + [id(552), propput] HRESULT RegisterAsBrowser([in] VARIANT_BOOL bRegister); + [id(553), propget] HRESULT RegisterAsDropTarget([out, retval] VARIANT_BOOL *pbRegister); + [id(553), propput] HRESULT RegisterAsDropTarget([in] VARIANT_BOOL bRegister); + [id(554), propget] HRESULT TheaterMode([out, retval] VARIANT_BOOL *pbRegister); + [id(554), propput] HRESULT TheaterMode([in] VARIANT_BOOL bRegister); + [id(555), propget] HRESULT AddressBar([out, retval] VARIANT_BOOL *Value); + [id(555), propput] HRESULT AddressBar([in] VARIANT_BOOL Value); + [id(556), propget] HRESULT Resizable([out, retval] VARIANT_BOOL *Value); + [id(556), propput] HRESULT Resizable([in] VARIANT_BOOL Value); +} + +typedef +[ + uuid(65507be0-91a8-11d3-a845-009027220e6d) +] +enum SecureLockIconConstants { + secureLockIconUnsecure = 0, + secureLockIconMixed = 1, + secureLockIconSecureUnknownBits = 2, + secureLockIconSecure40Bit = 3, + secureLockIconSecure56Bit = 4, + secureLockIconSecureFortezza = 5, + secureLockIconSecure128Bit = 6 +} SecureLockIconConstants; + +/***************************************************************************** + * DWebBrowserEvents2 dispinterface + */ +[ + uuid(34a715a0-6587-11d0-924a-0020afc7ac4d), + hidden +] +dispinterface DWebBrowserEvents2 +{ + properties: + methods: + [id(DISPID_STATUSTEXTCHANGE)] + void StatusTextChange([in] BSTR Text); + + [id(DISPID_PROGRESSCHANGE)] + void ProgressChange([in] long Progress, [in] long ProgressMax); + + [id(DISPID_COMMANDSTATECHANGE)] + void CommandStateChange([in] long Command, [in] VARIANT_BOOL Enable); + + [id(DISPID_DOWNLOADBEGIN)] + void DownloadBegin(); + + [id(DISPID_DOWNLOADCOMPLETE)] + void DownloadComplete(); + + [id(DISPID_TITLECHANGE)] + void TitleChange([in] BSTR Text); + + [id(DISPID_PROPERTYCHANGE)] + void PropertyChange([in] BSTR szProperty); + + [id(DISPID_BEFORENAVIGATE2)] + void BeforeNavigate2( + [in] IDispatch *pDisp, + [in] VARIANT *URL, + [in] VARIANT *Flags, + [in] VARIANT *TargetFrameName, + [in] VARIANT *PostData, + [in] VARIANT *Headers, + [in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_NEWWINDOW2)] + void NewWindow2([in, out] IDispatch **ppDisp, [in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_NAVIGATECOMPLETE2)] + void NavigateComplete2([in] IDispatch *pDisp, [in] VARIANT *URL); + + [id(DISPID_DOCUMENTCOMPLETE)] + void DocumentComplete([in] IDispatch *pDisp, [in] VARIANT *URL); + + [id(DISPID_ONQUIT)] + void OnQuit(); + + [id(DISPID_ONVISIBLE)] + void OnVisible([in] VARIANT_BOOL Visible); + + [id(DISPID_ONTOOLBAR)] + void OnToolBar([in] VARIANT_BOOL ToolBar); + + [id(DISPID_ONMENUBAR)] + void OnMenuBar([in] VARIANT_BOOL MenuBar); + + [id(DISPID_ONSTATUSBAR)] + void OnStatusBar([in] VARIANT_BOOL StatusBar); + + [id(DISPID_ONFULLSCREEN)] + void OnFullScreen([in] VARIANT_BOOL FullScreen); + + [id(DISPID_ONTHEATERMODE)] + void OnTheaterMode([in] VARIANT_BOOL TheaterMode); + + [id(DISPID_WINDOWSETRESIZABLE)] + void WindowSetResizable([in] VARIANT_BOOL Resizable); + + [id(DISPID_WINDOWSETLEFT)] + void WindowSetLeft([in] long Left); + + [id(DISPID_WINDOWSETTOP)] + void WindowSetTop([in] long Top); + + [id(DISPID_WINDOWSETWIDTH)] + void WindowSetWidth([in] long Width); + + [id(DISPID_WINDOWSETHEIGHT)] + void WindowSetHeight([in] long Height); + + [id(DISPID_WINDOWCLOSING)] + void WindowClosing( + [in] VARIANT_BOOL IsChildWindow, + [in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_CLIENTTOHOSTWINDOW)] + void ClientToHostWindow( + [in, out] long *CX, + [in, out] long *CY); + + [id(DISPID_SETSECURELOCKICON)] + void SetSecureLockIcon([in] long SecureLockIcon); + + [id(DISPID_FILEDOWNLOAD)] + void FileDownload([in, out] VARIANT_BOOL* Cancel); + + [id(DISPID_NAVIGATEERROR)] + void NavigateError( + [in] IDispatch *pDisp, + [in] VARIANT *URL, + [in] VARIANT *Frame, + [in] VARIANT *StatusCode, + [in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_PRINTTEMPLATEINSTANTIATION)] + void PrintTemplateInstantiation([in] IDispatch *pDisp); + + [id(DISPID_PRINTTEMPLATETEARDOWN)] + void PrintTemplateTeardown([in] IDispatch *pDisp); + + [id(DISPID_UPDATEPAGESTATUS)] + void UpdatePageStatus( + [in] IDispatch *pDisp, + [in] VARIANT *nPage, + [in] VARIANT *fDone); + + [id(DISPID_PRIVACYIMPACTEDSTATECHANGE)] + void PrivacyImpactedStateChange([in] VARIANT_BOOL bImpacted); +} + +[ + uuid(eab22ac3-30c1-11cf-a7eb-0000c05bae0b), + control +] +coclass WebBrowser_V1 +{ + interface IWebBrowser2; + [default] interface IWebBrowser; + [source] dispinterface DWebBrowserEvents2; + [default, source] dispinterface DWebBrowserEvents; +} + +[ + uuid(8856f961-340a-11d0-a96b-00c04fd705a2), + control +] +coclass WebBrowser +{ + [default] interface IWebBrowser2; + interface IWebBrowser; + [default, source] dispinterface DWebBrowserEvents2; + [source] dispinterface DWebBrowserEvents; +} + +[ + uuid(0002df01-0000-0000-c000-000000000046) +] +coclass InternetExplorer +{ + [default] interface IWebBrowser2; + interface IWebBrowserApp; + [default, source] dispinterface DWebBrowserEvents2; + [source] dispinterface DWebBrowserEvents; +} + +[ + uuid(C08AFD90-F2A1-11D1-8455-00A0C91F3880), + hidden +] +coclass ShellBrowserWindow +{ + [default] interface IWebBrowser2; + interface IWebBrowserApp; + [default, source] dispinterface DWebBrowserEvents2; + [source] dispinterface DWebBrowserEvents; +} + +typedef +[ + uuid(f41e6981-28e5-11d0-82b4-00a0c90c29c5) +] +enum ShellWindowTypeConstants { + SWC_EXPLORER = 0, + SWC_BROWSER = 1, + SWC_3RDPARTY = 2, + SWC_CALLBACK = 4 +} ShellWindowTypeConstants; + +typedef +[ + uuid(7716a370-38Ca-11d0-a48B-00a0c90a8f39) +] +enum ShellWindowFindWindowOptions { + SWFO_NEEDDISPATCH = 1, + SWFO_INCLUDEPENDING = 2, + SWFO_COOKIEPASSED = 4 +} ShellWindowFindWindowOptions; + +[ + uuid(FE4106E0-399A-11D0-A48C-00A0C90A8F39) +] +dispinterface DShellWindowsEvents { + properties: + methods: + [id(DISPID_WINDOWREGISTERED)] + void WindowRegistered([in] long lCookie); + + [id(DISPID_WINDOWREVOKED)] + void WindowRevoked([in] long lCookie); +} + +[ + object, + oleautomation, + uuid(85cb6900-4d95-11cf-960c-0080c7f4ee85), + dual +] +interface IShellWindows : IDispatch +{ + [propget] HRESULT Count([out, retval] long *Count); + + [id(0)] HRESULT Item( + [in, optional] VARIANT index, + [out, retval] IDispatch **Folder); + + [id(-4)] HRESULT _NewEnum([out, retval] IUnknown **ppunk); + + [hidden] HRESULT Register( + [in] IDispatch *pid, + [in] long hWnd, + [in] int swClass, + [out] long *plCookie); + + [hidden] HRESULT RegisterPending( + [in] long lThreadId, + [in] VARIANT *pvarloc, + [in] VARIANT *pvarlocRoot, + [in] int swClass, + [out] long *plCookie); + + [hidden] HRESULT Revoke([in] long lCookie); + [hidden] HRESULT OnNavigate([in] long lCookie, [in] VARIANT *pvarLoc); + [hidden] HRESULT OnActivated([in] long lCookie, [in] VARIANT_BOOL fActive); + [hidden] HRESULT FindWindowSW( + [in] VARIANT *pvarLoc, + [in] VARIANT *pvarLocRoot, + [in] int swClass, + [out] long *phwnd, + [in] int swfwOptions, + [out, retval] IDispatch **ppdispOut); + + [hidden] HRESULT OnCreated([in] long lCookie, [in] IUnknown *punk); + [hidden] HRESULT ProcessAttachDetach([in] VARIANT_BOOL fAttach); +} + +[ + uuid(9ba05972-f6a8-11cf-a442-00a0c90a8f39) +] +coclass ShellWindows +{ + [default] interface IShellWindows; + [default, source] dispinterface DShellWindowsEvents; +} + +[ + odl, + uuid(729fe2f8-1ea8-11d1-8f85-00C04fc2fbe1), + dual, + oleautomation +] +interface IShellUIHelper : IDispatch { + [id(1), hidden] HRESULT ResetFirstBootMode(); + [id(2), hidden] HRESULT ResetSafeMode(); + [id(3), hidden] HRESULT RefreshOfflineDesktop(); + + [id(4)] HRESULT AddFavorite( + [in] BSTR URL, + [in, optional] VARIANT* Title); + + [id(5)] HRESULT AddChannel([in] BSTR URL); + + [id(6)] HRESULT AddDesktopComponent( + [in] BSTR URL, + [in] BSTR Type, + [in, optional] VARIANT *Left, + [in, optional] VARIANT *Top, + [in, optional] VARIANT *Width, + [in, optional] VARIANT *Height); + + [id(7)] HRESULT IsSubscribed( + [in] BSTR URL, + [out, retval] VARIANT_BOOL *pBool); + + [id(8)] HRESULT NavigateAndFind( + [in] BSTR URL, + [in] BSTR strQuery, + [in] VARIANT *varTargetFrame); + + [id(9)] HRESULT ImportExportFavorites( + [in] VARIANT_BOOL fImport, + [in] BSTR strImpExpPath); + + [id(10)] HRESULT AutoCompleteSaveForm([in, optional] VARIANT *Form); + + [id(11)] HRESULT AutoScan( + [in] BSTR strSearch, + [in] BSTR strFailureUrl, + [in, optional] VARIANT *pvarTargetFrame); + + [id(12), hidden] HRESULT AutoCompleteAttach([in, optional] VARIANT *Reserved); + + [id(13)] HRESULT ShowBrowserUI( + [in] BSTR bstrName, + [in] VARIANT *pvarIn, + [out, retval] VARIANT *pvarOut); +} + +[ + uuid(64ab4bb7-111e-11d1-8f79-00c04fc2fbe1) +] +coclass ShellUIHelper { + [default] interface IShellUIHelper; +} + +[ + uuid(55136806-b2de-11d1-b9f2-00a0c98bc547) +] +dispinterface DShellNameSpaceEvents { + properties: + methods: + [id(1)] void FavoritesSelectionChange( + [in] long cItems, + [in] long hItem, + [in] BSTR strName, + [in] BSTR strUrl, + [in] long cVisits, + [in] BSTR strDate, + [in] long fAvailableOffline); + + [id(2)] void SelectionChange(); + [id(3)] void DoubleClick(); + [id(4)] void Initialized(); +} + +[ + odl, + uuid(55136804-b2de-11d1-b9f2-00a0c98bc547), + hidden, + dual, + oleautomation +] +interface IShellFavoritesNameSpace : IDispatch { + [id(1)] HRESULT MoveSelectionUp(); + [id(2)] HRESULT MoveSelectionDown(); + [id(3)] HRESULT ResetSort(); + [id(4)] HRESULT NewFolder(); + [id(5)] HRESULT Synchronize(); + [id(6)] HRESULT Import(); + [id(7)] HRESULT Export(); + [id(8)] HRESULT InvokeContextMenuCommand([in] BSTR strCommand); + [id(9)] HRESULT MoveSelectionTo(); + [id(10), propget] HRESULT SubscriptionsEnabled([out, retval] VARIANT_BOOL *pBool); + [id(11)] HRESULT CreateSubscriptionForSelection([out, retval] VARIANT_BOOL *pBool); + [id(12)] HRESULT DeleteSubscriptionForSelection([out, retval] VARIANT_BOOL *pBool); + [id(13)] HRESULT SetRoot([in] BSTR bstrFullPath); +} + +[ + odl, + uuid(e572d3c9-37be-4ae2-825d-d521763e3108), + hidden, + dual, + oleautomation +] +interface IShellNameSpace : IShellFavoritesNameSpace { + [id(14), propget] HRESULT EnumOptions([out, retval] long* pgrfEnumFlags); + [id(14), propput] HRESULT EnumOptions([in] long pgrfEnumFlags); + + [id(15), propget] HRESULT SelectedItem([out, retval] IDispatch **pItem); + [id(15), propput] HRESULT SelectedItem([in] IDispatch *pItem); + + [id(16), propget] HRESULT Root([out, retval] VARIANT *pvar); + [id(16), propput] HRESULT Root([in] VARIANT pvar); + + [id(17), propget] HRESULT Depth([out, retval] int *piDepth); + [id(17), propput] HRESULT Depth([in] int piDepth); + + [id(18), propget] HRESULT Mode([out, retval] unsigned int *puMode); + [id(18), propput] HRESULT Mode([in] unsigned int puMode); + + [id(19), propget] HRESULT Flags([out, retval] unsigned long *pdwFlags); + [id(19), propput] HRESULT Flags([in] unsigned long pdwFlags); + + [id(20), propput] HRESULT TVFlags([in] unsigned long dwFlags); + [id(20), propget] HRESULT TVFlags([out, retval] unsigned long *dwFlags); + + [id(21), propget] HRESULT Columns([out, retval] BSTR *bstrColumns); + [id(21), propput] HRESULT Columns([in] BSTR bstrColumns); + + [id(22), propget] HRESULT CountViewTypes([out, retval] int *piTypes); + + [id(23)] HRESULT SetViewType([in] int iType); + [id(24)] HRESULT SelectedItems([out, retval] IDispatch **ppid); + [id(25)] HRESULT Expand([in] VARIANT var, int iDepth); + [id(26)] HRESULT UnselectAll(); +} + +[ + uuid(55136805-b2de-11d1-b9f2-00a0c98bc547) +] +coclass ShellNameSpace { + [default] interface IShellNameSpace; + [default, source] dispinterface DShellNameSpaceEvents; +} + +[ + uuid(2f2f1f96-2bc1-4b1c-be28-ea3774f4676a) +] +coclass ShellShellNameSpace { + [default] interface IShellNameSpace; + [default, source] dispinterface DShellNameSpaceEvents; +} + +[ + odl, + uuid(f3470f24-15fd-11d2-bb2e-00805ff7efca), + hidden, + dual, + oleautomation +] +interface IScriptErrorList : IDispatch { + [id(10)] HRESULT advanceError(); + [id(11)] HRESULT retreatError(); + [id(12)] HRESULT canAdvanceError([out, retval] long *pfCanAdvance); + [id(13)] HRESULT canRetreatError([out, retval] long *pfCanRetreat); + [id(14)] HRESULT getErrorLine([out, retval] long *plLine); + [id(15)] HRESULT getErrorChar([out, retval] long *plChar); + [id(16)] HRESULT getErrorCode([out, retval] long *plCode); + [id(17)] HRESULT getErrorMsg([out, retval] BSTR *pstr); + [id(18)] HRESULT getErrorUrl([out, retval] BSTR *pstr); + [id(23)] HRESULT getAlwaysShowLockState([out, retval] long *pfAlwaysShowLocked); + [id(19)] HRESULT getDetailsPaneOpen([out, retval] long *pfDetailsPaneOpen); + [id(20)] HRESULT setDetailsPaneOpen(long fDetailsPaneOpen); + [id(21)] HRESULT getPerErrorDisplay([out, retval] long *pfPerErrorDisplay); + [id(22)] HRESULT setPerErrorDisplay(long fPerErrorDisplay); +} + +[ + uuid(efd01300-160f-11d2-bb2e-00805ff7efca), + hidden +] +coclass CScriptErrorList { + [default] interface IScriptErrorList; +} + +[ + odl, + uuid(ba9239a4-3dd5-11d2-bf8b-00c04fb93661), + hidden, + dual, + oleautomation +] +interface ISearch : IDispatch { + [propget] HRESULT Title([out, retval] BSTR *pbstrTitle); + [propget] HRESULT Id([out, retval] BSTR *pbstrId); + [propget] HRESULT URL([out, retval] BSTR *pbstrUrl); +} + +[ + odl, + uuid(47c922a2-3dd5-11d2-bf8b-00c04fb93661), + hidden, + dual, + oleautomation +] +interface ISearches : IDispatch { + [propget] HRESULT Count([out, retval] long *plCount); + [propget] HRESULT Default([out, retval] BSTR *pbstrDefault); + + HRESULT Item( + [in, optional] VARIANT index, + [out, retval] ISearch **ppid); + + [id(-4)] HRESULT _NewEnum([out, retval] IUnknown **ppunk); +} + +[ + odl, + uuid(72423e8f-8011-11d2-be79-00a0c9a83da1), + hidden, + dual, + oleautomation +] +interface ISearchAssistantOC : IDispatch { + [id(1)] HRESULT AddNextMenuItem([in] BSTR bstrText, [in] long idItem); + [id(2)] HRESULT SetDefaultSearchUrl([in] BSTR bstrUrl); + [id(3)] HRESULT NavigateToDefaultSearch(); + + [id(4)] HRESULT IsRestricted( + [in] BSTR bstrGuid, + [out, retval] VARIANT_BOOL *pVal); + + [id(5), propget] HRESULT ShellFeaturesEnabled([out, retval] VARIANT_BOOL *pVal); + [id(6), propget] HRESULT SearchAssistantDefault([out, retval] VARIANT_BOOL *pVal); + [id(7), propget] HRESULT Searches([out, retval] ISearches **ppid); + [id(8), propget] HRESULT InWebFolder([out, retval] VARIANT_BOOL *pVal); + + [id(9)] HRESULT PutProperty( + [in] VARIANT_BOOL bPerLocale, + [in] BSTR bstrName, + [in] BSTR bstrValue); + + [id(10)] HRESULT GetProperty( + [in] VARIANT_BOOL bPerLocale, + [in] BSTR bstrName, + [out, retval] BSTR *pbstrValue); + + [id(11), propput] HRESULT EventHandled([in] VARIANT_BOOL rhs); + [id(12)] HRESULT ResetNextMenu(); + [id(13)] HRESULT FindOnWeb(); + [id(14)] HRESULT FindFilesOrFolders(); + [id(15)] HRESULT FindComputer(); + [id(16)] HRESULT FindPrinter(); + [id(17)] HRESULT FindPeople(); + + [id(18)] HRESULT GetSearchAssistantURL( + [in] VARIANT_BOOL bSubstitute, + [in] VARIANT_BOOL bCustomize, + [out, retval] BSTR *pbstrValue); + + [id(19)] HRESULT NotifySearchSettingsChanged(); + + [id(20), propput] HRESULT ASProvider([in] BSTR pProvider); + [id(20), propget] HRESULT ASProvider([out, retval] BSTR *pProvider); + + [id(21), propput] HRESULT ASSetting([in] int pSetting); + [id(21), propget] HRESULT ASSetting([out, retval] int *pSetting); + + [id(22)] HRESULT NETDetectNextNavigate(); + [id(23)] HRESULT PutFindText([in] BSTR FindText); + [id(24), propget] HRESULT Version([out, retval] int *pVersion); + + [id(25)] HRESULT EncodeString( + [in] BSTR bstrValue, + [in] BSTR bstrCharSet, + [in] VARIANT_BOOL bUseUTF8, + [out, retval] BSTR* pbstrResult); +} + +[ + odl, + uuid(72423e8f-8011-11d2-be79-00a0c9a83da2), + hidden, + dual, + oleautomation +] +interface ISearchAssistantOC2 : ISearchAssistantOC { + [id(26), propget] HRESULT ShowFindPrinter([out, retval] VARIANT_BOOL *pbShowFindPrinter); +} + +[ + odl, + uuid(72423e8f-8011-11d2-be79-00a0c9a83da3), + hidden, + dual, + oleautomation +] +interface ISearchAssistantOC3 : ISearchAssistantOC2 { + [id(27), propget] HRESULT SearchCompanionAvailable([out, retval] VARIANT_BOOL *pbAvailable); + + [id(28), propput] HRESULT UseSearchCompanion([in] VARIANT_BOOL pbUseSC); + [id(28), propget] HRESULT UseSearchCompanion([out, retval] VARIANT_BOOL *pbUseSC); +} + +[ + uuid(1611fdda-445b-11d2-85de-00C04fa35c89), + hidden +] +dispinterface _SearchAssistantEvents { + properties: + methods: + [id(1)] void OnNextMenuSelect([in] long idItem); + [id(2)] void OnNewSearch(); +} + +[ + uuid(b45ff030-4447-11d2-85de-00C04fa35c89), + hidden +] +coclass SearchAssistantOC { + [default] interface ISearchAssistantOC3; + [default, source] dispinterface _SearchAssistantEvents; +} + +[ + uuid(2e71fd0f-aab1-42c0-9146-6d2c4edcf07d), + hidden +] +coclass ShellSearchAssistantOC { + [default] interface ISearchAssistantOC3; + [default, source] dispinterface _SearchAssistantEvents; +} + +} /* library */ diff --git a/reactos/include/psdk/exdispid.h b/reactos/include/psdk/exdispid.h index a42131f8114..2f02f8aef5f 100644 --- a/reactos/include/psdk/exdispid.h +++ b/reactos/include/psdk/exdispid.h @@ -1,15 +1,136 @@ -#ifndef _EXDISPID_H -#define _EXDISPID_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif +/* + * Copyright 2004 Jacek Caban + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ -#define DISPID_BEFORENAVIGATE2 250 -#define DISPID_NEWWINDOW2 251 -#define DISPID_NAVIGATECOMPLETE2 252 -#define DISPID_PROGRESSCHANGE 108 -#define DISPID_DOCUMENTCOMPLETE 259 -#define DISPID_STATUSTEXTCHANGE 102 -#define DISPID_TITLECHANGE 113 +#ifndef EXDISPID_H_ +#define EXDISPID_H_ -#endif +#define DISPID_BEFORENAVIGATE 100 +#define DISPID_NAVIGATECOMPLETE 101 +#define DISPID_STATUSTEXTCHANGE 102 +#define DISPID_QUIT 103 +#define DISPID_DOWNLOADCOMPLETE 104 +#define DISPID_COMMANDSTATECHANGE 105 +#define DISPID_DOWNLOADBEGIN 106 +#define DISPID_NEWWINDOW 107 +#define DISPID_PROGRESSCHANGE 108 +#define DISPID_WINDOWMOVE 109 +#define DISPID_WINDOWRESIZE 110 +#define DISPID_WINDOWACTIVATE 111 +#define DISPID_PROPERTYCHANGE 112 +#define DISPID_TITLECHANGE 113 +#define DISPID_TITLEICONCHANGE 114 + +#define DISPID_FRAMEBEFORENAVIGATE 200 +#define DISPID_FRAMENAVIGATECOMPLETE 201 + +#define DISPID_FRAMENEWWINDOW 204 + +#define DISPID_BEFORENAVIGATE2 250 +#define DISPID_NEWWINDOW2 251 +#define DISPID_NAVIGATECOMPLETE2 252 +#define DISPID_ONQUIT 253 +#define DISPID_ONVISIBLE 254 +#define DISPID_ONTOOLBAR 255 +#define DISPID_ONMENUBAR 256 +#define DISPID_ONSTATUSBAR 257 +#define DISPID_ONFULLSCREEN 258 +#define DISPID_DOCUMENTCOMPLETE 259 +#define DISPID_ONTHEATERMODE 260 +#define DISPID_ONADDRESSBAR 261 +#define DISPID_WINDOWSETRESIZABLE 262 +#define DISPID_WINDOWCLOSING 263 +#define DISPID_WINDOWSETLEFT 264 +#define DISPID_WINDOWSETTOP 265 +#define DISPID_WINDOWSETWIDTH 266 +#define DISPID_WINDOWSETHEIGHT 267 +#define DISPID_CLIENTTOHOSTWINDOW 268 +#define DISPID_SETSECURELOCKICON 269 +#define DISPID_FILEDOWNLOAD 270 +#define DISPID_NAVIGATEERROR 271 +#define DISPID_PRIVACYIMPACTEDSTATECHANGE 272 + +#define DISPID_PRINTTEMPLATEINSTANTIATION 225 +#define DISPID_PRINTTEMPLATETEARDOWN 226 +#define DISPID_UPDATEPAGESTATUS 227 + +#define DISPID_WINDOWREGISTERED 200 +#define DISPID_WINDOWREVOKED 201 + +#define DISPID_RESETFIRSTBOOTMODE 1 +#define DISPID_RESETSAFEMODE 2 +#define DISPID_REFRESHOFFLINEDESKTOP 3 +#define DISPID_ADDFAVORITE 4 +#define DISPID_ADDCHANNEL 5 +#define DISPID_ADDDESKTOPCOMPONENT 6 +#define DISPID_ISSUBSCRIBED 7 +#define DISPID_NAVIGATEANDFIND 8 +#define DISPID_IMPORTEXPORTFAVORITES 9 +#define DISPID_AUTOCOMPLETESAVEFORM 10 +#define DISPID_AUTOSCAN 11 +#define DISPID_AUTOCOMPLETEATTACH 12 +#define DISPID_SHOWBROWSERUI 13 +#define DISPID_SHELLUIHELPERLAST 13 + +#define DISPID_ADVANCEERROR 10 +#define DISPID_RETREATERROR 11 +#define DISPID_CANADVANCEERROR 12 +#define DISPID_CANRETREATERROR 13 +#define DISPID_GETERRORLINE 14 +#define DISPID_GETERRORCHAR 15 +#define DISPID_GETERRORCODE 16 +#define DISPID_GETERRORMSG 17 +#define DISPID_GETERRORURL 18 +#define DISPID_GETDETAILSSTATE 19 +#define DISPID_SETDETAILSSTATE 20 +#define DISPID_GETPERERRSTATE 21 +#define DISPID_SETPERERRSTATE 22 +#define DISPID_GETALWAYSSHOWLOCKSTATE 23 + +#define DISPID_FAVSELECTIONCHANGE 1 +#define DISPID_SELECTIONCHANGE 2 +#define DISPID_DOUBLECLICK 3 +#define DISPID_INITIALIZED 4 + +#define DISPID_MOVESELECTIONUP 1 +#define DISPID_MOVESELECTIONDOWN 2 +#define DISPID_RESETSORT 3 +#define DISPID_NEWFOLDER 4 +#define DISPID_SYNCHRONIZE 5 +#define DISPID_IMPORT 6 +#define DISPID_EXPORT 7 +#define DISPID_INVOKECONTEXTMENU 8 +#define DISPID_MOVESELECTIONTO 9 +#define DISPID_SUBSCRIPTIONSENABLED 10 +#define DISPID_CREATESUBSCRIPTION 11 +#define DISPID_DELETESUBSCRIPTION 12 +#define DISPID_SETROOT 13 +#define DISPID_ENUMOPTIONS 14 +#define DISPID_SELECTEDITEM 15 +#define DISPID_ROOT 16 +#define DISPID_DEPTH 17 +#define DISPID_MODE 18 +#define DISPID_FLAGS 19 +#define DISPID_TVFLAGS 20 +#define DISPID_NSCOLUMNS 21 +#define DISPID_COUNTVIEWTYPES 22 +#define DISPID_SETVIEWTYPE 23 +#define DISPID_SELECTEDITEMS 24 +#define DISPID_EXPAND 25 +#define DISPID_UNSELECTALL 26 + +#endif /* EXDISPID_H_ */ diff --git a/reactos/include/psdk/guiddef.h b/reactos/include/psdk/guiddef.h index cc7aaf9dab6..6e6f52dda5d 100644 --- a/reactos/include/psdk/guiddef.h +++ b/reactos/include/psdk/guiddef.h @@ -13,14 +13,18 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef GUID_DEFINED #define GUID_DEFINED typedef struct _GUID { +#ifdef _MSC_VER unsigned long Data1; +#else + unsigned int Data1; +#endif unsigned short Data2; unsigned short Data3; unsigned char Data4[ 8 ]; @@ -30,35 +34,68 @@ typedef struct _GUID #undef DEFINE_GUID #ifdef INITGUID +#ifdef __cplusplus #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - const GUID name = \ + EXTERN_C const GUID name = \ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } #else #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - extern const GUID name; + const GUID name = \ + { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } #endif +#else +#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + EXTERN_C const GUID name +#endif + +#define DEFINE_OLEGUID(name, l, w1, w2) \ + DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46) #ifndef _GUIDDEF_H_ #define _GUIDDEF_H_ +#ifndef __LPGUID_DEFINED__ +#define __LPGUID_DEFINED___ typedef GUID *LPGUID; -typedef GUID CLSID,*LPCLSID; -typedef GUID IID,*LPIID; -typedef GUID FMTID,*LPFMTID; +#endif + +#ifndef __LPCGUID_DEFINED__ +#define __LPCGUID_DEFINED__ +typedef const GUID *LPCGUID; +#endif + +#ifndef __IID_DEFINED__ +#define __IID_DEFINED__ + +typedef GUID IID,*LPIID; +typedef GUID CLSID,*LPCLSID; +typedef GUID FMTID,*LPFMTID; +#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2) +#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2) +#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2) +#define IID_NULL GUID_NULL +#define CLSID_NULL GUID_NULL +#define FMTID_NULL GUID_NULL + +#ifdef __midl_proxy +#define __MIDL_CONST +#else +#define __MIDL_CONST const +#endif + +#endif /* ndef __IID_DEFINED__ */ -#if 0 #if defined(__cplusplus) && !defined(CINTERFACE) #define REFGUID const GUID & #define REFCLSID const CLSID & #define REFIID const IID & #define REFFMTID const FMTID & #else /* !defined(__cplusplus) && !defined(CINTERFACE) */ -#define REFGUID const GUID* const -#define REFCLSID const CLSID* const -#define REFIID const IID* const -#define REFFMTID const FMTID* const +#define REFGUID const GUID* __MIDL_CONST +#define REFCLSID const CLSID* __MIDL_CONST +#define REFIID const IID* __MIDL_CONST +#define REFFMTID const FMTID* __MIDL_CONST #endif /* !defined(__cplusplus) && !defined(CINTERFACE) */ -#endif #if defined(__cplusplus) && !defined(CINTERFACE) #define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID))) @@ -79,8 +116,5 @@ inline bool operator!=(const GUID& guidOne, const GUID& guidOther) #endif extern const IID GUID_NULL; -#define IID_NULL GUID_NULL -#define CLSID_NULL GUID_NULL -#define FMTID_NULL GUID_NULL #endif /* _GUIDDEF_H_ */ diff --git a/reactos/include/psdk/hlink.idl b/reactos/include/psdk/hlink.idl new file mode 100644 index 00000000000..884c4be5ec0 --- /dev/null +++ b/reactos/include/psdk/hlink.idl @@ -0,0 +1,400 @@ +/* + * Copyright 2005 Jacek Caban + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "urlmon.idl"; + +interface IHlink; +interface IHlinkSite; +interface IHlinkFrame; +interface IHlinkBrowseContext; + +cpp_quote("HRESULT WINAPI HlinkCreateFromMoniker(IMoniker*, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);") +cpp_quote("HRESULT WINAPI HlinkCreateFromString(LPCWSTR, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);") +cpp_quote("HRESULT WINAPI HlinkCreateFromData(IDataObject*, IHlinkSite*, DWORD dwSiteData, IUnknown*, REFIID, void**);") +cpp_quote("HRESULT WINAPI HlinkQueryCreateFromData(IDataObject*);") +cpp_quote("HRESULT WINAPI HlinkClone(IHlink*, REFIID, IHlinkSite*, DWORD, void **);") +cpp_quote("HRESULT WINAPI HlinkCreateBrowseContext(IUnknown*, REFIID, void **);") +cpp_quote("HRESULT WINAPI HlinkNavigateToStringReference(LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);") +cpp_quote("HRESULT WINAPI HlinkNavigate(IHlink*, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);") +cpp_quote("HRESULT WINAPI HlinkOnNavigate(IHlinkFrame*, IHlinkBrowseContext*, DWORD, IMoniker*, LPCWSTR, LPCWSTR, ULONG*);") +cpp_quote("HRESULT WINAPI HlinkIsShortcut(LPCWSTR);") +cpp_quote("HRESULT WINAPI HlinkTranslateURL(LPCWSTR,DWORD,LPWSTR*);") + +/***************************************************************************** + * IHlink interface + */ +[ + object, + uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IHlink: IUnknown +{ + typedef [unique] IHlink *LPHLINK; + + typedef enum { + HLNF_INTERNALJUMP = 0x00000001, + HLNF_OPENINNEWWINDOW = 0x00000002, + HLNF_NAVIGATINGBACK = 0x00000004, + HLNF_NAVIGATINGFORWARD = 0x00000008, + HLNF_NAVIGATINGTOSTACKITEM = 0x00000010, + HLNF_CREATENOHISTORY = 0x00000020 + } HLNF; + + typedef enum { + HLINKGETREF_DEFAULT = 0, + HLINKGETREF_ABSOLUTE = 1, + HLINKGETREF_RELATIVE = 2, + } HLINKGETREF; + + typedef enum { + HLFNAMEF_DEFAULT = 0x00000000, + HLFNAMEF_TRYCACHE = 0x00000001, + HLFNAMEF_TRYPRETTYTARGET = 0x00000002, + HLFNAMEF_TRYFULLTARGET = 0x00000004, + HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008 + } HLFNAMEF; + + typedef enum { + HLINKMISC_RELATIVE = 0x00000001, + } HLINKMISC; + + typedef enum { + HLINKSETF_TARGET = 0x00000001, + HLINKSETF_LOCATION = 0x00000002 + } HLINKSETF; + + HRESULT SetHlinkSite( + [in, unique] IHlinkSite *pihlSite, + [in] DWORD dwSiteData); + + HRESULT GetHlinkSite( + [out] IHlinkSite **ppihlSite, + [out] DWORD *pdwSiteData); + + HRESULT SetMonikerReference( + [in] DWORD grfHLSETF, + [in, unique] IMoniker *pimkTarget, + [in, unique] LPCWSTR pwzLocation); + + HRESULT GetMonikerReference( + [in] DWORD dwWhichRef, + [out] IMoniker **ppimkTarget, + [out] LPWSTR *ppwzLocation); + + HRESULT SetStringReference( + [in] DWORD grfHLSETF, + [in, unique] LPCWSTR pwzTarget, + [in, unique] LPCWSTR pwzLocation); + + HRESULT GetStringReference( + [in] DWORD dwWhichRef, + [out] LPWSTR *ppwzTarget, + [out] LPWSTR *ppwzLocation); + + HRESULT SetFriendlyName( + [in, unique] LPCWSTR pwzFriendlyName); + + HRESULT GetFriendlyName( + [in] DWORD grfHLFNAMEF, + [out] LPWSTR *ppwzFriendlyName); + + HRESULT SetTargetFrameName( + [in, unique] LPCWSTR pwzTargetFrameName); + + HRESULT GetTargetFrameName( + [out] LPWSTR *ppwzTargetFrameName); + + HRESULT GetMiscStatus( + [out] DWORD *pdwStatus); + + HRESULT Navigate( + [in] DWORD grfHLNF, + [in, unique] LPBC pibc, + [in, unique] IBindStatusCallback *pibsc, + [in, unique] IHlinkBrowseContext *pihlbc); + + HRESULT SetAdditionalParams( + [in, unique] LPCWSTR pwzAdditionalParams); + + HRESULT GetAdditionalParams( + [out] LPWSTR *ppwzAdditionalParams); +} + +/***************************************************************************** + * IHlink interface + */ +[ + object, + uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IHlinkSite: IUnknown +{ + typedef [unique] IHlinkSite *LPHLINKSITE; + + typedef enum { + HLINKWHICHMK_CONTAINER = 1, + HLINKWHICHMK_BASE = 2, + } HLINKWHICHMK; + + HRESULT QueryService( + [in] DWORD dwSiteData, + [in] REFGUID guidService, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppiunk); + + HRESULT GetMoniker( + [in] DWORD dwSiteData, + [in] DWORD dwAssign, + [in] DWORD dwWhich, + [out] IMoniker **ppimk); + + HRESULT ReadyToNavigate( + [in] DWORD dwSiteData, + [in] DWORD dwReserved); + + HRESULT OnNavigationComplete( + [in] DWORD dwSiteData, + [in] DWORD dwreserved, + [in] HRESULT hrError, + [in, unique] LPCWSTR pwzError); +} + +/***************************************************************************** + * IEnumHLITEM interface + */ +[ + local, + object, + uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IEnumHLITEM : IUnknown +{ + typedef [unique] IEnumHLITEM *LPENUMHLITEM; + + typedef struct tagHLITEM { + ULONG uHLID; + LPWSTR pwzFriendlyName; + } HLITEM; + typedef [unique] HLITEM *LPHLITEM; + + HRESULT Next( + [in] ULONG celt, + [out] HLITEM *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumHLITEM **ppienumhlitem); +} + +/***************************************************************************** + * IHlinkBrowseContext interface + */ +[ + local, + object, + uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IHlinkBrowseContext : IUnknown +{ + typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT; + + enum { + HLTB_DOCKEDLEFT = 0, + HLTB_DOCKEDTOP = 1, + HLTB_DOCKEDRIGHT = 2, + HLTB_DOCKEDBOTTOM = 3, + HLTB_FLOATING = 4 + }; + + typedef struct _tagHLTBINFO { + ULONG uDockType; + RECT rcTbPos; + } HLTBINFO; + + enum { + HLBWIF_HASFRAMEWNDINFO = 0x00000001, + HLBWIF_HASDOCWNDINFO = 0x00000002, + HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004, + HLBWIF_DOCWNDMAXIMIZED = 0x00000008, + HLBWIF_HASWEBTOOLBARINFO = 0x00000010, + HLBWIF_WEBTOOLBARHIDDEN = 0x00000020 + }; + + typedef struct _tagHLBWINFO { + ULONG cbSize; + DWORD grfHLBWIF; + RECT rcFramePos; + RECT rcDocPos; + HLTBINFO hltbinfo; + } HLBWINFO; + + typedef [unique] HLBWINFO *LPHLBWINFO; + + enum { + HLID_INVALID = 0x00000000, + HLID_PREVIOUS = 0xFFFFFFFF, + HLID_NEXT = 0xFFFFFFFE, + HLID_CURRENT = 0xFFFFFFFD, + HLID_STACKBOTTOM = 0xFFFFFFFC, + HLID_STACKTOP = 0xFFFFFFFB + }; + + enum { + HLQF_ISVALID = 0x00000001, + HLQF_ISCURRENT = 0x00000002 + }; + + HRESULT Register( + [in] DWORD reserved, + [in, unique] IUnknown *piunk, + [in, unique] IMoniker *pimk, + [out] DWORD *pdwRegister); + + HRESULT GetObject( + [in, unique] IMoniker *pimk, + [in] BOOL fBindIfRootRegistered, + [out] IUnknown **ppiunk); + + HRESULT Revoke( + [in] DWORD dwRegister); + + HRESULT SetBrowseWindowInfo( + [in, unique] HLBWINFO *phlbwi); + + HRESULT GetBrowseWindowInfo( + [out] HLBWINFO *phlbwi); + + HRESULT SetInitialHlink( + [in, unique] IMoniker * pimkTarget, + [in, unique] LPCWSTR pwzLocation, + [in, unique] LPCWSTR pwzFriendlyName); + + HRESULT OnNavigateHlink( + [in] DWORD grfHLNF, + [in, unique] IMoniker *pimkTarget, + [in, unique] LPCWSTR pwzLocation, + [in, unique] LPCWSTR pwzFriendlyName, + [out] ULONG *puHLID); + + HRESULT UpdateHlink( + [in] ULONG uHLID, + [in, unique] IMoniker *pimkTarget, + [in, unique] LPCWSTR pwzLocation, + [in, unique] LPCWSTR pwzFriendlyName); + + HRESULT EnumNavigationStack( + [in] DWORD dwReserved, + [in] DWORD grfHLFNAMEF, + [out] IEnumHLITEM **ppienumhlitem); + + HRESULT QueryHlink( + [in] DWORD grfHLQF, + [in] ULONG uHLID); + + HRESULT GetHlink( + [in] ULONG uHLID, + [out] IHlink **ppihl); + + HRESULT SetCurrentHlink( + [in] ULONG uHLID); + + HRESULT Clone( + [in, unique] IUnknown *piunkOuter, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppiunkObj); + + HRESULT Close( + [in] DWORD reserved); +} + + +/***************************************************************************** + * IHlinkTarget interface + */ +[ + object, + uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IHlinkTarget : IUnknown +{ + typedef [unique] IHlinkTarget *LPHLINKTARGET; + + HRESULT SetBrowseContext( + [in, unique] IHlinkBrowseContext *pihlbc); + + HRESULT GetBrowseContext( + [out] IHlinkBrowseContext **ppihlbc); + + HRESULT Navigate( + [in] DWORD grfHLNF, + [in, unique] LPCWSTR pwzJumpLocation); + + HRESULT GetMoniker( + [in,unique] LPCWSTR pwzLocation, + [in] DWORD dwAssign, + [out] IMoniker **ppimkLocation); + + HRESULT GetFriendlyName( + [in,unique] LPCWSTR pwzLocation, + [out] LPWSTR *ppwzFriendlyName); +} + +/***************************************************************************** + * IHlinkFrame interface + */ +[ + object, + uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] + +interface IHlinkFrame : IUnknown +{ + typedef IHlinkFrame *LPHLINKFRAME; + + HRESULT SetBrowseContext( + [in, unique] IHlinkBrowseContext * pihlbc); + HRESULT GetBrowseContext( + [out] IHlinkBrowseContext ** ppihlbc); + HRESULT Navigate( + [in] DWORD grfHLNF, + [in, unique] LPBC pbc, + [in, unique] IBindStatusCallback *pibsc, + [in, unique] IHlink *pihlNavigate); + HRESULT OnNavigate( + [in] DWORD grfHLNF, + [in, unique] IMoniker *pimkTarget, + [in, unique] LPCWSTR pwzLocation, + [in, unique] LPCWSTR pwzFriendlyName, + [in] DWORD dwreserved); + HRESULT UpdateHlink( + [in] ULONG uHLID, + [in, unique] IMoniker *pimkTarget, + [in, unique] LPCWSTR pwzLocation, + [in, unique] LPCWSTR pwzFriendlyName); +} diff --git a/reactos/include/psdk/htiframe.h b/reactos/include/psdk/htiframe.h new file mode 100644 index 00000000000..8d1b35a16a4 --- /dev/null +++ b/reactos/include/psdk/htiframe.h @@ -0,0 +1,553 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\htiframe.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_HTIFRAME_H +#define __WIDL_INCLUDE_PSDK_HTIFRAME_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#ifndef __ITargetNotify_FWD_DEFINED__ +#define __ITargetNotify_FWD_DEFINED__ +typedef interface ITargetNotify ITargetNotify; +#endif + +typedef ITargetNotify *LPTARGETNOTIFY; +/***************************************************************************** + * ITargetNotify interface + */ +#ifndef __ITargetNotify_INTERFACE_DEFINED__ +#define __ITargetNotify_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_ITargetNotify, 0x863a99a0, 0x21bc, 0x11d0, 0x82,0xb4, 0x00,0xa0,0xc9,0x0c,0x29,0xc5); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface ITargetNotify : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE OnCreate( + IUnknown* pUnkDestination, + ULONG cbCookie) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnReuse( + IUnknown* pUnkDestination) = 0; + +}; +#else +typedef struct ITargetNotifyVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + ITargetNotify* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + ITargetNotify* This); + + ULONG (STDMETHODCALLTYPE *Release)( + ITargetNotify* This); + + /*** ITargetNotify methods ***/ + HRESULT (STDMETHODCALLTYPE *OnCreate)( + ITargetNotify* This, + IUnknown* pUnkDestination, + ULONG cbCookie); + + HRESULT (STDMETHODCALLTYPE *OnReuse)( + ITargetNotify* This, + IUnknown* pUnkDestination); + + END_INTERFACE +} ITargetNotifyVtbl; +interface ITargetNotify { + const ITargetNotifyVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define ITargetNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ITargetNotify_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ITargetNotify_Release(p) (p)->lpVtbl->Release(p) +/*** ITargetNotify methods ***/ +#define ITargetNotify_OnCreate(p,a,b) (p)->lpVtbl->OnCreate(p,a,b) +#define ITargetNotify_OnReuse(p,a) (p)->lpVtbl->OnReuse(p,a) +#endif + +#endif + +HRESULT CALLBACK ITargetNotify_OnCreate_Proxy( + ITargetNotify* This, + IUnknown* pUnkDestination, + ULONG cbCookie); +void __RPC_STUB ITargetNotify_OnCreate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetNotify_OnReuse_Proxy( + ITargetNotify* This, + IUnknown* pUnkDestination); +void __RPC_STUB ITargetNotify_OnReuse_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __ITargetNotify_INTERFACE_DEFINED__ */ + +#ifndef __ITargetNotify2_FWD_DEFINED__ +#define __ITargetNotify2_FWD_DEFINED__ +typedef interface ITargetNotify2 ITargetNotify2; +#endif + +typedef ITargetNotify2 *LPTARGETNOTIFY2; +/***************************************************************************** + * ITargetNotify2 interface + */ +#ifndef __ITargetNotify2_INTERFACE_DEFINED__ +#define __ITargetNotify2_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_ITargetNotify2, 0x3050f6b1, 0x98b5, 0x11cf, 0xbb,0x82, 0x00,0xaa,0x00,0xbd,0xce,0x0b); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface ITargetNotify2 : public ITargetNotify +{ + virtual HRESULT STDMETHODCALLTYPE GetOptionString( + BSTR* pbstrOptions) = 0; + +}; +#else +typedef struct ITargetNotify2Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + ITargetNotify2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + ITargetNotify2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + ITargetNotify2* This); + + /*** ITargetNotify methods ***/ + HRESULT (STDMETHODCALLTYPE *OnCreate)( + ITargetNotify2* This, + IUnknown* pUnkDestination, + ULONG cbCookie); + + HRESULT (STDMETHODCALLTYPE *OnReuse)( + ITargetNotify2* This, + IUnknown* pUnkDestination); + + /*** ITargetNotify2 methods ***/ + HRESULT (STDMETHODCALLTYPE *GetOptionString)( + ITargetNotify2* This, + BSTR* pbstrOptions); + + END_INTERFACE +} ITargetNotify2Vtbl; +interface ITargetNotify2 { + const ITargetNotify2Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define ITargetNotify2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ITargetNotify2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ITargetNotify2_Release(p) (p)->lpVtbl->Release(p) +/*** ITargetNotify methods ***/ +#define ITargetNotify2_OnCreate(p,a,b) (p)->lpVtbl->OnCreate(p,a,b) +#define ITargetNotify2_OnReuse(p,a) (p)->lpVtbl->OnReuse(p,a) +/*** ITargetNotify2 methods ***/ +#define ITargetNotify2_GetOptionString(p,a) (p)->lpVtbl->GetOptionString(p,a) +#endif + +#endif + +HRESULT CALLBACK ITargetNotify2_GetOptionString_Proxy( + ITargetNotify2* This, + BSTR* pbstrOptions); +void __RPC_STUB ITargetNotify2_GetOptionString_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __ITargetNotify2_INTERFACE_DEFINED__ */ + +#ifndef __ITargetFrame2_FWD_DEFINED__ +#define __ITargetFrame2_FWD_DEFINED__ +typedef interface ITargetFrame2 ITargetFrame2; +#endif + +typedef ITargetFrame2 *LPTARGETFRAME2; +typedef enum { + FINDFRAME_NONE = 0, + FINDFRAME_JUSTTESTEXISTENCE = 1, + FINDFRAME_INTERNAL = 0x80000000 +} FINDFRAME_FLAGS; +typedef enum { + FRAMEOPTIONS_SCROLL_YES = 0x1, + FRAMEOPTIONS_SCROLL_NO = 0x2, + FRAMEOPTIONS_SCROLL_AUTO = 0x4, + FRAMEOPTIONS_NORESIZE = 0x8, + FRAMEOPTIONS_NO3DBORDER = 0x10, + FRAMEOPTIONS_DESKTOP = 0x20, + FRAMEOPTIONS_BROWSERBAND = 0x40 +} FRAMEOPTIONS_FLAGS; +/***************************************************************************** + * ITargetFrame2 interface + */ +#ifndef __ITargetFrame2_INTERFACE_DEFINED__ +#define __ITargetFrame2_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_ITargetFrame2, 0x86d52e11, 0x94a8, 0x11d0, 0x82,0xaf, 0x00,0xc0,0x4f,0xd5,0xae,0x38); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface ITargetFrame2 : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE SetFrameName( + LPCWSTR pszFrameName) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameName( + LPWSTR* ppszFrameName) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetParentFrame( + IUnknown** ppunkParent) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFrameSrc( + LPCWSTR pszFrameSrc) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameSrc( + LPWSTR* ppszFrameSrc) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFramesContainer( + IOleContainer** ppContainer) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFrameOptions( + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameOptions( + DWORD* pdwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFrameMargins( + DWORD dwWidth, + DWORD dwHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameMargins( + DWORD* pdwWidth, + DWORD* pdwHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE FindFrame( + LPCWSTR pszTargetName, + DWORD dwFlags, + IUnknown** ppunkTargetFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTargetAlias( + LPCWSTR pszTargetName, + LPWSTR* ppszTargetAlias) = 0; + +}; +#else +typedef struct ITargetFrame2Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + ITargetFrame2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + ITargetFrame2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + ITargetFrame2* This); + + /*** ITargetFrame2 methods ***/ + HRESULT (STDMETHODCALLTYPE *SetFrameName)( + ITargetFrame2* This, + LPCWSTR pszFrameName); + + HRESULT (STDMETHODCALLTYPE *GetFrameName)( + ITargetFrame2* This, + LPWSTR* ppszFrameName); + + HRESULT (STDMETHODCALLTYPE *GetParentFrame)( + ITargetFrame2* This, + IUnknown** ppunkParent); + + HRESULT (STDMETHODCALLTYPE *SetFrameSrc)( + ITargetFrame2* This, + LPCWSTR pszFrameSrc); + + HRESULT (STDMETHODCALLTYPE *GetFrameSrc)( + ITargetFrame2* This, + LPWSTR* ppszFrameSrc); + + HRESULT (STDMETHODCALLTYPE *GetFramesContainer)( + ITargetFrame2* This, + IOleContainer** ppContainer); + + HRESULT (STDMETHODCALLTYPE *SetFrameOptions)( + ITargetFrame2* This, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *GetFrameOptions)( + ITargetFrame2* This, + DWORD* pdwFlags); + + HRESULT (STDMETHODCALLTYPE *SetFrameMargins)( + ITargetFrame2* This, + DWORD dwWidth, + DWORD dwHeight); + + HRESULT (STDMETHODCALLTYPE *GetFrameMargins)( + ITargetFrame2* This, + DWORD* pdwWidth, + DWORD* pdwHeight); + + HRESULT (STDMETHODCALLTYPE *FindFrame)( + ITargetFrame2* This, + LPCWSTR pszTargetName, + DWORD dwFlags, + IUnknown** ppunkTargetFrame); + + HRESULT (STDMETHODCALLTYPE *GetTargetAlias)( + ITargetFrame2* This, + LPCWSTR pszTargetName, + LPWSTR* ppszTargetAlias); + + END_INTERFACE +} ITargetFrame2Vtbl; +interface ITargetFrame2 { + const ITargetFrame2Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define ITargetFrame2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ITargetFrame2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ITargetFrame2_Release(p) (p)->lpVtbl->Release(p) +/*** ITargetFrame2 methods ***/ +#define ITargetFrame2_SetFrameName(p,a) (p)->lpVtbl->SetFrameName(p,a) +#define ITargetFrame2_GetFrameName(p,a) (p)->lpVtbl->GetFrameName(p,a) +#define ITargetFrame2_GetParentFrame(p,a) (p)->lpVtbl->GetParentFrame(p,a) +#define ITargetFrame2_SetFrameSrc(p,a) (p)->lpVtbl->SetFrameSrc(p,a) +#define ITargetFrame2_GetFrameSrc(p,a) (p)->lpVtbl->GetFrameSrc(p,a) +#define ITargetFrame2_GetFramesContainer(p,a) (p)->lpVtbl->GetFramesContainer(p,a) +#define ITargetFrame2_SetFrameOptions(p,a) (p)->lpVtbl->SetFrameOptions(p,a) +#define ITargetFrame2_GetFrameOptions(p,a) (p)->lpVtbl->GetFrameOptions(p,a) +#define ITargetFrame2_SetFrameMargins(p,a,b) (p)->lpVtbl->SetFrameMargins(p,a,b) +#define ITargetFrame2_GetFrameMargins(p,a,b) (p)->lpVtbl->GetFrameMargins(p,a,b) +#define ITargetFrame2_FindFrame(p,a,b,c) (p)->lpVtbl->FindFrame(p,a,b,c) +#define ITargetFrame2_GetTargetAlias(p,a,b) (p)->lpVtbl->GetTargetAlias(p,a,b) +#endif + +#endif + +HRESULT CALLBACK ITargetFrame2_SetFrameName_Proxy( + ITargetFrame2* This, + LPCWSTR pszFrameName); +void __RPC_STUB ITargetFrame2_SetFrameName_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_GetFrameName_Proxy( + ITargetFrame2* This, + LPWSTR* ppszFrameName); +void __RPC_STUB ITargetFrame2_GetFrameName_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_GetParentFrame_Proxy( + ITargetFrame2* This, + IUnknown** ppunkParent); +void __RPC_STUB ITargetFrame2_GetParentFrame_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_SetFrameSrc_Proxy( + ITargetFrame2* This, + LPCWSTR pszFrameSrc); +void __RPC_STUB ITargetFrame2_SetFrameSrc_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_GetFrameSrc_Proxy( + ITargetFrame2* This, + LPWSTR* ppszFrameSrc); +void __RPC_STUB ITargetFrame2_GetFrameSrc_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_GetFramesContainer_Proxy( + ITargetFrame2* This, + IOleContainer** ppContainer); +void __RPC_STUB ITargetFrame2_GetFramesContainer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_SetFrameOptions_Proxy( + ITargetFrame2* This, + DWORD dwFlags); +void __RPC_STUB ITargetFrame2_SetFrameOptions_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_GetFrameOptions_Proxy( + ITargetFrame2* This, + DWORD* pdwFlags); +void __RPC_STUB ITargetFrame2_GetFrameOptions_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_SetFrameMargins_Proxy( + ITargetFrame2* This, + DWORD dwWidth, + DWORD dwHeight); +void __RPC_STUB ITargetFrame2_SetFrameMargins_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_GetFrameMargins_Proxy( + ITargetFrame2* This, + DWORD* pdwWidth, + DWORD* pdwHeight); +void __RPC_STUB ITargetFrame2_GetFrameMargins_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_FindFrame_Proxy( + ITargetFrame2* This, + LPCWSTR pszTargetName, + DWORD dwFlags, + IUnknown** ppunkTargetFrame); +void __RPC_STUB ITargetFrame2_FindFrame_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetFrame2_GetTargetAlias_Proxy( + ITargetFrame2* This, + LPCWSTR pszTargetName, + LPWSTR* ppszTargetAlias); +void __RPC_STUB ITargetFrame2_GetTargetAlias_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __ITargetFrame2_INTERFACE_DEFINED__ */ + +#ifndef __ITargetContainer_FWD_DEFINED__ +#define __ITargetContainer_FWD_DEFINED__ +typedef interface ITargetContainer ITargetContainer; +#endif + +typedef ITargetContainer *LPTARGETCONTAINER; +/***************************************************************************** + * ITargetContainer interface + */ +#ifndef __ITargetContainer_INTERFACE_DEFINED__ +#define __ITargetContainer_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_ITargetContainer, 0x7847ec01, 0x2bec, 0x11d0, 0x82,0xb4, 0x00,0xa0,0xc9,0x0c,0x29,0xc5); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface ITargetContainer : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetFrameUrl( + LPWSTR* ppszFrameSrc) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFramesContainer( + IOleContainer** ppContainer) = 0; + +}; +#else +typedef struct ITargetContainerVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + ITargetContainer* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + ITargetContainer* This); + + ULONG (STDMETHODCALLTYPE *Release)( + ITargetContainer* This); + + /*** ITargetContainer methods ***/ + HRESULT (STDMETHODCALLTYPE *GetFrameUrl)( + ITargetContainer* This, + LPWSTR* ppszFrameSrc); + + HRESULT (STDMETHODCALLTYPE *GetFramesContainer)( + ITargetContainer* This, + IOleContainer** ppContainer); + + END_INTERFACE +} ITargetContainerVtbl; +interface ITargetContainer { + const ITargetContainerVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define ITargetContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ITargetContainer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ITargetContainer_Release(p) (p)->lpVtbl->Release(p) +/*** ITargetContainer methods ***/ +#define ITargetContainer_GetFrameUrl(p,a) (p)->lpVtbl->GetFrameUrl(p,a) +#define ITargetContainer_GetFramesContainer(p,a) (p)->lpVtbl->GetFramesContainer(p,a) +#endif + +#endif + +HRESULT CALLBACK ITargetContainer_GetFrameUrl_Proxy( + ITargetContainer* This, + LPWSTR* ppszFrameSrc); +void __RPC_STUB ITargetContainer_GetFrameUrl_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ITargetContainer_GetFramesContainer_Proxy( + ITargetContainer* This, + IOleContainer** ppContainer); +void __RPC_STUB ITargetContainer_GetFramesContainer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __ITargetContainer_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + +unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); +unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); +void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_HTIFRAME_H */ diff --git a/reactos/include/psdk/htiframe.idl b/reactos/include/psdk/htiframe.idl new file mode 100644 index 00000000000..21a55a4270e --- /dev/null +++ b/reactos/include/psdk/htiframe.idl @@ -0,0 +1,134 @@ +/* + * Copyright 2006 Jacek Caban for CodeWeavers + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; +import "oleidl.idl"; + +/***************************************************************************** + * ITargetNotify interface + */ +[ + object, + uuid(863a99a0-21bc-11d0-82b4-00a0c90c29c5), + pointer_default(unique) +] +interface ITargetNotify : IUnknown +{ + typedef [unique] ITargetNotify *LPTARGETNOTIFY; + + HRESULT OnCreate( + [in] IUnknown *pUnkDestination, + [in] ULONG cbCookie); + + HRESULT OnReuse([in] IUnknown *pUnkDestination); +} + +/***************************************************************************** + * ITargetNotify2 interface + */ +[ + object, + uuid(3050f6b1-98b5-11cf-bb82-00aa00bdce0b), + pointer_default(unique) +] +interface ITargetNotify2 : ITargetNotify +{ + typedef [unique] ITargetNotify2 *LPTARGETNOTIFY2; + + HRESULT GetOptionString([in,out] BSTR *pbstrOptions); +} + +/***************************************************************************** + * ITargetFrame2 interface + */ +[ + object, + uuid(86d52e11-94a8-11d0-82af-00c04fd5ae38), + pointer_default(unique) +] +interface ITargetFrame2 : IUnknown +{ + typedef [unique] ITargetFrame2 *LPTARGETFRAME2; + + typedef enum { + FINDFRAME_NONE = 0, + FINDFRAME_JUSTTESTEXISTENCE = 1, + FINDFRAME_INTERNAL = 0x80000000 + } FINDFRAME_FLAGS; + + typedef enum { + FRAMEOPTIONS_SCROLL_YES = 0x00000001, + FRAMEOPTIONS_SCROLL_NO = 0x00000002, + FRAMEOPTIONS_SCROLL_AUTO = 0x00000004, + FRAMEOPTIONS_NORESIZE = 0x00000008, + FRAMEOPTIONS_NO3DBORDER = 0x00000010, + FRAMEOPTIONS_DESKTOP = 0x00000020, + FRAMEOPTIONS_BROWSERBAND = 0x00000040 + } FRAMEOPTIONS_FLAGS; + + HRESULT SetFrameName([in] LPCWSTR pszFrameName); + + HRESULT GetFrameName([out] LPWSTR *ppszFrameName); + + HRESULT GetParentFrame([out] IUnknown **ppunkParent); + + HRESULT SetFrameSrc([in] LPCWSTR pszFrameSrc); + + HRESULT GetFrameSrc([out] LPWSTR *ppszFrameSrc); + + HRESULT GetFramesContainer([out] IOleContainer **ppContainer); + + HRESULT SetFrameOptions([in] DWORD dwFlags); + + HRESULT GetFrameOptions([out] DWORD *pdwFlags); + + HRESULT SetFrameMargins( + [in] DWORD dwWidth, + [in] DWORD dwHeight); + + HRESULT GetFrameMargins( + [out] DWORD *pdwWidth, + [out] DWORD *pdwHeight); + + HRESULT FindFrame( + [in,unique] LPCWSTR pszTargetName, + [in] DWORD dwFlags, + [out] IUnknown **ppunkTargetFrame); + + HRESULT GetTargetAlias( + [in,unique] LPCWSTR pszTargetName, + [out] LPWSTR *ppszTargetAlias); +} + +/***************************************************************************** + * ITargetContainer interface + */ +[ + object, + uuid(7847ec01-2bec-11d0-82b4-00a0c90C29c5), + pointer_default(unique) +] +interface ITargetContainer : IUnknown +{ + typedef [unique] ITargetContainer *LPTARGETCONTAINER; + + HRESULT GetFrameUrl([out] LPWSTR *ppszFrameSrc); + + HRESULT GetFramesContainer([out] IOleContainer **ppContainer); + +} diff --git a/reactos/include/psdk/iads.h b/reactos/include/psdk/iads.h new file mode 100644 index 00000000000..e8d104244b1 --- /dev/null +++ b/reactos/include/psdk/iads.h @@ -0,0 +1,317 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\iads.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_IADS_H +#define __WIDL_INCLUDE_PSDK_IADS_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#ifndef __IADsContainer_FWD_DEFINED__ +#define __IADsContainer_FWD_DEFINED__ +typedef interface IADsContainer IADsContainer; +#endif + +/***************************************************************************** + * IADsContainer interface + */ +#ifndef __IADsContainer_INTERFACE_DEFINED__ +#define __IADsContainer_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IADsContainer, 0x001677d0, 0xfd16, 0x11ce, 0xab,0xc4, 0x02,0x60,0x8c,0x9e,0x75,0x53); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IADsContainer : public IDispatch +{ + virtual HRESULT STDMETHODCALLTYPE get_Count( + long* retval) = 0; + + virtual HRESULT STDMETHODCALLTYPE get__NewEnum( + IUnknown** retval) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Filter( + VARIANT* pvFilter) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Filter( + VARIANT vFilter) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Hints( + VARIANT* pvHints) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Hints( + VARIANT vHints) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetObject( + BSTR bstrClassName, + BSTR bstrRelativeName, + IDispatch** ppObject) = 0; + + virtual HRESULT STDMETHODCALLTYPE Create( + BSTR bstrClassName, + BSTR bstrRelativeName, + IDispatch** ppObject) = 0; + + virtual HRESULT STDMETHODCALLTYPE Delete( + BSTR bstrClassName, + BSTR bstrRelativeName) = 0; + + virtual HRESULT STDMETHODCALLTYPE CopyHere( + BSTR bstrSourceName, + BSTR bstrNewName, + IDispatch** ppObject) = 0; + + virtual HRESULT STDMETHODCALLTYPE MoveHere( + BSTR bstrSourceName, + BSTR bstrNewName, + IDispatch** ppObject) = 0; + +}; +#else +typedef struct IADsContainerVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IADsContainer* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IADsContainer* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IADsContainer* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IADsContainer* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IADsContainer* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IADsContainer* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IADsContainer* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + /*** IADsContainer methods ***/ + HRESULT (STDMETHODCALLTYPE *get_Count)( + IADsContainer* This, + long* retval); + + HRESULT (STDMETHODCALLTYPE *get__NewEnum)( + IADsContainer* This, + IUnknown** retval); + + HRESULT (STDMETHODCALLTYPE *get_Filter)( + IADsContainer* This, + VARIANT* pvFilter); + + HRESULT (STDMETHODCALLTYPE *put_Filter)( + IADsContainer* This, + VARIANT vFilter); + + HRESULT (STDMETHODCALLTYPE *get_Hints)( + IADsContainer* This, + VARIANT* pvHints); + + HRESULT (STDMETHODCALLTYPE *put_Hints)( + IADsContainer* This, + VARIANT vHints); + + HRESULT (STDMETHODCALLTYPE *GetObject)( + IADsContainer* This, + BSTR bstrClassName, + BSTR bstrRelativeName, + IDispatch** ppObject); + + HRESULT (STDMETHODCALLTYPE *Create)( + IADsContainer* This, + BSTR bstrClassName, + BSTR bstrRelativeName, + IDispatch** ppObject); + + HRESULT (STDMETHODCALLTYPE *Delete)( + IADsContainer* This, + BSTR bstrClassName, + BSTR bstrRelativeName); + + HRESULT (STDMETHODCALLTYPE *CopyHere)( + IADsContainer* This, + BSTR bstrSourceName, + BSTR bstrNewName, + IDispatch** ppObject); + + HRESULT (STDMETHODCALLTYPE *MoveHere)( + IADsContainer* This, + BSTR bstrSourceName, + BSTR bstrNewName, + IDispatch** ppObject); + + END_INTERFACE +} IADsContainerVtbl; +interface IADsContainer { + const IADsContainerVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IADsContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IADsContainer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IADsContainer_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IADsContainer_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IADsContainer_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IADsContainer_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IADsContainer_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +/*** IADsContainer methods ***/ +#define IADsContainer_get_Count(p,a) (p)->lpVtbl->get_Count(p,a) +#define IADsContainer_get__NewEnum(p,a) (p)->lpVtbl->get__NewEnum(p,a) +#define IADsContainer_get_Filter(p,a) (p)->lpVtbl->get_Filter(p,a) +#define IADsContainer_put_Filter(p,a) (p)->lpVtbl->put_Filter(p,a) +#define IADsContainer_get_Hints(p,a) (p)->lpVtbl->get_Hints(p,a) +#define IADsContainer_put_Hints(p,a) (p)->lpVtbl->put_Hints(p,a) +#define IADsContainer_GetObject(p,a,b,c) (p)->lpVtbl->GetObject(p,a,b,c) +#define IADsContainer_Create(p,a,b,c) (p)->lpVtbl->Create(p,a,b,c) +#define IADsContainer_Delete(p,a,b) (p)->lpVtbl->Delete(p,a,b) +#define IADsContainer_CopyHere(p,a,b,c) (p)->lpVtbl->CopyHere(p,a,b,c) +#define IADsContainer_MoveHere(p,a,b,c) (p)->lpVtbl->MoveHere(p,a,b,c) +#endif + +#endif + +HRESULT CALLBACK IADsContainer_get_Count_Proxy( + IADsContainer* This, + long* retval); +void __RPC_STUB IADsContainer_get_Count_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_get__NewEnum_Proxy( + IADsContainer* This, + IUnknown** retval); +void __RPC_STUB IADsContainer_get__NewEnum_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_get_Filter_Proxy( + IADsContainer* This, + VARIANT* pvFilter); +void __RPC_STUB IADsContainer_get_Filter_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_put_Filter_Proxy( + IADsContainer* This, + VARIANT vFilter); +void __RPC_STUB IADsContainer_put_Filter_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_get_Hints_Proxy( + IADsContainer* This, + VARIANT* pvHints); +void __RPC_STUB IADsContainer_get_Hints_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_put_Hints_Proxy( + IADsContainer* This, + VARIANT vHints); +void __RPC_STUB IADsContainer_put_Hints_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_GetObject_Proxy( + IADsContainer* This, + BSTR bstrClassName, + BSTR bstrRelativeName, + IDispatch** ppObject); +void __RPC_STUB IADsContainer_GetObject_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_Create_Proxy( + IADsContainer* This, + BSTR bstrClassName, + BSTR bstrRelativeName, + IDispatch** ppObject); +void __RPC_STUB IADsContainer_Create_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_Delete_Proxy( + IADsContainer* This, + BSTR bstrClassName, + BSTR bstrRelativeName); +void __RPC_STUB IADsContainer_Delete_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_CopyHere_Proxy( + IADsContainer* This, + BSTR bstrSourceName, + BSTR bstrNewName, + IDispatch** ppObject); +void __RPC_STUB IADsContainer_CopyHere_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IADsContainer_MoveHere_Proxy( + IADsContainer* This, + BSTR bstrSourceName, + BSTR bstrNewName, + IDispatch** ppObject); +void __RPC_STUB IADsContainer_MoveHere_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IADsContainer_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + +unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); +unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); +void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); +unsigned long __RPC_USER VARIANT_UserSize (unsigned long *, unsigned long, VARIANT *); +unsigned char * __RPC_USER VARIANT_UserMarshal (unsigned long *, unsigned char *, VARIANT *); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT *); +void __RPC_USER VARIANT_UserFree (unsigned long *, VARIANT *); + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_IADS_H */ diff --git a/reactos/include/psdk/iads.idl b/reactos/include/psdk/iads.idl new file mode 100644 index 00000000000..08cbfe89ed0 --- /dev/null +++ b/reactos/include/psdk/iads.idl @@ -0,0 +1,62 @@ +/* + * Copyright 2005 Francois Gouget + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "oaidl.idl"; + + +/***************************************************************************** + * IADsContainer interface + */ +[ + object, + uuid(001677d0-fd16-11ce-abc4-02608c9e7553) +] +interface IADsContainer: IDispatch +{ + [propget] HRESULT Count( + [out, retval] long *retval); + [propget, restricted] HRESULT _NewEnum( + [out, retval] IUnknown **retval); + [propget] HRESULT Filter( + [out, retval] VARIANT *pvFilter); + [propput] HRESULT Filter( + [in] VARIANT vFilter); + [propget] HRESULT Hints( + [out, retval] VARIANT *pvHints); + [propput] HRESULT Hints( + [in] VARIANT vHints); + HRESULT GetObject( + [in] BSTR bstrClassName, + [in] BSTR bstrRelativeName, + [out, retval] IDispatch **ppObject); + HRESULT Create( + [in] BSTR bstrClassName, + [in] BSTR bstrRelativeName, + [out, retval] IDispatch **ppObject); + HRESULT Delete( + [in] BSTR bstrClassName, + [in] BSTR bstrRelativeName); + HRESULT CopyHere( + [in] BSTR bstrSourceName, + [in] BSTR bstrNewName, + [out, retval] IDispatch **ppObject); + HRESULT MoveHere( + [in] BSTR bstrSourceName, + [in] BSTR bstrNewName, + [out, retval] IDispatch **ppObject); +} diff --git a/reactos/include/psdk/indexsrv.h b/reactos/include/psdk/indexsrv.h new file mode 100644 index 00000000000..10825e49af1 --- /dev/null +++ b/reactos/include/psdk/indexsrv.h @@ -0,0 +1,427 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\indexsrv.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_INDEXSRV_H +#define __WIDL_INCLUDE_PSDK_INDEXSRV_H +#ifdef __cplusplus +extern "C" { +#endif +#include +struct tagTEXT_SOURCE; +typedef HRESULT (WINAPI *PFNFILLTEXTBUFFER)(struct tagTEXT_SOURCE *pTextSource); +#if 0 +typedef void *PFNFILLTEXTBUFFER; +#endif +typedef struct tagTEXT_SOURCE { + PFNFILLTEXTBUFFER pfnFillTextBuffer; + const WCHAR *awcBuffer; + ULONG iEnd; + ULONG iCur; +} TEXT_SOURCE; +typedef enum tagWORDREP_BREAK_TYPE { + WORDREP_BREAK_EOW = 0, + WORDREP_BREAK_EOS = 1, + WORDREP_BREAK_EOP = 2, + WORDREP_BREAK_EOC = 3 +} WORDREP_BREAK_TYPE; +#ifndef __IWordSink_FWD_DEFINED__ +#define __IWordSink_FWD_DEFINED__ +typedef interface IWordSink IWordSink; +#endif + +/***************************************************************************** + * IWordSink interface + */ +#ifndef __IWordSink_INTERFACE_DEFINED__ +#define __IWordSink_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IWordSink, 0xcc907054, 0xc058, 0x101a, 0xb5,0x54, 0x08,0x00,0x2b,0x33,0xb0,0xe6); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IWordSink : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE PutWord( + ULONG cwc, + const WCHAR* pwcInBuf, + ULONG cwcSrcLen, + ULONG cwcSrcPos) = 0; + + virtual HRESULT STDMETHODCALLTYPE PutAltWord( + ULONG cwc, + const WCHAR* pwcInBuf, + ULONG cwcSrcLen, + ULONG cwcSrcPos) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartAltPhrase( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndAltPhrase( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE PutBreak( + WORDREP_BREAK_TYPE breakType) = 0; + +}; +#else +typedef struct IWordSinkVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IWordSink* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IWordSink* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IWordSink* This); + + /*** IWordSink methods ***/ + HRESULT (STDMETHODCALLTYPE *PutWord)( + IWordSink* This, + ULONG cwc, + const WCHAR* pwcInBuf, + ULONG cwcSrcLen, + ULONG cwcSrcPos); + + HRESULT (STDMETHODCALLTYPE *PutAltWord)( + IWordSink* This, + ULONG cwc, + const WCHAR* pwcInBuf, + ULONG cwcSrcLen, + ULONG cwcSrcPos); + + HRESULT (STDMETHODCALLTYPE *StartAltPhrase)( + IWordSink* This); + + HRESULT (STDMETHODCALLTYPE *EndAltPhrase)( + IWordSink* This); + + HRESULT (STDMETHODCALLTYPE *PutBreak)( + IWordSink* This, + WORDREP_BREAK_TYPE breakType); + + END_INTERFACE +} IWordSinkVtbl; +interface IWordSink { + const IWordSinkVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IWordSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IWordSink_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IWordSink_Release(p) (p)->lpVtbl->Release(p) +/*** IWordSink methods ***/ +#define IWordSink_PutWord(p,a,b,c,d) (p)->lpVtbl->PutWord(p,a,b,c,d) +#define IWordSink_PutAltWord(p,a,b,c,d) (p)->lpVtbl->PutAltWord(p,a,b,c,d) +#define IWordSink_StartAltPhrase(p) (p)->lpVtbl->StartAltPhrase(p) +#define IWordSink_EndAltPhrase(p) (p)->lpVtbl->EndAltPhrase(p) +#define IWordSink_PutBreak(p,a) (p)->lpVtbl->PutBreak(p,a) +#endif + +#endif + +HRESULT CALLBACK IWordSink_PutWord_Proxy( + IWordSink* This, + ULONG cwc, + const WCHAR* pwcInBuf, + ULONG cwcSrcLen, + ULONG cwcSrcPos); +void __RPC_STUB IWordSink_PutWord_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IWordSink_PutAltWord_Proxy( + IWordSink* This, + ULONG cwc, + const WCHAR* pwcInBuf, + ULONG cwcSrcLen, + ULONG cwcSrcPos); +void __RPC_STUB IWordSink_PutAltWord_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IWordSink_StartAltPhrase_Proxy( + IWordSink* This); +void __RPC_STUB IWordSink_StartAltPhrase_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IWordSink_EndAltPhrase_Proxy( + IWordSink* This); +void __RPC_STUB IWordSink_EndAltPhrase_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IWordSink_PutBreak_Proxy( + IWordSink* This, + WORDREP_BREAK_TYPE breakType); +void __RPC_STUB IWordSink_PutBreak_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IWordSink_INTERFACE_DEFINED__ */ + +#ifndef __IPhraseSink_FWD_DEFINED__ +#define __IPhraseSink_FWD_DEFINED__ +typedef interface IPhraseSink IPhraseSink; +#endif + +/***************************************************************************** + * IPhraseSink interface + */ +#ifndef __IPhraseSink_INTERFACE_DEFINED__ +#define __IPhraseSink_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPhraseSink, 0xcc906ff0, 0xc058, 0x101a, 0xb5,0x54, 0x08,0x00,0x2b,0x33,0xb0,0xe6); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPhraseSink : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE PutSmallPhrase( + const WCHAR* pwcNoun, + ULONG cwcNoun, + const WCHAR* pwcModifier, + ULONG cwcModifier, + ULONG ulAttachmentType) = 0; + + virtual HRESULT STDMETHODCALLTYPE PutPhrase( + const WCHAR* pwcPhrase, + ULONG cwcPhrase) = 0; + +}; +#else +typedef struct IPhraseSinkVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPhraseSink* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPhraseSink* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPhraseSink* This); + + /*** IPhraseSink methods ***/ + HRESULT (STDMETHODCALLTYPE *PutSmallPhrase)( + IPhraseSink* This, + const WCHAR* pwcNoun, + ULONG cwcNoun, + const WCHAR* pwcModifier, + ULONG cwcModifier, + ULONG ulAttachmentType); + + HRESULT (STDMETHODCALLTYPE *PutPhrase)( + IPhraseSink* This, + const WCHAR* pwcPhrase, + ULONG cwcPhrase); + + END_INTERFACE +} IPhraseSinkVtbl; +interface IPhraseSink { + const IPhraseSinkVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPhraseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPhraseSink_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPhraseSink_Release(p) (p)->lpVtbl->Release(p) +/*** IPhraseSink methods ***/ +#define IPhraseSink_PutSmallPhrase(p,a,b,c,d,e) (p)->lpVtbl->PutSmallPhrase(p,a,b,c,d,e) +#define IPhraseSink_PutPhrase(p,a,b) (p)->lpVtbl->PutPhrase(p,a,b) +#endif + +#endif + +HRESULT CALLBACK IPhraseSink_PutSmallPhrase_Proxy( + IPhraseSink* This, + const WCHAR* pwcNoun, + ULONG cwcNoun, + const WCHAR* pwcModifier, + ULONG cwcModifier, + ULONG ulAttachmentType); +void __RPC_STUB IPhraseSink_PutSmallPhrase_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPhraseSink_PutPhrase_Proxy( + IPhraseSink* This, + const WCHAR* pwcPhrase, + ULONG cwcPhrase); +void __RPC_STUB IPhraseSink_PutPhrase_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPhraseSink_INTERFACE_DEFINED__ */ + +#ifndef __IWordBreaker_FWD_DEFINED__ +#define __IWordBreaker_FWD_DEFINED__ +typedef interface IWordBreaker IWordBreaker; +#endif + +/***************************************************************************** + * IWordBreaker interface + */ +#ifndef __IWordBreaker_INTERFACE_DEFINED__ +#define __IWordBreaker_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IWordBreaker, 0xd53552c8, 0x77e3, 0x101a, 0xb5,0x52, 0x08,0x00,0x2b,0x33,0xb0,0xe6); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IWordBreaker : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Init( + BOOL fQuery, + ULONG ulMaxTokenSize, + BOOL* pfLicense) = 0; + + virtual HRESULT STDMETHODCALLTYPE BreakText( + TEXT_SOURCE* pTextSource, + IWordSink* pWordSink, + IPhraseSink* pPhraseSink) = 0; + + virtual HRESULT STDMETHODCALLTYPE ComposePhrase( + const WCHAR* pwcNoun, + ULONG cwcNoun, + const WCHAR* pwcModifier, + ULONG cwcModifier, + ULONG ulAttachmentType, + WCHAR* pwcPhrase, + ULONG* pcwcPhrase) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLicenseToUse( + const WCHAR** ppwcsLicense) = 0; + +}; +#else +typedef struct IWordBreakerVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IWordBreaker* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IWordBreaker* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IWordBreaker* This); + + /*** IWordBreaker methods ***/ + HRESULT (STDMETHODCALLTYPE *Init)( + IWordBreaker* This, + BOOL fQuery, + ULONG ulMaxTokenSize, + BOOL* pfLicense); + + HRESULT (STDMETHODCALLTYPE *BreakText)( + IWordBreaker* This, + TEXT_SOURCE* pTextSource, + IWordSink* pWordSink, + IPhraseSink* pPhraseSink); + + HRESULT (STDMETHODCALLTYPE *ComposePhrase)( + IWordBreaker* This, + const WCHAR* pwcNoun, + ULONG cwcNoun, + const WCHAR* pwcModifier, + ULONG cwcModifier, + ULONG ulAttachmentType, + WCHAR* pwcPhrase, + ULONG* pcwcPhrase); + + HRESULT (STDMETHODCALLTYPE *GetLicenseToUse)( + IWordBreaker* This, + const WCHAR** ppwcsLicense); + + END_INTERFACE +} IWordBreakerVtbl; +interface IWordBreaker { + const IWordBreakerVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IWordBreaker_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IWordBreaker_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IWordBreaker_Release(p) (p)->lpVtbl->Release(p) +/*** IWordBreaker methods ***/ +#define IWordBreaker_Init(p,a,b,c) (p)->lpVtbl->Init(p,a,b,c) +#define IWordBreaker_BreakText(p,a,b,c) (p)->lpVtbl->BreakText(p,a,b,c) +#define IWordBreaker_ComposePhrase(p,a,b,c,d,e,f,g) (p)->lpVtbl->ComposePhrase(p,a,b,c,d,e,f,g) +#define IWordBreaker_GetLicenseToUse(p,a) (p)->lpVtbl->GetLicenseToUse(p,a) +#endif + +#endif + +HRESULT CALLBACK IWordBreaker_Init_Proxy( + IWordBreaker* This, + BOOL fQuery, + ULONG ulMaxTokenSize, + BOOL* pfLicense); +void __RPC_STUB IWordBreaker_Init_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IWordBreaker_BreakText_Proxy( + IWordBreaker* This, + TEXT_SOURCE* pTextSource, + IWordSink* pWordSink, + IPhraseSink* pPhraseSink); +void __RPC_STUB IWordBreaker_BreakText_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IWordBreaker_ComposePhrase_Proxy( + IWordBreaker* This, + const WCHAR* pwcNoun, + ULONG cwcNoun, + const WCHAR* pwcModifier, + ULONG cwcModifier, + ULONG ulAttachmentType, + WCHAR* pwcPhrase, + ULONG* pcwcPhrase); +void __RPC_STUB IWordBreaker_ComposePhrase_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IWordBreaker_GetLicenseToUse_Proxy( + IWordBreaker* This, + const WCHAR** ppwcsLicense); +void __RPC_STUB IWordBreaker_GetLicenseToUse_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IWordBreaker_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_INDEXSRV_H */ diff --git a/reactos/include/psdk/indexsrv.idl b/reactos/include/psdk/indexsrv.idl new file mode 100644 index 00000000000..e7b99197238 --- /dev/null +++ b/reactos/include/psdk/indexsrv.idl @@ -0,0 +1,126 @@ +/* + * Copyright 2006 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; + +/* + * widl doesn't like the declaration of PFNFILLTEXTBUFFER, so work around it... + * Not sure that function pointers are even legal in idl. + */ +cpp_quote("struct tagTEXT_SOURCE;") +cpp_quote("typedef HRESULT (WINAPI *PFNFILLTEXTBUFFER)(struct tagTEXT_SOURCE *pTextSource);") +cpp_quote("#if 0") +typedef void* PFNFILLTEXTBUFFER; +cpp_quote("#endif") + +typedef struct tagTEXT_SOURCE +{ + PFNFILLTEXTBUFFER pfnFillTextBuffer; + const WCHAR *awcBuffer; + ULONG iEnd; + ULONG iCur; +} TEXT_SOURCE; + +typedef enum tagWORDREP_BREAK_TYPE +{ + WORDREP_BREAK_EOW = 0, + WORDREP_BREAK_EOS = 1, + WORDREP_BREAK_EOP = 2, + WORDREP_BREAK_EOC = 3 +} WORDREP_BREAK_TYPE; + + +/***************************************************************************** + * IWordSink interface + */ +[ + unique, + uuid(cc907054-c058-101a-b554-08002b33b0e6), + object, + local +] +interface IWordSink : IUnknown +{ + HRESULT PutWord( + [in] ULONG cwc, + [size_is(cwcSrcLen)][in] const WCHAR *pwcInBuf, + [in] ULONG cwcSrcLen, + [in] ULONG cwcSrcPos); + HRESULT PutAltWord( + [in] ULONG cwc, + [size_is(cwcSrcLen)][in] const WCHAR *pwcInBuf, + [in] ULONG cwcSrcLen, + [in] ULONG cwcSrcPos); + HRESULT StartAltPhrase(void); + HRESULT EndAltPhrase(void); + HRESULT PutBreak( + [in] WORDREP_BREAK_TYPE breakType); +} + +/***************************************************************************** + * IPhraseSink interface + */ +[ + unique, + uuid(cc906ff0-c058-101a-b554-08002b33b0e6), + object, + local +] +interface IPhraseSink: IUnknown +{ + HRESULT PutSmallPhrase( + [size_is(cwcNoun)][in] const WCHAR *pwcNoun, + [in] ULONG cwcNoun, + [size_is(cwcModifier)][in] const WCHAR *pwcModifier, + [in] ULONG cwcModifier, + [in] ULONG ulAttachmentType); + HRESULT PutPhrase( + [size_is(cwcPhrase)][in] const WCHAR *pwcPhrase, + [in] ULONG cwcPhrase); +} + +/***************************************************************************** + * IWordBreaker interface + */ +[ + unique, + uuid(d53552c8-77e3-101a-b552-08002b33b0e6), + object, + local +] +interface IWordBreaker: IUnknown +{ + HRESULT Init( + [in] BOOL fQuery, + [in] ULONG ulMaxTokenSize, + [out] BOOL *pfLicense); + HRESULT BreakText( + [in] TEXT_SOURCE *pTextSource, + [in] IWordSink *pWordSink, + [in] IPhraseSink *pPhraseSink); + HRESULT ComposePhrase( + [size_is(cwcNoun)][in] const WCHAR *pwcNoun, + [in] ULONG cwcNoun, + [size_is(cwcModifier)][in] const WCHAR *pwcModifier, + [in] ULONG cwcModifier, + [in] ULONG ulAttachmentType, + [size_is(*pcwcPhrase)][out] WCHAR *pwcPhrase, + [out][in] ULONG *pcwcPhrase); + HRESULT GetLicenseToUse( + [string][out] const WCHAR **ppwcsLicense); +} diff --git a/reactos/include/psdk/initguid.h b/reactos/include/psdk/initguid.h index aa5e39cf615..4983217b393 100644 --- a/reactos/include/psdk/initguid.h +++ b/reactos/include/psdk/initguid.h @@ -1,16 +1,26 @@ -#ifndef _INITGUID_H -#define _INITGUID_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif +/* + * Defines a minimum set of macros create GUID's to keep the size + * small + * + * This file should be included into "only GUID definition *.h" like + * shlguid.h + * + * Copyright (C) 1999 Juergen Schmied + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ -#ifndef DEFINE_GUID -#include -#endif -#undef DEFINE_GUID -#ifdef __cplusplus -#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) extern const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} -#else -#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} -#endif -#endif +#define INITGUID +#include diff --git a/reactos/include/psdk/mediaobj.h b/reactos/include/psdk/mediaobj.h new file mode 100644 index 00000000000..e9c2c23c60e --- /dev/null +++ b/reactos/include/psdk/mediaobj.h @@ -0,0 +1,172 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\mediaobj.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_MEDIAOBJ_H +#define __WIDL_INCLUDE_PSDK_MEDIAOBJ_H +#ifdef __cplusplus +extern "C" { +#endif +#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__) +#include +#include +#endif +#include +#include +#ifndef __IDMOQualityControl_FWD_DEFINED__ +#define __IDMOQualityControl_FWD_DEFINED__ +typedef interface IDMOQualityControl IDMOQualityControl; +#endif + +#ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__ +#define __IDMOVideoOutputOptimizations_FWD_DEFINED__ +typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations; +#endif + +#ifndef __IMediaBuffer_FWD_DEFINED__ +#define __IMediaBuffer_FWD_DEFINED__ +typedef interface IMediaBuffer IMediaBuffer; +#endif + +#ifndef __IMediaObject_FWD_DEFINED__ +#define __IMediaObject_FWD_DEFINED__ +typedef interface IMediaObject IMediaObject; +#endif + +#ifndef __IMediaObjectInPlace_FWD_DEFINED__ +#define __IMediaObjectInPlace_FWD_DEFINED__ +typedef interface IMediaObjectInPlace IMediaObjectInPlace; +#endif + +typedef struct _DMOMediaType { + GUID majortype; + GUID subtype; + BOOL bFixedSizeSamples; + BOOL bTemporalCompression; + ULONG lSampleSize; + GUID formattype; + IUnknown *pUnk; + ULONG cbFormat; + BYTE *pbFormat; +} DMO_MEDIA_TYPE; +#ifndef __IEnumDMO_FWD_DEFINED__ +#define __IEnumDMO_FWD_DEFINED__ +typedef interface IEnumDMO IEnumDMO; +#endif + +/***************************************************************************** + * IEnumDMO interface + */ +#ifndef __IEnumDMO_INTERFACE_DEFINED__ +#define __IEnumDMO_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IEnumDMO : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Next( + DWORD cItemsToFetch, + CLSID* pCLSID, + WCHAR** Names, + DWORD* pcItemsFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + DWORD cItemsToSkip) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumDMO** ppEnum) = 0; + +}; +#else +typedef struct IEnumDMOVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumDMO* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumDMO* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumDMO* This); + + /*** IEnumDMO methods ***/ + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumDMO* This, + DWORD cItemsToFetch, + CLSID* pCLSID, + WCHAR** Names, + DWORD* pcItemsFetched); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumDMO* This, + DWORD cItemsToSkip); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumDMO* This); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumDMO* This, + IEnumDMO** ppEnum); + + END_INTERFACE +} IEnumDMOVtbl; +interface IEnumDMO { + const IEnumDMOVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumDMO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumDMO_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumDMO_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumDMO methods ***/ +#define IEnumDMO_Next(p,a,b,c,d) (p)->lpVtbl->Next(p,a,b,c,d) +#define IEnumDMO_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumDMO_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumDMO_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#endif + +HRESULT CALLBACK IEnumDMO_Skip_Proxy( + IEnumDMO* This, + DWORD cItemsToSkip); +void __RPC_STUB IEnumDMO_Skip_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumDMO_Reset_Proxy( + IEnumDMO* This); +void __RPC_STUB IEnumDMO_Reset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumDMO_Clone_Proxy( + IEnumDMO* This, + IEnumDMO** ppEnum); +void __RPC_STUB IEnumDMO_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumDMO_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_MEDIAOBJ_H */ diff --git a/reactos/include/psdk/mediaobj.idl b/reactos/include/psdk/mediaobj.idl new file mode 100644 index 00000000000..a8700dbae91 --- /dev/null +++ b/reactos/include/psdk/mediaobj.idl @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2002 Alexandre Julliard + * Copyright (C) 2004 Vincent Béron + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +cpp_quote("#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__)") +cpp_quote("#include ") +cpp_quote("#include ") +cpp_quote("#endif") + +import "unknwn.idl"; +import "objidl.idl"; + +interface IDMOQualityControl; +interface IDMOVideoOutputOptimizations; +interface IMediaBuffer; +interface IMediaObject; +interface IMediaObjectInPlace; + +typedef struct _DMOMediaType +{ + GUID majortype; + GUID subtype; + BOOL bFixedSizeSamples; + BOOL bTemporalCompression; + ULONG lSampleSize; + GUID formattype; + IUnknown *pUnk; + ULONG cbFormat; + BYTE *pbFormat; +} DMO_MEDIA_TYPE; + +/***************************************************************************** + * IEnumDMO interface + */ +[ + object, + uuid(2C3CD98A-2BFA-4A53-9C27-5249BA64BA0F), + pointer_default(unique) +] +interface IEnumDMO : IUnknown +{ + [local] + HRESULT Next( + [in] DWORD cItemsToFetch, + [out] CLSID *pCLSID, + [out] WCHAR **Names, + [out] DWORD *pcItemsFetched + ); + + HRESULT Skip( + [in] DWORD cItemsToSkip + ); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumDMO **ppEnum + ); +} diff --git a/reactos/include/psdk/mimeinfo.h b/reactos/include/psdk/mimeinfo.h new file mode 100644 index 00000000000..ff76c858a2e --- /dev/null +++ b/reactos/include/psdk/mimeinfo.h @@ -0,0 +1,95 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\mimeinfo.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_MIMEINFO_H +#define __WIDL_INCLUDE_PSDK_MIMEINFO_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#ifndef __IMimeInfo_FWD_DEFINED__ +#define __IMimeInfo_FWD_DEFINED__ +typedef interface IMimeInfo IMimeInfo; +#endif + +typedef IMimeInfo *LPMIMEINFO; +/***************************************************************************** + * IMimeInfo interface + */ +#ifndef __IMimeInfo_INTERFACE_DEFINED__ +#define __IMimeInfo_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMimeInfo, 0xf77459a0, 0xbf9a, 0x11cf, 0xba,0x4e, 0x00,0xc0,0x4f,0xd7,0x08,0x16); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMimeInfo : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetMimeCLSIDMapping( + UINT* pcTypes, + LPCSTR** ppszTypes, + CLSID** ppclsID) = 0; + +}; +#else +typedef struct IMimeInfoVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMimeInfo* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMimeInfo* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMimeInfo* This); + + /*** IMimeInfo methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMimeCLSIDMapping)( + IMimeInfo* This, + UINT* pcTypes, + LPCSTR** ppszTypes, + CLSID** ppclsID); + + END_INTERFACE +} IMimeInfoVtbl; +interface IMimeInfo { + const IMimeInfoVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMimeInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMimeInfo_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMimeInfo_Release(p) (p)->lpVtbl->Release(p) +/*** IMimeInfo methods ***/ +#define IMimeInfo_GetMimeCLSIDMapping(p,a,b,c) (p)->lpVtbl->GetMimeCLSIDMapping(p,a,b,c) +#endif + +#endif + +HRESULT CALLBACK IMimeInfo_GetMimeCLSIDMapping_Proxy( + IMimeInfo* This, + UINT* pcTypes, + LPCSTR** ppszTypes, + CLSID** ppclsID); +void __RPC_STUB IMimeInfo_GetMimeCLSIDMapping_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMimeInfo_INTERFACE_DEFINED__ */ + +#define SID_IMimeInfo IID_IMimeInfo +/* Begin additional prototypes for all interfaces */ + + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_MIMEINFO_H */ diff --git a/reactos/include/reactos/wine/objbase.h b/reactos/include/psdk/mimeinfo.idl similarity index 54% rename from reactos/include/reactos/wine/objbase.h rename to reactos/include/psdk/mimeinfo.idl index 9dac4dc79e7..5925719eac7 100644 --- a/reactos/include/reactos/wine/objbase.h +++ b/reactos/include/psdk/mimeinfo.idl @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-1999 François Gouget + * Copyright (C) 2005 Vijay Kiran Kamuju * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -13,31 +13,24 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define WINOLEAPI STDAPI -#define WINOLEAPI_(type) STDAPI_(type) +import "objidl.idl"; -#ifdef DBG -#undef DBG -#define DBG 1 -#endif +[ + local, + object, + uuid(f77459a0-bf9a-11cf-ba4e-00c04fd70816), + pointer_default(unique) +] +interface IMimeInfo : IUnknown +{ + typedef [unique] IMimeInfo *LPMIMEINFO; -#if !defined(_MSC_VER) -#include_next -#endif + HRESULT GetMimeCLSIDMapping( [out] UINT *pcTypes, + [out] LPCSTR * *ppszTypes, + [out] CLSID * *ppclsID ); +} -#ifndef _OBJBASE_H_ -#define _OBJBASE_H_ - -#define interface struct - -/***************************************************************************** - * Storage API - */ -#define STGM_NOSNAPSHOT 0x00200000 - -HRESULT WINAPI CoGetPSClsid(REFIID riid,CLSID *pclsid); - -#endif /* _OBJBASE_H_ */ +cpp_quote("#define SID_IMimeInfo IID_IMimeInfo") diff --git a/reactos/include/psdk/mlang.h b/reactos/include/psdk/mlang.h new file mode 100644 index 00000000000..4972f97291d --- /dev/null +++ b/reactos/include/psdk/mlang.h @@ -0,0 +1,2428 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\mlang.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_MLANG_H +#define __WIDL_INCLUDE_PSDK_MLANG_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#ifndef __IStream_FWD_DEFINED__ +#define __IStream_FWD_DEFINED__ +typedef interface IStream IStream; +#endif + +#ifndef _WINNT_ +typedef WORD LANGID; +#endif +#ifndef __IMLangCodePages_FWD_DEFINED__ +#define __IMLangCodePages_FWD_DEFINED__ +typedef interface IMLangCodePages IMLangCodePages; +#endif + +/***************************************************************************** + * IMLangCodePages interface + */ +#ifndef __IMLangCodePages_INTERFACE_DEFINED__ +#define __IMLangCodePages_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMLangCodePages, 0x359f3443, 0xbd4a, 0x11d0, 0xb1,0x88, 0x00,0xaa,0x00,0x38,0xc9,0x69); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMLangCodePages : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetCharCodePages( + WCHAR chSrc, + DWORD* pdwCodePages) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStrCodePages( + const WCHAR* pszSrc, + long cchSrc, + DWORD dwPriorityCodePages, + DWORD* pdwCodePages, + long* pcchCodePages) = 0; + + virtual HRESULT STDMETHODCALLTYPE CodePageToCodePages( + UINT uCodePage, + DWORD* pdwCodePages) = 0; + + virtual HRESULT STDMETHODCALLTYPE CodePagesToCodePage( + DWORD dwCodePages, + UINT uDefaultCodePage, + UINT* puCodePage) = 0; + +}; +#else +typedef struct IMLangCodePagesVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMLangCodePages* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMLangCodePages* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMLangCodePages* This); + + /*** IMLangCodePages methods ***/ + HRESULT (STDMETHODCALLTYPE *GetCharCodePages)( + IMLangCodePages* This, + WCHAR chSrc, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *GetStrCodePages)( + IMLangCodePages* This, + const WCHAR* pszSrc, + long cchSrc, + DWORD dwPriorityCodePages, + DWORD* pdwCodePages, + long* pcchCodePages); + + HRESULT (STDMETHODCALLTYPE *CodePageToCodePages)( + IMLangCodePages* This, + UINT uCodePage, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *CodePagesToCodePage)( + IMLangCodePages* This, + DWORD dwCodePages, + UINT uDefaultCodePage, + UINT* puCodePage); + + END_INTERFACE +} IMLangCodePagesVtbl; +interface IMLangCodePages { + const IMLangCodePagesVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMLangCodePages_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMLangCodePages_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMLangCodePages_Release(p) (p)->lpVtbl->Release(p) +/*** IMLangCodePages methods ***/ +#define IMLangCodePages_GetCharCodePages(p,a,b) (p)->lpVtbl->GetCharCodePages(p,a,b) +#define IMLangCodePages_GetStrCodePages(p,a,b,c,d,e) (p)->lpVtbl->GetStrCodePages(p,a,b,c,d,e) +#define IMLangCodePages_CodePageToCodePages(p,a,b) (p)->lpVtbl->CodePageToCodePages(p,a,b) +#define IMLangCodePages_CodePagesToCodePage(p,a,b,c) (p)->lpVtbl->CodePagesToCodePage(p,a,b,c) +#endif + +#endif + +HRESULT CALLBACK IMLangCodePages_GetCharCodePages_Proxy( + IMLangCodePages* This, + WCHAR chSrc, + DWORD* pdwCodePages); +void __RPC_STUB IMLangCodePages_GetCharCodePages_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangCodePages_GetStrCodePages_Proxy( + IMLangCodePages* This, + const WCHAR* pszSrc, + long cchSrc, + DWORD dwPriorityCodePages, + DWORD* pdwCodePages, + long* pcchCodePages); +void __RPC_STUB IMLangCodePages_GetStrCodePages_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangCodePages_CodePageToCodePages_Proxy( + IMLangCodePages* This, + UINT uCodePage, + DWORD* pdwCodePages); +void __RPC_STUB IMLangCodePages_CodePageToCodePages_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangCodePages_CodePagesToCodePage_Proxy( + IMLangCodePages* This, + DWORD dwCodePages, + UINT uDefaultCodePage, + UINT* puCodePage); +void __RPC_STUB IMLangCodePages_CodePagesToCodePage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMLangCodePages_INTERFACE_DEFINED__ */ + +#ifndef __IMLangFontLink_FWD_DEFINED__ +#define __IMLangFontLink_FWD_DEFINED__ +typedef interface IMLangFontLink IMLangFontLink; +#endif + +/***************************************************************************** + * IMLangFontLink interface + */ +#ifndef __IMLangFontLink_INTERFACE_DEFINED__ +#define __IMLangFontLink_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMLangFontLink, 0x359f3441, 0xbd4a, 0x11d0, 0xb1,0x88, 0x00,0xaa,0x00,0x38,0xc9,0x69); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMLangFontLink : public IMLangCodePages +{ + virtual HRESULT STDMETHODCALLTYPE GetFontCodePages( + HDC hDC, + HFONT hFont, + DWORD* pdwCodePages) = 0; + + virtual HRESULT STDMETHODCALLTYPE MapFont( + HDC hDC, + DWORD dwCodePages, + HFONT hSrcFont, + HFONT* phDestFont) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseFont( + HFONT hFont) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResetFontMapping( + ) = 0; + +}; +#else +typedef struct IMLangFontLinkVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMLangFontLink* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMLangFontLink* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMLangFontLink* This); + + /*** IMLangCodePages methods ***/ + HRESULT (STDMETHODCALLTYPE *GetCharCodePages)( + IMLangFontLink* This, + WCHAR chSrc, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *GetStrCodePages)( + IMLangFontLink* This, + const WCHAR* pszSrc, + long cchSrc, + DWORD dwPriorityCodePages, + DWORD* pdwCodePages, + long* pcchCodePages); + + HRESULT (STDMETHODCALLTYPE *CodePageToCodePages)( + IMLangFontLink* This, + UINT uCodePage, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *CodePagesToCodePage)( + IMLangFontLink* This, + DWORD dwCodePages, + UINT uDefaultCodePage, + UINT* puCodePage); + + /*** IMLangFontLink methods ***/ + HRESULT (STDMETHODCALLTYPE *GetFontCodePages)( + IMLangFontLink* This, + HDC hDC, + HFONT hFont, + DWORD* pdwCodePages); + + HRESULT (STDMETHODCALLTYPE *MapFont)( + IMLangFontLink* This, + HDC hDC, + DWORD dwCodePages, + HFONT hSrcFont, + HFONT* phDestFont); + + HRESULT (STDMETHODCALLTYPE *ReleaseFont)( + IMLangFontLink* This, + HFONT hFont); + + HRESULT (STDMETHODCALLTYPE *ResetFontMapping)( + IMLangFontLink* This); + + END_INTERFACE +} IMLangFontLinkVtbl; +interface IMLangFontLink { + const IMLangFontLinkVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMLangFontLink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMLangFontLink_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMLangFontLink_Release(p) (p)->lpVtbl->Release(p) +/*** IMLangCodePages methods ***/ +#define IMLangFontLink_GetCharCodePages(p,a,b) (p)->lpVtbl->GetCharCodePages(p,a,b) +#define IMLangFontLink_GetStrCodePages(p,a,b,c,d,e) (p)->lpVtbl->GetStrCodePages(p,a,b,c,d,e) +#define IMLangFontLink_CodePageToCodePages(p,a,b) (p)->lpVtbl->CodePageToCodePages(p,a,b) +#define IMLangFontLink_CodePagesToCodePage(p,a,b,c) (p)->lpVtbl->CodePagesToCodePage(p,a,b,c) +/*** IMLangFontLink methods ***/ +#define IMLangFontLink_GetFontCodePages(p,a,b,c) (p)->lpVtbl->GetFontCodePages(p,a,b,c) +#define IMLangFontLink_MapFont(p,a,b,c,d) (p)->lpVtbl->MapFont(p,a,b,c,d) +#define IMLangFontLink_ReleaseFont(p,a) (p)->lpVtbl->ReleaseFont(p,a) +#define IMLangFontLink_ResetFontMapping(p) (p)->lpVtbl->ResetFontMapping(p) +#endif + +#endif + +HRESULT CALLBACK IMLangFontLink_GetFontCodePages_Proxy( + IMLangFontLink* This, + HDC hDC, + HFONT hFont, + DWORD* pdwCodePages); +void __RPC_STUB IMLangFontLink_GetFontCodePages_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangFontLink_MapFont_Proxy( + IMLangFontLink* This, + HDC hDC, + DWORD dwCodePages, + HFONT hSrcFont, + HFONT* phDestFont); +void __RPC_STUB IMLangFontLink_MapFont_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangFontLink_ReleaseFont_Proxy( + IMLangFontLink* This, + HFONT hFont); +void __RPC_STUB IMLangFontLink_ReleaseFont_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangFontLink_ResetFontMapping_Proxy( + IMLangFontLink* This); +void __RPC_STUB IMLangFontLink_ResetFontMapping_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMLangFontLink_INTERFACE_DEFINED__ */ + +#ifndef __IEnumScript_FWD_DEFINED__ +#define __IEnumScript_FWD_DEFINED__ +typedef interface IEnumScript IEnumScript; +#endif + +#define MAX_SCRIPT_NAME (48) + +#define MAX_MIMEFACE_NAME (32) + +typedef BYTE SCRIPT_ID; +typedef __int64 SCRIPT_IDS; +typedef enum tagSCRIPTCONTF { + sidDefault = 0, + sidMerge = sidDefault + 1, + sidAsciiSym = sidMerge + 1, + sidAsciiLatin = sidAsciiSym + 1, + sidLatin = sidAsciiLatin + 1, + sidGreek = sidLatin + 1, + sidCyrillic = sidGreek + 1, + sidArmenian = sidCyrillic + 1, + sidHebrew = sidArmenian + 1, + sidArabic = sidHebrew + 1, + sidDevanagari = sidArabic + 1, + sidBengali = sidDevanagari + 1, + sidGurmukhi = sidBengali + 1, + sidGujarati = sidGurmukhi + 1, + sidOriya = sidGujarati + 1, + sidTamil = sidOriya + 1, + sidTelugu = sidTamil + 1, + sidKannada = sidTelugu + 1, + sidMalayalam = sidKannada + 1, + sidThai = sidMalayalam + 1, + sidLao = sidThai + 1, + sidTibetan = sidLao + 1, + sidGeorgian = sidTibetan + 1, + sidHangul = sidGeorgian + 1, + sidKana = sidHangul + 1, + sidBopomofo = sidKana + 1, + sidHan = sidBopomofo + 1, + sidEthiopic = sidHan + 1, + sidCanSyllabic = sidEthiopic + 1, + sidCherokee = sidCanSyllabic + 1, + sidYi = sidCherokee + 1, + sidBraille = sidYi + 1, + sidRunic = sidBraille + 1, + sidOgham = sidRunic + 1, + sidSinhala = sidOgham + 1, + sidSyriac = sidSinhala + 1, + sidBurmese = sidSyriac + 1, + sidKhmer = sidBurmese + 1, + sidThaana = sidKhmer + 1, + sidMongolian = sidThaana + 1, + sidUserDefined = sidMongolian + 1, + sidLim = sidUserDefined + 1, + sidFEFirst = sidHangul, + sidFELast = sidHan +} SCRIPTCONTF; +typedef enum tagSCRIPTFONTCONTF { + SCRIPTCONTF_FIXED_FONT = 0x1, + SCRIPTCONTF_PROPORTIONAL_FONT = 0x2, + SCRIPTCONTF_SCRIPT_USER = 0x10000, + SCRIPTCONTF_SCRIPT_HIDE = 0x20000, + SCRIPTCONTF_SCRIPT_SYSTEM = 0x40000 +} SCRIPTFONTCONTF; +typedef struct tagSCRIPFONTINFO { + SCRIPT_IDS scripts; + WCHAR wszFont[32]; +} SCRIPTFONTINFO, *PSCRIPTFONTINFO; +typedef struct tagSCRIPTINFO { + SCRIPT_ID ScriptId; + UINT uiCodePage; + WCHAR wszDescription[48]; + WCHAR wszFixedWidthFont[32]; + WCHAR wszProportionalFont[32]; +} SCRIPTINFO, *PSCRIPTINFO; +/***************************************************************************** + * IEnumScript interface + */ +#ifndef __IEnumScript_INTERFACE_DEFINED__ +#define __IEnumScript_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumScript, 0xae5f1430, 0x388b, 0x11d2, 0x83,0x80, 0x00,0xc0,0x4f,0x8f,0x5d,0xa1); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IEnumScript : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumScript** ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + PSCRIPTINFO rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + +}; +#else +typedef struct IEnumScriptVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumScript* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumScript* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumScript* This); + + /*** IEnumScript methods ***/ + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumScript* This, + IEnumScript** ppEnum); + + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumScript* This, + ULONG celt, + PSCRIPTINFO rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumScript* This); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumScript* This, + ULONG celt); + + END_INTERFACE +} IEnumScriptVtbl; +interface IEnumScript { + const IEnumScriptVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumScript_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumScript_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumScript_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumScript methods ***/ +#define IEnumScript_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#define IEnumScript_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumScript_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumScript_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#endif + +#endif + +HRESULT CALLBACK IEnumScript_Clone_Proxy( + IEnumScript* This, + IEnumScript** ppEnum); +void __RPC_STUB IEnumScript_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumScript_Next_Proxy( + IEnumScript* This, + ULONG celt, + PSCRIPTINFO rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumScript_Next_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumScript_Reset_Proxy( + IEnumScript* This); +void __RPC_STUB IEnumScript_Reset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumScript_Skip_Proxy( + IEnumScript* This, + ULONG celt); +void __RPC_STUB IEnumScript_Skip_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumScript_INTERFACE_DEFINED__ */ + +#ifndef __IEnumCodePage_FWD_DEFINED__ +#define __IEnumCodePage_FWD_DEFINED__ +typedef interface IEnumCodePage IEnumCodePage; +#endif + +#define MAX_MIMECP_NAME (64) + +#define MAX_MIMECSET_NAME (50) + +typedef enum tagMIMECONTF { + MIMECONTF_MAILNEWS = 0x1, + MIMECONTF_BROWSER = 0x2, + MIMECONTF_MINIMAL = 0x4, + MIMECONTF_IMPORT = 0x8, + MIMECONTF_SAVABLE_MAILNEWS = 0x100, + MIMECONTF_SAVABLE_BROWSER = 0x200, + MIMECONTF_EXPORT = 0x400, + MIMECONTF_PRIVCONVERTER = 0x10000, + MIMECONTF_VALID = 0x20000, + MIMECONTF_VALID_NLS = 0x40000, + MIMECONTF_MIME_IE4 = 0x10000000, + MIMECONTF_MIME_LATEST = 0x20000000, + MIMECONTF_MIME_REGISTRY = 0x40000000 +} MIMECONTF; +typedef struct tagMIMECPINFO { + DWORD dwFlags; + UINT uiCodePage; + UINT uiFamilyCodePage; + WCHAR wszDescription[64]; + WCHAR wszWebCharset[50]; + WCHAR wszHeaderCharset[50]; + WCHAR wszBodyCharset[50]; + WCHAR wszFixedWidthFont[32]; + WCHAR wszProportionalFont[32]; + BYTE bGDICharset; +} MIMECPINFO, *PMIMECPINFO; +typedef struct tagMIMECSETINFO { + UINT uiCodePage; + UINT uiInternetEncoding; + WCHAR wszCharset[50]; +} MIMECSETINFO, *PMIMECSETINFO; +/***************************************************************************** + * IEnumCodePage interface + */ +#ifndef __IEnumCodePage_INTERFACE_DEFINED__ +#define __IEnumCodePage_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumCodePage, 0x275c23e3, 0x3747, 0x11d0, 0x9f,0xea, 0x00,0xaa,0x00,0x3f,0x86,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IEnumCodePage : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumCodePage** ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + PMIMECPINFO rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + +}; +#else +typedef struct IEnumCodePageVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumCodePage* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumCodePage* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumCodePage* This); + + /*** IEnumCodePage methods ***/ + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumCodePage* This, + IEnumCodePage** ppEnum); + + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumCodePage* This, + ULONG celt, + PMIMECPINFO rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumCodePage* This); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumCodePage* This, + ULONG celt); + + END_INTERFACE +} IEnumCodePageVtbl; +interface IEnumCodePage { + const IEnumCodePageVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumCodePage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumCodePage_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumCodePage_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumCodePage methods ***/ +#define IEnumCodePage_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#define IEnumCodePage_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumCodePage_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumCodePage_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#endif + +#endif + +HRESULT CALLBACK IEnumCodePage_Clone_Proxy( + IEnumCodePage* This, + IEnumCodePage** ppEnum); +void __RPC_STUB IEnumCodePage_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumCodePage_Next_Proxy( + IEnumCodePage* This, + ULONG celt, + PMIMECPINFO rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumCodePage_Next_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumCodePage_Reset_Proxy( + IEnumCodePage* This); +void __RPC_STUB IEnumCodePage_Reset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumCodePage_Skip_Proxy( + IEnumCodePage* This, + ULONG celt); +void __RPC_STUB IEnumCodePage_Skip_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumCodePage_INTERFACE_DEFINED__ */ + +#ifndef __IMLangConvertCharset_FWD_DEFINED__ +#define __IMLangConvertCharset_FWD_DEFINED__ +typedef interface IMLangConvertCharset IMLangConvertCharset; +#endif + +/***************************************************************************** + * IMLangConvertCharset interface + */ +#ifndef __IMLangConvertCharset_INTERFACE_DEFINED__ +#define __IMLangConvertCharset_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMLangConvertCharset, 0xd66d6f98, 0xcdaa, 0x11d0, 0xb8,0x22, 0x00,0xc0,0x4f,0xc9,0xb3,0x1f); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMLangConvertCharset : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Initialize( + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSourceCodePage( + UINT* puiSrcCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDestinationCodePage( + UINT* puiDstCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProperty( + DWORD* pdwProperty) = 0; + + virtual HRESULT STDMETHODCALLTYPE DoConversion( + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE DoConversionToUnicode( + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE DoConversionFromUnicode( + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize) = 0; + +}; +#else +typedef struct IMLangConvertCharsetVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMLangConvertCharset* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMLangConvertCharset* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMLangConvertCharset* This); + + /*** IMLangConvertCharset methods ***/ + HRESULT (STDMETHODCALLTYPE *Initialize)( + IMLangConvertCharset* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty); + + HRESULT (STDMETHODCALLTYPE *GetSourceCodePage)( + IMLangConvertCharset* This, + UINT* puiSrcCodePage); + + HRESULT (STDMETHODCALLTYPE *GetDestinationCodePage)( + IMLangConvertCharset* This, + UINT* puiDstCodePage); + + HRESULT (STDMETHODCALLTYPE *GetProperty)( + IMLangConvertCharset* This, + DWORD* pdwProperty); + + HRESULT (STDMETHODCALLTYPE *DoConversion)( + IMLangConvertCharset* This, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *DoConversionToUnicode)( + IMLangConvertCharset* This, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *DoConversionFromUnicode)( + IMLangConvertCharset* This, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); + + END_INTERFACE +} IMLangConvertCharsetVtbl; +interface IMLangConvertCharset { + const IMLangConvertCharsetVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMLangConvertCharset_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMLangConvertCharset_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMLangConvertCharset_Release(p) (p)->lpVtbl->Release(p) +/*** IMLangConvertCharset methods ***/ +#define IMLangConvertCharset_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IMLangConvertCharset_GetSourceCodePage(p,a) (p)->lpVtbl->GetSourceCodePage(p,a) +#define IMLangConvertCharset_GetDestinationCodePage(p,a) (p)->lpVtbl->GetDestinationCodePage(p,a) +#define IMLangConvertCharset_GetProperty(p,a) (p)->lpVtbl->GetProperty(p,a) +#define IMLangConvertCharset_DoConversion(p,a,b,c,d) (p)->lpVtbl->DoConversion(p,a,b,c,d) +#define IMLangConvertCharset_DoConversionToUnicode(p,a,b,c,d) (p)->lpVtbl->DoConversionToUnicode(p,a,b,c,d) +#define IMLangConvertCharset_DoConversionFromUnicode(p,a,b,c,d) (p)->lpVtbl->DoConversionFromUnicode(p,a,b,c,d) +#endif + +#endif + +HRESULT CALLBACK IMLangConvertCharset_Initialize_Proxy( + IMLangConvertCharset* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty); +void __RPC_STUB IMLangConvertCharset_Initialize_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_GetSourceCodePage_Proxy( + IMLangConvertCharset* This, + UINT* puiSrcCodePage); +void __RPC_STUB IMLangConvertCharset_GetSourceCodePage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_GetDestinationCodePage_Proxy( + IMLangConvertCharset* This, + UINT* puiDstCodePage); +void __RPC_STUB IMLangConvertCharset_GetDestinationCodePage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_GetProperty_Proxy( + IMLangConvertCharset* This, + DWORD* pdwProperty); +void __RPC_STUB IMLangConvertCharset_GetProperty_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_DoConversion_Proxy( + IMLangConvertCharset* This, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMLangConvertCharset_DoConversion_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_DoConversionToUnicode_Proxy( + IMLangConvertCharset* This, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMLangConvertCharset_DoConversionToUnicode_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMLangConvertCharset_DoConversionFromUnicode_Proxy( + IMLangConvertCharset* This, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMLangConvertCharset_DoConversionFromUnicode_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMLangConvertCharset_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * CMLangConvertCharset coclass + */ + +DEFINE_GUID(CLSID_CMLangConvertCharset, 0xd66d6f99, 0xcdaa, 0x11d0, 0xb8,0x22, 0x00,0xc0,0x4f,0xc9,0xb3,0x1f); + +#ifndef __IEnumRfc1766_FWD_DEFINED__ +#define __IEnumRfc1766_FWD_DEFINED__ +typedef interface IEnumRfc1766 IEnumRfc1766; +#endif + +#define MAX_RFC1766_NAME (6) + +#define MAX_LOCALE_NAME (32) + +typedef struct tagRFC1766INFO { + LCID lcid; + WCHAR wszRfc1766[6]; + WCHAR wszLocaleName[32]; +} RFC1766INFO, *PRFC1766INFO; +/***************************************************************************** + * IEnumRfc1766 interface + */ +#ifndef __IEnumRfc1766_INTERFACE_DEFINED__ +#define __IEnumRfc1766_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumRfc1766, 0x3dc39d1d, 0xc030, 0x11d0, 0xb8,0x1b, 0x00,0xc0,0x4f,0xc9,0xb3,0x1f); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IEnumRfc1766 : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumRfc1766** ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG celt, + PRFC1766INFO rgelt, + ULONG* pceltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG celt) = 0; + +}; +#else +typedef struct IEnumRfc1766Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumRfc1766* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumRfc1766* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumRfc1766* This); + + /*** IEnumRfc1766 methods ***/ + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumRfc1766* This, + IEnumRfc1766** ppEnum); + + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumRfc1766* This, + ULONG celt, + PRFC1766INFO rgelt, + ULONG* pceltFetched); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumRfc1766* This); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumRfc1766* This, + ULONG celt); + + END_INTERFACE +} IEnumRfc1766Vtbl; +interface IEnumRfc1766 { + const IEnumRfc1766Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumRfc1766_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumRfc1766_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumRfc1766_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumRfc1766 methods ***/ +#define IEnumRfc1766_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#define IEnumRfc1766_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumRfc1766_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumRfc1766_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#endif + +#endif + +HRESULT CALLBACK IEnumRfc1766_Clone_Proxy( + IEnumRfc1766* This, + IEnumRfc1766** ppEnum); +void __RPC_STUB IEnumRfc1766_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumRfc1766_Next_Proxy( + IEnumRfc1766* This, + ULONG celt, + PRFC1766INFO rgelt, + ULONG* pceltFetched); +void __RPC_STUB IEnumRfc1766_Next_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumRfc1766_Reset_Proxy( + IEnumRfc1766* This); +void __RPC_STUB IEnumRfc1766_Reset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumRfc1766_Skip_Proxy( + IEnumRfc1766* This, + ULONG celt); +void __RPC_STUB IEnumRfc1766_Skip_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumRfc1766_INTERFACE_DEFINED__ */ + +#ifndef __IMultiLanguage_FWD_DEFINED__ +#define __IMultiLanguage_FWD_DEFINED__ +typedef interface IMultiLanguage IMultiLanguage; +#endif + +/***************************************************************************** + * IMultiLanguage interface + */ +#ifndef __IMultiLanguage_INTERFACE_DEFINED__ +#define __IMultiLanguage_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMultiLanguage, 0x275c23e1, 0x3747, 0x11d0, 0x9f,0xea, 0x00,0xaa,0x00,0x3f,0x86,0x46); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMultiLanguage : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetNumberOfCodePageInfo( + UINT* pcCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCodePageInfo( + UINT uiCodePage, + PMIMECPINFO pCodePageInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFamilyCodePage( + UINT uiCodePage, + UINT* puiFamilyCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumCodePages( + DWORD grfFlags, + IEnumCodePage** ppEnumCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCharsetInfo( + BSTR Charset, + PMIMECSETINFO pCharsetInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsConvertible( + DWORD dwSrcEncoding, + DWORD dwDstEncoding) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertString( + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringToUnicode( + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringFromUnicode( + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringReset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRfc1766FromLcid( + LCID Locale, + BSTR* pbstrRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLcidFromRfc1766( + LCID* pLocale, + BSTR bstrRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumRfc1766( + IEnumRfc1766** ppEnumRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRfc1766Info( + LCID Locale, + PRFC1766INFO pRfc1766Info) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateConvertCharset( + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset) = 0; + +}; +#else +typedef struct IMultiLanguageVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMultiLanguage* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMultiLanguage* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMultiLanguage* This); + + /*** IMultiLanguage methods ***/ + HRESULT (STDMETHODCALLTYPE *GetNumberOfCodePageInfo)( + IMultiLanguage* This, + UINT* pcCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCodePageInfo)( + IMultiLanguage* This, + UINT uiCodePage, + PMIMECPINFO pCodePageInfo); + + HRESULT (STDMETHODCALLTYPE *GetFamilyCodePage)( + IMultiLanguage* This, + UINT uiCodePage, + UINT* puiFamilyCodePage); + + HRESULT (STDMETHODCALLTYPE *EnumCodePages)( + IMultiLanguage* This, + DWORD grfFlags, + IEnumCodePage** ppEnumCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCharsetInfo)( + IMultiLanguage* This, + BSTR Charset, + PMIMECSETINFO pCharsetInfo); + + HRESULT (STDMETHODCALLTYPE *IsConvertible)( + IMultiLanguage* This, + DWORD dwSrcEncoding, + DWORD dwDstEncoding); + + HRESULT (STDMETHODCALLTYPE *ConvertString)( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringToUnicode)( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringFromUnicode)( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringReset)( + IMultiLanguage* This); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766FromLcid)( + IMultiLanguage* This, + LCID Locale, + BSTR* pbstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetLcidFromRfc1766)( + IMultiLanguage* This, + LCID* pLocale, + BSTR bstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *EnumRfc1766)( + IMultiLanguage* This, + IEnumRfc1766** ppEnumRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766Info)( + IMultiLanguage* This, + LCID Locale, + PRFC1766INFO pRfc1766Info); + + HRESULT (STDMETHODCALLTYPE *CreateConvertCharset)( + IMultiLanguage* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset); + + END_INTERFACE +} IMultiLanguageVtbl; +interface IMultiLanguage { + const IMultiLanguageVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMultiLanguage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMultiLanguage_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMultiLanguage_Release(p) (p)->lpVtbl->Release(p) +/*** IMultiLanguage methods ***/ +#define IMultiLanguage_GetNumberOfCodePageInfo(p,a) (p)->lpVtbl->GetNumberOfCodePageInfo(p,a) +#define IMultiLanguage_GetCodePageInfo(p,a,b) (p)->lpVtbl->GetCodePageInfo(p,a,b) +#define IMultiLanguage_GetFamilyCodePage(p,a,b) (p)->lpVtbl->GetFamilyCodePage(p,a,b) +#define IMultiLanguage_EnumCodePages(p,a,b) (p)->lpVtbl->EnumCodePages(p,a,b) +#define IMultiLanguage_GetCharsetInfo(p,a,b) (p)->lpVtbl->GetCharsetInfo(p,a,b) +#define IMultiLanguage_IsConvertible(p,a,b) (p)->lpVtbl->IsConvertible(p,a,b) +#define IMultiLanguage_ConvertString(p,a,b,c,d,e,f,g) (p)->lpVtbl->ConvertString(p,a,b,c,d,e,f,g) +#define IMultiLanguage_ConvertStringToUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringToUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage_ConvertStringFromUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringFromUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage_ConvertStringReset(p) (p)->lpVtbl->ConvertStringReset(p) +#define IMultiLanguage_GetRfc1766FromLcid(p,a,b) (p)->lpVtbl->GetRfc1766FromLcid(p,a,b) +#define IMultiLanguage_GetLcidFromRfc1766(p,a,b) (p)->lpVtbl->GetLcidFromRfc1766(p,a,b) +#define IMultiLanguage_EnumRfc1766(p,a) (p)->lpVtbl->EnumRfc1766(p,a) +#define IMultiLanguage_GetRfc1766Info(p,a,b) (p)->lpVtbl->GetRfc1766Info(p,a,b) +#define IMultiLanguage_CreateConvertCharset(p,a,b,c,d) (p)->lpVtbl->CreateConvertCharset(p,a,b,c,d) +#endif + +#endif + +HRESULT CALLBACK IMultiLanguage_GetNumberOfCodePageInfo_Proxy( + IMultiLanguage* This, + UINT* pcCodePage); +void __RPC_STUB IMultiLanguage_GetNumberOfCodePageInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetCodePageInfo_Proxy( + IMultiLanguage* This, + UINT uiCodePage, + PMIMECPINFO pCodePageInfo); +void __RPC_STUB IMultiLanguage_GetCodePageInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetFamilyCodePage_Proxy( + IMultiLanguage* This, + UINT uiCodePage, + UINT* puiFamilyCodePage); +void __RPC_STUB IMultiLanguage_GetFamilyCodePage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_EnumCodePages_Proxy( + IMultiLanguage* This, + DWORD grfFlags, + IEnumCodePage** ppEnumCodePage); +void __RPC_STUB IMultiLanguage_EnumCodePages_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetCharsetInfo_Proxy( + IMultiLanguage* This, + BSTR Charset, + PMIMECSETINFO pCharsetInfo); +void __RPC_STUB IMultiLanguage_GetCharsetInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_IsConvertible_Proxy( + IMultiLanguage* This, + DWORD dwSrcEncoding, + DWORD dwDstEncoding); +void __RPC_STUB IMultiLanguage_IsConvertible_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_ConvertString_Proxy( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage_ConvertString_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_ConvertStringToUnicode_Proxy( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage_ConvertStringToUnicode_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_ConvertStringFromUnicode_Proxy( + IMultiLanguage* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage_ConvertStringFromUnicode_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_ConvertStringReset_Proxy( + IMultiLanguage* This); +void __RPC_STUB IMultiLanguage_ConvertStringReset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetRfc1766FromLcid_Proxy( + IMultiLanguage* This, + LCID Locale, + BSTR* pbstrRfc1766); +void __RPC_STUB IMultiLanguage_GetRfc1766FromLcid_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetLcidFromRfc1766_Proxy( + IMultiLanguage* This, + LCID* pLocale, + BSTR bstrRfc1766); +void __RPC_STUB IMultiLanguage_GetLcidFromRfc1766_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_EnumRfc1766_Proxy( + IMultiLanguage* This, + IEnumRfc1766** ppEnumRfc1766); +void __RPC_STUB IMultiLanguage_EnumRfc1766_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_GetRfc1766Info_Proxy( + IMultiLanguage* This, + LCID Locale, + PRFC1766INFO pRfc1766Info); +void __RPC_STUB IMultiLanguage_GetRfc1766Info_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage_CreateConvertCharset_Proxy( + IMultiLanguage* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset); +void __RPC_STUB IMultiLanguage_CreateConvertCharset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMultiLanguage_INTERFACE_DEFINED__ */ + +#ifndef __IMultiLanguage2_FWD_DEFINED__ +#define __IMultiLanguage2_FWD_DEFINED__ +typedef interface IMultiLanguage2 IMultiLanguage2; +#endif + +typedef struct tagDetectEncodingInfo { + UINT nLangID; + UINT nCodePage; + INT nDocPercent; + INT nConfidence; +} DetectEncodingInfo, *pDetectEncodingInfo; +/***************************************************************************** + * IMultiLanguage2 interface + */ +#ifndef __IMultiLanguage2_INTERFACE_DEFINED__ +#define __IMultiLanguage2_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMultiLanguage2, 0xdccfc164, 0x2b38, 0x11d2, 0xb7,0xec, 0x00,0xc0,0x4f,0x8f,0x5d,0x9a); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMultiLanguage2 : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetNumberOfCodePageInfo( + UINT* pcCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCodePageInfo( + UINT uiCodePage, + LANGID LangId, + PMIMECPINFO pCodePageInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFamilyCodePage( + UINT uiCodePage, + UINT* puiFamilyCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumCodePages( + DWORD grfFlags, + LANGID LangId, + IEnumCodePage** ppEnumCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCharsetInfo( + BSTR Charset, + PMIMECSETINFO pCharsetInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsConvertible( + DWORD dwSrcEncoding, + DWORD dwDstEncoding) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertString( + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringToUnicode( + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringFromUnicode( + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringReset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRfc1766FromLcid( + LCID Locale, + BSTR* pbstrRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLcidFromRfc1766( + LCID* pLocale, + BSTR bstrRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumRfc1766( + LANGID LangId, + IEnumRfc1766** ppEnumRfc1766) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetRfc1766Info( + LCID Locale, + LANGID LangId, + PRFC1766INFO pRfc1766Info) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateConvertCharset( + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringInIStream( + DWORD* pdwMode, + DWORD dwFlag, + WCHAR* lpFallBack, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + IStream* pstmIn, + IStream* pstmOut) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringToUnicodeEx( + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertStringFromUnicodeEx( + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack) = 0; + + virtual HRESULT STDMETHODCALLTYPE DetectCodepageInIStream( + DWORD dwFlag, + DWORD dwPrefWinCodePage, + IStream* pstmIn, + DetectEncodingInfo* lpEncoding, + INT* pnScores) = 0; + + virtual HRESULT STDMETHODCALLTYPE DetectInputCodepage( + DWORD dwFlag, + DWORD dwPrefWinCodePage, + CHAR* pSrcStr, + INT* pcSrcSize, + DetectEncodingInfo* lpEncoding, + INT* pnScores) = 0; + + virtual HRESULT STDMETHODCALLTYPE ValidateCodePage( + UINT uiCodePage, + HWND hwnd) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCodePageDescription( + UINT uiCodePage, + LCID lcid, + LPWSTR lpWideCharStr, + int cchWideChar) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsCodePageInstallable( + UINT uiCodePage) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMimeDBSource( + MIMECONTF dwSource) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNumberOfScripts( + UINT* pnScripts) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumScripts( + DWORD dwFlags, + LANGID LangId, + IEnumScript** ppEnumScript) = 0; + + virtual HRESULT STDMETHODCALLTYPE ValidateCodePageEx( + UINT uiCodePage, + HWND hwnd, + DWORD dwfIODControl) = 0; + +}; +#else +typedef struct IMultiLanguage2Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMultiLanguage2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMultiLanguage2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMultiLanguage2* This); + + /*** IMultiLanguage2 methods ***/ + HRESULT (STDMETHODCALLTYPE *GetNumberOfCodePageInfo)( + IMultiLanguage2* This, + UINT* pcCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCodePageInfo)( + IMultiLanguage2* This, + UINT uiCodePage, + LANGID LangId, + PMIMECPINFO pCodePageInfo); + + HRESULT (STDMETHODCALLTYPE *GetFamilyCodePage)( + IMultiLanguage2* This, + UINT uiCodePage, + UINT* puiFamilyCodePage); + + HRESULT (STDMETHODCALLTYPE *EnumCodePages)( + IMultiLanguage2* This, + DWORD grfFlags, + LANGID LangId, + IEnumCodePage** ppEnumCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCharsetInfo)( + IMultiLanguage2* This, + BSTR Charset, + PMIMECSETINFO pCharsetInfo); + + HRESULT (STDMETHODCALLTYPE *IsConvertible)( + IMultiLanguage2* This, + DWORD dwSrcEncoding, + DWORD dwDstEncoding); + + HRESULT (STDMETHODCALLTYPE *ConvertString)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringToUnicode)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringFromUnicode)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringReset)( + IMultiLanguage2* This); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766FromLcid)( + IMultiLanguage2* This, + LCID Locale, + BSTR* pbstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetLcidFromRfc1766)( + IMultiLanguage2* This, + LCID* pLocale, + BSTR bstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *EnumRfc1766)( + IMultiLanguage2* This, + LANGID LangId, + IEnumRfc1766** ppEnumRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766Info)( + IMultiLanguage2* This, + LCID Locale, + LANGID LangId, + PRFC1766INFO pRfc1766Info); + + HRESULT (STDMETHODCALLTYPE *CreateConvertCharset)( + IMultiLanguage2* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset); + + HRESULT (STDMETHODCALLTYPE *ConvertStringInIStream)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwFlag, + WCHAR* lpFallBack, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + IStream* pstmIn, + IStream* pstmOut); + + HRESULT (STDMETHODCALLTYPE *ConvertStringToUnicodeEx)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack); + + HRESULT (STDMETHODCALLTYPE *ConvertStringFromUnicodeEx)( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack); + + HRESULT (STDMETHODCALLTYPE *DetectCodepageInIStream)( + IMultiLanguage2* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + IStream* pstmIn, + DetectEncodingInfo* lpEncoding, + INT* pnScores); + + HRESULT (STDMETHODCALLTYPE *DetectInputCodepage)( + IMultiLanguage2* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + CHAR* pSrcStr, + INT* pcSrcSize, + DetectEncodingInfo* lpEncoding, + INT* pnScores); + + HRESULT (STDMETHODCALLTYPE *ValidateCodePage)( + IMultiLanguage2* This, + UINT uiCodePage, + HWND hwnd); + + HRESULT (STDMETHODCALLTYPE *GetCodePageDescription)( + IMultiLanguage2* This, + UINT uiCodePage, + LCID lcid, + LPWSTR lpWideCharStr, + int cchWideChar); + + HRESULT (STDMETHODCALLTYPE *IsCodePageInstallable)( + IMultiLanguage2* This, + UINT uiCodePage); + + HRESULT (STDMETHODCALLTYPE *SetMimeDBSource)( + IMultiLanguage2* This, + MIMECONTF dwSource); + + HRESULT (STDMETHODCALLTYPE *GetNumberOfScripts)( + IMultiLanguage2* This, + UINT* pnScripts); + + HRESULT (STDMETHODCALLTYPE *EnumScripts)( + IMultiLanguage2* This, + DWORD dwFlags, + LANGID LangId, + IEnumScript** ppEnumScript); + + HRESULT (STDMETHODCALLTYPE *ValidateCodePageEx)( + IMultiLanguage2* This, + UINT uiCodePage, + HWND hwnd, + DWORD dwfIODControl); + + END_INTERFACE +} IMultiLanguage2Vtbl; +interface IMultiLanguage2 { + const IMultiLanguage2Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMultiLanguage2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMultiLanguage2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMultiLanguage2_Release(p) (p)->lpVtbl->Release(p) +/*** IMultiLanguage2 methods ***/ +#define IMultiLanguage2_GetNumberOfCodePageInfo(p,a) (p)->lpVtbl->GetNumberOfCodePageInfo(p,a) +#define IMultiLanguage2_GetCodePageInfo(p,a,b,c) (p)->lpVtbl->GetCodePageInfo(p,a,b,c) +#define IMultiLanguage2_GetFamilyCodePage(p,a,b) (p)->lpVtbl->GetFamilyCodePage(p,a,b) +#define IMultiLanguage2_EnumCodePages(p,a,b,c) (p)->lpVtbl->EnumCodePages(p,a,b,c) +#define IMultiLanguage2_GetCharsetInfo(p,a,b) (p)->lpVtbl->GetCharsetInfo(p,a,b) +#define IMultiLanguage2_IsConvertible(p,a,b) (p)->lpVtbl->IsConvertible(p,a,b) +#define IMultiLanguage2_ConvertString(p,a,b,c,d,e,f,g) (p)->lpVtbl->ConvertString(p,a,b,c,d,e,f,g) +#define IMultiLanguage2_ConvertStringToUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringToUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage2_ConvertStringFromUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringFromUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage2_ConvertStringReset(p) (p)->lpVtbl->ConvertStringReset(p) +#define IMultiLanguage2_GetRfc1766FromLcid(p,a,b) (p)->lpVtbl->GetRfc1766FromLcid(p,a,b) +#define IMultiLanguage2_GetLcidFromRfc1766(p,a,b) (p)->lpVtbl->GetLcidFromRfc1766(p,a,b) +#define IMultiLanguage2_EnumRfc1766(p,a,b) (p)->lpVtbl->EnumRfc1766(p,a,b) +#define IMultiLanguage2_GetRfc1766Info(p,a,b,c) (p)->lpVtbl->GetRfc1766Info(p,a,b,c) +#define IMultiLanguage2_CreateConvertCharset(p,a,b,c,d) (p)->lpVtbl->CreateConvertCharset(p,a,b,c,d) +#define IMultiLanguage2_ConvertStringInIStream(p,a,b,c,d,e,f,g) (p)->lpVtbl->ConvertStringInIStream(p,a,b,c,d,e,f,g) +#define IMultiLanguage2_ConvertStringToUnicodeEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ConvertStringToUnicodeEx(p,a,b,c,d,e,f,g,h) +#define IMultiLanguage2_ConvertStringFromUnicodeEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ConvertStringFromUnicodeEx(p,a,b,c,d,e,f,g,h) +#define IMultiLanguage2_DetectCodepageInIStream(p,a,b,c,d,e) (p)->lpVtbl->DetectCodepageInIStream(p,a,b,c,d,e) +#define IMultiLanguage2_DetectInputCodepage(p,a,b,c,d,e,f) (p)->lpVtbl->DetectInputCodepage(p,a,b,c,d,e,f) +#define IMultiLanguage2_ValidateCodePage(p,a,b) (p)->lpVtbl->ValidateCodePage(p,a,b) +#define IMultiLanguage2_GetCodePageDescription(p,a,b,c,d) (p)->lpVtbl->GetCodePageDescription(p,a,b,c,d) +#define IMultiLanguage2_IsCodePageInstallable(p,a) (p)->lpVtbl->IsCodePageInstallable(p,a) +#define IMultiLanguage2_SetMimeDBSource(p,a) (p)->lpVtbl->SetMimeDBSource(p,a) +#define IMultiLanguage2_GetNumberOfScripts(p,a) (p)->lpVtbl->GetNumberOfScripts(p,a) +#define IMultiLanguage2_EnumScripts(p,a,b,c) (p)->lpVtbl->EnumScripts(p,a,b,c) +#define IMultiLanguage2_ValidateCodePageEx(p,a,b,c) (p)->lpVtbl->ValidateCodePageEx(p,a,b,c) +#endif + +#endif + +HRESULT CALLBACK IMultiLanguage2_GetNumberOfCodePageInfo_Proxy( + IMultiLanguage2* This, + UINT* pcCodePage); +void __RPC_STUB IMultiLanguage2_GetNumberOfCodePageInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetCodePageInfo_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + LANGID LangId, + PMIMECPINFO pCodePageInfo); +void __RPC_STUB IMultiLanguage2_GetCodePageInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetFamilyCodePage_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + UINT* puiFamilyCodePage); +void __RPC_STUB IMultiLanguage2_GetFamilyCodePage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_EnumCodePages_Proxy( + IMultiLanguage2* This, + DWORD grfFlags, + LANGID LangId, + IEnumCodePage** ppEnumCodePage); +void __RPC_STUB IMultiLanguage2_EnumCodePages_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetCharsetInfo_Proxy( + IMultiLanguage2* This, + BSTR Charset, + PMIMECSETINFO pCharsetInfo); +void __RPC_STUB IMultiLanguage2_GetCharsetInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_IsConvertible_Proxy( + IMultiLanguage2* This, + DWORD dwSrcEncoding, + DWORD dwDstEncoding); +void __RPC_STUB IMultiLanguage2_IsConvertible_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertString_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage2_ConvertString_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringToUnicode_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage2_ConvertStringToUnicode_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringFromUnicode_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); +void __RPC_STUB IMultiLanguage2_ConvertStringFromUnicode_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringReset_Proxy( + IMultiLanguage2* This); +void __RPC_STUB IMultiLanguage2_ConvertStringReset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetRfc1766FromLcid_Proxy( + IMultiLanguage2* This, + LCID Locale, + BSTR* pbstrRfc1766); +void __RPC_STUB IMultiLanguage2_GetRfc1766FromLcid_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetLcidFromRfc1766_Proxy( + IMultiLanguage2* This, + LCID* pLocale, + BSTR bstrRfc1766); +void __RPC_STUB IMultiLanguage2_GetLcidFromRfc1766_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_EnumRfc1766_Proxy( + IMultiLanguage2* This, + LANGID LangId, + IEnumRfc1766** ppEnumRfc1766); +void __RPC_STUB IMultiLanguage2_EnumRfc1766_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetRfc1766Info_Proxy( + IMultiLanguage2* This, + LCID Locale, + LANGID LangId, + PRFC1766INFO pRfc1766Info); +void __RPC_STUB IMultiLanguage2_GetRfc1766Info_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_CreateConvertCharset_Proxy( + IMultiLanguage2* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset); +void __RPC_STUB IMultiLanguage2_CreateConvertCharset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringInIStream_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwFlag, + WCHAR* lpFallBack, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + IStream* pstmIn, + IStream* pstmOut); +void __RPC_STUB IMultiLanguage2_ConvertStringInIStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringToUnicodeEx_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack); +void __RPC_STUB IMultiLanguage2_ConvertStringToUnicodeEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ConvertStringFromUnicodeEx_Proxy( + IMultiLanguage2* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack); +void __RPC_STUB IMultiLanguage2_ConvertStringFromUnicodeEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_DetectCodepageInIStream_Proxy( + IMultiLanguage2* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + IStream* pstmIn, + DetectEncodingInfo* lpEncoding, + INT* pnScores); +void __RPC_STUB IMultiLanguage2_DetectCodepageInIStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_DetectInputCodepage_Proxy( + IMultiLanguage2* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + CHAR* pSrcStr, + INT* pcSrcSize, + DetectEncodingInfo* lpEncoding, + INT* pnScores); +void __RPC_STUB IMultiLanguage2_DetectInputCodepage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ValidateCodePage_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + HWND hwnd); +void __RPC_STUB IMultiLanguage2_ValidateCodePage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetCodePageDescription_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + LCID lcid, + LPWSTR lpWideCharStr, + int cchWideChar); +void __RPC_STUB IMultiLanguage2_GetCodePageDescription_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_IsCodePageInstallable_Proxy( + IMultiLanguage2* This, + UINT uiCodePage); +void __RPC_STUB IMultiLanguage2_IsCodePageInstallable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_SetMimeDBSource_Proxy( + IMultiLanguage2* This, + MIMECONTF dwSource); +void __RPC_STUB IMultiLanguage2_SetMimeDBSource_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_GetNumberOfScripts_Proxy( + IMultiLanguage2* This, + UINT* pnScripts); +void __RPC_STUB IMultiLanguage2_GetNumberOfScripts_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_EnumScripts_Proxy( + IMultiLanguage2* This, + DWORD dwFlags, + LANGID LangId, + IEnumScript** ppEnumScript); +void __RPC_STUB IMultiLanguage2_EnumScripts_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage2_ValidateCodePageEx_Proxy( + IMultiLanguage2* This, + UINT uiCodePage, + HWND hwnd, + DWORD dwfIODControl); +void __RPC_STUB IMultiLanguage2_ValidateCodePageEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMultiLanguage2_INTERFACE_DEFINED__ */ + +#ifndef __IMultiLanguage3_FWD_DEFINED__ +#define __IMultiLanguage3_FWD_DEFINED__ +typedef interface IMultiLanguage3 IMultiLanguage3; +#endif + +typedef IMultiLanguage3 *LPMULTILANGUAGE3; +/***************************************************************************** + * IMultiLanguage3 interface + */ +#ifndef __IMultiLanguage3_INTERFACE_DEFINED__ +#define __IMultiLanguage3_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMultiLanguage3, 0x4e5868ab, 0xb157, 0x4623, 0x9a,0xcc, 0x6a,0x1d,0x9c,0xae,0xbe,0x04); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMultiLanguage3 : public IMultiLanguage2 +{ + virtual HRESULT STDMETHODCALLTYPE DetectOutboundCodePage( + DWORD dwFlags, + LPCWSTR lpWideCharStr, + UINT cchWideChar, + UINT* puiPreferredCodePages, + UINT nPreferredCodePages, + UINT* puiDetectedCodePages, + UINT* pnDetectedCodePages, + WCHAR* lpSpecialChar) = 0; + + virtual HRESULT STDMETHODCALLTYPE DetectOutboundCodePageInIStream( + DWORD dwFlags, + IStream* pStrIn, + UINT* puiPreferredCodePages, + UINT nPreferredCodePages, + UINT* puiDetectedCodePages, + UINT* pnDetectedCodePages, + WCHAR* lpSpecialChar) = 0; + +}; +#else +typedef struct IMultiLanguage3Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMultiLanguage3* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMultiLanguage3* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMultiLanguage3* This); + + /*** IMultiLanguage2 methods ***/ + HRESULT (STDMETHODCALLTYPE *GetNumberOfCodePageInfo)( + IMultiLanguage3* This, + UINT* pcCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCodePageInfo)( + IMultiLanguage3* This, + UINT uiCodePage, + LANGID LangId, + PMIMECPINFO pCodePageInfo); + + HRESULT (STDMETHODCALLTYPE *GetFamilyCodePage)( + IMultiLanguage3* This, + UINT uiCodePage, + UINT* puiFamilyCodePage); + + HRESULT (STDMETHODCALLTYPE *EnumCodePages)( + IMultiLanguage3* This, + DWORD grfFlags, + LANGID LangId, + IEnumCodePage** ppEnumCodePage); + + HRESULT (STDMETHODCALLTYPE *GetCharsetInfo)( + IMultiLanguage3* This, + BSTR Charset, + PMIMECSETINFO pCharsetInfo); + + HRESULT (STDMETHODCALLTYPE *IsConvertible)( + IMultiLanguage3* This, + DWORD dwSrcEncoding, + DWORD dwDstEncoding); + + HRESULT (STDMETHODCALLTYPE *ConvertString)( + IMultiLanguage3* This, + DWORD* pdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + BYTE* pSrcStr, + UINT* pcSrcSize, + BYTE* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringToUnicode)( + IMultiLanguage3* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringFromUnicode)( + IMultiLanguage3* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize); + + HRESULT (STDMETHODCALLTYPE *ConvertStringReset)( + IMultiLanguage3* This); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766FromLcid)( + IMultiLanguage3* This, + LCID Locale, + BSTR* pbstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetLcidFromRfc1766)( + IMultiLanguage3* This, + LCID* pLocale, + BSTR bstrRfc1766); + + HRESULT (STDMETHODCALLTYPE *EnumRfc1766)( + IMultiLanguage3* This, + LANGID LangId, + IEnumRfc1766** ppEnumRfc1766); + + HRESULT (STDMETHODCALLTYPE *GetRfc1766Info)( + IMultiLanguage3* This, + LCID Locale, + LANGID LangId, + PRFC1766INFO pRfc1766Info); + + HRESULT (STDMETHODCALLTYPE *CreateConvertCharset)( + IMultiLanguage3* This, + UINT uiSrcCodePage, + UINT uiDstCodePage, + DWORD dwProperty, + IMLangConvertCharset** ppMLangConvertCharset); + + HRESULT (STDMETHODCALLTYPE *ConvertStringInIStream)( + IMultiLanguage3* This, + DWORD* pdwMode, + DWORD dwFlag, + WCHAR* lpFallBack, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + IStream* pstmIn, + IStream* pstmOut); + + HRESULT (STDMETHODCALLTYPE *ConvertStringToUnicodeEx)( + IMultiLanguage3* This, + DWORD* pdwMode, + DWORD dwEncoding, + CHAR* pSrcStr, + UINT* pcSrcSize, + WCHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack); + + HRESULT (STDMETHODCALLTYPE *ConvertStringFromUnicodeEx)( + IMultiLanguage3* This, + DWORD* pdwMode, + DWORD dwEncoding, + WCHAR* pSrcStr, + UINT* pcSrcSize, + CHAR* pDstStr, + UINT* pcDstSize, + DWORD dwFlag, + WCHAR* lpFallBack); + + HRESULT (STDMETHODCALLTYPE *DetectCodepageInIStream)( + IMultiLanguage3* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + IStream* pstmIn, + DetectEncodingInfo* lpEncoding, + INT* pnScores); + + HRESULT (STDMETHODCALLTYPE *DetectInputCodepage)( + IMultiLanguage3* This, + DWORD dwFlag, + DWORD dwPrefWinCodePage, + CHAR* pSrcStr, + INT* pcSrcSize, + DetectEncodingInfo* lpEncoding, + INT* pnScores); + + HRESULT (STDMETHODCALLTYPE *ValidateCodePage)( + IMultiLanguage3* This, + UINT uiCodePage, + HWND hwnd); + + HRESULT (STDMETHODCALLTYPE *GetCodePageDescription)( + IMultiLanguage3* This, + UINT uiCodePage, + LCID lcid, + LPWSTR lpWideCharStr, + int cchWideChar); + + HRESULT (STDMETHODCALLTYPE *IsCodePageInstallable)( + IMultiLanguage3* This, + UINT uiCodePage); + + HRESULT (STDMETHODCALLTYPE *SetMimeDBSource)( + IMultiLanguage3* This, + MIMECONTF dwSource); + + HRESULT (STDMETHODCALLTYPE *GetNumberOfScripts)( + IMultiLanguage3* This, + UINT* pnScripts); + + HRESULT (STDMETHODCALLTYPE *EnumScripts)( + IMultiLanguage3* This, + DWORD dwFlags, + LANGID LangId, + IEnumScript** ppEnumScript); + + HRESULT (STDMETHODCALLTYPE *ValidateCodePageEx)( + IMultiLanguage3* This, + UINT uiCodePage, + HWND hwnd, + DWORD dwfIODControl); + + /*** IMultiLanguage3 methods ***/ + HRESULT (STDMETHODCALLTYPE *DetectOutboundCodePage)( + IMultiLanguage3* This, + DWORD dwFlags, + LPCWSTR lpWideCharStr, + UINT cchWideChar, + UINT* puiPreferredCodePages, + UINT nPreferredCodePages, + UINT* puiDetectedCodePages, + UINT* pnDetectedCodePages, + WCHAR* lpSpecialChar); + + HRESULT (STDMETHODCALLTYPE *DetectOutboundCodePageInIStream)( + IMultiLanguage3* This, + DWORD dwFlags, + IStream* pStrIn, + UINT* puiPreferredCodePages, + UINT nPreferredCodePages, + UINT* puiDetectedCodePages, + UINT* pnDetectedCodePages, + WCHAR* lpSpecialChar); + + END_INTERFACE +} IMultiLanguage3Vtbl; +interface IMultiLanguage3 { + const IMultiLanguage3Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMultiLanguage3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMultiLanguage3_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMultiLanguage3_Release(p) (p)->lpVtbl->Release(p) +/*** IMultiLanguage2 methods ***/ +#define IMultiLanguage3_GetNumberOfCodePageInfo(p,a) (p)->lpVtbl->GetNumberOfCodePageInfo(p,a) +#define IMultiLanguage3_GetCodePageInfo(p,a,b,c) (p)->lpVtbl->GetCodePageInfo(p,a,b,c) +#define IMultiLanguage3_GetFamilyCodePage(p,a,b) (p)->lpVtbl->GetFamilyCodePage(p,a,b) +#define IMultiLanguage3_EnumCodePages(p,a,b,c) (p)->lpVtbl->EnumCodePages(p,a,b,c) +#define IMultiLanguage3_GetCharsetInfo(p,a,b) (p)->lpVtbl->GetCharsetInfo(p,a,b) +#define IMultiLanguage3_IsConvertible(p,a,b) (p)->lpVtbl->IsConvertible(p,a,b) +#define IMultiLanguage3_ConvertString(p,a,b,c,d,e,f,g) (p)->lpVtbl->ConvertString(p,a,b,c,d,e,f,g) +#define IMultiLanguage3_ConvertStringToUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringToUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage3_ConvertStringFromUnicode(p,a,b,c,d,e,f) (p)->lpVtbl->ConvertStringFromUnicode(p,a,b,c,d,e,f) +#define IMultiLanguage3_ConvertStringReset(p) (p)->lpVtbl->ConvertStringReset(p) +#define IMultiLanguage3_GetRfc1766FromLcid(p,a,b) (p)->lpVtbl->GetRfc1766FromLcid(p,a,b) +#define IMultiLanguage3_GetLcidFromRfc1766(p,a,b) (p)->lpVtbl->GetLcidFromRfc1766(p,a,b) +#define IMultiLanguage3_EnumRfc1766(p,a,b) (p)->lpVtbl->EnumRfc1766(p,a,b) +#define IMultiLanguage3_GetRfc1766Info(p,a,b,c) (p)->lpVtbl->GetRfc1766Info(p,a,b,c) +#define IMultiLanguage3_CreateConvertCharset(p,a,b,c,d) (p)->lpVtbl->CreateConvertCharset(p,a,b,c,d) +#define IMultiLanguage3_ConvertStringInIStream(p,a,b,c,d,e,f,g) (p)->lpVtbl->ConvertStringInIStream(p,a,b,c,d,e,f,g) +#define IMultiLanguage3_ConvertStringToUnicodeEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ConvertStringToUnicodeEx(p,a,b,c,d,e,f,g,h) +#define IMultiLanguage3_ConvertStringFromUnicodeEx(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ConvertStringFromUnicodeEx(p,a,b,c,d,e,f,g,h) +#define IMultiLanguage3_DetectCodepageInIStream(p,a,b,c,d,e) (p)->lpVtbl->DetectCodepageInIStream(p,a,b,c,d,e) +#define IMultiLanguage3_DetectInputCodepage(p,a,b,c,d,e,f) (p)->lpVtbl->DetectInputCodepage(p,a,b,c,d,e,f) +#define IMultiLanguage3_ValidateCodePage(p,a,b) (p)->lpVtbl->ValidateCodePage(p,a,b) +#define IMultiLanguage3_GetCodePageDescription(p,a,b,c,d) (p)->lpVtbl->GetCodePageDescription(p,a,b,c,d) +#define IMultiLanguage3_IsCodePageInstallable(p,a) (p)->lpVtbl->IsCodePageInstallable(p,a) +#define IMultiLanguage3_SetMimeDBSource(p,a) (p)->lpVtbl->SetMimeDBSource(p,a) +#define IMultiLanguage3_GetNumberOfScripts(p,a) (p)->lpVtbl->GetNumberOfScripts(p,a) +#define IMultiLanguage3_EnumScripts(p,a,b,c) (p)->lpVtbl->EnumScripts(p,a,b,c) +#define IMultiLanguage3_ValidateCodePageEx(p,a,b,c) (p)->lpVtbl->ValidateCodePageEx(p,a,b,c) +/*** IMultiLanguage3 methods ***/ +#define IMultiLanguage3_DetectOutboundCodePage(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DetectOutboundCodePage(p,a,b,c,d,e,f,g,h) +#define IMultiLanguage3_DetectOutboundCodePageInIStream(p,a,b,c,d,e,f,g) (p)->lpVtbl->DetectOutboundCodePageInIStream(p,a,b,c,d,e,f,g) +#endif + +#endif + +HRESULT CALLBACK IMultiLanguage3_DetectOutboundCodePage_Proxy( + IMultiLanguage3* This, + DWORD dwFlags, + LPCWSTR lpWideCharStr, + UINT cchWideChar, + UINT* puiPreferredCodePages, + UINT nPreferredCodePages, + UINT* puiDetectedCodePages, + UINT* pnDetectedCodePages, + WCHAR* lpSpecialChar); +void __RPC_STUB IMultiLanguage3_DetectOutboundCodePage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiLanguage3_DetectOutboundCodePageInIStream_Proxy( + IMultiLanguage3* This, + DWORD dwFlags, + IStream* pStrIn, + UINT* puiPreferredCodePages, + UINT nPreferredCodePages, + UINT* puiDetectedCodePages, + UINT* pnDetectedCodePages, + WCHAR* lpSpecialChar); +void __RPC_STUB IMultiLanguage3_DetectOutboundCodePageInIStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMultiLanguage3_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * CMultiLanguage coclass + */ + +DEFINE_GUID(CLSID_CMultiLanguage, 0x275c23e2, 0x3747, 0x11d0, 0x9f,0xea, 0x00,0xaa,0x00,0x3f,0x86,0x46); + +STDAPI LcidToRfc1766A(LCID, LPSTR, INT); +STDAPI LcidToRfc1766W(LCID, LPWSTR, INT); +#define LcidToRfc1766 WINELIB_NAME_AW(LcidToRfc1766) +STDAPI Rfc1766ToLcidA(LCID *, LPCSTR); +STDAPI Rfc1766ToLcidW(LCID *, LPCWSTR); +#define Rfc1766ToLcid WINELIB_NAME_AW(Rfc1766ToLcid) +STDAPI GetGlobalFontLinkObject(void); +STDAPI IsConvertINetStringAvailable(DWORD, DWORD); +STDAPI ConvertINetString(LPDWORD, DWORD, DWORD, LPCSTR, LPINT, LPSTR, LPINT); +STDAPI ConvertINetMultiByteToUnicode(LPDWORD, DWORD, LPCSTR, LPINT, LPWSTR, LPINT); +STDAPI ConvertINetUnicodeToMultiByte(LPDWORD, DWORD, LPCWSTR, LPINT, LPSTR, LPINT); +/* Begin additional prototypes for all interfaces */ + +unsigned long __RPC_USER HWND_UserSize (unsigned long *, unsigned long, HWND *); +unsigned char * __RPC_USER HWND_UserMarshal (unsigned long *, unsigned char *, HWND *); +unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND *); +void __RPC_USER HWND_UserFree (unsigned long *, HWND *); +unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); +unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); +void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); +unsigned long __RPC_USER HFONT_UserSize (unsigned long *, unsigned long, HFONT *); +unsigned char * __RPC_USER HFONT_UserMarshal (unsigned long *, unsigned char *, HFONT *); +unsigned char * __RPC_USER HFONT_UserUnmarshal(unsigned long *, unsigned char *, HFONT *); +void __RPC_USER HFONT_UserFree (unsigned long *, HFONT *); +unsigned long __RPC_USER HDC_UserSize (unsigned long *, unsigned long, HDC *); +unsigned char * __RPC_USER HDC_UserMarshal (unsigned long *, unsigned char *, HDC *); +unsigned char * __RPC_USER HDC_UserUnmarshal(unsigned long *, unsigned char *, HDC *); +void __RPC_USER HDC_UserFree (unsigned long *, HDC *); + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_MLANG_H */ diff --git a/reactos/include/psdk/mlang.idl b/reactos/include/psdk/mlang.idl new file mode 100644 index 00000000000..96e96facef3 --- /dev/null +++ b/reactos/include/psdk/mlang.idl @@ -0,0 +1,610 @@ +/* + * Copyright (C) 2004 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; + +interface IStream; + +/* FIXME: LANGID is defined in winnt.h and mlang.h in the platform SDK */ +cpp_quote("#ifndef _WINNT_") +typedef WORD LANGID; +cpp_quote("#endif") + +[ + object, + uuid(359f3443-bd4a-11d0-b188-00aa0038c969), + pointer_default(unique) +] +interface IMLangCodePages : IUnknown +{ + HRESULT GetCharCodePages( + [in] WCHAR chSrc, + DWORD *pdwCodePages); + HRESULT GetStrCodePages( + [in, size_is(cchSrc)] const WCHAR *pszSrc, + [in] long cchSrc, + [in] DWORD dwPriorityCodePages, + [out] DWORD *pdwCodePages, + [out] long *pcchCodePages); + HRESULT CodePageToCodePages( + [in] UINT uCodePage, + [out] DWORD *pdwCodePages); + HRESULT CodePagesToCodePage( + [in] DWORD dwCodePages, + [in] UINT uDefaultCodePage, + [out] UINT *puCodePage); +} + +[ + object, + uuid(359f3441-bd4a-11d0-b188-00aa0038c969), + pointer_default(unique) +] +interface IMLangFontLink : IMLangCodePages +{ + HRESULT GetFontCodePages( + [in] HDC hDC, + [in] HFONT hFont, + [out] DWORD *pdwCodePages ); + + HRESULT MapFont( + [in] HDC hDC, + [in] DWORD dwCodePages, + [in] HFONT hSrcFont, + [out] HFONT *phDestFont); + + HRESULT ReleaseFont( + [in] HFONT hFont); + + HRESULT ResetFontMapping(); +} + +[ + object, + uuid(ae5f1430-388b-11d2-8380-00c04f8f5da1), + pointer_default(unique) +] +interface IEnumScript : IUnknown +{ + const USHORT MAX_SCRIPT_NAME = 48; + const USHORT MAX_MIMEFACE_NAME = 32; + + typedef BYTE SCRIPT_ID; + typedef __int64 SCRIPT_IDS; + + typedef enum tagSCRIPTCONTF + { + sidDefault = 0, + sidMerge = sidDefault + 1, + sidAsciiSym = sidMerge + 1, + sidAsciiLatin = sidAsciiSym + 1, + sidLatin = sidAsciiLatin + 1, + sidGreek = sidLatin + 1, + sidCyrillic = sidGreek + 1, + sidArmenian = sidCyrillic + 1, + sidHebrew = sidArmenian + 1, + sidArabic = sidHebrew + 1, + sidDevanagari = sidArabic + 1, + sidBengali = sidDevanagari + 1, + sidGurmukhi = sidBengali + 1, + sidGujarati = sidGurmukhi + 1, + sidOriya = sidGujarati + 1, + sidTamil = sidOriya + 1, + sidTelugu = sidTamil + 1, + sidKannada = sidTelugu + 1, + sidMalayalam = sidKannada + 1, + sidThai = sidMalayalam + 1, + sidLao = sidThai + 1, + sidTibetan = sidLao + 1, + sidGeorgian = sidTibetan + 1, + sidHangul = sidGeorgian + 1, + sidKana = sidHangul + 1, + sidBopomofo = sidKana + 1, + sidHan = sidBopomofo + 1, + sidEthiopic = sidHan + 1, + sidCanSyllabic = sidEthiopic + 1, + sidCherokee = sidCanSyllabic + 1, + sidYi = sidCherokee + 1, + sidBraille = sidYi + 1, + sidRunic = sidBraille + 1, + sidOgham = sidRunic + 1, + sidSinhala = sidOgham + 1, + sidSyriac = sidSinhala + 1, + sidBurmese = sidSyriac + 1, + sidKhmer = sidBurmese + 1, + sidThaana = sidKhmer + 1, + sidMongolian = sidThaana + 1, + sidUserDefined = sidMongolian + 1, + sidLim = sidUserDefined + 1, + sidFEFirst = sidHangul, + sidFELast = sidHan + } SCRIPTCONTF; + + typedef enum tagSCRIPTFONTCONTF + { + SCRIPTCONTF_FIXED_FONT = 0x1, + SCRIPTCONTF_PROPORTIONAL_FONT = 0x2, + SCRIPTCONTF_SCRIPT_USER = 0x10000, + SCRIPTCONTF_SCRIPT_HIDE = 0x20000, + SCRIPTCONTF_SCRIPT_SYSTEM = 0x40000 + } SCRIPTFONTCONTF; + + typedef struct tagSCRIPFONTINFO + { + SCRIPT_IDS scripts; + WCHAR wszFont[MAX_MIMEFACE_NAME]; + } SCRIPTFONTINFO, *PSCRIPTFONTINFO; + + typedef struct tagSCRIPTINFO { + SCRIPT_ID ScriptId; + UINT uiCodePage; + WCHAR wszDescription[MAX_SCRIPT_NAME]; + WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME]; + WCHAR wszProportionalFont[MAX_MIMEFACE_NAME]; + } SCRIPTINFO, *PSCRIPTINFO; + + HRESULT Clone( + [out] IEnumScript **ppEnum); + + HRESULT Next( + [in] ULONG celt, + [out] PSCRIPTINFO rgelt, + [out] ULONG *pceltFetched); + + HRESULT Reset(); + + HRESULT Skip( + [in] ULONG celt); +} + +[ + object, + uuid(275c23e3-3747-11d0-9fea-00aa003f8646), + pointer_default(unique) +] +interface IEnumCodePage : IUnknown +{ + const USHORT MAX_MIMECP_NAME = 64; + const USHORT MAX_MIMECSET_NAME = 50; + + typedef enum tagMIMECONTF + { + MIMECONTF_MAILNEWS = 0x00000001, + MIMECONTF_BROWSER = 0x00000002, + MIMECONTF_MINIMAL = 0x00000004, + MIMECONTF_IMPORT = 0x00000008, + MIMECONTF_SAVABLE_MAILNEWS = 0x00000100, + MIMECONTF_SAVABLE_BROWSER = 0x00000200, + MIMECONTF_EXPORT = 0x00000400, + MIMECONTF_PRIVCONVERTER = 0x00010000, + MIMECONTF_VALID = 0x00020000, + MIMECONTF_VALID_NLS = 0x00040000, + MIMECONTF_MIME_IE4 = 0x10000000, + MIMECONTF_MIME_LATEST = 0x20000000, + MIMECONTF_MIME_REGISTRY = 0x40000000 + } MIMECONTF; + + typedef struct tagMIMECPINFO { + DWORD dwFlags; + UINT uiCodePage; + UINT uiFamilyCodePage; + WCHAR wszDescription[MAX_MIMECP_NAME]; + WCHAR wszWebCharset[MAX_MIMECSET_NAME]; + WCHAR wszHeaderCharset[MAX_MIMECSET_NAME]; + WCHAR wszBodyCharset[MAX_MIMECSET_NAME]; + WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME]; + WCHAR wszProportionalFont[MAX_MIMEFACE_NAME]; + BYTE bGDICharset; + } MIMECPINFO, *PMIMECPINFO; + + typedef struct tagMIMECSETINFO + { + UINT uiCodePage; + UINT uiInternetEncoding; + WCHAR wszCharset[MAX_MIMECSET_NAME]; + } MIMECSETINFO, *PMIMECSETINFO; + + HRESULT Clone( + [out] IEnumCodePage **ppEnum); + + HRESULT Next( + [in] ULONG celt, + [out] PMIMECPINFO rgelt, + [out] ULONG *pceltFetched); + + HRESULT Reset(); + + HRESULT Skip( + [in] ULONG celt); +} + +[ + object, + uuid(d66d6f98-cdaa-11d0-b822-00c04fc9b31f), + pointer_default(unique) +] +interface IMLangConvertCharset : IUnknown +{ + HRESULT Initialize( + [in] UINT uiSrcCodePage, + [in] UINT uiDstCodePage, + [in] DWORD dwProperty); + + HRESULT GetSourceCodePage( + [out] UINT *puiSrcCodePage); + + HRESULT GetDestinationCodePage( + [out] UINT *puiDstCodePage); + + HRESULT GetProperty( + [out] DWORD *pdwProperty); + + HRESULT DoConversion( + [in] BYTE *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] BYTE *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT DoConversionToUnicode( + [in] CHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] WCHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT DoConversionFromUnicode( + [in] WCHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] CHAR *pDstStr, + [in,out] UINT *pcDstSize); +} + +[ + uuid(d66d6f99-cdaa-11d0-b822-00c04fc9b31f) +] +coclass CMLangConvertCharset +{ + [default] interface IMLangConvertCharset; +}; + +[ + object, + uuid(3dc39d1d-c030-11d0-b81b-00c04fc9b31f), + pointer_default(unique) +] +interface IEnumRfc1766 : IUnknown +{ + const USHORT MAX_RFC1766_NAME = 6; + const USHORT MAX_LOCALE_NAME = 32; + + typedef struct tagRFC1766INFO + { + LCID lcid; + WCHAR wszRfc1766[MAX_RFC1766_NAME]; + WCHAR wszLocaleName[MAX_LOCALE_NAME]; + } RFC1766INFO, *PRFC1766INFO; + + HRESULT Clone( + [out] IEnumRfc1766 **ppEnum); + + HRESULT Next( + [in] ULONG celt, + [out] PRFC1766INFO rgelt, + [out] ULONG *pceltFetched); + + HRESULT Reset(); + + HRESULT Skip( + [in] ULONG celt); +} + +[ + object, + uuid(275c23e1-3747-11d0-9fea-00aa003f8646), + pointer_default(unique) +] +interface IMultiLanguage : IUnknown +{ + HRESULT GetNumberOfCodePageInfo( + [out] UINT *pcCodePage); + + HRESULT GetCodePageInfo( + [in] UINT uiCodePage, + [out] PMIMECPINFO pCodePageInfo); + + HRESULT GetFamilyCodePage( + [in] UINT uiCodePage, + [out] UINT *puiFamilyCodePage); + + HRESULT EnumCodePages( + [in] DWORD grfFlags, + [out] IEnumCodePage **ppEnumCodePage); + + HRESULT GetCharsetInfo( + [in] BSTR Charset, + [in] PMIMECSETINFO pCharsetInfo); + + HRESULT IsConvertible( + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding); + + HRESULT ConvertString( + [in,out] DWORD *pdwMode, + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding, + [in] BYTE *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] BYTE *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringToUnicode( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] CHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] WCHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringFromUnicode( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] WCHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] CHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringReset(); + + HRESULT GetRfc1766FromLcid( + [in] LCID Locale, + [out] BSTR *pbstrRfc1766); + + HRESULT GetLcidFromRfc1766( + [out] LCID *pLocale, + [in] BSTR bstrRfc1766); + + HRESULT EnumRfc1766( + [out] IEnumRfc1766 **ppEnumRfc1766); + + HRESULT GetRfc1766Info( + [in] LCID Locale, + [out] PRFC1766INFO pRfc1766Info); + + HRESULT CreateConvertCharset( + [in] UINT uiSrcCodePage, + [in] UINT uiDstCodePage, + [in] DWORD dwProperty, + [out] IMLangConvertCharset **ppMLangConvertCharset); + +} + +[ + object, + uuid(dccfc164-2b38-11d2-b7ec-00c04f8f5d9a), + pointer_default(unique) +] +interface IMultiLanguage2 : IUnknown +{ + typedef struct tagDetectEncodingInfo + { + UINT nLangID; + UINT nCodePage; + INT nDocPercent; + INT nConfidence; + } DetectEncodingInfo, *pDetectEncodingInfo; + + HRESULT GetNumberOfCodePageInfo( + [out] UINT *pcCodePage); + + HRESULT GetCodePageInfo( + [in] UINT uiCodePage, + [in] LANGID LangId, + [out] PMIMECPINFO pCodePageInfo); + + HRESULT GetFamilyCodePage( + [in] UINT uiCodePage, + [out] UINT *puiFamilyCodePage); + + HRESULT EnumCodePages( + [in] DWORD grfFlags, + [in] LANGID LangId, + [out] IEnumCodePage **ppEnumCodePage); + + HRESULT GetCharsetInfo( + [in] BSTR Charset, + [in] PMIMECSETINFO pCharsetInfo); + + HRESULT IsConvertible( + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding); + + HRESULT ConvertString( + [in,out] DWORD *pdwMode, + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding, + [in] BYTE *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] BYTE *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringToUnicode( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] CHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] WCHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringFromUnicode( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] WCHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] CHAR *pDstStr, + [in,out] UINT *pcDstSize); + + HRESULT ConvertStringReset(); + + HRESULT GetRfc1766FromLcid( + [in] LCID Locale, + [out] BSTR *pbstrRfc1766); + + HRESULT GetLcidFromRfc1766( + [out] LCID *pLocale, + [in] BSTR bstrRfc1766); + + HRESULT EnumRfc1766( + [in] LANGID LangId, + [out] IEnumRfc1766 **ppEnumRfc1766); + + HRESULT GetRfc1766Info( + [in] LCID Locale, + [in] LANGID LangId, + [out] PRFC1766INFO pRfc1766Info); + + HRESULT CreateConvertCharset( + [in] UINT uiSrcCodePage, + [in] UINT uiDstCodePage, + [in] DWORD dwProperty, + [out] IMLangConvertCharset **ppMLangConvertCharset); + + HRESULT ConvertStringInIStream( + [in,out] DWORD *pdwMode, + [in] DWORD dwFlag, + [in] WCHAR *lpFallBack, + [in] DWORD dwSrcEncoding, + [in] DWORD dwDstEncoding, + [in] IStream *pstmIn, + [in] IStream *pstmOut); + + HRESULT ConvertStringToUnicodeEx( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] CHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] WCHAR *pDstStr, + [in,out] UINT *pcDstSize, + [in] DWORD dwFlag, + [in] WCHAR *lpFallBack); + + HRESULT ConvertStringFromUnicodeEx( + [in,out] DWORD *pdwMode, + [in] DWORD dwEncoding, + [in] WCHAR *pSrcStr, + [in,out] UINT *pcSrcSize, + [in] CHAR *pDstStr, + [in,out] UINT *pcDstSize, + [in] DWORD dwFlag, + [in] WCHAR *lpFallBack); + + HRESULT DetectCodepageInIStream( + [in] DWORD dwFlag, + [in] DWORD dwPrefWinCodePage, + [in] IStream *pstmIn, + [in,out] DetectEncodingInfo *lpEncoding, + [in,out] INT *pnScores); + + HRESULT DetectInputCodepage( + [in] DWORD dwFlag, + [in] DWORD dwPrefWinCodePage, + [in] CHAR *pSrcStr, + [in,out] INT *pcSrcSize, + [in,out] DetectEncodingInfo *lpEncoding, + [in,out] INT *pnScores); + + HRESULT ValidateCodePage( + [in] UINT uiCodePage, + [in] HWND hwnd); + + HRESULT GetCodePageDescription( + [in] UINT uiCodePage, + [in] LCID lcid, + [in,out] LPWSTR lpWideCharStr, + [in] int cchWideChar); + + HRESULT IsCodePageInstallable( + [in] UINT uiCodePage); + + HRESULT SetMimeDBSource( + [in] MIMECONTF dwSource); + + HRESULT GetNumberOfScripts( + [out] UINT *pnScripts); + + HRESULT EnumScripts( + [in] DWORD dwFlags, + [in] LANGID LangId, + [out] IEnumScript **ppEnumScript); + + HRESULT ValidateCodePageEx( /* undocumented on MSDN */ + [in] UINT uiCodePage, + [in] HWND hwnd, + [in] DWORD dwfIODControl); +} + +[ + object, + uuid(4e5868ab-b157-4623-9acc-6a1d9caebe04), + pointer_default(unique) +] +interface IMultiLanguage3 : IMultiLanguage2 +{ + typedef [unique] IMultiLanguage3 *LPMULTILANGUAGE3; + HRESULT DetectOutboundCodePage( + [in] DWORD dwFlags, + [in] LPCWSTR lpWideCharStr, + [in] UINT cchWideChar, + [in] UINT *puiPreferredCodePages, + [in] UINT nPreferredCodePages, + [in] UINT *puiDetectedCodePages, + [in, out] UINT *pnDetectedCodePages, + [in] WCHAR *lpSpecialChar); + + HRESULT DetectOutboundCodePageInIStream( + [in] DWORD dwFlags, + [in] IStream *pStrIn, + [in] UINT *puiPreferredCodePages, + [in] UINT nPreferredCodePages, + [in] UINT *puiDetectedCodePages, + [in, out] UINT *pnDetectedCodePages, + [in] WCHAR *lpSpecialChar); +} + +[ + uuid(275C23E2-3747-11d0-9FEA-00AA003f8646) +] +coclass CMultiLanguage +{ + [default] interface IMultiLanguage; + interface IMLangCodePages; + interface IMLangFontLink; + /* interface IMLangLineBreakConsole; */ +} + +cpp_quote("STDAPI LcidToRfc1766A(LCID, LPSTR, INT);") +cpp_quote("STDAPI LcidToRfc1766W(LCID, LPWSTR, INT);") +cpp_quote("#define LcidToRfc1766 WINELIB_NAME_AW(LcidToRfc1766)") + +cpp_quote("STDAPI Rfc1766ToLcidA(LCID *, LPCSTR);") +cpp_quote("STDAPI Rfc1766ToLcidW(LCID *, LPCWSTR);") +cpp_quote("#define Rfc1766ToLcid WINELIB_NAME_AW(Rfc1766ToLcid)") + +cpp_quote("STDAPI GetGlobalFontLinkObject(void);") +cpp_quote("STDAPI IsConvertINetStringAvailable(DWORD, DWORD);") +cpp_quote("STDAPI ConvertINetString(LPDWORD, DWORD, DWORD, LPCSTR, LPINT, LPSTR, LPINT);") +cpp_quote("STDAPI ConvertINetMultiByteToUnicode(LPDWORD, DWORD, LPCSTR, LPINT, LPWSTR, LPINT);") +cpp_quote("STDAPI ConvertINetUnicodeToMultiByte(LPDWORD, DWORD, LPCWSTR, LPINT, LPSTR, LPINT);") diff --git a/reactos/include/psdk/mmstream.h b/reactos/include/psdk/mmstream.h new file mode 100644 index 00000000000..1b21f142e75 --- /dev/null +++ b/reactos/include/psdk/mmstream.h @@ -0,0 +1,588 @@ +/*** Autogenerated by WIDL 0.3.0 from include\psdk\mmstream.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_INCLUDE_PSDK_MMSTREAM_H +#define __WIDL_INCLUDE_PSDK_MMSTREAM_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400) +#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x) +#define MS_S_PENDING MS_SUCCESS_CODE(1) +#define MS_S_NOUPDATE MS_SUCCESS_CODE(2) +#define MS_S_ENDOFSTREAM MS_SUCCESS_CODE(3) +#define MS_E_SAMPLEALLOC MS_ERROR_CODE(1) +#define MS_E_PURPOSEID MS_ERROR_CODE(2) +#define MS_E_NOSTREAM MS_ERROR_CODE(3) +#define MS_E_NOSEEKING MS_ERROR_CODE(4) +#define MS_E_INCOMPATIBLE MS_ERROR_CODE(5) +#define MS_E_BUSY MS_ERROR_CODE(6) +#define MS_E_NOTINIT MS_ERROR_CODE(7) +#define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE(8) +#define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE(9) +#define MS_E_NOTRUNNING MS_ERROR_CODE(10) +DEFINE_GUID(MSPID_PrimaryVideo, 0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d); +DEFINE_GUID(MSPID_PrimaryAudio, 0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d); +#if 0 +typedef void *PAPCFUNC; +#endif +typedef LONGLONG STREAM_TIME; +typedef GUID MSPID; +typedef REFGUID REFMSPID; +typedef enum { + STREAMTYPE_READ = 0, + STREAMTYPE_WRITE = 1, + STREAMTYPE_TRANSFORM = 2 +} STREAM_TYPE; +typedef enum { + STREAMSTATE_STOP = 0, + STREAMSTATE_RUN = 1 +} STREAM_STATE; +typedef enum { + COMPSTAT_NOUPDATEOK = 0x1, + COMPSTAT_WAIT = 0x2, + COMPSTAT_ABORT = 0x4 +} COMPLETION_STATUS_FLAGS; +enum { + MMSSF_HASCLOCK = 0x1, + MMSSF_SUPPORTSEEK = 0x2, + MMSSF_ASYNCHRONOUS = 0x4 +}; + +enum { + SSUPDATE_ASYNC = 0x1, + SSUPDATE_CONTINUOUS = 0x2 +}; + +#ifndef __IMultiMediaStream_FWD_DEFINED__ +#define __IMultiMediaStream_FWD_DEFINED__ +typedef interface IMultiMediaStream IMultiMediaStream; +#endif + +#ifndef __IMediaStream_FWD_DEFINED__ +#define __IMediaStream_FWD_DEFINED__ +typedef interface IMediaStream IMediaStream; +#endif + +#ifndef __IStreamSample_FWD_DEFINED__ +#define __IStreamSample_FWD_DEFINED__ +typedef interface IStreamSample IStreamSample; +#endif + +/***************************************************************************** + * IMultiMediaStream interface + */ +#ifndef __IMultiMediaStream_INTERFACE_DEFINED__ +#define __IMultiMediaStream_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMultiMediaStream, 0xb502d1bc, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMultiMediaStream : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetInformation( + DWORD* pdwFlags, + STREAM_TYPE* pStreamType) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetMediaStream( + REFMSPID idPurpose, + IMediaStream** ppMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumMediaStreams( + long Index, + IMediaStream** ppMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetState( + STREAM_STATE* pCurrentState) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetState( + STREAM_STATE NewState) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTime( + STREAM_TIME* pCurrentTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDuration( + STREAM_TIME* pDuration) = 0; + + virtual HRESULT STDMETHODCALLTYPE Seek( + STREAM_TIME SeekTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetEndOfStreamEventHandle( + HANDLE* phEOS) = 0; + +}; +#else +typedef struct IMultiMediaStreamVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMultiMediaStream* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMultiMediaStream* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMultiMediaStream* This); + + /*** IMultiMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetInformation)( + IMultiMediaStream* This, + DWORD* pdwFlags, + STREAM_TYPE* pStreamType); + + HRESULT (STDMETHODCALLTYPE *GetMediaStream)( + IMultiMediaStream* This, + REFMSPID idPurpose, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *EnumMediaStreams)( + IMultiMediaStream* This, + long Index, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetState)( + IMultiMediaStream* This, + STREAM_STATE* pCurrentState); + + HRESULT (STDMETHODCALLTYPE *SetState)( + IMultiMediaStream* This, + STREAM_STATE NewState); + + HRESULT (STDMETHODCALLTYPE *GetTime)( + IMultiMediaStream* This, + STREAM_TIME* pCurrentTime); + + HRESULT (STDMETHODCALLTYPE *GetDuration)( + IMultiMediaStream* This, + STREAM_TIME* pDuration); + + HRESULT (STDMETHODCALLTYPE *Seek)( + IMultiMediaStream* This, + STREAM_TIME SeekTime); + + HRESULT (STDMETHODCALLTYPE *GetEndOfStreamEventHandle)( + IMultiMediaStream* This, + HANDLE* phEOS); + + END_INTERFACE +} IMultiMediaStreamVtbl; +interface IMultiMediaStream { + const IMultiMediaStreamVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMultiMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMultiMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMultiMediaStream_Release(p) (p)->lpVtbl->Release(p) +/*** IMultiMediaStream methods ***/ +#define IMultiMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b) +#define IMultiMediaStream_GetMediaStream(p,a,b) (p)->lpVtbl->GetMediaStream(p,a,b) +#define IMultiMediaStream_EnumMediaStreams(p,a,b) (p)->lpVtbl->EnumMediaStreams(p,a,b) +#define IMultiMediaStream_GetState(p,a) (p)->lpVtbl->GetState(p,a) +#define IMultiMediaStream_SetState(p,a) (p)->lpVtbl->SetState(p,a) +#define IMultiMediaStream_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) +#define IMultiMediaStream_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a) +#define IMultiMediaStream_Seek(p,a) (p)->lpVtbl->Seek(p,a) +#define IMultiMediaStream_GetEndOfStreamEventHandle(p,a) (p)->lpVtbl->GetEndOfStreamEventHandle(p,a) +#endif + +#endif + +HRESULT CALLBACK IMultiMediaStream_GetInformation_Proxy( + IMultiMediaStream* This, + DWORD* pdwFlags, + STREAM_TYPE* pStreamType); +void __RPC_STUB IMultiMediaStream_GetInformation_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiMediaStream_GetMediaStream_Proxy( + IMultiMediaStream* This, + REFMSPID idPurpose, + IMediaStream** ppMediaStream); +void __RPC_STUB IMultiMediaStream_GetMediaStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiMediaStream_EnumMediaStreams_Proxy( + IMultiMediaStream* This, + long Index, + IMediaStream** ppMediaStream); +void __RPC_STUB IMultiMediaStream_EnumMediaStreams_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiMediaStream_GetState_Proxy( + IMultiMediaStream* This, + STREAM_STATE* pCurrentState); +void __RPC_STUB IMultiMediaStream_GetState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiMediaStream_SetState_Proxy( + IMultiMediaStream* This, + STREAM_STATE NewState); +void __RPC_STUB IMultiMediaStream_SetState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiMediaStream_GetTime_Proxy( + IMultiMediaStream* This, + STREAM_TIME* pCurrentTime); +void __RPC_STUB IMultiMediaStream_GetTime_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiMediaStream_GetDuration_Proxy( + IMultiMediaStream* This, + STREAM_TIME* pDuration); +void __RPC_STUB IMultiMediaStream_GetDuration_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiMediaStream_Seek_Proxy( + IMultiMediaStream* This, + STREAM_TIME SeekTime); +void __RPC_STUB IMultiMediaStream_Seek_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMultiMediaStream_GetEndOfStreamEventHandle_Proxy( + IMultiMediaStream* This, + HANDLE* phEOS); +void __RPC_STUB IMultiMediaStream_GetEndOfStreamEventHandle_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMultiMediaStream_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IMediaStream interface + */ +#ifndef __IMediaStream_INTERFACE_DEFINED__ +#define __IMediaStream_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IMediaStream, 0xb502d1bd, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IMediaStream : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetMultiMediaStream( + IMultiMediaStream** ppMultiMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInformation( + MSPID* pPurposeId, + STREAM_TYPE* pType) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSameFormat( + IMediaStream* pStreamThatHasDesiredFormat, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE AllocateSample( + DWORD dwFlags, + IStreamSample** ppSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSharedSample( + IStreamSample* pExistingSample, + DWORD dwFlags, + IStreamSample** ppNewSample) = 0; + + virtual HRESULT STDMETHODCALLTYPE SendEndOfStream( + DWORD dwFlags) = 0; + +}; +#else +typedef struct IMediaStreamVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IMediaStream* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IMediaStream* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IMediaStream* This); + + /*** IMediaStream methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)( + IMediaStream* This, + IMultiMediaStream** ppMultiMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetInformation)( + IMediaStream* This, + MSPID* pPurposeId, + STREAM_TYPE* pType); + + HRESULT (STDMETHODCALLTYPE *SetSameFormat)( + IMediaStream* This, + IMediaStream* pStreamThatHasDesiredFormat, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *AllocateSample)( + IMediaStream* This, + DWORD dwFlags, + IStreamSample** ppSample); + + HRESULT (STDMETHODCALLTYPE *CreateSharedSample)( + IMediaStream* This, + IStreamSample* pExistingSample, + DWORD dwFlags, + IStreamSample** ppNewSample); + + HRESULT (STDMETHODCALLTYPE *SendEndOfStream)( + IMediaStream* This, + DWORD dwFlags); + + END_INTERFACE +} IMediaStreamVtbl; +interface IMediaStream { + const IMediaStreamVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMediaStream_Release(p) (p)->lpVtbl->Release(p) +/*** IMediaStream methods ***/ +#define IMediaStream_GetMultiMediaStream(p,a) (p)->lpVtbl->GetMultiMediaStream(p,a) +#define IMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b) +#define IMediaStream_SetSameFormat(p,a,b) (p)->lpVtbl->SetSameFormat(p,a,b) +#define IMediaStream_AllocateSample(p,a,b) (p)->lpVtbl->AllocateSample(p,a,b) +#define IMediaStream_CreateSharedSample(p,a,b,c) (p)->lpVtbl->CreateSharedSample(p,a,b,c) +#define IMediaStream_SendEndOfStream(p,a) (p)->lpVtbl->SendEndOfStream(p,a) +#endif + +#endif + +HRESULT CALLBACK IMediaStream_GetMultiMediaStream_Proxy( + IMediaStream* This, + IMultiMediaStream** ppMultiMediaStream); +void __RPC_STUB IMediaStream_GetMultiMediaStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStream_GetInformation_Proxy( + IMediaStream* This, + MSPID* pPurposeId, + STREAM_TYPE* pType); +void __RPC_STUB IMediaStream_GetInformation_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStream_SetSameFormat_Proxy( + IMediaStream* This, + IMediaStream* pStreamThatHasDesiredFormat, + DWORD dwFlags); +void __RPC_STUB IMediaStream_SetSameFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStream_AllocateSample_Proxy( + IMediaStream* This, + DWORD dwFlags, + IStreamSample** ppSample); +void __RPC_STUB IMediaStream_AllocateSample_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStream_CreateSharedSample_Proxy( + IMediaStream* This, + IStreamSample* pExistingSample, + DWORD dwFlags, + IStreamSample** ppNewSample); +void __RPC_STUB IMediaStream_CreateSharedSample_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IMediaStream_SendEndOfStream_Proxy( + IMediaStream* This, + DWORD dwFlags); +void __RPC_STUB IMediaStream_SendEndOfStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMediaStream_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IStreamSample interface + */ +#ifndef __IStreamSample_INTERFACE_DEFINED__ +#define __IStreamSample_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IStreamSample, 0xb502d1be, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IStreamSample : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetMediaStream( + IMediaStream** ppMediaStream) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSampleTimes( + STREAM_TIME* pStartTime, + STREAM_TIME* pEndTime, + STREAM_TIME* pCurrentTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSampleTimes( + const STREAM_TIME* pStartTime, + const STREAM_TIME* pEndTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE Update( + DWORD dwFlags, + HANDLE hEvent, + PAPCFUNC pfnAPC, + DWORD dwAPCData) = 0; + + virtual HRESULT STDMETHODCALLTYPE CompletionStatus( + DWORD dwFlags, + DWORD dwMilliseconds) = 0; + +}; +#else +typedef struct IStreamSampleVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IStreamSample* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IStreamSample* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IStreamSample* This); + + /*** IStreamSample methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMediaStream)( + IStreamSample* This, + IMediaStream** ppMediaStream); + + HRESULT (STDMETHODCALLTYPE *GetSampleTimes)( + IStreamSample* This, + STREAM_TIME* pStartTime, + STREAM_TIME* pEndTime, + STREAM_TIME* pCurrentTime); + + HRESULT (STDMETHODCALLTYPE *SetSampleTimes)( + IStreamSample* This, + const STREAM_TIME* pStartTime, + const STREAM_TIME* pEndTime); + + HRESULT (STDMETHODCALLTYPE *Update)( + IStreamSample* This, + DWORD dwFlags, + HANDLE hEvent, + PAPCFUNC pfnAPC, + DWORD dwAPCData); + + HRESULT (STDMETHODCALLTYPE *CompletionStatus)( + IStreamSample* This, + DWORD dwFlags, + DWORD dwMilliseconds); + + END_INTERFACE +} IStreamSampleVtbl; +interface IStreamSample { + const IStreamSampleVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IStreamSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IStreamSample_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IStreamSample_Release(p) (p)->lpVtbl->Release(p) +/*** IStreamSample methods ***/ +#define IStreamSample_GetMediaStream(p,a) (p)->lpVtbl->GetMediaStream(p,a) +#define IStreamSample_GetSampleTimes(p,a,b,c) (p)->lpVtbl->GetSampleTimes(p,a,b,c) +#define IStreamSample_SetSampleTimes(p,a,b) (p)->lpVtbl->SetSampleTimes(p,a,b) +#define IStreamSample_Update(p,a,b,c,d) (p)->lpVtbl->Update(p,a,b,c,d) +#define IStreamSample_CompletionStatus(p,a,b) (p)->lpVtbl->CompletionStatus(p,a,b) +#endif + +#endif + +HRESULT CALLBACK IStreamSample_GetMediaStream_Proxy( + IStreamSample* This, + IMediaStream** ppMediaStream); +void __RPC_STUB IStreamSample_GetMediaStream_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IStreamSample_GetSampleTimes_Proxy( + IStreamSample* This, + STREAM_TIME* pStartTime, + STREAM_TIME* pEndTime, + STREAM_TIME* pCurrentTime); +void __RPC_STUB IStreamSample_GetSampleTimes_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IStreamSample_SetSampleTimes_Proxy( + IStreamSample* This, + const STREAM_TIME* pStartTime, + const STREAM_TIME* pEndTime); +void __RPC_STUB IStreamSample_SetSampleTimes_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IStreamSample_Update_Proxy( + IStreamSample* This, + DWORD dwFlags, + HANDLE hEvent, + PAPCFUNC pfnAPC, + DWORD dwAPCData); +void __RPC_STUB IStreamSample_Update_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IStreamSample_CompletionStatus_Proxy( + IStreamSample* This, + DWORD dwFlags, + DWORD dwMilliseconds); +void __RPC_STUB IStreamSample_CompletionStatus_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IStreamSample_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + + +/* End additional prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_INCLUDE_PSDK_MMSTREAM_H */ diff --git a/reactos/include/psdk/mmstream.idl b/reactos/include/psdk/mmstream.idl new file mode 100644 index 00000000000..9730ee2bf84 --- /dev/null +++ b/reactos/include/psdk/mmstream.idl @@ -0,0 +1,184 @@ +/* + * Copyright 2004 Christian Costa + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; + +cpp_quote("#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)") +cpp_quote("#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x)") +cpp_quote("#define MS_S_PENDING MS_SUCCESS_CODE(1)") +cpp_quote("#define MS_S_NOUPDATE MS_SUCCESS_CODE(2)") +cpp_quote("#define MS_S_ENDOFSTREAM MS_SUCCESS_CODE(3)") + +cpp_quote("#define MS_E_SAMPLEALLOC MS_ERROR_CODE(1)") +cpp_quote("#define MS_E_PURPOSEID MS_ERROR_CODE(2)") +cpp_quote("#define MS_E_NOSTREAM MS_ERROR_CODE(3)") +cpp_quote("#define MS_E_NOSEEKING MS_ERROR_CODE(4)") +cpp_quote("#define MS_E_INCOMPATIBLE MS_ERROR_CODE(5)") +cpp_quote("#define MS_E_BUSY MS_ERROR_CODE(6)") +cpp_quote("#define MS_E_NOTINIT MS_ERROR_CODE(7)") +cpp_quote("#define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE(8)") +cpp_quote("#define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE(9)") +cpp_quote("#define MS_E_NOTRUNNING MS_ERROR_CODE(10)") + +cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo, 0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);") +cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio, 0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);") + +cpp_quote("#if 0") +typedef void* PAPCFUNC; +cpp_quote("#endif") + +typedef LONGLONG STREAM_TIME; + +typedef GUID MSPID; +typedef REFGUID REFMSPID; + +typedef enum { + STREAMTYPE_READ = 0, + STREAMTYPE_WRITE = 1, + STREAMTYPE_TRANSFORM = 2 +} STREAM_TYPE; + +typedef enum { + STREAMSTATE_STOP = 0, + STREAMSTATE_RUN = 1 +} STREAM_STATE; + + +typedef enum { + COMPSTAT_NOUPDATEOK = 0x00000001, + COMPSTAT_WAIT = 0x00000002, + COMPSTAT_ABORT = 0x00000004 +} COMPLETION_STATUS_FLAGS; + +enum { + MMSSF_HASCLOCK = 0x00000001, + MMSSF_SUPPORTSEEK = 0x00000002, + MMSSF_ASYNCHRONOUS = 0x00000004 +}; + +enum { + SSUPDATE_ASYNC = 0x00000001, + SSUPDATE_CONTINUOUS = 0x00000002 +}; + +interface IMultiMediaStream; +interface IMediaStream; +interface IStreamSample; + + +[ +object, +local, +uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IMultiMediaStream : IUnknown { + + HRESULT GetInformation( + [out, optional] DWORD *pdwFlags, + [out, optional] STREAM_TYPE *pStreamType); + + HRESULT GetMediaStream( + [in] REFMSPID idPurpose, + [out] IMediaStream **ppMediaStream); + + HRESULT EnumMediaStreams( + [in] long Index, + [out] IMediaStream **ppMediaStream); + + HRESULT GetState( + [out] STREAM_STATE *pCurrentState); + + HRESULT SetState( + [in] STREAM_STATE NewState); + + HRESULT GetTime( + [out] STREAM_TIME *pCurrentTime); + + HRESULT GetDuration( + [out] STREAM_TIME *pDuration); + + HRESULT Seek( + [in] STREAM_TIME SeekTime); + + HRESULT GetEndOfStreamEventHandle( + [out] HANDLE *phEOS); +} + + +[ +object, +uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IMediaStream : IUnknown { + + HRESULT GetMultiMediaStream( + [out] IMultiMediaStream **ppMultiMediaStream); + + HRESULT GetInformation( + [out, optional] MSPID *pPurposeId, + [out, optional] STREAM_TYPE *pType); + + HRESULT SetSameFormat( + [in] IMediaStream *pStreamThatHasDesiredFormat, + [in] DWORD dwFlags); + + HRESULT AllocateSample( + [in] DWORD dwFlags, + [out] IStreamSample **ppSample); + + HRESULT CreateSharedSample( + [in] IStreamSample *pExistingSample, + [in] DWORD dwFlags, + [out] IStreamSample **ppNewSample); + + HRESULT SendEndOfStream(DWORD dwFlags); +} + + +[ +object, +local, +uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IStreamSample : IUnknown { + + HRESULT GetMediaStream( + [in] IMediaStream **ppMediaStream); + + HRESULT GetSampleTimes( + [out, optional] STREAM_TIME * pStartTime, + [out, optional] STREAM_TIME * pEndTime, + [out, optional] STREAM_TIME * pCurrentTime); + + HRESULT SetSampleTimes( + [in, optional] const STREAM_TIME *pStartTime, + [in, optional] const STREAM_TIME *pEndTime); + + HRESULT Update( + [in] DWORD dwFlags, + [in, optional] HANDLE hEvent, + [in, optional] PAPCFUNC pfnAPC, + [in, optional] DWORD dwAPCData); + + HRESULT CompletionStatus( + [in] DWORD dwFlags, + [in, optional] DWORD dwMilliseconds); +} diff --git a/reactos/include/psdk/mshtmcid.h b/reactos/include/psdk/mshtmcid.h new file mode 100644 index 00000000000..3213169d405 --- /dev/null +++ b/reactos/include/psdk/mshtmcid.h @@ -0,0 +1,425 @@ +/* + * Copyright 2006 Jacek Caban for CodeWeavers + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __mshtmcid_h__ +#define __mshtmcid_h__ + +#define IDM_UNKNOWN 0 +#define IDM_ALIGNBOTTOM 1 +#define IDM_ALIGNHORIZONTALCENTERS 2 +#define IDM_ALIGNLEFT 3 +#define IDM_ALIGNRIGHT 4 +#define IDM_ALIGNTOGRID 5 +#define IDM_ALIGNTOP 6 +#define IDM_ALIGNVERTICALCENTERS 7 +#define IDM_ARRANGEBOTTOM 8 +#define IDM_ARRANGERIGHT 9 +#define IDM_BRINGFORWARD 10 +#define IDM_BRINGTOFRONT 11 +#define IDM_CENTERHORIZONTALLY 12 +#define IDM_CENTERVERTICALLY 13 +#define IDM_CODE 14 +#define IDM_COPY 15 +#define IDM_CUT 16 +#define IDM_DELETE 17 +#define IDM_FONTNAME 18 +#define IDM_FONTSIZE 19 +#define IDM_GROUP 20 +#define IDM_HORIZSPACECONCATENATE 21 +#define IDM_HORIZSPACEDECREASE 22 +#define IDM_HORIZSPACEINCREASE 23 +#define IDM_HORIZSPACEMAKEEQUAL 24 +#define IDM_INSERTOBJECT 25 +#define IDM_PASTE 26 +#define IDM_PRINT 27 +#define IDM_PROPERTIES 28 +#define IDM_REDO 29 +#define IDM_MULTILEVELREDO 30 +#define IDM_SELECTALL 31 +#define IDM_SENDBACKWARD 32 +#define IDM_SENDTOBACK 33 +#define IDM_SHOWTABLE 34 +#define IDM_SIZETOCONTROL 35 +#define IDM_SIZETOCONTROLHEIGHT 36 +#define IDM_SIZETOCONTROLWIDTH 37 +#define IDM_SIZETOFIT 38 +#define IDM_SIZETOGRID 39 +#define IDM_SNAPTOGRID 40 +#define IDM_TABORDER 41 +#define IDM_TOOLBOX 42 +#define IDM_UNDO 43 +#define IDM_MULTILEVELUNDO 44 +#define IDM_UNGROUP 45 +#define IDM_VERTSPACECONCATENATE 46 +#define IDM_VERTSPACEDECREASE 47 +#define IDM_VERTSPACEINCREASE 48 +#define IDM_VERTSPACEMAKEEQUAL 49 +#define IDM_JUSTIFYFULL 50 +#define IDM_ZOOMPERCENT 50 +#define IDM_BACKCOLOR 51 +#define IDM_BOLD 52 +#define IDM_BORDERCOLOR 53 +#define IDM_FLAT 54 +#define IDM_FORECOLOR 55 +#define IDM_ITALIC 56 +#define IDM_JUSTIFYCENTER 57 +#define IDM_JUSTIFYGENERAL 58 +#define IDM_JUSTIFYLEFT 59 +#define IDM_JUSTIFYRIGHT 60 +#define IDM_RAISED 61 +#define IDM_SUNKEN 62 +#define IDM_UNDERLINE 63 +#define IDM_CHISELED 64 +#define IDM_ETCHED 65 +#define IDM_SHADOWED 66 +#define IDM_FIND 67 +#define IDM_GETZOOM 68 +#define IDM_SHOWGRID 69 +#define IDM_SAVE 70 +#define IDM_SAVEAS 71 +#define IDM_OBJECTVERBLIST0 72 +#define IDM_OBJECTVERBLIST1 73 +#define IDM_OBJECTVERBLIST2 74 +#define IDM_OBJECTVERBLIST3 75 +#define IDM_OBJECTVERBLIST4 76 +#define IDM_OBJECTVERBLIST5 77 +#define IDM_OBJECTVERBLIST6 78 +#define IDM_OBJECTVERBLIST7 79 +#define IDM_OBJECTVERBLIST8 80 +#define IDM_OBJECTVERBLIST9 81 + +#define IDM_OBJECTVERBLISTLAST IDM_OBJECTVERBLIST9 + +#define IDM_CONVERTOBJECT 82 +#define IDM_CUSTOMCONTROL 83 +#define IDM_CUSTOMIZEITEM 84 +#define IDM_RENAME 85 +#define IDM_IMPORT 86 +#define IDM_NEWPAGE 87 +#define IDM_MOVE 88 +#define IDM_CANCEL 89 +#define IDM_FONT 90 +#define IDM_STRIKETHROUGH 91 +#define IDM_DELETEWORD 92 +#define IDM_EXECPRINT 93 +#define IDM_JUSTIFYNONE 94 +#define IDM_TRISTATEBOLD 95 +#define IDM_TRISTATEITALIC 96 +#define IDM_TRISTATEUNDERLINE 97 + +#define IDM_OPEN 2000 +#define IDM_NEW 2001 +#define IDM_SAVECOPYAS 2002 +#define IDM_PRINTPREVIEW 2003 +#define IDM_PAGESETUP 2004 +#define IDM_SPELL 2005 +#define IDM_PASTESPECIAL 2006 +#define IDM_CLEARSELECTION 2007 +#define IDM_FOLLOW_ANCHOR 2008 + +#define IDM_SHOWPRINT 2010 +#define IDM_SHOWPAGESETUP 2011 + +#define IDM_INSINPUTIMAGE 2114 +#define IDM_INSINPUTBUTTON 2115 +#define IDM_INSINPUTRESET 2116 +#define IDM_INSINPUTSUBMIT 2117 +#define IDM_INSINPUTUPLOAD 2118 +#define IDM_INSFIELDSET 2119 +#define IDM_PASTEINSERT 2120 +#define IDM_REPLACE 2121 +#define IDM_EDITSOURCE 2122 +#define IDM_BOOKMARK 2123 +#define IDM_HYPERLINK 2124 +#define IDM_UNLINK 2125 +#define IDM_BROWSEMODE 2126 +#define IDM_EDITMODE 2127 +#define IDM_UNBOOKMARK 2128 + +#define IDM_TOOLBARS 2130 +#define IDM_STATUSBAR 2131 +#define IDM_FORMATMARK 2132 +#define IDM_TEXTONLY 2133 + +#define IDM_OPTIONS 2135 +#define IDM_FOLLOWLINKC 2136 +#define IDM_FOLLOWLINKN 2137 +#define IDM_STOP 2138 +#define IDM_VIEWSOURCE 2139 +#define IDM_ZOOMPOPUP 2140 +#define IDM_BASELINEFONT1 2141 +#define IDM_BASELINEFONT2 2142 +#define IDM_BASELINEFONT3 2143 +#define IDM_BASELINEFONT4 2144 +#define IDM_BASELINEFONT5 2145 + +#define IDM_HORIZONTALLINE 2150 +#define IDM_LINEBREAKNORMAL 2151 +#define IDM_LINEBREAKLEFT 2152 +#define IDM_LINEBREAKRIGHT 2153 +#define IDM_LINEBREAKBOTH 2154 +#define IDM_NONBREAK 2155 +#define IDM_SPECIALCHAR 2156 +#define IDM_HTMLSOURCE 2157 +#define IDM_IFRAME 2158 +#define IDM_HTMLCONTAIN 2159 + +#define IDM_TEXTBOX 2161 +#define IDM_TEXTAREA 2162 +#define IDM_CHECKBOX 2163 +#define IDM_RADIOBUTTON 2164 +#define IDM_DROPDOWNBOX 2165 +#define IDM_LISTBOX 2166 +#define IDM_BUTTON 2167 +#define IDM_IMAGE 2168 +#define IDM_OBJECT 2169 +#define IDM_1D 2170 +#define IDM_IMAGEMAP 2171 +#define IDM_FILE 2172 +#define IDM_COMMENT 2173 +#define IDM_SCRIPT 2174 +#define IDM_JAVAAPPLET 2175 +#define IDM_PLUGIN 2176 +#define IDM_PAGEBREAK 2177 +#define IDM_HTMLAREA 2178 + +#define IDM_PARAGRAPH 2180 +#define IDM_FORM 2181 +#define IDM_MARQUEE 2182 +#define IDM_LIST 2183 +#define IDM_ORDERLIST 2184 +#define IDM_UNORDERLIST 2185 +#define IDM_INDENT 2186 +#define IDM_OUTDENT 2187 +#define IDM_PREFORMATTED 2188 +#define IDM_ADDRESS 2189 +#define IDM_BLINK 2190 +#define IDM_DIV 2191 + +#define IDM_TABLEINSERT 2200 +#define IDM_RCINSERT 2201 +#define IDM_CELLINSERT 2202 +#define IDM_CAPTIONINSERT 2203 +#define IDM_CELLMERGE 2204 +#define IDM_CELLSPLIT 2205 +#define IDM_CELLSELECT 2206 +#define IDM_ROWSELECT 2207 +#define IDM_COLUMNSELECT 2208 +#define IDM_TABLESELECT 2209 +#define IDM_TABLEPROPERTIES 2210 +#define IDM_CELLPROPERTIES 2211 +#define IDM_ROWINSERT 2212 +#define IDM_COLUMNINSERT 2213 + +#define IDM_HELP_CONTENT 2220 +#define IDM_HELP_ABOUT 2221 +#define IDM_HELP_README 2222 + +#define IDM_REMOVEFORMAT 2230 +#define IDM_PAGEINFO 2231 +#define IDM_TELETYPE 2232 +#define IDM_GETBLOCKFMTS 2233 +#define IDM_BLOCKFMT 2234 +#define IDM_SHOWHIDE_CODE 2235 +#define IDM_TABLE 2236 +#define IDM_COPYFORMAT 2237 +#define IDM_PASTEFORMAT 2238 +#define IDM_GOTO 2239 +#define IDM_CHANGEFONT 2240 +#define IDM_CHANGEFONTSIZE 2241 + +#define IDM_CHANGECASE 2246 +#define IDM_SUBSCRIPT 2247 +#define IDM_SUPERSCRIPT 2248 +#define IDM_SHOWSPECIALCHAR 2249 +#define IDM_CENTERALIGNPARA 2250 +#define IDM_LEFTALIGNPARA 2251 +#define IDM_RIGHTALIGNPARA 2252 +#define IDM_REMOVEPARAFORMAT 2253 +#define IDM_APPLYNORMAL 2254 +#define IDM_APPLYHEADING1 2255 +#define IDM_APPLYHEADING2 2256 +#define IDM_APPLYHEADING3 2257 + +#define IDM_DOCPROPERTIES 2260 +#define IDM_ADDFAVORITES 2261 +#define IDM_COPYSHORTCUT 2262 +#define IDM_SAVEBACKGROUND 2263 +#define IDM_SETWALLPAPER 2264 +#define IDM_COPYBACKGROUND 2265 +#define IDM_CREATESHORTCUT 2266 +#define IDM_PAGE 2267 +#define IDM_SAVETARGET 2268 +#define IDM_SHOWPICTURE 2269 +#define IDM_SAVEPICTURE 2270 +#define IDM_DYNSRCPLAY 2271 +#define IDM_DYNSRCSTOP 2272 +#define IDM_PRINTTARGET 2273 +#define IDM_IMGARTPLAY 2274 +#define IDM_IMGARTSTOP 2275 +#define IDM_IMGARTREWIND 2276 +#define IDM_PRINTQUERYJOBSPENDING 2277 +#define IDM_SETDESKTOPITEM 2278 + +#define IDM_CONTEXTMENU 2280 + +#define IDM_GOBACKWARD 2282 +#define IDM_GOFORWARD 2283 +#define IDM_PRESTOP 2284 + +#define IDM_MP_MYPICS 2287 +#define IDM_MP_EMAILPICTURE 2288 +#define IDM_MP_PRINTPICTURE 2289 +#define IDM_CREATELINK 2290 +#define IDM_COPYCONTENT 2291 +#define IDM_LANGUAGE 2292 + +#define IDM_GETPRINTTEMPLATE 2295 +#define IDM_SETPRINTTEMPLATE 2296 +#define IDM_TEMPLATE_PAGESETUP 2298 + +#define IDM_REFRESH 2300 +#define IDM_STOPDOWNLOAD 2301 +#define IDM_ENABLE_INTERACTION 2302 + +#define IDM_LAUNCHDEBUGGER 2310 +#define IDM_BREAKATNEXT 2311 +#define IDM_INSINPUTHIDDEN 2312 +#define IDM_INSINPUTPASSWORD 2313 +#define IDM_OVERWRITE 2314 +#define IDM_PARSECOMPLETE 2315 +#define IDM_HTMLEDITMODE 2316 +#define IDM_REGISTRYREFRESH 2317 +#define IDM_COMPOSESETTINGS 2318 + +#define IDM_SHOWMISCTAGS 2320 +#define IDM_SHOWALIGNEDSITETAGS 2321 +#define IDM_SHOWSCRIPTTAGS 2322 +#define IDM_SHOWSTYLETAGS 2323 +#define IDM_SHOWCOMMENTTAGS 2324 +#define IDM_SHOWAREATAGS 2325 +#define IDM_SHOWUNKNOWNTAGS 2326 +#define IDM_SHOWALLTAGS 2327 +#define IDM_SHOWZEROBORDERATDESIGNTIME 2328 +#define IDM_AUTODETECT 2329 +#define IDM_SCRIPTDEBUGGER 2330 +#define IDM_GETBYTESDOWNLOADED 2331 +#define IDM_NOACTIVATENORMALOLECONTROLS 2332 +#define IDM_NOACTIVATEDESIGNTIMECONTROLS 2333 +#define IDM_NOACTIVATEJAVAAPPLETS 2334 +#define IDM_NOFIXUPURLSONPASTE 2335 +#define IDM_EMPTYGLYPHTABLE 2336 +#define IDM_ADDTOGLYPHTABLE 2337 +#define IDM_REMOVEFROMGLYPHTABLE 2338 +#define IDM_REPLACEGLYPHCONTENTS 2339 +#define IDM_SHOWWBRTAGS 2340 +#define IDM_PERSISTSTREAMSYNC 2341 +#define IDM_SETDIRTY 2342 +#define IDM_RUNURLSCRIPT 2343 + +#ifdef IE5_ZOOM +#define IDM_ZOOMRATIO 2344 +#define IDM_GETZOOMNUMERATOR 2345 +#define IDM_GETZOOMDENOMINATOR 2346 +#endif + +#define IDM_DIRLTR 2350 +#define IDM_DIRRTL 2351 +#define IDM_BLOCKDIRLTR 2352 +#define IDM_BLOCKDIRRTL 2353 +#define IDM_INLINEDIRLTR 2354 +#define IDM_INLINEDIRRTL 2355 +#define IDM_ISTRUSTEDDLG 2356 +#define IDM_INSERTSPAN 2357 +#define IDM_LOCALIZEEDITOR 2358 + +#define IDM_SAVEPRETRANSFORMSOURCE 2370 +#define IDM_VIEWPRETRANSFORMSOURCE 2371 + +#define IDM_SCROLL_HERE 2380 +#define IDM_SCROLL_TOP 2381 +#define IDM_SCROLL_BOTTOM 2382 +#define IDM_SCROLL_PAGEUP 2383 +#define IDM_SCROLL_PAGEDOWN 2384 +#define IDM_SCROLL_UP 2385 +#define IDM_SCROLL_DOWN 2386 +#define IDM_SCROLL_LEFTEDGE 2387 +#define IDM_SCROLL_RIGHTEDGE 2388 +#define IDM_SCROLL_PAGELEFT 2389 +#define IDM_SCROLL_PAGERIGHT 2390 +#define IDM_SCROLL_LEFT 2391 +#define IDM_SCROLL_RIGHT 2392 +#define IDM_MULTIPLESELECTION 2393 +#define IDM_2D_POSITION 2394 +#define IDM_2D_ELEMENT 2395 +#define IDM_1D_ELEMENT 2396 +#define IDM_ABSOLUTE_POSITION 2397 +#define IDM_LIVERESIZE 2398 +#define IDM_ATOMICSELECTION 2399 +#define IDM_AUTOURLDETECT_MODE 2400 +#define IDM_IE50_PASTE 2401 +#define IDM_IE50_PASTE_MODE 2402 +#define IDM_GETIPRINT 2403 +#define IDM_DISABLE_EDITFOCUS_UI 2404 +#define IDM_RESPECTVISIBILITY_INDESIGN 2405 +#define IDM_CSSEDITING_LEVEL 2406 +#define IDM_UI_OUTDENT 2407 +#define IDM_UPDATEPAGESTATUS 2408 +#define IDM_IME_ENABLE_RECONVERSION 2409 +#define IDM_KEEPSELECTION 2410 +#define IDM_UNLOADDOCUMENT 2411 + +#define IDM_OVERRIDE_CURSOR 2420 + +#define IDM_PEERHITTESTSAMEINEDIT 2423 + +#define IDM_TRUSTAPPCACHE 2425 + +#define IDM_BACKGROUNDIMAGECACHE 2430 + +#define IDM_MIMECSET__FIRST_ 3609 +#define IDM_MIMECSET__LAST__ 3699 + +#define IDM_MENUEXT_FIRST__ 3700 +#define IDM_MENUEXT_LAST__ 3732 +#define IDM_MENUEXT_COUNT 3733 + +#define IDM_DEFAULTBLOCK 6046 + +#define IDM_NEW_TOPLEVELWINDOW 7050 + +#define IDM_PRESERVEUNDOALWAYS 6049 +#define IDM_PERSISTDEFAULTVALUES 7100 +#define IDM_PROTECTMETATAGS 7101 + +#define IDM_GETFRAMEZONE 6037 + +#define IDM_FIRE_PRINTTEMPLATEUP 15000 +#define IDM_FIRE_PRINTTEMPLATEDOWN 15001 +#define IDM_SETPRINTHANDLES 15002 + +#define CMD_ZOOM_PAGEWIDTH -1 +#define CMD_ZOOM_ONEPAGE -2 +#define CMD_ZOOM_TWOPAGES -3 +#define CMD_ZOOM_SELECTION -4 +#define CMD_ZOOM_FIT -5 + +#define IDM_CONTEXT 1 +#define IDM_HWND 2 + +#endif diff --git a/reactos/include/psdk/mshtmdid.h b/reactos/include/psdk/mshtmdid.h new file mode 100644 index 00000000000..e9da0792371 --- /dev/null +++ b/reactos/include/psdk/mshtmdid.h @@ -0,0 +1,1842 @@ +/* + * Copyright 2004,2006 Jacek Caban for CodeWeavers + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __MSHTMDID_H__ +#define __MSHTMDID_H__ + +#define DISPID_NORMAL_FIRST 1000 +#define DISPID_OMDOCUMENT DISPID_NORMAL_FIRST +#define DISPID_ANCHOR DISPID_NORMAL_FIRST +#define DISPID_BLOCK DISPID_NORMAL_FIRST +#define DISPID_BR DISPID_NORMAL_FIRST +#define DISPID_BGSOUND DISPID_NORMAL_FIRST +#define DISPID_DD DISPID_NORMAL_FIRST +#define DISPID_DIR DISPID_NORMAL_FIRST +#define DISPID_DIV DISPID_NORMAL_FIRST +#define DISPID_DL DISPID_NORMAL_FIRST +#define DISPID_DT DISPID_NORMAL_FIRST +#define DISPID_EFONT DISPID_NORMAL_FIRST +#define DISPID_FORM DISPID_NORMAL_FIRST +#define DISPID_HEADER DISPID_NORMAL_FIRST +#define DISPID_HEDELEMS DISPID_NORMAL_FIRST +#define DISPID_HR DISPID_NORMAL_FIRST +#define DISPID_LABEL DISPID_NORMAL_FIRST +#define DISPID_LI DISPID_NORMAL_FIRST +#define DISPID_IMGBASE DISPID_NORMAL_FIRST +#define DISPID_MENU DISPID_NORMAL_FIRST +#define DISPID_OL DISPID_NORMAL_FIRST +#define DISPID_PARA DISPID_NORMAL_FIRST +#define DISPID_SELECT DISPID_NORMAL_FIRST +#define DISPID_SELECTOBJ DISPID_NORMAL_FIRST +#define DISPID_TABLE DISPID_NORMAL_FIRST +#define DISPID_TEXTSITE DISPID_NORMAL_FIRST +#define DISPID_UL DISPID_NORMAL_FIRST +#define DISPID_PHRASE DISPID_NORMAL_FIRST +#define DISPID_UNKNOWNPDL DISPID_NORMAL_FIRST +#define DISPID_COMMENTPDL DISPID_NORMAL_FIRST +#define DISPID_RANGE DISPID_NORMAL_FIRST +#define DISPID_SELECTION DISPID_NORMAL_FIRST +#define DISPID_OPTION DISPID_NORMAL_FIRST +#define DISPID_RANGE DISPID_NORMAL_FIRST +#define DISPID_SELECTION DISPID_NORMAL_FIRST +#define DISPID_OPTION DISPID_NORMAL_FIRST +#define DISPID_RANGE DISPID_NORMAL_FIRST +#define DISPID_SELECTION DISPID_NORMAL_FIRST +#define DISPID_OPTION DISPID_NORMAL_FIRST +#define DISPID_RANGE DISPID_NORMAL_FIRST +#define DISPID_SELECTION DISPID_NORMAL_FIRST +#define DISPID_OPTION DISPID_NORMAL_FIRST +#define DISPID_RANGE DISPID_NORMAL_FIRST +#define DISPID_SELECTION DISPID_NORMAL_FIRST +#define DISPID_OPTION DISPID_NORMAL_FIRST +#define DISPID_MAP DISPID_NORMAL_FIRST +#define DISPID_AREA DISPID_NORMAL_FIRST +#define DISPID_PARAM DISPID_NORMAL_FIRST +#define DISPID_TABLESECTION DISPID_NORMAL_FIRST +#define DISPID_TABLEROW DISPID_NORMAL_FIRST +#define DISPID_TABLECOL DISPID_NORMAL_FIRST +#define DISPID_SCRIPT DISPID_NORMAL_FIRST +#define DISPID_STYLESHEET DISPID_NORMAL_FIRST +#define DISPID_STYLERULE DISPID_NORMAL_FIRST +#define DISPID_STYLESHEETS_COL DISPID_NORMAL_FIRST +#define DISPID_STYLERULES_COL DISPID_NORMAL_FIRST +#define DISPID_MIMETYPES_COL DISPID_NORMAL_FIRST +#define DISPID_PLUGINS_COL DISPID_NORMAL_FIRST +#define DISPID_2D DISPID_NORMAL_FIRST +#define DISPID_OMWINDOW DISPID_NORMAL_FIRST +#define DISPID_EVENTOBJ DISPID_NORMAL_FIRST +#define DISPID_OLESITE DISPID_NORMAL_FIRST +#define DISPID_FRAMESET DISPID_NORMAL_FIRST +#define DISPID_LINK DISPID_NORMAL_FIRST +#define DISPID_STYLEELEMENT DISPID_NORMAL_FIRST +#define DISPID_FILTERS DISPID_NORMAL_FIRST +#define DISPID_TABLESECTION DISPID_NORMAL_FIRST +#define DISPID_OMRECT DISPID_NORMAL_FIRST +#define DISPID_OMDOCUMENT DISPID_NORMAL_FIRST +#define DISPID_SCREEN DISPID_NORMAL_FIRST +#define DISPID_DOMATTRIBUTE DISPID_NORMAL_FIRST +#define DISPID_DOMIMPLEMENTATION DISPID_NORMAL_FIRST + +#define DISPID_COLLECTION (DISPID_NORMAL_FIRST+500) +#define DISPID_IMG (DISPID_IMGBASE+1000) +#define DISPID_INPUTIMAGE (DISPID_IMGBASE+1000) +#define DISPID_INPUT (DISPID_TEXTSITE+1000) +#define DISPID_TABLECELL (DISPID_TEXTSITE+1000) +#define DISPID_1D (DISPID_TEXTSITE+1000) +#define DISPID_BODY (DISPID_TEXTSITE+1000) +#define DISPID_INPUTTEXTBASE (DISPID_INPUT+1000) +#define DISPID_INPUTTEXT (DISPID_INPUTTEXTBASE+1000) +#define DISPID_TEXTAREA (DISPID_INPUTTEXT+1000) +#define DISPID_MARQUEE (DISPID_TEXTAREA+1000) +#define DISPID_RICHTEXT (DISPID_MARQUEE+1000) +#define DISPID_BUTTON (DISPID_RICHTEXT+1000) + +#define DISPID_XOBJ_MIN 0x80010000 +#define DISPID_XOBJ_MAX 0x8001FFFF +#define DISPID_XOBJ_BASE DISPID_XOBJ_MIN +#define DISPID_HTMLOBJECT (DISPID_XOBJ_BASE+500) +#define DISPID_ELEMENT (DISPID_HTMLOBJECT+500) +#define DISPID_SITE (DISPID_ELEMENT+1000) +#define DISPID_OBJECT (DISPID_SITE+1000) +#define DISPID_STYLE (DISPID_OBJECT+1000) +#define DISPID_ATTRS (DISPID_STYLE+1000) +#define DISPID_EVENTS (DISPID_ATTRS+1000) +#define DISPID_XOBJ_EXPANDO (DISPID_EVENTS+1000) +#define DISPID_XOBJ_ORDINAL (DISPID_XOBJ_EXPANDO+1000) +#define DISPID_RADIO (DISPID_CHECKBOX+1000) +#define DISPID_FRAMESITE (DISPID_SITE+1000) +#define DISPID_FRAME (DISPID_FRAMESITE+1000) +#define DISPID_IFRAME (DISPID_FRAMESITE+1000) + +#define DISPID_WINDOW 1 +#define DISPID_HISTORY 1 +#define DISPID_LOCATION 1 +#define DISPID_NAVIGATOR 1 + +#define STDPROPID_XOBJ_NAME (DISPID_XOBJ_BASE+0) +#define STDPROPID_XOBJ_INDEX (DISPID_XOBJ_BASE+1) +#define STDPROPID_XOBJ_BASEHREF (DISPID_XOBJ_BASE+2) +#define STDPROPID_XOBJ_LEFT (DISPID_XOBJ_BASE+3) +#define STDPROPID_XOBJ_TOP (DISPID_XOBJ_BASE+4) +#define STDPROPID_XOBJ_WIDTH (DISPID_XOBJ_BASE+5) +#define STDPROPID_XOBJ_HEIGHT (DISPID_XOBJ_BASE+6) +#define STDPROPID_XOBJ_VISIBLE (DISPID_XOBJ_BASE+7) +#define STDPROPID_XOBJ_PARENT (DISPID_XOBJ_BASE+8) +#define STDPROPID_XOBJ_DRAGMODE (DISPID_XOBJ_BASE+9) +#define STDPROPID_XOBJ_DRAGICON (DISPID_XOBJ_BASE+10) +#define STDPROPID_XOBJ_TAG (DISPID_XOBJ_BASE+11) +#define STDPROPID_XOBJ_TABSTOP (DISPID_XOBJ_BASE+14) +#define STDPROPID_XOBJ_TABINDEX (DISPID_XOBJ_BASE+15) +#define STDPROPID_XOBJ_HELPCONTEXTID (DISPID_XOBJ_BASE+50) +#define STDPROPID_XOBJ_DEFAULT (DISPID_XOBJ_BASE+55) +#define STDPROPID_XOBJ_CANCEL (DISPID_XOBJ_BASE+56) +#define STDPROPID_XOBJ_LEFTNORUN (DISPID_XOBJ_BASE+57) +#define STDPROPID_XOBJ_TOPNORUN (DISPID_XOBJ_BASE+58) +#define STDPROPID_XOBJ_ALIGNPERSIST (DISPID_XOBJ_BASE+60) +#define STDPROPID_XOBJ_LINKTIMEOUT (DISPID_XOBJ_BASE+61) +#define STDPROPID_XOBJ_LINKTOPIC (DISPID_XOBJ_BASE+62) +#define STDPROPID_XOBJ_LINKITEM (DISPID_XOBJ_BASE+63) +#define STDPROPID_XOBJ_LINKMODE (DISPID_XOBJ_BASE+64) +#define STDPROPID_XOBJ_DATACHANGED (DISPID_XOBJ_BASE+65) +#define STDPROPID_XOBJ_DATAFIELD (DISPID_XOBJ_BASE+66) +#define STDPROPID_XOBJ_DATASOURCE (DISPID_XOBJ_BASE+67) +#define STDPROPID_XOBJ_WHATSTHISHELPID (DISPID_XOBJ_BASE+68) +#define STDPROPID_XOBJ_CONTROLTIPTEXT (DISPID_XOBJ_BASE+69) +#define STDPROPID_XOBJ_STATUSBARTEXT (DISPID_XOBJ_BASE+70) +#define STDPROPID_XOBJ_APPLICATION (DISPID_XOBJ_BASE+71) +#define STDPROPID_XOBJ_BLOCKALIGN (DISPID_XOBJ_BASE+72) +#define STDPROPID_XOBJ_CONTROLALIGN (DISPID_XOBJ_BASE+73) +#define STDPROPID_XOBJ_STYLE (DISPID_XOBJ_BASE+74) +#define STDPROPID_XOBJ_COUNT (DISPID_XOBJ_BASE+75) +#define STDPROPID_XOBJ_DISABLED (DISPID_XOBJ_BASE+76) +#define STDPROPID_XOBJ_RIGHT (DISPID_XOBJ_BASE+77) +#define STDPROPID_XOBJ_BOTTOM (DISPID_XOBJ_BASE+78) + +#define STDDISPID_XOBJ_ONBLUR (DISPID_XOBJ_BASE+0) +#define STDDISPID_XOBJ_ONFOCUS (DISPID_XOBJ_BASE+1) +#define STDDISPID_XOBJ_BEFOREUPDATE (DISPID_XOBJ_BASE+4) +#define STDDISPID_XOBJ_AFTERUPDATE (DISPID_XOBJ_BASE+5) +#define STDDISPID_XOBJ_ONROWEXIT (DISPID_XOBJ_BASE+6) +#define STDDISPID_XOBJ_ONROWENTER (DISPID_XOBJ_BASE+7) +#define STDDISPID_XOBJ_ONMOUSEOVER (DISPID_XOBJ_BASE+8) +#define STDDISPID_XOBJ_ONMOUSEOUT (DISPID_XOBJ_BASE+9) +#define STDDISPID_XOBJ_ONHELP (DISPID_XOBJ_BASE+10) +#define STDDISPID_XOBJ_ONDRAGSTART (DISPID_XOBJ_BASE+11) +#define STDDISPID_XOBJ_ONSELECTSTART (DISPID_XOBJ_BASE+12) +#define STDDISPID_XOBJ_ERRORUPDATE (DISPID_XOBJ_BASE+13) +#define STDDISPID_XOBJ_ONDATASETCHANGED (DISPID_XOBJ_BASE+14) +#define STDDISPID_XOBJ_ONDATAAVAILABLE (DISPID_XOBJ_BASE+15) +#define STDDISPID_XOBJ_ONDATASETCOMPLETE (DISPID_XOBJ_BASE+16) +#define STDDISPID_XOBJ_ONFILTER (DISPID_XOBJ_BASE+17) +#define STDDISPID_XOBJ_ONLOSECAPTURE (DISPID_XOBJ_BASE+18) +#define STDDISPID_XOBJ_ONPROPERTYCHANGE (DISPID_XOBJ_BASE+19) +#define STDDISPID_XOBJ_ONDRAG (DISPID_XOBJ_BASE+20) +#define STDDISPID_XOBJ_ONDRAGEND (DISPID_XOBJ_BASE+21) +#define STDDISPID_XOBJ_ONDRAGENTER (DISPID_XOBJ_BASE+22) +#define STDDISPID_XOBJ_ONDRAGOVER (DISPID_XOBJ_BASE+23) +#define STDDISPID_XOBJ_ONDRAGLEAVE (DISPID_XOBJ_BASE+24) +#define STDDISPID_XOBJ_ONDROP (DISPID_XOBJ_BASE+25) +#define STDDISPID_XOBJ_ONCUT (DISPID_XOBJ_BASE+26) +#define STDDISPID_XOBJ_ONCOPY (DISPID_XOBJ_BASE+27) +#define STDDISPID_XOBJ_ONPASTE (DISPID_XOBJ_BASE+28) +#define STDDISPID_XOBJ_ONBEFORECUT (DISPID_XOBJ_BASE+29) +#define STDDISPID_XOBJ_ONBEFORECOPY (DISPID_XOBJ_BASE+30) +#define STDDISPID_XOBJ_ONBEFOREPASTE (DISPID_XOBJ_BASE+31) +#define STDDISPID_XOBJ_ONROWSDELETE (DISPID_XOBJ_BASE+32) +#define STDDISPID_XOBJ_ONROWSINSERTED (DISPID_XOBJ_BASE+33) +#define STDDISPID_XOBJ_ONCELLCHANGE (DISPID_XOBJ_BASE+34) + +#define DISPID_A_FIRST DISPID_ATTRS +#define DISPID_A_BACKGROUNDIMAGE (DISPID_A_FIRST+1) +#define DISPID_A_COLOR (DISPID_A_FIRST+2) +#define DISPID_A_TEXTTRANSFORM (DISPID_A_FIRST+4) +#define DISPID_A_NOWRAP (DISPID_A_FIRST+5) +#define DISPID_A_LINEHEIGHT (DISPID_A_FIRST+6) +#define DISPID_A_TEXTINDENT (DISPID_A_FIRST+7) +#define DISPID_A_LETTERSPACING (DISPID_A_FIRST+8) +#define DISPID_A_LANG (DISPID_A_FIRST+9) +#define DISPID_A_OVERFLOW (DISPID_A_FIRST+10) +#define DISPID_A_PADDING (DISPID_A_FIRST+11) +#define DISPID_A_PADDINGTOP (DISPID_A_FIRST+12) +#define DISPID_A_PADDINGRIGHT (DISPID_A_FIRST+13) +#define DISPID_A_PADDINGBOTTOM (DISPID_A_FIRST+14) +#define DISPID_A_PADDINGLEFT (DISPID_A_FIRST+15) +#define DISPID_A_CLEAR (DISPID_A_FIRST+16) +#define DISPID_A_LISTTYPE (DISPID_A_FIRST+17) +#define DISPID_A_FONTFACE (DISPID_A_FIRST+18) +#define DISPID_A_FONTSIZE (DISPID_A_FIRST+19) +#define DISPID_A_TEXTDECORATIONLINETHROUGH (DISPID_A_FIRST+20) +#define DISPID_A_TEXTDECORATIONUNDERLINE (DISPID_A_FIRST+21) +#define DISPID_A_TEXTDECORATIONBLINK (DISPID_A_FIRST+22) +#define DISPID_A_TEXTDECORATIONNONE (DISPID_A_FIRST+23) +#define DISPID_A_FONTSTYLE (DISPID_A_FIRST+24) +#define DISPID_A_FONTVARIANT (DISPID_A_FIRST+25) +#define DISPID_A_BASEFONT (DISPID_A_FIRST+26) +#define DISPID_A_FONTWEIGHT (DISPID_A_FIRST+27) +#define DISPID_A_TABLEBORDERCOLOR (DISPID_A_FIRST+28) +#define DISPID_A_TABLEBORDERCOLORLIGHT (DISPID_A_FIRST+29) +#define DISPID_A_TABLEBORDERCOLORDARK (DISPID_A_FIRST+30) +#define DISPID_A_TABLEVALIGN (DISPID_A_FIRST+31) +#define DISPID_A_BACKGROUND (DISPID_A_FIRST+32) +#define DISPID_A_BACKGROUNDPOSX (DISPID_A_FIRST+33) +#define DISPID_A_BACKGROUNDPOSY (DISPID_A_FIRST+34) +#define DISPID_A_TEXTDECORATION (DISPID_A_FIRST+35) +#define DISPID_A_MARGIN (DISPID_A_FIRST+36) +#define DISPID_A_MARGINTOP (DISPID_A_FIRST+37) +#define DISPID_A_MARGINRIGHT (DISPID_A_FIRST+38) +#define DISPID_A_MARGINBOTTOM (DISPID_A_FIRST+39) +#define DISPID_A_MARGINLEFT (DISPID_A_FIRST+40) +#define DISPID_A_FONT (DISPID_A_FIRST+41) +#define DISPID_A_FONTSIZEKEYWORD (DISPID_A_FIRST+42) +#define DISPID_A_FONTSIZECOMBINE (DISPID_A_FIRST+43) +#define DISPID_A_BACKGROUNDREPEAT (DISPID_A_FIRST+44) +#define DISPID_A_BACKGROUNDATTACHMENT (DISPID_A_FIRST+45) +#define DISPID_A_BACKGROUNDPOSITION (DISPID_A_FIRST+46) +#define DISPID_A_WORDSPACING (DISPID_A_FIRST+47) +#define DISPID_A_VERTICALALIGN (DISPID_A_FIRST+48) +#define DISPID_A_BORDER (DISPID_A_FIRST+49) +#define DISPID_A_BORDERTOP (DISPID_A_FIRST+50) +#define DISPID_A_BORDERRIGHT (DISPID_A_FIRST+51) +#define DISPID_A_BORDERBOTTOM (DISPID_A_FIRST+52) +#define DISPID_A_BORDERLEFT (DISPID_A_FIRST+53) +#define DISPID_A_BORDERCOLOR (DISPID_A_FIRST+54) +#define DISPID_A_BORDERTOPCOLOR (DISPID_A_FIRST+55) +#define DISPID_A_BORDERRIGHTCOLOR (DISPID_A_FIRST+56) +#define DISPID_A_BORDERBOTTOMCOLOR (DISPID_A_FIRST+57) +#define DISPID_A_BORDERLEFTCOLOR (DISPID_A_FIRST+58) +#define DISPID_A_BORDERWIDTH (DISPID_A_FIRST+59) +#define DISPID_A_BORDERTOPWIDTH (DISPID_A_FIRST+60) +#define DISPID_A_BORDERRIGHTWIDTH (DISPID_A_FIRST+61) +#define DISPID_A_BORDERBOTTOMWIDTH (DISPID_A_FIRST+62) +#define DISPID_A_BORDERLEFTWIDTH (DISPID_A_FIRST+63) +#define DISPID_A_BORDERSTYLE (DISPID_A_FIRST+64) +#define DISPID_A_BORDERTOPSTYLE (DISPID_A_FIRST+65) +#define DISPID_A_BORDERRIGHTSTYLE (DISPID_A_FIRST+66) +#define DISPID_A_BORDERBOTTOMSTYLE (DISPID_A_FIRST+67) +#define DISPID_A_BORDERLEFTSTYLE (DISPID_A_FIRST+68) +#define DISPID_A_TEXTDECORATIONOVERLINE (DISPID_A_FIRST+69) +#define DISPID_A_FLOAT (DISPID_A_FIRST+70) +#define DISPID_A_DISPLAY (DISPID_A_FIRST+71) +#define DISPID_A_LISTSTYLETYPE (DISPID_A_FIRST+72) +#define DISPID_A_LISTSTYLEPOSITION (DISPID_A_FIRST+73) +#define DISPID_A_LISTSTYLEIMAGE (DISPID_A_FIRST+74) +#define DISPID_A_LISTSTYLE (DISPID_A_FIRST+75) +#define DISPID_A_WHITESPACE (DISPID_A_FIRST+76) +#define DISPID_A_PAGEBREAKBEFORE (DISPID_A_FIRST+77) +#define DISPID_A_PAGEBREAKAFTER (DISPID_A_FIRST+78) +#define DISPID_A_SCROLL (DISPID_A_FIRST+79) +#define DISPID_A_VISIBILITY (DISPID_A_FIRST+80) +#define DISPID_A_HIDDEN (DISPID_A_FIRST+81) +#define DISPID_A_FILTER (DISPID_A_FIRST+82) +#define DISPID_DEFAULTVALUE (DISPID_A_FIRST+83) +#define DISPID_A_BORDERCOLLAPSE (DISPID_A_FIRST+84) +#define DISPID_A_POSITION (DISPID_A_FIRST+90) +#define DISPID_A_ZINDEX (DISPID_A_FIRST+91) +#define DISPID_A_CLIP (DISPID_A_FIRST+92) +#define DISPID_A_CLIPRECTTOP (DISPID_A_FIRST+93) +#define DISPID_A_CLIPRECTRIGHT (DISPID_A_FIRST+94) +#define DISPID_A_CLIPRECTBOTTOM (DISPID_A_FIRST+95) +#define DISPID_A_CLIPRECTLEFT (DISPID_A_FIRST+96) +#define DISPID_A_FONTFACESRC (DISPID_A_FIRST+97) +#define DISPID_A_TABLELAYOUT (DISPID_A_FIRST+98) +#define DISPID_A_STYLETEXT (DISPID_A_FIRST+99) +#define DISPID_A_LANGUAGE (DISPID_A_FIRST+100) +#define DISPID_A_VALUE (DISPID_A_FIRST+101) +#define DISPID_A_CURSOR (DISPID_A_FIRST+102) +#define DISPID_A_EVENTSINK (DISPID_A_FIRST+103) +#define DISPID_A_PROPNOTIFYSINK (DISPID_A_FIRST+104) +#define DISPID_A_ROWSETNOTIFYSINK (DISPID_A_FIRST+105) +#define DISPID_INTERNAL_INLINESTYLEAA (DISPID_A_FIRST+106) +#define DISPID_INTERNAL_CSTYLEPTRCACHE (DISPID_A_FIRST+107) +#define DISPID_INTERNAL_CRUNTIMESTYLEPTRCACHE (DISPID_A_FIRST+108) +#define DISPID_INTERNAL_INVOKECONTEXT (DISPID_A_FIRST+109) +#define DISPID_A_BGURLIMGCTXCACHEINDEX (DISPID_A_FIRST+110) +#define DISPID_A_LIURLIMGCTXCACHEINDEX (DISPID_A_FIRST+111) +#define DISPID_A_ROWSETASYNCHNOTIFYSINK (DISPID_A_FIRST+112) +#define DISPID_INTERNAL_FILTERPTRCACHE (DISPID_A_FIRST+113) +#define DISPID_A_ROWPOSITIONCHANGESINK (DISPID_A_FIRST+114) +#define DISPID_A_BEHAVIOR (DISPID_A_FIRST+115) +#define DISPID_A_READYSTATE (DISPID_A_FIRST+116) +#define DISPID_A_DIR (DISPID_A_FIRST+117) +#define DISPID_A_UNICODEBIDI (DISPID_A_FIRST+118) +#define DISPID_A_DIRECTION (DISPID_A_FIRST+119) +#define DISPID_A_IMEMODE (DISPID_A_FIRST+120) +#define DISPID_A_RUBYALIGN (DISPID_A_FIRST+121) +#define DISPID_A_RUBYPOSITION (DISPID_A_FIRST+122) +#define DISPID_A_RUBYOVERHANG (DISPID_A_FIRST+123) +#define DISPID_INTERNAL_ONBEHAVIOR_CONTENTREADY (DISPID_A_FIRST+124) +#define DISPID_INTERNAL_ONBEHAVIOR_DOCUMENTREADY (DISPID_A_FIRST+125) +#define DISPID_INTERNAL_CDOMCHILDRENPTRCACHE (DISPID_A_FIRST+126) +#define DISPID_A_LAYOUTGRIDCHAR (DISPID_A_FIRST+127) +#define DISPID_A_LAYOUTGRIDLINE (DISPID_A_FIRST+128) +#define DISPID_A_LAYOUTGRIDMODE (DISPID_A_FIRST+129) +#define DISPID_A_LAYOUTGRIDTYPE (DISPID_A_FIRST+130) +#define DISPID_A_LAYOUTGRID (DISPID_A_FIRST+131) +#define DISPID_A_TEXTAUTOSPACE (DISPID_A_FIRST+132) +#define DISPID_A_LINEBREAK (DISPID_A_FIRST+133) +#define DISPID_A_WORDBREAK (DISPID_A_FIRST+134) +#define DISPID_A_TEXTJUSTIFY (DISPID_A_FIRST+135) +#define DISPID_A_TEXTJUSTIFYTRIM (DISPID_A_FIRST+136) +#define DISPID_A_TEXTKASHIDA (DISPID_A_FIRST+137) +#define DISPID_A_OVERFLOWX (DISPID_A_FIRST+139) +#define DISPID_A_OVERFLOWY (DISPID_A_FIRST+140) +#define DISPID_A_HTCDISPATCHITEM_VALUE (DISPID_A_FIRST+141) +#define DISPID_A_DOCFRAGMENT (DISPID_A_FIRST+142) +#define DISPID_A_HTCDD_ELEMENT (DISPID_A_FIRST+143) +#define DISPID_A_HTCDD_CREATEEVENTOBJECT (DISPID_A_FIRST+144) +#define DISPID_A_URNATOM (DISPID_A_FIRST+145) +#define DISPID_A_UNIQUEPEERNUMBER (DISPID_A_FIRST+146) +#define DISPID_A_ACCELERATOR (DISPID_A_FIRST+147) +#define DISPID_INTERNAL_ONBEHAVIOR_APPLYSTYLE (DISPID_A_FIRST+148) +#define DISPID_INTERNAL_RUNTIMESTYLEAA (DISPID_A_FIRST+149) +#define DISPID_A_HTCDISPATCHITEM_VALUE_SCRIPTSONLY (DISPID_A_FIRST+150) +#define DISPID_A_EXTENDEDTAGDESC (DISPID_A_FIRST+151) +#define DISPID_A_ROTATE (DISPID_A_FIRST+152) +#define DISPID_A_ZOOM (DISPID_A_FIRST+153) +#define DISPID_A_HTCDD_PROTECTEDELEMENT (DISPID_A_FIRST+154) +#define DISPID_A_LAYOUTFLOW (DISPID_A_FIRST+155) +#define DISPID_A_HTCDD_ISMARKUPSHARED (DISPID_A_FIRST+157) +#define DISPID_A_WORDWRAP (DISPID_A_FIRST+158) +#define DISPID_A_TEXTUNDERLINEPOSITION (DISPID_A_FIRST+159) +#define DISPID_A_HASLAYOUT (DISPID_A_FIRST+160) +#define DISPID_A_MEDIA (DISPID_A_FIRST+161) +#define DISPID_A_EDITABLE (DISPID_A_FIRST+162) +#define DISPID_A_HIDEFOCUS (DISPID_A_FIRST+163) +#define DISPID_INTERNAL_LAYOUTRECTREGISTRYPTRCACHE (DISPID_A_FIRST+164) +#define DISPID_A_HTCDD_DEFAULTS (DISPID_A_FIRST+165) +#define DISPID_A_TEXTLINETHROUGHSTYLE (DISPID_A_FIRST+166) +#define DISPID_A_TEXTUNDERLINESTYLE (DISPID_A_FIRST+167) +#define DISPID_A_TEXTEFFECT (DISPID_A_FIRST+168) +#define DISPID_A_TEXTBACKGROUNDCOLOR (DISPID_A_FIRST+169) +#define DISPID_A_RENDERINGPRIORITY (DISPID_A_FIRST+170) +#define DISPID_INTERNAL_DWNPOSTPTRCACHE (DISPID_A_FIRST+171) +#define DISPID_INTERNAL_CODEPAGESETTINGSPTRCACHE (DISPID_A_FIRST+172) +#define DISPID_INTERNAL_DWNDOCPTRCACHE (DISPID_A_FIRST+173) +#define DISPID_INTERNAL_DATABINDTASKPTRCACHE (DISPID_A_FIRST+174) +#define DISPID_INTERNAL_URLLOCATIONCACHE (DISPID_A_FIRST+175) +#define DISPID_INTERNAL_ARYELEMENTRELEASENOTIFYPTRCACHE (DISPID_A_FIRST+176) +#define DISPID_INTERNAL_PEERFACTORYURLMAPPTRCACHE (DISPID_A_FIRST+177) +#define DISPID_INTERNAL_STMDIRTYPTRCACHE (DISPID_A_FIRST+178) +#define DISPID_INTERNAL_COMPUTEFORMATSTATECACHE (DISPID_A_FIRST+179) +#define DISPID_A_SCROLLBARBASECOLOR (DISPID_A_FIRST+180) +#define DISPID_A_SCROLLBARFACECOLOR (DISPID_A_FIRST+181) +#define DISPID_A_SCROLLBAR3DLIGHTCOLOR (DISPID_A_FIRST+182) +#define DISPID_A_SCROLLBARSHADOWCOLOR (DISPID_A_FIRST+183) +#define DISPID_A_SCROLLBARHIGHLIGHTCOLOR (DISPID_A_FIRST+184) +#define DISPID_A_SCROLLBARDARKSHADOWCOLOR (DISPID_A_FIRST+185) +#define DISPID_A_SCROLLBARARROWCOLOR (DISPID_A_FIRST+186) +#define DISPID_INTERNAL_ONBEHAVIOR_CONTENTSAVE (DISPID_A_FIRST+187) +#define DISPID_A_DEFAULTTEXTSELECTION (DISPID_A_FIRST+188) +#define DISPID_A_TEXTDECORATIONCOLOR (DISPID_A_FIRST+189) +#define DISPID_A_TEXTCOLOR (DISPID_A_FIRST+190) +#define DISPID_A_STYLETEXTDECORATION (DISPID_A_FIRST+191) +#define DISPID_A_WRITINGMODE (DISPID_A_FIRST+192) +#define DISPID_INTERNAL_MEDIA_REFERENCE (DISPID_A_FIRST+193) +#define DISPID_INTERNAL_GENERICCOMPLUSREF (DISPID_A_FIRST+194) +#define DISPID_INTERNAL_FOCUSITEMS (DISPID_A_FIRST+195) +#define DISPID_A_SCROLLBARTRACKCOLOR (DISPID_A_FIRST+196) +#define DISPID_INTERNAL_DWNHEADERCACHE (DISPID_A_FIRST+197) +#define DISPID_A_FROZEN (DISPID_A_FIRST+198) +#define DISPID_A_VIEWINHERITSTYLE (DISPID_A_FIRST+199) +#define DISPID_INTERNAL_FRAMESCOLLECTION (DISPID_A_FIRST+200) +#define DISPID_A_BGURLIMGCTXCACHEINDEX_FLINE (DISPID_A_FIRST+201) +#define DISPID_A_BGURLIMGCTXCACHEINDEX_FLETTER (DISPID_A_FIRST+202) +#define DISPID_A_TEXTALIGNLAST (DISPID_A_FIRST+203) +#define DISPID_A_TEXTKASHIDASPACE (DISPID_A_FIRST+204) +#define DISPID_INTERNAL_FONTHISTORYINDEX (DISPID_A_FIRST+205) +#define DISPID_A_ALLOWTRANSPARENCY (DISPID_A_FIRST+206) +#define DISPID_INTERNAL_URLSEARCHCACHE (DISPID_A_FIRST+207) +#define DISPID_A_ISBLOCK (DISPID_A_FIRST+208) +#define DISPID_A_TEXTOVERFLOW (DISPID_A_FIRST+209) +#define DISPID_INTERNAL_CATTRIBUTECOLLPTRCACHE (DISPID_A_FIRST+210) +#define DISPID_A_MINHEIGHT (DISPID_A_FIRST+211) + +#define DISPID_WINDOWOBJECT (-5500) +#define DISPID_LOCATIONOBJECT (-5506) +#define DISPID_HISTORYOBJECT (-5507) +#define DISPID_NAVIGATOROBJECT (-5508) +#define DISPID_SECURITYCTX (-5511) +#define DISPID_AMBIENT_DLCONTROL (-5512) +#define DISPID_AMBIENT_USERAGENT (-5513) +#define DISPID_SECURITYDOMAIN (-5514) + +#define DLCTL_DLIMAGES 0x00000010 +#define DLCTL_VIDEOS 0x00000020 +#define DLCTL_BGSOUNDS 0x00000040 +#define DLCTL_NO_SCRIPTS 0x00000080 +#define DLCTL_NO_JAVA 0x00000100 +#define DLCTL_NO_RUNACTIVEXCTLS 0x00000200 +#define DLCTL_NO_DLACTIVEXCTLS 0x00000400 +#define DLCTL_DOWNLOADONLY 0x00000800 +#define DLCTL_NO_FRAMEDOWNLOAD 0x00001000 +#define DLCTL_RESYNCHRONIZE 0x00002000 +#define DLCTL_PRAGMA_NO_CACHE 0x00004000 +#define DLCTL_FORCEOFFLINE 0x10000000 +#define DLCTL_NO_CLIENTPULL 0x20000000 +#define DLCTL_SILENT 0x40000000 +#define DLCTL_OFFLINEIFNOTCONNECTED 0x80000000 +#define DLCTL_OFFLINE DLCTL_OFFLINEIFNOTCONNECTED + +/* events */ +#define DISPID_EVPROP_ONMOUSEOVER (DISPID_EVENTS+0) +#define DISPID_EVPROP_ONMOUSEOUT (DISPID_EVENTS+1) +#define DISPID_EVPROP_ONMOUSEDOWN (DISPID_EVENTS+2) +#define DISPID_EVPROP_ONMOUSEUP (DISPID_EVENTS+3) +#define DISPID_EVPROP_ONMOUSEMOVE (DISPID_EVENTS+4) +#define DISPID_EVPROP_ONKEYDOWN (DISPID_EVENTS+5) +#define DISPID_EVPROP_ONKEYUP (DISPID_EVENTS+6) +#define DISPID_EVPROP_ONKEYPRESS (DISPID_EVENTS+7) +#define DISPID_EVPROP_ONCLICK (DISPID_EVENTS+8) +#define DISPID_EVPROP_ONDBLCLICK (DISPID_EVENTS+9) +#define DISPID_EVPROP_ONSELECT (DISPID_EVENTS+10) +#define DISPID_EVPROP_ONSUBMIT (DISPID_EVENTS+11) +#define DISPID_EVPROP_ONRESET (DISPID_EVENTS+12) +#define DISPID_EVPROP_ONHELP (DISPID_EVENTS+13) +#define DISPID_EVPROP_ONFOCUS (DISPID_EVENTS+14) +#define DISPID_EVPROP_ONBLUR (DISPID_EVENTS+15) +#define DISPID_EVPROP_ONROWEXIT (DISPID_EVENTS+18) +#define DISPID_EVPROP_ONROWENTER (DISPID_EVENTS+19) +#define DISPID_EVPROP_ONBOUNCE (DISPID_EVENTS+20) +#define DISPID_EVPROP_ONBEFOREUPDATE (DISPID_EVENTS+21) +#define DISPID_EVPROP_ONAFTERUPDATE (DISPID_EVENTS+22) +#define DISPID_EVPROP_ONBEFOREDRAGOVER (DISPID_EVENTS+23) +#define DISPID_EVPROP_ONBEFOREDROPORPASTE (DISPID_EVENTS+24) +#define DISPID_EVPROP_ONREADYSTATECHANGE (DISPID_EVENTS+25) +#define DISPID_EVPROP_ONFINISH (DISPID_EVENTS+26) +#define DISPID_EVPROP_ONSTART (DISPID_EVENTS+27) +#define DISPID_EVPROP_ONABORT (DISPID_EVENTS+28) +#define DISPID_EVPROP_ONERROR (DISPID_EVENTS+29) +#define DISPID_EVPROP_ONCHANGE (DISPID_EVENTS+30) +#define DISPID_EVPROP_ONSCROLL (DISPID_EVENTS+31) +#define DISPID_EVPROP_ONLOAD (DISPID_EVENTS+32) +#define DISPID_EVPROP_ONUNLOAD (DISPID_EVENTS+33) +#define DISPID_EVPROP_ONLAYOUT (DISPID_EVENTS+34) +#define DISPID_EVPROP_ONDRAGSTART (DISPID_EVENTS+35) +#define DISPID_EVPROP_ONRESIZE (DISPID_EVENTS+36) +#define DISPID_EVPROP_ONSELECTSTART (DISPID_EVENTS+37) +#define DISPID_EVPROP_ONERRORUPDATE (DISPID_EVENTS+38) +#define DISPID_EVPROP_ONBEFOREUNLOAD (DISPID_EVENTS+39) +#define DISPID_EVPROP_ONDATASETCHANGED (DISPID_EVENTS+40) +#define DISPID_EVPROP_ONDATAAVAILABLE (DISPID_EVENTS+41) +#define DISPID_EVPROP_ONDATASETCOMPLETE (DISPID_EVENTS+42) +#define DISPID_EVPROP_ONFILTER (DISPID_EVENTS+43) +#define DISPID_EVPROP_ONCHANGEFOCUS (DISPID_EVENTS+44) +#define DISPID_EVPROP_ONCHANGEBLUR (DISPID_EVENTS+45) +#define DISPID_EVPROP_ONLOSECAPTURE (DISPID_EVENTS+46) +#define DISPID_EVPROP_ONPROPERTYCHANGE (DISPID_EVENTS+47) +#define DISPID_EVPROP_ONPERSISTSAVE (DISPID_EVENTS+48) +#define DISPID_EVPROP_ONDRAG (DISPID_EVENTS+49) +#define DISPID_EVPROP_ONDRAGEND (DISPID_EVENTS+50) +#define DISPID_EVPROP_ONDRAGENTER (DISPID_EVENTS+51) +#define DISPID_EVPROP_ONDRAGOVER (DISPID_EVENTS+52) +#define DISPID_EVPROP_ONDRAGLEAVE (DISPID_EVENTS+53) +#define DISPID_EVPROP_ONDROP (DISPID_EVENTS+54) +#define DISPID_EVPROP_ONCUT (DISPID_EVENTS+55) +#define DISPID_EVPROP_ONCOPY (DISPID_EVENTS+56) +#define DISPID_EVPROP_ONPASTE (DISPID_EVENTS+57) +#define DISPID_EVPROP_ONBEFORECUT (DISPID_EVENTS+58) +#define DISPID_EVPROP_ONBEFORECOPY (DISPID_EVENTS+59) +#define DISPID_EVPROP_ONBEFOREPASTE (DISPID_EVENTS+60) +#define DISPID_EVPROP_ONPERSISTLOAD (DISPID_EVENTS+61) +#define DISPID_EVPROP_ONROWSDELETE (DISPID_EVENTS+62) +#define DISPID_EVPROP_ONROWSINSERTED (DISPID_EVENTS+63) +#define DISPID_EVPROP_ONCELLCHANGE (DISPID_EVENTS+64) +#define DISPID_EVPROP_ONCONTEXTMENU (DISPID_EVENTS+65) +#define DISPID_EVPROP_ONBEFOREPRINT (DISPID_EVENTS+66) +#define DISPID_EVPROP_ONAFTERPRINT (DISPID_EVENTS+67) +#define DISPID_EVPROP_ONSTOP (DISPID_EVENTS+68) +#define DISPID_EVPROP_ONBEFOREEDITFOCUS (DISPID_EVENTS+69) +#define DISPID_EVPROP_ONATTACHEVENT (DISPID_EVENTS+70) +#define DISPID_EVPROP_ONMOUSEHOVER (DISPID_EVENTS+71) +#define DISPID_EVPROP_ONCONTENTREADY (DISPID_EVENTS+72) +#define DISPID_EVPROP_ONLAYOUTCOMPLETE (DISPID_EVENTS+73) +#define DISPID_EVPROP_ONPAGE (DISPID_EVENTS+74) +#define DISPID_EVPROP_ONLINKEDOVERFLOW (DISPID_EVENTS+75) +#define DISPID_EVPROP_ONMOUSEWHEEL (DISPID_EVENTS+76) +#define DISPID_EVPROP_ONBEFOREDEACTIVATE (DISPID_EVENTS+77) +#define DISPID_EVPROP_ONMOVE (DISPID_EVENTS+78) +#define DISPID_EVPROP_ONCONTROLSELECT (DISPID_EVENTS+79) +#define DISPID_EVPROP_ONSELECTIONCHANGE (DISPID_EVENTS+80) +#define DISPID_EVPROP_ONMOVESTART (DISPID_EVENTS+81) +#define DISPID_EVPROP_ONMOVEEND (DISPID_EVENTS+82) +#define DISPID_EVPROP_ONRESIZESTART (DISPID_EVENTS+83) +#define DISPID_EVPROP_ONRESIZEEND (DISPID_EVENTS+84) +#define DISPID_EVPROP_ONMOUSEENTER (DISPID_EVENTS+85) +#define DISPID_EVPROP_ONMOUSELEAVE (DISPID_EVENTS+86) +#define DISPID_EVPROP_ONACTIVATE (DISPID_EVENTS+87) +#define DISPID_EVPROP_ONDEACTIVATE (DISPID_EVENTS+88) +#define DISPID_EVPROP_ONMULTILAYOUTCLEANUP (DISPID_EVENTS+89) +#define DISPID_EVPROP_ONBEFOREACTIVATE (DISPID_EVENTS+90) +#define DISPID_EVPROP_ONFOCUSIN (DISPID_EVENTS+91) +#define DISPID_EVPROP_ONFOCUSOUT (DISPID_EVENTS+92) +#define DISPID_EVPROPS_COUNT 93 + +#define DISPID_EVMETH_ONMOUSEOVER STDDISPID_XOBJ_ONMOUSEOVER +#define DISPID_EVMETH_ONMOUSEOUT STDDISPID_XOBJ_ONMOUSEOUT +#define DISPID_EVMETH_ONMOUSEDOWN DISPID_MOUSEDOWN +#define DISPID_EVMETH_ONMOUSEUP DISPID_MOUSEUP +#define DISPID_EVMETH_ONMOUSEMOVE DISPID_MOUSEMOVE +#define DISPID_EVMETH_ONKEYDOWN DISPID_KEYDOWN +#define DISPID_EVMETH_ONKEYUP DISPID_KEYUP +#define DISPID_EVMETH_ONKEYPRESS DISPID_KEYPRESS +#define DISPID_EVMETH_ONCLICK DISPID_CLICK +#define DISPID_EVMETH_ONDBLCLICK DISPID_DBLCLICK +#define DISPID_EVMETH_ONSELECT DISPID_ONSELECT +#define DISPID_EVMETH_ONSUBMIT DISPID_ONSUBMIT +#define DISPID_EVMETH_ONRESET DISPID_ONRESET +#define DISPID_EVMETH_ONHELP STDDISPID_XOBJ_ONHELP +#define DISPID_EVMETH_ONFOCUS STDDISPID_XOBJ_ONFOCUS +#define DISPID_EVMETH_ONBLUR STDDISPID_XOBJ_ONBLUR +#define DISPID_EVMETH_ONROWEXIT STDDISPID_XOBJ_ONROWEXIT +#define DISPID_EVMETH_ONROWENTER STDDISPID_XOBJ_ONROWENTER +#define DISPID_EVMETH_ONBOUNCE DISPID_ONBOUNCE +#define DISPID_EVMETH_ONBEFOREUPDATE STDDISPID_XOBJ_BEFOREUPDATE +#define DISPID_EVMETH_ONAFTERUPDATE STDDISPID_XOBJ_AFTERUPDATE +#define DISPID_EVMETH_ONBEFOREDRAGOVER EVENTID_CommonCtrlEvent_BeforeDragOver +#define DISPID_EVMETH_ONBEFOREDROPORPASTE EVENTID_CommonCtrlEvent_BeforeDropOrPaste +#define DISPID_EVMETH_ONREADYSTATECHANGE DISPID_READYSTATECHANGE +#define DISPID_EVMETH_ONFINISH DISPID_ONFINISH +#define DISPID_EVMETH_ONSTART DISPID_ONSTART +#define DISPID_EVMETH_ONABORT DISPID_ONABORT +#define DISPID_EVMETH_ONERROR DISPID_ONERROR +#define DISPID_EVMETH_ONCHANGE DISPID_ONCHANGE +#define DISPID_EVMETH_ONSCROLL DISPID_ONSCROLL +#define DISPID_EVMETH_ONLOAD DISPID_ONLOAD +#define DISPID_EVMETH_ONUNLOAD DISPID_ONUNLOAD +#define DISPID_EVMETH_ONLAYOUT DISPID_ONLAYOUT +#define DISPID_EVMETH_ONDRAGSTART STDDISPID_XOBJ_ONDRAGSTART +#define DISPID_EVMETH_ONRESIZE DISPID_ONRESIZE +#define DISPID_EVMETH_ONSELECTSTART STDDISPID_XOBJ_ONSELECTSTART +#define DISPID_EVMETH_ONERRORUPDATE STDDISPID_XOBJ_ERRORUPDATE +#define DISPID_EVMETH_ONBEFOREUNLOAD DISPID_ONBEFOREUNLOAD +#define DISPID_EVMETH_ONDATASETCHANGED STDDISPID_XOBJ_ONDATASETCHANGED +#define DISPID_EVMETH_ONDATAAVAILABLE STDDISPID_XOBJ_ONDATAAVAILABLE +#define DISPID_EVMETH_ONDATASETCOMPLETE STDDISPID_XOBJ_ONDATASETCOMPLETE +#define DISPID_EVMETH_ONFILTER STDDISPID_XOBJ_ONFILTER +#define DISPID_EVMETH_ONCHANGEFOCUS DISPID_ONCHANGEFOCUS +#define DISPID_EVMETH_ONCHANGEBLUR DISPID_ONCHANGEBLUR +#define DISPID_EVMETH_ONLOSECAPTURE STDDISPID_XOBJ_ONLOSECAPTURE +#define DISPID_EVMETH_ONPROPERTYCHANGE STDDISPID_XOBJ_ONPROPERTYCHANGE +#define DISPID_EVMETH_ONPERSISTSAVE DISPID_ONPERSISTSAVE +#define DISPID_EVMETH_ONDRAG STDDISPID_XOBJ_ONDRAG +#define DISPID_EVMETH_ONDRAGEND STDDISPID_XOBJ_ONDRAGEND +#define DISPID_EVMETH_ONDRAGENTER STDDISPID_XOBJ_ONDRAGENTER +#define DISPID_EVMETH_ONDRAGOVER STDDISPID_XOBJ_ONDRAGOVER +#define DISPID_EVMETH_ONDRAGLEAVE STDDISPID_XOBJ_ONDRAGLEAVE +#define DISPID_EVMETH_ONDROP STDDISPID_XOBJ_ONDROP +#define DISPID_EVMETH_ONCUT STDDISPID_XOBJ_ONCUT +#define DISPID_EVMETH_ONCOPY STDDISPID_XOBJ_ONCOPY +#define DISPID_EVMETH_ONPASTE STDDISPID_XOBJ_ONPASTE +#define DISPID_EVMETH_ONBEFORECUT STDDISPID_XOBJ_ONBEFORECUT +#define DISPID_EVMETH_ONBEFORECOPY STDDISPID_XOBJ_ONBEFORECOPY +#define DISPID_EVMETH_ONBEFOREPASTE STDDISPID_XOBJ_ONBEFOREPASTE +#define DISPID_EVMETH_ONPERSISTLOAD DISPID_ONPERSISTLOAD +#define DISPID_EVMETH_ONROWSDELETE STDDISPID_XOBJ_ONROWSDELETE +#define DISPID_EVMETH_ONROWSINSERTED STDDISPID_XOBJ_ONROWSINSERTED +#define DISPID_EVMETH_ONCELLCHANGE STDDISPID_XOBJ_ONCELLCHANGE +#define DISPID_EVMETH_ONCONTEXTMENU DISPID_ONCONTEXTMENU +#define DISPID_EVMETH_ONBEFOREPRINT DISPID_ONBEFOREPRINT +#define DISPID_EVMETH_ONAFTERPRINT DISPID_ONAFTERPRINT +#define DISPID_EVMETH_ONSTOP DISPID_ONSTOP +#define DISPID_EVMETH_ONBEFOREEDITFOCUS DISPID_ONBEFOREEDITFOCUS +#define DISPID_EVMETH_ONMOUSEHOVER DISPID_ONMOUSEHOVER +#define DISPID_EVMETH_ONCONTENTREADY DISPID_ONCONTENTREADY +#define DISPID_EVMETH_ONLAYOUTCOMPLETE DISPID_ONLAYOUTCOMPLETE +#define DISPID_EVMETH_ONPAGE DISPID_ONPAGE +#define DISPID_EVMETH_ONLINKEDOVERFLOW DISPID_ONLINKEDOVERFLOW +#define DISPID_EVMETH_ONMOUSEWHEEL DISPID_ONMOUSEWHEEL +#define DISPID_EVMETH_ONBEFOREDEACTIVAT DISPID_ONBEFOREDEACTIVATE +#define DISPID_EVMETH_ONMOVE DISPID_ONMOVE +#define DISPID_EVMETH_ONCONTROLSELECT DISPID_ONCONTROLSELECT +#define DISPID_EVMETH_ONSELECTIONCHANGE DISPID_ONSELECTIONCHANGE +#define DISPID_EVMETH_ONMOVESTART DISPID_ONMOVESTART +#define DISPID_EVMETH_ONMOVEEND DISPID_ONMOVEEND +#define DISPID_EVMETH_ONRESIZESTART DISPID_ONRESIZESTART +#define DISPID_EVMETH_ONRESIZEEND DISPID_ONRESIZEEND +#define DISPID_EVMETH_ONMOUSEENTER DISPID_ONMOUSEENTER +#define DISPID_EVMETH_ONMOUSELEAVE DISPID_ONMOUSELEAVE +#define DISPID_EVMETH_ONACTIVATE DISPID_ONACTIVATE +#define DISPID_EVMETH_ONDEACTIVATE DISPID_ONDEACTIVATE +#define DISPID_EVMETH_ONMULTILAYOUTCLEANUP DISPID_ONMULTILAYOUTCLEANUP +#define DISPID_EVMETH_ONBEFOREACTIVATE DISPID_ONBEFOREACTIVATE +#define DISPID_EVMETH_ONFOCUSIN DISPID_ONFOCUSIN +#define DISPID_EVMETH_ONFOCUSOUT DISPID_ONFOCUSOUT +#define DISPID_EVPROPS_COUNT 93 + + +#define DISPID_EVMETH_ONMOUSEOVER STDDISPID_XOBJ_ONMOUSEOVER +#define DISPID_EVMETH_ONMOUSEOUT STDDISPID_XOBJ_ONMOUSEOUT +#define DISPID_EVMETH_ONMOUSEDOWN DISPID_MOUSEDOWN +#define DISPID_EVMETH_ONMOUSEUP DISPID_MOUSEUP +#define DISPID_EVMETH_ONMOUSEMOVE DISPID_MOUSEMOVE +#define DISPID_EVMETH_ONKEYDOWN DISPID_KEYDOWN +#define DISPID_EVMETH_ONKEYUP DISPID_KEYUP +#define DISPID_EVMETH_ONKEYPRESS DISPID_KEYPRESS +#define DISPID_EVMETH_ONCLICK DISPID_CLICK +#define DISPID_EVMETH_ONDBLCLICK DISPID_DBLCLICK +#define DISPID_EVMETH_ONSELECT DISPID_ONSELECT +#define DISPID_EVMETH_ONSUBMIT DISPID_ONSUBMIT +#define DISPID_EVMETH_ONRESET DISPID_ONRESET +#define DISPID_EVMETH_ONHELP STDDISPID_XOBJ_ONHELP +#define DISPID_EVMETH_ONFOCUS STDDISPID_XOBJ_ONFOCUS +#define DISPID_EVMETH_ONBLUR STDDISPID_XOBJ_ONBLUR +#define DISPID_EVMETH_ONROWEXIT STDDISPID_XOBJ_ONROWEXIT +#define DISPID_EVMETH_ONROWENTER STDDISPID_XOBJ_ONROWENTER +#define DISPID_EVMETH_ONBOUNCE DISPID_ONBOUNCE +#define DISPID_EVMETH_ONBEFOREUPDATE STDDISPID_XOBJ_BEFOREUPDATE +#define DISPID_EVMETH_ONAFTERUPDATE STDDISPID_XOBJ_AFTERUPDATE +#define DISPID_EVMETH_ONBEFOREDRAGOVER EVENTID_CommonCtrlEvent_BeforeDragOver +#define DISPID_EVMETH_ONBEFOREDROPORPASTE EVENTID_CommonCtrlEvent_BeforeDropOrPaste +#define DISPID_EVMETH_ONREADYSTATECHANGE DISPID_READYSTATECHANGE +#define DISPID_EVMETH_ONFINISH DISPID_ONFINISH +#define DISPID_EVMETH_ONSTART DISPID_ONSTART +#define DISPID_EVMETH_ONABORT DISPID_ONABORT +#define DISPID_EVMETH_ONERROR DISPID_ONERROR +#define DISPID_EVMETH_ONCHANGE DISPID_ONCHANGE +#define DISPID_EVMETH_ONSCROLL DISPID_ONSCROLL +#define DISPID_EVMETH_ONLOAD DISPID_ONLOAD +#define DISPID_EVMETH_ONUNLOAD DISPID_ONUNLOAD +#define DISPID_EVMETH_ONLAYOUT DISPID_ONLAYOUT +#define DISPID_EVMETH_ONDRAGSTART STDDISPID_XOBJ_ONDRAGSTART +#define DISPID_EVMETH_ONRESIZE DISPID_ONRESIZE +#define DISPID_EVMETH_ONSELECTSTART STDDISPID_XOBJ_ONSELECTSTART +#define DISPID_EVMETH_ONERRORUPDATE STDDISPID_XOBJ_ERRORUPDATE +#define DISPID_EVMETH_ONBEFOREUNLOAD DISPID_ONBEFOREUNLOAD +#define DISPID_EVMETH_ONDATASETCHANGED STDDISPID_XOBJ_ONDATASETCHANGED +#define DISPID_EVMETH_ONDATAAVAILABLE STDDISPID_XOBJ_ONDATAAVAILABLE +#define DISPID_EVMETH_ONDATASETCOMPLETE STDDISPID_XOBJ_ONDATASETCOMPLETE +#define DISPID_EVMETH_ONFILTER STDDISPID_XOBJ_ONFILTER +#define DISPID_EVMETH_ONCHANGEFOCUS DISPID_ONCHANGEFOCUS +#define DISPID_EVMETH_ONCHANGEBLUR DISPID_ONCHANGEBLUR +#define DISPID_EVMETH_ONLOSECAPTURE STDDISPID_XOBJ_ONLOSECAPTURE +#define DISPID_EVMETH_ONPROPERTYCHANGE STDDISPID_XOBJ_ONPROPERTYCHANGE +#define DISPID_EVMETH_ONPERSISTSAVE DISPID_ONPERSISTSAVE +#define DISPID_EVMETH_ONDRAG STDDISPID_XOBJ_ONDRAG +#define DISPID_EVMETH_ONDRAGEND STDDISPID_XOBJ_ONDRAGEND +#define DISPID_EVMETH_ONDRAGENTER STDDISPID_XOBJ_ONDRAGENTER +#define DISPID_EVMETH_ONDRAGOVER STDDISPID_XOBJ_ONDRAGOVER +#define DISPID_EVMETH_ONDRAGLEAVE STDDISPID_XOBJ_ONDRAGLEAVE +#define DISPID_EVMETH_ONDROP STDDISPID_XOBJ_ONDROP +#define DISPID_EVMETH_ONCUT STDDISPID_XOBJ_ONCUT +#define DISPID_EVMETH_ONCOPY STDDISPID_XOBJ_ONCOPY +#define DISPID_EVMETH_ONPASTE STDDISPID_XOBJ_ONPASTE +#define DISPID_EVMETH_ONBEFORECUT STDDISPID_XOBJ_ONBEFORECUT +#define DISPID_EVMETH_ONBEFORECOPY STDDISPID_XOBJ_ONBEFORECOPY +#define DISPID_EVMETH_ONBEFOREPASTE STDDISPID_XOBJ_ONBEFOREPASTE +#define DISPID_EVMETH_ONPERSISTLOAD DISPID_ONPERSISTLOAD +#define DISPID_EVMETH_ONROWSDELETE STDDISPID_XOBJ_ONROWSDELETE +#define DISPID_EVMETH_ONROWSINSERTED STDDISPID_XOBJ_ONROWSINSERTED +#define DISPID_EVMETH_ONCELLCHANGE STDDISPID_XOBJ_ONCELLCHANGE +#define DISPID_EVMETH_ONCONTEXTMENU DISPID_ONCONTEXTMENU +#define DISPID_EVMETH_ONBEFOREPRINT DISPID_ONBEFOREPRINT +#define DISPID_EVMETH_ONAFTERPRINT DISPID_ONAFTERPRINT +#define DISPID_EVMETH_ONSTOP DISPID_ONSTOP +#define DISPID_EVMETH_ONBEFOREEDITFOCUS DISPID_ONBEFOREEDITFOCUS +#define DISPID_EVMETH_ONMOUSEHOVER DISPID_ONMOUSEHOVER +#define DISPID_EVMETH_ONCONTENTREADY DISPID_ONCONTENTREADY +#define DISPID_EVMETH_ONLAYOUTCOMPLETE DISPID_ONLAYOUTCOMPLETE +#define DISPID_EVMETH_ONPAGE DISPID_ONPAGE +#define DISPID_EVMETH_ONLINKEDOVERFLOW DISPID_ONLINKEDOVERFLOW +#define DISPID_EVMETH_ONMOUSEWHEEL DISPID_ONMOUSEWHEEL +#define DISPID_EVMETH_ONBEFOREDEACTIVATE DISPID_ONBEFOREDEACTIVATE +#define DISPID_EVMETH_ONMOVE DISPID_ONMOVE +#define DISPID_EVMETH_ONCONTROLSELECT DISPID_ONCONTROLSELECT +#define DISPID_EVMETH_ONSELECTIONCHANGE DISPID_ONSELECTIONCHANGE +#define DISPID_EVMETH_ONMOVESTART DISPID_ONMOVESTART +#define DISPID_EVMETH_ONMOVEEND DISPID_ONMOVEEND +#define DISPID_EVMETH_ONRESIZESTART DISPID_ONRESIZESTART +#define DISPID_EVMETH_ONRESIZEEND DISPID_ONRESIZEEND +#define DISPID_EVMETH_ONMOUSEENTER DISPID_ONMOUSEENTER +#define DISPID_EVMETH_ONMOUSELEAVE DISPID_ONMOUSELEAVE +#define DISPID_EVMETH_ONACTIVATE DISPID_ONACTIVATE +#define DISPID_EVMETH_ONDEACTIVATE DISPID_ONDEACTIVATE +#define DISPID_EVMETH_ONMULTILAYOUTCLEANUP DISPID_ONMULTILAYOUTCLEANUP +#define DISPID_EVMETH_ONBEFOREACTIVATE DISPID_ONBEFOREACTIVATE +#define DISPID_EVMETH_ONFOCUSIN DISPID_ONFOCUSIN +#define DISPID_EVMETH_ONFOCUSOUT DISPID_ONFOCUSOUT + +#define DISPID_ONABORT (DISPID_NORMAL_FIRST) +#define DISPID_ONCHANGE (DISPID_NORMAL_FIRST+1) +#define DISPID_ONERROR (DISPID_NORMAL_FIRST+2) +#define DISPID_ONLOAD (DISPID_NORMAL_FIRST+3) +#define DISPID_ONSELECT (DISPID_NORMAL_FIRST+6) +#define DISPID_ONSUBMIT (DISPID_NORMAL_FIRST+7) +#define DISPID_ONUNLOAD (DISPID_NORMAL_FIRST+8) +#define DISPID_ONBOUNCE (DISPID_NORMAL_FIRST+9) +#define DISPID_ONFINISH (DISPID_NORMAL_FIRST+10) +#define DISPID_ONSTART (DISPID_NORMAL_FIRST+11) +#define DISPID_ONLAYOUT (DISPID_NORMAL_FIRST+13) +#define DISPID_ONSCROLL (DISPID_NORMAL_FIRST+14) +#define DISPID_ONRESET (DISPID_NORMAL_FIRST+15) +#define DISPID_ONRESIZE (DISPID_NORMAL_FIRST+16) +#define DISPID_ONBEFOREUNLOAD (DISPID_NORMAL_FIRST+17) +#define DISPID_ONCHANGEFOCUS (DISPID_NORMAL_FIRST+18) +#define DISPID_ONCHANGEBLUR (DISPID_NORMAL_FIRST+19) +#define DISPID_ONPERSIST (DISPID_NORMAL_FIRST+20) +#define DISPID_ONPERSISTSAVE (DISPID_NORMAL_FIRST+21) +#define DISPID_ONPERSISTLOAD (DISPID_NORMAL_FIRST+22) +#define DISPID_ONCONTEXTMENU (DISPID_NORMAL_FIRST+23) +#define DISPID_ONBEFOREPRINT (DISPID_NORMAL_FIRST+24) +#define DISPID_ONAFTERPRINT (DISPID_NORMAL_FIRST+25) +#define DISPID_ONSTOP (DISPID_NORMAL_FIRST+26) +#define DISPID_ONBEFOREEDITFOCUS (DISPID_NORMAL_FIRST+27) +#define DISPID_ONMOUSEHOVER (DISPID_NORMAL_FIRST+28) +#define DISPID_ONCONTENTREADY (DISPID_NORMAL_FIRST+29) +#define DISPID_ONLAYOUTCOMPLETE (DISPID_NORMAL_FIRST+30) +#define DISPID_ONPAGE (DISPID_NORMAL_FIRST+31) +#define DISPID_ONLINKEDOVERFLOW (DISPID_NORMAL_FIRST+32) +#define DISPID_ONMOUSEWHEEL (DISPID_NORMAL_FIRST+33) +#define DISPID_ONBEFOREDEACTIVATE (DISPID_NORMAL_FIRST+34) +#define DISPID_ONMOVE (DISPID_NORMAL_FIRST+35) +#define DISPID_ONCONTROLSELECT (DISPID_NORMAL_FIRST+36) +#define DISPID_ONSELECTIONCHANGE (DISPID_NORMAL_FIRST+37) +#define DISPID_ONMOVESTART (DISPID_NORMAL_FIRST+38) +#define DISPID_ONMOVEEND (DISPID_NORMAL_FIRST+39) +#define DISPID_ONRESIZESTART (DISPID_NORMAL_FIRST+40) +#define DISPID_ONRESIZEEND (DISPID_NORMAL_FIRST+41) +#define DISPID_ONMOUSEENTER (DISPID_NORMAL_FIRST+42) +#define DISPID_ONMOUSELEAVE (DISPID_NORMAL_FIRST+43) +#define DISPID_ONACTIVATE (DISPID_NORMAL_FIRST+44) +#define DISPID_ONDEACTIVATE (DISPID_NORMAL_FIRST+45) +#define DISPID_ONMULTILAYOUTCLEANUP (DISPID_NORMAL_FIRST+46) +#define DISPID_ONBEFOREACTIVATE (DISPID_NORMAL_FIRST+47) +#define DISPID_ONFOCUSIN (DISPID_NORMAL_FIRST+48) +#define DISPID_ONFOCUSOUT (DISPID_NORMAL_FIRST+49) + +/* HTMLDocumentEvents */ +#define DISPID_HTMLDOCUMENTEVENTS_ONHELP DISPID_EVMETH_ONHELP +#define DISPID_HTMLDOCUMENTEVENTS_ONCLICK DISPID_EVMETH_ONCLICK +#define DISPID_HTMLDOCUMENTEVENTS_ONDBLCLICK DISPID_EVMETH_ONDBLCLICK +#define DISPID_HTMLDOCUMENTEVENTS_ONKEYDOWN DISPID_EVMETH_ONKEYDOWN +#define DISPID_HTMLDOCUMENTEVENTS_ONKEYUP DISPID_EVMETH_ONKEYUP +#define DISPID_HTMLDOCUMENTEVENTS_ONKEYPRESS DISPID_EVMETH_ONKEYPRESS +#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEDOWN DISPID_EVMETH_ONMOUSEDOWN +#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEMOVE DISPID_EVMETH_ONMOUSEMOVE +#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEUP DISPID_EVMETH_ONMOUSEUP +#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOUT DISPID_EVMETH_ONMOUSEOUT +#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOVER DISPID_EVMETH_ONMOUSEOVER +#define DISPID_HTMLDOCUMENTEVENTS_ONREADYSTATECHANGE DISPID_EVMETH_ONREADYSTATECHANGE +#define DISPID_HTMLDOCUMENTEVENTS_ONBEFOREUPDATE DISPID_EVMETH_ONBEFOREUPDATE +#define DISPID_HTMLDOCUMENTEVENTS_ONAFTERUPDATE DISPID_EVMETH_ONAFTERUPDATE +#define DISPID_HTMLDOCUMENTEVENTS_ONROWEXIT DISPID_EVMETH_ONROWEXIT +#define DISPID_HTMLDOCUMENTEVENTS_ONROWENTER DISPID_EVMETH_ONROWENTER +#define DISPID_HTMLDOCUMENTEVENTS_ONDRAGSTART DISPID_EVMETH_ONDRAGSTART +#define DISPID_HTMLDOCUMENTEVENTS_ONSELECTSTART DISPID_EVMETH_ONSELECTSTART +#define DISPID_HTMLDOCUMENTEVENTS_ONERRORUPDATE DISPID_EVMETH_ONERRORUPDATE +#define DISPID_HTMLDOCUMENTEVENTS_ONCONTEXTMENU DISPID_EVMETH_ONCONTEXTMENU +#define DISPID_HTMLDOCUMENTEVENTS_ONSTOP DISPID_EVMETH_ONSTOP +#define DISPID_HTMLDOCUMENTEVENTS_ONROWSDELETE DISPID_EVMETH_ONROWSDELETE +#define DISPID_HTMLDOCUMENTEVENTS_ONROWSINSERTED DISPID_EVMETH_ONROWSINSERTED +#define DISPID_HTMLDOCUMENTEVENTS_ONCELLCHANGE DISPID_EVMETH_ONCELLCHANGE +#define DISPID_HTMLDOCUMENTEVENTS_ONPROPERTYCHANGE DISPID_EVMETH_ONPROPERTYCHANGE +#define DISPID_HTMLDOCUMENTEVENTS_ONDATASETCHANGED DISPID_EVMETH_ONDATASETCHANGED +#define DISPID_HTMLDOCUMENTEVENTS_ONDATAAVAILABLE DISPID_EVMETH_ONDATAAVAILABLE +#define DISPID_HTMLDOCUMENTEVENTS_ONDATASETCOMPLETE DISPID_EVMETH_ONDATASETCOMPLETE +#define DISPID_HTMLDOCUMENTEVENTS_ONBEFOREEDITFOCUS DISPID_EVMETH_ONBEFOREEDITFOCUS +#define DISPID_HTMLDOCUMENTEVENTS_ONSELECTIONCHANGE DISPID_EVMETH_ONSELECTIONCHANGE +#define DISPID_HTMLDOCUMENTEVENTS_ONCONTROLSELECT DISPID_EVMETH_ONCONTROLSELECT +#define DISPID_HTMLDOCUMENTEVENTS_ONMOUSEWHEEL DISPID_EVMETH_ONMOUSEWHEEL +#define DISPID_HTMLDOCUMENTEVENTS_ONFOCUSIN DISPID_EVMETH_ONFOCUSIN +#define DISPID_HTMLDOCUMENTEVENTS_ONFOCUSOUT DISPID_EVMETH_ONFOCUSOUT +#define DISPID_HTMLDOCUMENTEVENTS_ONACTIVATE DISPID_EVMETH_ONACTIVATE +#define DISPID_HTMLDOCUMENTEVENTS_ONDEACTIVATE DISPID_EVMETH_ONDEACTIVATE +#define DISPID_HTMLDOCUMENTEVENTS_ONBEFOREACTIVATE DISPID_EVMETH_ONBEFOREACTIVATE +#define DISPID_HTMLDOCUMENTEVENTS_ONBEFOREDEACTIVATE DISPID_EVMETH_ONBEFOREDEACTIVATE + +/* HTMLDocumentEvents2 */ +#define DISPID_HTMLDOCUMENTEVENTS2_ONHELP DISPID_EVMETH_ONHELP +#define DISPID_HTMLDOCUMENTEVENTS2_ONCLICK DISPID_EVMETH_ONCLICK +#define DISPID_HTMLDOCUMENTEVENTS2_ONDBLCLICK DISPID_EVMETH_ONDBLCLICK +#define DISPID_HTMLDOCUMENTEVENTS2_ONKEYDOWN DISPID_EVMETH_ONKEYDOWN +#define DISPID_HTMLDOCUMENTEVENTS2_ONKEYUP DISPID_EVMETH_ONKEYUP +#define DISPID_HTMLDOCUMENTEVENTS2_ONKEYPRESS DISPID_EVMETH_ONKEYPRESS +#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEDOWN DISPID_EVMETH_ONMOUSEDOWN +#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEMOVE DISPID_EVMETH_ONMOUSEMOVE +#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEUP DISPID_EVMETH_ONMOUSEUP +#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOUT DISPID_EVMETH_ONMOUSEOUT +#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOVER DISPID_EVMETH_ONMOUSEOVER +#define DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE DISPID_EVMETH_ONREADYSTATECHANGE +#define DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREUPDATE DISPID_EVMETH_ONBEFOREUPDATE +#define DISPID_HTMLDOCUMENTEVENTS2_ONAFTERUPDATE DISPID_EVMETH_ONAFTERUPDATE +#define DISPID_HTMLDOCUMENTEVENTS2_ONROWEXIT DISPID_EVMETH_ONROWEXIT +#define DISPID_HTMLDOCUMENTEVENTS2_ONROWENTER DISPID_EVMETH_ONROWENTER +#define DISPID_HTMLDOCUMENTEVENTS2_ONDRAGSTART DISPID_EVMETH_ONDRAGSTART +#define DISPID_HTMLDOCUMENTEVENTS2_ONSELECTSTART DISPID_EVMETH_ONSELECTSTART +#define DISPID_HTMLDOCUMENTEVENTS2_ONERRORUPDATE DISPID_EVMETH_ONERRORUPDATE +#define DISPID_HTMLDOCUMENTEVENTS2_ONCONTEXTMENU DISPID_EVMETH_ONCONTEXTMENU +#define DISPID_HTMLDOCUMENTEVENTS2_ONSTOP DISPID_EVMETH_ONSTOP +#define DISPID_HTMLDOCUMENTEVENTS2_ONROWSDELETE DISPID_EVMETH_ONROWSDELETE +#define DISPID_HTMLDOCUMENTEVENTS2_ONROWSINSERTED DISPID_EVMETH_ONROWSINSERTED +#define DISPID_HTMLDOCUMENTEVENTS2_ONCELLCHANGE DISPID_EVMETH_ONCELLCHANGE +#define DISPID_HTMLDOCUMENTEVENTS2_ONPROPERTYCHANGE DISPID_EVMETH_ONPROPERTYCHANGE +#define DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCHANGED DISPID_EVMETH_ONDATASETCHANGED +#define DISPID_HTMLDOCUMENTEVENTS2_ONDATAAVAILABLE DISPID_EVMETH_ONDATAAVAILABLE +#define DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCOMPLETE DISPID_EVMETH_ONDATASETCOMPLETE +#define DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREEDITFOCUS DISPID_EVMETH_ONBEFOREEDITFOCUS +#define DISPID_HTMLDOCUMENTEVENTS2_ONSELECTIONCHANGE DISPID_EVMETH_ONSELECTIONCHANGE +#define DISPID_HTMLDOCUMENTEVENTS2_ONCONTROLSELECT DISPID_EVMETH_ONCONTROLSELECT +#define DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEWHEEL DISPID_EVMETH_ONMOUSEWHEEL +#define DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSIN DISPID_EVMETH_ONFOCUSIN +#define DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSOUT DISPID_EVMETH_ONFOCUSOUT +#define DISPID_HTMLDOCUMENTEVENTS2_ONACTIVATE DISPID_EVMETH_ONACTIVATE +#define DISPID_HTMLDOCUMENTEVENTS2_ONDEACTIVATE DISPID_EVMETH_ONDEACTIVATE +#define DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREACTIVATE DISPID_EVMETH_ONBEFOREACTIVATE +#define DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREDEACTIVATE DISPID_EVMETH_ONBEFOREDEACTIVATE + +/* IHTMLDocument */ +#define DISPID_IHTMLDOCUMENT_SCRIPT (DISPID_OMDOCUMENT+1) + +/* IHTMLDocument2 */ +#define DISPID_IHTMLDOCUMENT2_ALL (DISPID_OMDOCUMENT+3) +#define DISPID_IHTMLDOCUMENT2_BODY (DISPID_OMDOCUMENT+4) +#define DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT (DISPID_OMDOCUMENT+5) +#define DISPID_IHTMLDOCUMENT2_APPLETS (DISPID_OMDOCUMENT+8) +#define DISPID_IHTMLDOCUMENT2_ANCHORS (DISPID_OMDOCUMENT+7) +#define DISPID_IHTMLDOCUMENT2_LINKS (DISPID_OMDOCUMENT+9) +#define DISPID_IHTMLDOCUMENT2_FORMS (DISPID_OMDOCUMENT+10) +#define DISPID_IHTMLDOCUMENT2_IMAGES (DISPID_OMDOCUMENT+11) +#define DISPID_IHTMLDOCUMENT2_TITLE (DISPID_OMDOCUMENT+12) +#define DISPID_IHTMLDOCUMENT2_SCRIPTS (DISPID_OMDOCUMENT+13) +#define DISPID_IHTMLDOCUMENT2_DESIGNMODE (DISPID_OMDOCUMENT+14) +#define DISPID_IHTMLDOCUMENT2_EMBEDS (DISPID_OMDOCUMENT+15) +#define DISPID_IHTMLDOCUMENT2_SELECTION (DISPID_OMDOCUMENT+17) +#define DISPID_IHTMLDOCUMENT2_READYSTATE (DISPID_OMDOCUMENT+18) +#define DISPID_IHTMLDOCUMENT2_FRAMES (DISPID_OMDOCUMENT+19) +#define DISPID_IHTMLDOCUMENT2_PLUGINS (DISPID_OMDOCUMENT+21) +#define DISPID_IHTMLDOCUMENT2_ALINKCOLOR (DISPID_OMDOCUMENT+22) +#define DISPID_IHTMLDOCUMENT2_VLINKCOLOR (DISPID_OMDOCUMENT+23) +#define DISPID_IHTMLDOCUMENT2_LINKCOLOR (DISPID_OMDOCUMENT+24) +#define DISPID_IHTMLDOCUMENT2_URL (DISPID_OMDOCUMENT+25) +#define DISPID_IHTMLDOCUMENT2_LOCATION (DISPID_OMDOCUMENT+26) +#define DISPID_IHTMLDOCUMENT2_REFERRER (DISPID_OMDOCUMENT+27) +#define DISPID_IHTMLDOCUMENT2_LASTMODIFIED (DISPID_OMDOCUMENT+28) +#define DISPID_IHTMLDOCUMENT2_DOMAIN (DISPID_OMDOCUMENT+29) +#define DISPID_IHTMLDOCUMENT2_COOKIE (DISPID_OMDOCUMENT+30) +#define DISPID_IHTMLDOCUMENT2_EXPANDO (DISPID_OMDOCUMENT+31) +#define DISPID_IHTMLDOCUMENT2_CHARSET (DISPID_OMDOCUMENT+32) +#define DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET (DISPID_OMDOCUMENT+33) +#define DISPID_IHTMLDOCUMENT2_PARENTWINDOW (DISPID_OMDOCUMENT+34) +#define DISPID_IHTMLDOCUMENT2_MIMETYPE (DISPID_OMDOCUMENT+41) +#define DISPID_IHTMLDOCUMENT2_FILESIZE (DISPID_OMDOCUMENT+42) +#define DISPID_IHTMLDOCUMENT2_FILECREATEDDATE (DISPID_OMDOCUMENT+43) +#define DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE (DISPID_OMDOCUMENT+44) +#define DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE (DISPID_OMDOCUMENT+45) +#define DISPID_IHTMLDOCUMENT2_SECURITY (DISPID_OMDOCUMENT+46) +#define DISPID_IHTMLDOCUMENT2_PROTOCOL (DISPID_OMDOCUMENT+47) +#define DISPID_IHTMLDOCUMENT2_NAMEPROP (DISPID_OMDOCUMENT+48) +#define DISPID_IHTMLDOCUMENT2_WRITE (DISPID_OMDOCUMENT+54) +#define DISPID_IHTMLDOCUMENT2_WRITELN (DISPID_OMDOCUMENT+55) +#define DISPID_IHTMLDOCUMENT2_OPEN (DISPID_OMDOCUMENT+56) +#define DISPID_IHTMLDOCUMENT2_CLOSE (DISPID_OMDOCUMENT+57) +#define DISPID_IHTMLDOCUMENT2_CLEAR (DISPID_OMDOCUMENT+58) +#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED (DISPID_OMDOCUMENT+59) +#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED (DISPID_OMDOCUMENT+60) +#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE (DISPID_OMDOCUMENT+61) +#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM (DISPID_OMDOCUMENT+62) +#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT (DISPID_OMDOCUMENT+63) +#define DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE (DISPID_OMDOCUMENT+64) +#define DISPID_IHTMLDOCUMENT2_EXECCOMMAND (DISPID_OMDOCUMENT+65) +#define DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP (DISPID_OMDOCUMENT+66) +#define DISPID_IHTMLDOCUMENT2_CREATEELEMENT (DISPID_OMDOCUMENT+67) +#define DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT (DISPID_OMDOCUMENT+68) +#define DISPID_IHTMLDOCUMENT2_STYLESHEETS (DISPID_OMDOCUMENT+69) +#define DISPID_IHTMLDOCUMENT2_TOSTRING (DISPID_OMDOCUMENT+70) +#define DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET (DISPID_OMDOCUMENT+71) +#define DISPID_IHTMLDOCUMENT2_ONHELP DISPID_EVPROP_ONHELP +#define DISPID_IHTMLDOCUMENT2_ONCLICK DISPID_EVPROP_ONCLICK +#define DISPID_IHTMLDOCUMENT2_ONDBLCLICK DISPID_EVPROP_ONDBLCLICK +#define DISPID_IHTMLDOCUMENT2_ONKEYUP DISPID_EVPROP_ONKEYUP +#define DISPID_IHTMLDOCUMENT2_ONKEYDOWN DISPID_EVPROP_ONKEYDOWN +#define DISPID_IHTMLDOCUMENT2_ONKEYPRESS DISPID_EVPROP_ONKEYPRESS +#define DISPID_IHTMLDOCUMENT2_ONMOUSEUP DISPID_EVPROP_ONMOUSEUP +#define DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN DISPID_EVPROP_ONMOUSEDOWN +#define DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE DISPID_EVPROP_ONMOUSEMOVE +#define DISPID_IHTMLDOCUMENT2_ONMOUSEOUT DISPID_EVPROP_ONMOUSEOUT +#define DISPID_IHTMLDOCUMENT2_ONMOUSEOVER DISPID_EVPROP_ONMOUSEOVER +#define DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE DISPID_EVPROP_ONREADYSTATECHANGE +#define DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE DISPID_EVPROP_ONAFTERUPDATE +#define DISPID_IHTMLDOCUMENT2_ONROWEXIT DISPID_EVPROP_ONROWEXIT +#define DISPID_IHTMLDOCUMENT2_ONROWENTER DISPID_EVPROP_ONROWENTER +#define DISPID_IHTMLDOCUMENT2_ONDRAGSTART DISPID_EVPROP_ONDRAGSTART +#define DISPID_IHTMLDOCUMENT2_ONSELECTSTART DISPID_EVPROP_ONSELECTSTART +#define DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE DISPID_EVPROP_ONBEFOREUPDATE +#define DISPID_IHTMLDOCUMENT2_ONERRORUPDATE DISPID_EVPROP_ONERRORUPDATE +#define DISPID_IHTMLDOCUMENT2_BGCOLOR DISPID_BACKCOLOR +#define DISPID_IHTMLDOCUMENT2_FGCOLOR DISPID_A_COLOR + +/* IHTMLDocument3 */ +#define DISPID_IHTMLDOCUMENT3_RELEASECAPTURE DISPID_OMDOCUMENT+72 +#define DISPID_IHTMLDOCUMENT3_RECALC DISPID_OMDOCUMENT+73 +#define DISPID_IHTMLDOCUMENT3_CREATETEXTNODE DISPID_OMDOCUMENT+74 +#define DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT DISPID_OMDOCUMENT+75 +#define DISPID_IHTMLDOCUMENT3_UNIQUEID DISPID_OMDOCUMENT+77 +#define DISPID_IHTMLDOCUMENT3_ATTACHEVENT DISPID_HTMLOBJECT+7 +#define DISPID_IHTMLDOCUMENT3_DETACHEVENT DISPID_HTMLOBJECT+8 +#define DISPID_IHTMLDOCUMENT3_ONROWSDELETE DISPID_EVPROP_ONROWSDELETE +#define DISPID_IHTMLDOCUMENT3_ONROWSINSERTED DISPID_EVPROP_ONROWSINSERTED +#define DISPID_IHTMLDOCUMENT3_ONCELLCHANGE DISPID_EVPROP_ONCELLCHANGE +#define DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED DISPID_EVPROP_ONDATASETCHANGED +#define DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE DISPID_EVPROP_ONDATAAVAILABLE +#define DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE DISPID_EVPROP_ONDATASETCOMPLETE +#define DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE DISPID_EVPROP_ONPROPERTYCHANGE +#define DISPID_IHTMLDOCUMENT3_DIR DISPID_A_DIR +#define DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU DISPID_EVPROP_ONCONTEXTMENU +#define DISPID_IHTMLDOCUMENT3_ONSTOP DISPID_EVPROP_ONSTOP +#define DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT DISPID_OMDOCUMENT+76 +#define DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT DISPID_OMDOCUMENT+78 +#define DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD DISPID_OMDOCUMENT+79 +#define DISPID_IHTMLDOCUMENT3_BASEURL DISPID_OMDOCUMENT+80 +#define DISPID_IHTMLDOCUMENT3_CHILDNODES DISPID_ELEMENT+49 +#define DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS DISPID_OMDOCUMENT+82 +#define DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS DISPID_EVPROP_ONBEFOREEDITFOCUS +#define DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME DISPID_OMDOCUMENT+86 +#define DISPID_IHTMLDOCUMENT3_GETELEMENTBYID DISPID_OMDOCUMENT+88 +#define DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME DISPID_OMDOCUMENT+87 + + +/* IHTMLDocument4 */ +#define DISPID_IHTMLDOCUMENT4_FOCUS DISPID_OMDOCUMENT+89 +#define DISPID_IHTMLDOCUMENT4_HASFOCUS DISPID_OMDOCUMENT+90 +#define DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE DISPID_EVPROP_ONSELECTIONCHANGE +#define DISPID_IHTMLDOCUMENT4_NAMESPACES DISPID_OMDOCUMENT+91 +#define DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL DISPID_OMDOCUMENT+92 +#define DISPID_IHTMLDOCUMENT4_MEDIA DISPID_OMDOCUMENT+93 +#define DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT DISPID_OMDOCUMENT+94 +#define DISPID_IHTMLDOCUMENT4_FIREEVENT DISPID_OMDOCUMENT+95 +#define DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE DISPID_OMDOCUMENT+96 +#define DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT DISPID_EVPROP_ONCONTROLSELECT +#define DISPID_IHTMLDOCUMENT4_URLUNENCODED DISPID_OMDOCUMENT+97 + +/* IHTMLDocument5 */ +#define DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL DISPID_EVPROP_ONMOUSEWHEEL +#define DISPID_IHTMLDOCUMENT5_DOCTYPE DISPID_OMDOCUMENT+98 +#define DISPID_IHTMLDOCUMENT5_IMPLEMENTATION DISPID_OMDOCUMENT+99 +#define DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE DISPID_OMDOCUMENT+100 +#define DISPID_IHTMLDOCUMENT5_CREATECOMMENT DISPID_OMDOCUMENT+101 +#define DISPID_IHTMLDOCUMENT5_ONFOCUSIN DISPID_EVPROP_ONFOCUSIN +#define DISPID_IHTMLDOCUMENT5_ONFOCUSOUT DISPID_EVPROP_ONFOCUSOUT +#define DISPID_IHTMLDOCUMENT5_ONACTIVATE DISPID_EVPROP_ONACTIVATE +#define DISPID_IHTMLDOCUMENT5_ONDEACTIVATE DISPID_EVPROP_ONDEACTIVATE +#define DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE DISPID_EVPROP_ONBEFOREACTIVATE +#define DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE DISPID_EVPROP_ONBEFOREDEACTIVATE +#define DISPID_IHTMLDOCUMENT5_COMPATMODE DISPID_OMDOCUMENT+102 + + +/* IHTMLElementCollection */ +#define DISPID_IHTMLELEMENTCOLLECTION_LENGTH DISPID_COLLECTION +#define DISPID_IHTMLELEMENTCOLLECTION_TOSTRING (DISPID_COLLECTION+1) +#define DISPID_IHTMLELEMENTCOLLECTION_TAGS (DISPID_COLLECTION+2) +#define DISPID_IHTMLELEMENTCOLLECTION__NEWENUM DISPID_NEWENUM +#define DISPID_IHTMLELEMENTCOLLECTION_ITEM DISPID_VALUE + +/* IHTMLElement */ +#define DISPID_IHTMLELEMENT_SETATTRIBUTE (DISPID_HTMLOBJECT+1) +#define DISPID_IHTMLELEMENT_GETATTRIBUTE (DISPID_HTMLOBJECT+2) +#define DISPID_IHTMLELEMENT_REMOVEATTRIBUTE (DISPID_HTMLOBJECT+3) +#define DISPID_IHTMLELEMENT_CLASSNAME (DISPID_ELEMENT+1) +#define DISPID_IHTMLELEMENT_ID (DISPID_ELEMENT+2) +#define DISPID_IHTMLELEMENT_TAGNAME (DISPID_ELEMENT+4) +#define DISPID_IHTMLELEMENT_OFFSETLEFT (DISPID_ELEMENT+8) +#define DISPID_IHTMLELEMENT_OFFSETTOP (DISPID_ELEMENT+9) +#define DISPID_IHTMLELEMENT_OFFSETWIDTH (DISPID_ELEMENT+10) +#define DISPID_IHTMLELEMENT_OFFSETHEIGHT (DISPID_ELEMENT+11) +#define DISPID_IHTMLELEMENT_OFFSETPARENT (DISPID_ELEMENT+12) +#define DISPID_IHTMLELEMENT_DOCUMENT (DISPID_ELEMENT+18) +#define DISPID_IHTMLELEMENT_SCROLLINTOVIEW (DISPID_ELEMENT+19) +#define DISPID_IHTMLELEMENT_CONTAINS (DISPID_ELEMENT+20) +#define DISPID_IHTMLELEMENT_SOURCEINDEX (DISPID_ELEMENT+24) +#define DISPID_IHTMLELEMENT_RECORDNUMBER (DISPID_ELEMENT+25) +#define DISPID_IHTMLELEMENT_INNERHTML (DISPID_ELEMENT+26) +#define DISPID_IHTMLELEMENT_INNERTEXT (DISPID_ELEMENT+27) +#define DISPID_IHTMLELEMENT_OUTERHTML (DISPID_ELEMENT+28) +#define DISPID_IHTMLELEMENT_OUTERTEXT (DISPID_ELEMENT+29) +#define DISPID_IHTMLELEMENT_INSERTADJACENTHTML (DISPID_ELEMENT+30) +#define DISPID_IHTMLELEMENT_INSERTADJACENTTEXT (DISPID_ELEMENT+31) +#define DISPID_IHTMLELEMENT_PARENTTEXTEDIT (DISPID_ELEMENT+32) +#define DISPID_IHTMLELEMENT_ISTEXTEDIT (DISPID_ELEMENT+34) +#define DISPID_IHTMLELEMENT_CLICK (DISPID_ELEMENT+33) +#define DISPID_IHTMLELEMENT_FILTERS (DISPID_ELEMENT+35) +#define DISPID_IHTMLELEMENT_TOSTRING (DISPID_ELEMENT+36) +#define DISPID_IHTMLELEMENT_CHILDREN (DISPID_ELEMENT+37) +#define DISPID_IHTMLELEMENT_ALL (DISPID_ELEMENT+38) +#define DISPID_IHTMLELEMENT_PARENTELEMENT STDPROPID_XOBJ_PARENT +#define DISPID_IHTMLELEMENT_STYLE STDPROPID_XOBJ_STYLE +#define DISPID_IHTMLELEMENT_ONHELP DISPID_EVPROP_ONHELP +#define DISPID_IHTMLELEMENT_ONCLICK DISPID_EVPROP_ONCLICK +#define DISPID_IHTMLELEMENT_ONDBLCLICK DISPID_EVPROP_ONDBLCLICK +#define DISPID_IHTMLELEMENT_ONKEYDOWN DISPID_EVPROP_ONKEYDOWN +#define DISPID_IHTMLELEMENT_ONKEYUP DISPID_EVPROP_ONKEYUP +#define DISPID_IHTMLELEMENT_ONKEYPRESS DISPID_EVPROP_ONKEYPRESS +#define DISPID_IHTMLELEMENT_ONMOUSEOUT DISPID_EVPROP_ONMOUSEOUT +#define DISPID_IHTMLELEMENT_ONMOUSEOVER DISPID_EVPROP_ONMOUSEOVER +#define DISPID_IHTMLELEMENT_ONMOUSEMOVE DISPID_EVPROP_ONMOUSEMOVE +#define DISPID_IHTMLELEMENT_ONMOUSEDOWN DISPID_EVPROP_ONMOUSEDOWN +#define DISPID_IHTMLELEMENT_ONMOUSEUP DISPID_EVPROP_ONMOUSEUP +#define DISPID_IHTMLELEMENT_TITLE STDPROPID_XOBJ_CONTROLTIPTEXT +#define DISPID_IHTMLELEMENT_LANGUAGE DISPID_A_LANGUAGE +#define DISPID_IHTMLELEMENT_ONSELECTSTART DISPID_EVPROP_ONSELECTSTART +#define DISPID_IHTMLELEMENT_LANG DISPID_A_LANG +#define DISPID_IHTMLELEMENT_ONDRAGSTART DISPID_EVPROP_ONDRAGSTART +#define DISPID_IHTMLELEMENT_ONBEFOREUPDATE DISPID_EVPROP_ONBEFOREUPDATE +#define DISPID_IHTMLELEMENT_ONAFTERUPDATE DISPID_EVPROP_ONAFTERUPDATE +#define DISPID_IHTMLELEMENT_ONERRORUPDATE DISPID_EVPROP_ONERRORUPDATE +#define DISPID_IHTMLELEMENT_ONROWEXIT DISPID_EVPROP_ONROWEXIT +#define DISPID_IHTMLELEMENT_ONROWENTER DISPID_EVPROP_ONROWENTER +#define DISPID_IHTMLELEMENT_ONDATASETCHANGED DISPID_EVPROP_ONDATASETCHANGED +#define DISPID_IHTMLELEMENT_ONDATAAVAILABLE DISPID_EVPROP_ONDATAAVAILABLE +#define DISPID_IHTMLELEMENT_ONDATASETCOMPLETE DISPID_EVPROP_ONDATASETCOMPLETE +#define DISPID_IHTMLELEMENT_ONFILTERCHANGE DISPID_EVPROP_ONFILTER + +/* IHTMLelement2 */ +#define DISPID_IHTMLELEMENT2_SCOPENAME DISPID_ELEMENT+39 +#define DISPID_IHTMLELEMENT2_SETCAPTURE DISPID_ELEMENT+40 +#define DISPID_IHTMLELEMENT2_RELEASECAPTURE DISPID_ELEMENT+41 +#define DISPID_IHTMLELEMENT2_ONLOSECAPTURE DISPID_EVPROP_ONLOSECAPTURE +#define DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT DISPID_ELEMENT+42 +#define DISPID_IHTMLELEMENT2_DOSCROLL DISPID_ELEMENT+43 +#define DISPID_IHTMLELEMENT2_ONSCROLL DISPID_EVPROP_ONSCROLL +#define DISPID_IHTMLELEMENT2_ONDRAG DISPID_EVPROP_ONDRAG +#define DISPID_IHTMLELEMENT2_ONDRAGEND DISPID_EVPROP_ONDRAGEND +#define DISPID_IHTMLELEMENT2_ONDRAGENTER DISPID_EVPROP_ONDRAGENTER +#define DISPID_IHTMLELEMENT2_ONDRAGOVER DISPID_EVPROP_ONDRAGOVER +#define DISPID_IHTMLELEMENT2_ONDRAGLEAVE DISPID_EVPROP_ONDRAGLEAVE +#define DISPID_IHTMLELEMENT2_ONDROP DISPID_EVPROP_ONDROP +#define DISPID_IHTMLELEMENT2_ONBEFORECUT DISPID_EVPROP_ONBEFORECUT +#define DISPID_IHTMLELEMENT2_ONCUT DISPID_EVPROP_ONCUT +#define DISPID_IHTMLELEMENT2_ONBEFORECOPY DISPID_EVPROP_ONBEFORECOPY +#define DISPID_IHTMLELEMENT2_ONCOPY DISPID_EVPROP_ONCOPY +#define DISPID_IHTMLELEMENT2_ONBEFOREPASTE DISPID_EVPROP_ONBEFOREPASTE +#define DISPID_IHTMLELEMENT2_ONPASTE DISPID_EVPROP_ONPASTE +#define DISPID_IHTMLELEMENT2_CURRENTSTYLE DISPID_ELEMENT+7 +#define DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE DISPID_EVPROP_ONPROPERTYCHANGE +#define DISPID_IHTMLELEMENT2_GETCLIENTRECTS DISPID_ELEMENT+44 +#define DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT DISPID_ELEMENT+45 +#define DISPID_IHTMLELEMENT2_SETEXPRESSION DISPID_HTMLOBJECT+4 +#define DISPID_IHTMLELEMENT2_GETEXPRESSION DISPID_HTMLOBJECT+5 +#define DISPID_IHTMLELEMENT2_REMOVEEXPRESSION DISPID_HTMLOBJECT+6 +#define DISPID_IHTMLELEMENT2_TABINDEX STDPROPID_XOBJ_TABINDEX +#define DISPID_IHTMLELEMENT2_FOCUS DISPID_SITE +#define DISPID_IHTMLELEMENT2_ACCESSKEY DISPID_SITE+5 +#define DISPID_IHTMLELEMENT2_ONBLUR DISPID_EVPROP_ONBLUR +#define DISPID_IHTMLELEMENT2_ONFOCUS DISPID_EVPROP_ONFOCUS +#define DISPID_IHTMLELEMENT2_ONRESIZE DISPID_EVPROP_ONRESIZE +#define DISPID_IHTMLELEMENT2_BLUR DISPID_SITE+2 +#define DISPID_IHTMLELEMENT2_ADDFILTER DISPID_SITE+17 +#define DISPID_IHTMLELEMENT2_REMOVEFILTER DISPID_SITE+18 +#define DISPID_IHTMLELEMENT2_CLIENTHEIGHT DISPID_SITE+19 +#define DISPID_IHTMLELEMENT2_CLIENTWIDTH DISPID_SITE+20 +#define DISPID_IHTMLELEMENT2_CLIENTTOP DISPID_SITE+21 +#define DISPID_IHTMLELEMENT2_CLIENTLEFT DISPID_SITE+22 +#define DISPID_IHTMLELEMENT2_ATTACHEVENT DISPID_HTMLOBJECT+7 +#define DISPID_IHTMLELEMENT2_DETACHEVENT DISPID_HTMLOBJECT+8 +#define DISPID_IHTMLELEMENT2_READYSTATE DISPID_A_READYSTATE +#define DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE DISPID_EVPROP_ONREADYSTATECHANGE +#define DISPID_IHTMLELEMENT2_ONROWSDELETE DISPID_EVPROP_ONROWSDELETE +#define DISPID_IHTMLELEMENT2_ONROWSINSERTED DISPID_EVPROP_ONROWSINSERTED +#define DISPID_IHTMLELEMENT2_ONCELLCHANGE DISPID_EVPROP_ONCELLCHANGE +#define DISPID_IHTMLELEMENT2_DIR DISPID_A_DIR +#define DISPID_IHTMLELEMENT2_CREATECONTROLRANGE DISPID_ELEMENT+56 +#define DISPID_IHTMLELEMENT2_SCROLLHEIGHT DISPID_ELEMENT+57 +#define DISPID_IHTMLELEMENT2_SCROLLWIDTH DISPID_ELEMENT+58 +#define DISPID_IHTMLELEMENT2_SCROLLTOP DISPID_ELEMENT+59 +#define DISPID_IHTMLELEMENT2_SCROLLLEFT DISPID_ELEMENT+60 +#define DISPID_IHTMLELEMENT2_CLEARATTRIBUTES DISPID_ELEMENT+62 +#define DISPID_IHTMLELEMENT2_MERGEATTRIBUTES DISPID_ELEMENT+63 +#define DISPID_IHTMLELEMENT2_ONCONTEXTMENU DISPID_EVPROP_ONCONTEXTMENU +#define DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT DISPID_ELEMENT+69 +#define DISPID_IHTMLELEMENT2_APPLYELEMENT DISPID_ELEMENT+65 +#define DISPID_IHTMLELEMENT2_GETADJACENTTEXT DISPID_ELEMENT+70 +#define DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT DISPID_ELEMENT+71 +#define DISPID_IHTMLELEMENT2_CANHAVECHILDREN DISPID_ELEMENT+72 +#define DISPID_IHTMLELEMENT2_ADDBEHAVIOR DISPID_ELEMENT+80 +#define DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR DISPID_ELEMENT+81 +#define DISPID_IHTMLELEMENT2_RUNTIMESTYLE DISPID_ELEMENT+64 +#define DISPID_IHTMLELEMENT2_BEHAVIORURNS DISPID_ELEMENT+82 +#define DISPID_IHTMLELEMENT2_TAGURN DISPID_ELEMENT+83 +#define DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS DISPID_EVPROP_ONBEFOREEDITFOCUS +#define DISPID_IHTMLELEMENT2_READYSTATEVALUE DISPID_ELEMENT+84 +#define DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME DISPID_ELEMENT+85 + +/* IHTMLStyle */ +#define DISPID_IHTMLSTYLE_PIXELTOP DISPID_STYLE +#define DISPID_IHTMLSTYLE_PIXELLEFT (DISPID_STYLE+1) +#define DISPID_IHTMLSTYLE_PIXELWIDTH (DISPID_STYLE+2) +#define DISPID_IHTMLSTYLE_PIXELHEIGHT (DISPID_STYLE+3) +#define DISPID_IHTMLSTYLE_POSTOP (DISPID_STYLE+4) +#define DISPID_IHTMLSTYLE_POSLEFT (DISPID_STYLE+5) +#define DISPID_IHTMLSTYLE_POSWIDTH (DISPID_STYLE+6) +#define DISPID_IHTMLSTYLE_POSHEIGHT (DISPID_STYLE+7) +#define DISPID_IHTMLSTYLE_TOSTRING (DISPID_STYLE+8) +#define DISPID_IHTMLSTYLE_SETATTRIBUTE (DISPID_HTMLOBJECT+1) +#define DISPID_IHTMLSTYLE_GETATTRIBUTE (DISPID_HTMLOBJECT+2) +#define DISPID_IHTMLSTYLE_REMOVEATTRIBUTE (DISPID_HTMLOBJECT+3) +#define DISPID_IHTMLSTYLE_FONTFAMILY DISPID_A_FONTFACE +#define DISPID_IHTMLSTYLE_FONTSTYLE DISPID_A_FONTSTYLE +#define DISPID_IHTMLSTYLE_FONTVARIANT DISPID_A_FONTVARIANT +#define DISPID_IHTMLSTYLE_FONTWEIGHT DISPID_A_FONTWEIGHT +#define DISPID_IHTMLSTYLE_FONTSIZE DISPID_A_FONTSIZE +#define DISPID_IHTMLSTYLE_FONT DISPID_A_FONT +#define DISPID_IHTMLSTYLE_COLOR DISPID_A_COLOR +#define DISPID_IHTMLSTYLE_BACKGROUND DISPID_A_BACKGROUND +#define DISPID_IHTMLSTYLE_BACKGROUNDIMAGE DISPID_A_BACKGROUNDIMAGE +#define DISPID_IHTMLSTYLE_BACKGROUNDREPEAT DISPID_A_BACKGROUNDREPEAT +#define DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT DISPID_A_BACKGROUNDATTACHMENT +#define DISPID_IHTMLSTYLE_BACKGROUNDPOSITION DISPID_A_BACKGROUNDPOSITION +#define DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX DISPID_A_BACKGROUNDPOSX +#define DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY DISPID_A_BACKGROUNDPOSY +#define DISPID_IHTMLSTYLE_WORDSPACING DISPID_A_WORDSPACING +#define DISPID_IHTMLSTYLE_LETTERSPACING DISPID_A_LETTERSPACING +#define DISPID_IHTMLSTYLE_TEXTDECORATION DISPID_A_TEXTDECORATION +#define DISPID_IHTMLSTYLE_TEXTDECORATIONNONE DISPID_A_TEXTDECORATIONNONE +#define DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE DISPID_A_TEXTDECORATIONUNDERLINE +#define DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE DISPID_A_TEXTDECORATIONOVERLINE +#define DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH DISPID_A_TEXTDECORATIONLINETHROUGH +#define DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK DISPID_A_TEXTDECORATIONBLINK +#define DISPID_IHTMLSTYLE_VERTICALALIGN DISPID_A_VERTICALALIGN +#define DISPID_IHTMLSTYLE_TEXTTRANSFORM DISPID_A_TEXTTRANSFORM +#define DISPID_IHTMLSTYLE_TEXTINDENT DISPID_A_TEXTINDENT +#define DISPID_IHTMLSTYLE_LINEHEIGHT DISPID_A_LINEHEIGHT +#define DISPID_IHTMLSTYLE_MARGINTOP DISPID_A_MARGINTOP +#define DISPID_IHTMLSTYLE_MARGINRIGHT DISPID_A_MARGINRIGHT +#define DISPID_IHTMLSTYLE_MARGINBOTTOM DISPID_A_MARGINBOTTOM +#define DISPID_IHTMLSTYLE_MARGINLEFT DISPID_A_MARGINLEFT +#define DISPID_IHTMLSTYLE_MARGIN DISPID_A_MARGIN +#define DISPID_IHTMLSTYLE_PADDINGTOP DISPID_A_PADDINGTOP +#define DISPID_IHTMLSTYLE_PADDINGRIGHT DISPID_A_PADDINGRIGHT +#define DISPID_IHTMLSTYLE_PADDINGBOTTOM DISPID_A_PADDINGBOTTOM +#define DISPID_IHTMLSTYLE_PADDINGLEFT DISPID_A_PADDINGLEFT +#define DISPID_IHTMLSTYLE_PADDING DISPID_A_PADDING +#define DISPID_IHTMLSTYLE_BORDER DISPID_A_BORDER +#define DISPID_IHTMLSTYLE_BORDERTOP DISPID_A_BORDERTOP +#define DISPID_IHTMLSTYLE_BORDERRIGHT DISPID_A_BORDERRIGHT +#define DISPID_IHTMLSTYLE_BORDERBOTTOM DISPID_A_BORDERBOTTOM +#define DISPID_IHTMLSTYLE_BORDERLEFT DISPID_A_BORDERLEFT +#define DISPID_IHTMLSTYLE_BORDERCOLOR DISPID_A_BORDERCOLOR +#define DISPID_IHTMLSTYLE_BORDERTOPCOLOR DISPID_A_BORDERTOPCOLOR +#define DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR DISPID_A_BORDERRIGHTCOLOR +#define DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR DISPID_A_BORDERBOTTOMCOLOR +#define DISPID_IHTMLSTYLE_BORDERLEFTCOLOR DISPID_A_BORDERLEFTCOLOR +#define DISPID_IHTMLSTYLE_BORDERWIDTH DISPID_A_BORDERWIDTH +#define DISPID_IHTMLSTYLE_BORDERTOPWIDTH DISPID_A_BORDERTOPWIDTH +#define DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH DISPID_A_BORDERRIGHTWIDTH +#define DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH DISPID_A_BORDERBOTTOMWIDTH +#define DISPID_IHTMLSTYLE_BORDERLEFTWIDTH DISPID_A_BORDERLEFTWIDTH +#define DISPID_IHTMLSTYLE_BORDERSTYLE DISPID_A_BORDERSTYLE +#define DISPID_IHTMLSTYLE_BORDERTOPSTYLE DISPID_A_BORDERTOPSTYLE +#define DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE DISPID_A_BORDERRIGHTSTYLE +#define DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE DISPID_A_BORDERBOTTOMSTYLE +#define DISPID_IHTMLSTYLE_BORDERLEFTSTYLE DISPID_A_BORDERLEFTSTYLE +#define DISPID_IHTMLSTYLE_STYLEFLOAT DISPID_A_FLOAT +#define DISPID_IHTMLSTYLE_CLEAR DISPID_A_CLEAR +#define DISPID_IHTMLSTYLE_DISPLAY DISPID_A_DISPLAY +#define DISPID_IHTMLSTYLE_VISIBILITY DISPID_A_VISIBILITY +#define DISPID_IHTMLSTYLE_LISTSTYLETYPE DISPID_A_LISTSTYLETYPE +#define DISPID_IHTMLSTYLE_LISTSTYLEPOSITION DISPID_A_LISTSTYLEPOSITION +#define DISPID_IHTMLSTYLE_LISTSTYLEIMAGE DISPID_A_LISTSTYLEIMAGE +#define DISPID_IHTMLSTYLE_LISTSTYLE DISPID_A_LISTSTYLE +#define DISPID_IHTMLSTYLE_WHITESPACE DISPID_A_WHITESPACE +#define DISPID_IHTMLSTYLE_POSITION DISPID_A_POSITION +#define DISPID_IHTMLSTYLE_ZINDEX DISPID_A_ZINDEX +#define DISPID_IHTMLSTYLE_OVERFLOW DISPID_A_OVERFLOW +#define DISPID_IHTMLSTYLE_PAGEBREAKBEFORE DISPID_A_PAGEBREAKBEFORE +#define DISPID_IHTMLSTYLE_PAGEBREAKAFTER DISPID_A_PAGEBREAKAFTER +#define DISPID_IHTMLSTYLE_CSSTEXT DISPID_A_STYLETEXT +#define DISPID_IHTMLSTYLE_CURSOR DISPID_A_CURSOR +#define DISPID_IHTMLSTYLE_CLIP DISPID_A_CLIP +#define DISPID_IHTMLSTYLE_FILTER DISPID_A_FILTER +#define DISPID_IHTMLSTYLE_WIDTH STDPROPID_XOBJ_WIDTH +#define DISPID_IHTMLSTYLE_HEIGHT STDPROPID_XOBJ_HEIGHT +#define DISPID_IHTMLSTYLE_TOP STDPROPID_XOBJ_TOP +#define DISPID_IHTMLSTYLE_LEFT STDPROPID_XOBJ_LEFT +#define DISPID_IHTMLSTYLE_TEXTALIGN STDPROPID_XOBJ_BLOCKALIGN +#define DISPID_IHTMLSTYLE_BACKGROUNDCOLOR DISPID_BACKCOLOR + +/* IHTMLFiltersCollection */ +#define DISPID_IHTMLFILTERSCOLLECTION_LENGTH (DISPID_FILTERS+1) +#define DISPID_IHTMLFILTERSCOLLECTION__NEWENUM DISPID_NEWENUM +#define DISPID_IHTMLFILTERSCOLLECTION_ITEM DISPID_VALUE + +/* IHTMLSelectionObject */ +#define DISPID_IHTMLSELECTIONOBJECT_CREATERANGE (DISPID_SELECTOBJ+1) +#define DISPID_IHTMLSELECTIONOBJECT_EMPTY (DISPID_SELECTOBJ+2) +#define DISPID_IHTMLSELECTIONOBJECT_CLEAR (DISPID_SELECTOBJ+3) +#define DISPID_IHTMLSELECTIONOBJECT_TYPE (DISPID_SELECTOBJ+4) + +/* IHTMLFramesCollection2 */ +#define DISPID_IHTMLFRAMESCOLLECTION2_ITEM 0 +#define DISPID_IHTMLFRAMESCOLLECTION2_LENGTH 1001 + +/* IHTMLLocation */ +#define DISPID_IHTMLLOCATION_HOST (DISPID_LOCATION+1) +#define DISPID_IHTMLLOCATION_HOSTNAME (DISPID_LOCATION+2) +#define DISPID_IHTMLLOCATION_PORT (DISPID_LOCATION+3) +#define DISPID_IHTMLLOCATION_PATHNAME (DISPID_LOCATION+4) +#define DISPID_IHTMLLOCATION_SEARCH (DISPID_LOCATION+5) +#define DISPID_IHTMLLOCATION_HASH (DISPID_LOCATION+6) +#define DISPID_IHTMLLOCATION_RELOAD (DISPID_LOCATION+7) +#define DISPID_IHTMLLOCATION_REPLACE (DISPID_LOCATION+8) +#define DISPID_IHTMLLOCATION_ASSIGN (DISPID_LOCATION+9) +#define DISPID_IHTMLLOCATION_TOSTRING (DISPID_LOCATION+10) +#define DISPID_IHTMLLOCATION_HREF DISPID_VALUE +#define DISPID_IHTMLLOCATION_PROTOCOL DISPID_LOCATION + +/* IHTMLWindow2 */ +#define DISPID_IHTMLWINDOW2_HISTORY 2 +#define DISPID_IHTMLWINDOW2_CLOSE 3 +#define DISPID_IHTMLWINDOW2_OPENER 4 +#define DISPID_IHTMLWINDOW2_NAVIGATOR 5 +#define DISPID_IHTMLWINDOW2_MOVETO 6 +#define DISPID_IHTMLWINDOW2_MOVEBY 7 +#define DISPID_IHTMLWINDOW2_RESIZETO 9 +#define DISPID_IHTMLWINDOW2_RESIZEBY 8 +#define DISPID_IHTMLWINDOW2_NAME 11 +#define DISPID_IHTMLWINDOW2_PARENT 12 +#define DISPID_IHTMLWINDOW2_OPEN 13 +#define DISPID_IHTMLWINDOW2_LOCATION 14 +#define DISPID_IHTMLWINDOW2_SELF 20 +#define DISPID_IHTMLWINDOW2_TOP 21 +#define DISPID_IHTMLWINDOW2_WINDOW 22 +#define DISPID_IHTMLWINDOW2_CLOSED 23 +#define DISPID_IHTMLWINDOW2_NAVIGATE 25 +#define DISPID_IHTMLWINDOW2_FRAMES 1100 +#define DISPID_IHTMLWINDOW2_DEFAULTSTATUS 1101 +#define DISPID_IHTMLWINDOW2_STATUS 1102 +#define DISPID_IHTMLWINDOW2_SETTIMEOUT 1103 +#define DISPID_IHTMLWINDOW2_CLEARTIMEOUT 1104 +#define DISPID_IHTMLWINDOW2_ALERT 1105 +#define DISPID_IHTMLWINDOW2_CONFIRM 1110 +#define DISPID_IHTMLWINDOW2_PROMPT 1111 +#define DISPID_IHTMLWINDOW2_IMAGE 1125 +#define DISPID_IHTMLWINDOW2_DOCUMENT 1151 +#define DISPID_IHTMLWINDOW2_EVENT 1152 +#define DISPID_IHTMLWINDOW2__NEWENUM 1153 +#define DISPID_IHTMLWINDOW2_SHOWMODALDIALOG 1154 +#define DISPID_IHTMLWINDOW2_SHOWHELP 1155 +#define DISPID_IHTMLWINDOW2_SCREEN 1156 +#define DISPID_IHTMLWINDOW2_OPTION 1157 +#define DISPID_IHTMLWINDOW2_FOCUS 1158 +#define DISPID_IHTMLWINDOW2_BLUR 1159 +#define DISPID_IHTMLWINDOW2_SCROLL 1160 +#define DISPID_IHTMLWINDOW2_CLIENTINFORMATION 1161 +#define DISPID_IHTMLWINDOW2_SETINTERVAL 1162 +#define DISPID_IHTMLWINDOW2_CLEARINTERVAL 1163 +#define DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING 1164 +#define DISPID_IHTMLWINDOW2_EXECSCRIPT 1165 +#define DISPID_IHTMLWINDOW2_TOSTRING 1166 +#define DISPID_IHTMLWINDOW2_SCROLLBY 1167 +#define DISPID_IHTMLWINDOW2_SCROLLTO 1168 +#define DISPID_IHTMLWINDOW2_EXTERNAL 1169 +#define DISPID_IHTMLWINDOW2_ONFOCUS DISPID_EVPROP_ONFOCUS +#define DISPID_IHTMLWINDOW2_ONBLUR DISPID_EVPROP_ONBLUR +#define DISPID_IHTMLWINDOW2_ONLOAD DISPID_EVPROP_ONLOAD +#define DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD DISPID_EVPROP_ONBEFOREUNLOAD +#define DISPID_IHTMLWINDOW2_ONUNLOAD DISPID_EVPROP_ONUNLOAD +#define DISPID_IHTMLWINDOW2_ONHELP DISPID_EVPROP_ONHELP +#define DISPID_IHTMLWINDOW2_ONERROR DISPID_EVPROP_ONERROR +#define DISPID_IHTMLWINDOW2_ONRESIZE DISPID_EVPROP_ONRESIZE +#define DISPID_IHTMLWINDOW2_ONSCROLL DISPID_EVPROP_ONSCROLL + +/* IHTMLImageElementFactory */ +#define DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE DISPID_VALUE + +/* IHTMLImgElement */ +#define DISPID_IHTMLIMGELEMENT_BORDER (DISPID_IMGBASE+4) +#define DISPID_IHTMLIMGELEMENT_VSPACE (DISPID_IMGBASE+5) +#define DISPID_IHTMLIMGELEMENT_HSPACE (DISPID_IMGBASE+6) +#define DISPID_IHTMLIMGELEMENT_ALT (DISPID_IMGBASE+2) +#define DISPID_IHTMLIMGELEMENT_SRC (DISPID_IMGBASE+3) +#define DISPID_IHTMLIMGELEMENT_LOWSRC (DISPID_IMGBASE+7) +#define DISPID_IHTMLIMGELEMENT_VRML (DISPID_IMGBASE+8) +#define DISPID_IHTMLIMGELEMENT_DYNSRC (DISPID_IMGBASE+9) +#define DISPID_IHTMLIMGELEMENT_READYSTATE (DISPID_IMGBASE+12) +#define DISPID_IHTMLIMGELEMENT_COMPLETE (DISPID_IMGBASE+10) +#define DISPID_IHTMLIMGELEMENT_LOOP (DISPID_IMGBASE+11) +#define DISPID_IHTMLIMGELEMENT_ISMAP (DISPID_IMG+2) +#define DISPID_IHTMLIMGELEMENT_USEMAP (DISPID_IMG+8) +#define DISPID_IHTMLIMGELEMENT_MIMETYPE (DISPID_IMG+10) +#define DISPID_IHTMLIMGELEMENT_FILESIZE (DISPID_IMG+11) +#define DISPID_IHTMLIMGELEMENT_FILECREATEDDATE (DISPID_IMG+12) +#define DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE (DISPID_IMG+13) +#define DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE (DISPID_IMG+14) +#define DISPID_IHTMLIMGELEMENT_PROTOCOL (DISPID_IMG+15) +#define DISPID_IHTMLIMGELEMENT_HREF (DISPID_IMG+16) +#define DISPID_IHTMLIMGELEMENT_NAMEPROP (DISPID_IMG+17) +#define DISPID_IHTMLIMGELEMENT_ALIGN STDPROPID_XOBJ_CONTROLALIGN +#define DISPID_IHTMLIMGELEMENT_ONLOAD DISPID_EVPROP_ONLOAD +#define DISPID_IHTMLIMGELEMENT_ONERROR DISPID_EVPROP_ONERROR +#define DISPID_IHTMLIMGELEMENT_ONABORT DISPID_EVPROP_ONABORT +#define DISPID_IHTMLIMGELEMENT_NAME STDPROPID_XOBJ_NAME +#define DISPID_IHTMLIMGELEMENT_WIDTH STDPROPID_XOBJ_WIDTH +#define DISPID_IHTMLIMGELEMENT_HEIGHT STDPROPID_XOBJ_HEIGHT +#define DISPID_IHTMLIMGELEMENT_START DISPID_IMGBASE+13 + +/* IOmHistory */ +#define DISPID_IOMHISTORY_LENGTH DISPID_HISTORY +#define DISPID_IOMHISTORY_BACK (DISPID_HISTORY+1) +#define DISPID_IOMHISTORY_FORWARD (DISPID_HISTORY+2) +#define DISPID_IOMHISTORY_GO (DISPID_HISTORY+3) + +/* IOmNavigator */ +#define DISPID_IOMNAVIGATOR_APPCODENAME DISPID_NAVIGATOR +#define DISPID_IOMNAVIGATOR_APPNAME (DISPID_NAVIGATOR+1) +#define DISPID_IOMNAVIGATOR_APPVERSION (DISPID_NAVIGATOR+2) +#define DISPID_IOMNAVIGATOR_USERAGENT (DISPID_NAVIGATOR+3) +#define DISPID_IOMNAVIGATOR_JAVAENABLED (DISPID_NAVIGATOR+4) +#define DISPID_IOMNAVIGATOR_TAINTENABLED (DISPID_NAVIGATOR+5) +#define DISPID_IOMNAVIGATOR_MIMETYPES (DISPID_NAVIGATOR+6) +#define DISPID_IOMNAVIGATOR_PLUGINS (DISPID_NAVIGATOR+7) +#define DISPID_IOMNAVIGATOR_COOKIEENABLED (DISPID_NAVIGATOR+8) +#define DISPID_IOMNAVIGATOR_OPSPROFILE (DISPID_NAVIGATOR+9) +#define DISPID_IOMNAVIGATOR_TOSTRING (DISPID_NAVIGATOR+10) +#define DISPID_IOMNAVIGATOR_CPUCLASS (DISPID_NAVIGATOR+11) +#define DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE (DISPID_NAVIGATOR+12) +#define DISPID_IOMNAVIGATOR_BROWSERLANGUAGE (DISPID_NAVIGATOR+13) +#define DISPID_IOMNAVIGATOR_USERLANGUAGE (DISPID_NAVIGATOR+14) +#define DISPID_IOMNAVIGATOR_PLATFORM (DISPID_NAVIGATOR+15) +#define DISPID_IOMNAVIGATOR_APPMINORVERSION (DISPID_NAVIGATOR+16) +#define DISPID_IOMNAVIGATOR_CONNECTIONSPEED (DISPID_NAVIGATOR+17) +#define DISPID_IOMNAVIGATOR_ONLINE (DISPID_NAVIGATOR+18) +#define DISPID_IOMNAVIGATOR_USERPROFILE (DISPID_NAVIGATOR+19) + +/* IHTMLMimeTypesCollection */ +#define DISPID_IHTMLMIMETYPESCOLLECTION_LENGTH 1 + +/* IHTMLPluginsCollection */ +#define DISPID_IHTMLPLUGINSCOLLECTION_LENGTH 1 +#define DISPID_IHTMLPLUGINSCOLLECTION_REFRESH 2 + +/* IHTMLOpsProfile */ +#define DISPID_IHTMLOPSPROFILE_ADDREQUEST 1 +#define DISPID_IHTMLOPSPROFILE_CLEARREQUEST 2 +#define DISPID_IHTMLOPSPROFILE_DOREQUEST 3 +#define DISPID_IHTMLOPSPROFILE_GETATTRIBUTE 4 +#define DISPID_IHTMLOPSPROFILE_SETATTRIBUTE 5 +#define DISPID_IHTMLOPSPROFILE_COMMITCHANGES 6 +#define DISPID_IHTMLOPSPROFILE_ADDREADREQUEST 7 +#define DISPID_IHTMLOPSPROFILE_DOREADREQUEST 8 +#define DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST 9 + +/* IHTMLEventObj */ +#define DISPID_IHTMLEVENTOBJ_SRCELEMENT (DISPID_EVENTOBJ+1) +#define DISPID_IHTMLEVENTOBJ_ALTKEY (DISPID_EVENTOBJ+2) +#define DISPID_IHTMLEVENTOBJ_CTRLKEY (DISPID_EVENTOBJ+3) +#define DISPID_IHTMLEVENTOBJ_SHIFTKEY (DISPID_EVENTOBJ+4) +#define DISPID_IHTMLEVENTOBJ_X (DISPID_EVENTOBJ+5) +#define DISPID_IHTMLEVENTOBJ_Y (DISPID_EVENTOBJ+6) +#define DISPID_IHTMLEVENTOBJ_RETURNVALUE (DISPID_EVENTOBJ+7) +#define DISPID_IHTMLEVENTOBJ_CANCELBUBBLE (DISPID_EVENTOBJ+8) +#define DISPID_IHTMLEVENTOBJ_FROMELEMENT (DISPID_EVENTOBJ+9) +#define DISPID_IHTMLEVENTOBJ_TOELEMENT (DISPID_EVENTOBJ+10) +#define DISPID_IHTMLEVENTOBJ_KEYCODE (DISPID_EVENTOBJ+11) +#define DISPID_IHTMLEVENTOBJ_BUTTON (DISPID_EVENTOBJ+12) +#define DISPID_IHTMLEVENTOBJ_TYPE (DISPID_EVENTOBJ+13) +#define DISPID_IHTMLEVENTOBJ_QUALIFIER (DISPID_EVENTOBJ+14) +#define DISPID_IHTMLEVENTOBJ_REASON (DISPID_EVENTOBJ+15) +#define DISPID_IHTMLEVENTOBJ_CLIENTX (DISPID_EVENTOBJ+20) +#define DISPID_IHTMLEVENTOBJ_CLIENTY (DISPID_EVENTOBJ+21) +#define DISPID_IHTMLEVENTOBJ_OFFSETX (DISPID_EVENTOBJ+22) +#define DISPID_IHTMLEVENTOBJ_OFFSETY (DISPID_EVENTOBJ+23) +#define DISPID_IHTMLEVENTOBJ_SCREENX (DISPID_EVENTOBJ+24) +#define DISPID_IHTMLEVENTOBJ_SCREENY (DISPID_EVENTOBJ+25) +#define DISPID_IHTMLEVENTOBJ_SRCFILTER (DISPID_EVENTOBJ+26) + +/* IHTMLScreen */ +#define DISPID_IHTMLSCREEN_COLORDEPTH (DISPID_SCREEN+1) +#define DISPID_IHTMLSCREEN_BUFFERDEPTH (DISPID_SCREEN+2) +#define DISPID_IHTMLSCREEN_WIDTH (DISPID_SCREEN+3) +#define DISPID_IHTMLSCREEN_HEIGHT (DISPID_SCREEN+4) +#define DISPID_IHTMLSCREEN_UPDATEINTERVAL (DISPID_SCREEN+5) +#define DISPID_IHTMLSCREEN_AVAILHEIGHT (DISPID_SCREEN+6) +#define DISPID_IHTMLSCREEN_AVAILWIDTH (DISPID_SCREEN+7) +#define DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED (DISPID_SCREEN+8) + +/* IHTMLOptionElementFactory */ +#define DISPID_IHTMLOPTIONELEMENTFACTORY_CREATE DISPID_VALUE + +/* IHTMLOptionElement */ +#define DISPID_IHTMLOPTIONELEMENT_SELECTED (DISPID_OPTION+1) +#define DISPID_IHTMLOPTIONELEMENT_VALUE (DISPID_OPTION+2) +#define DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED (DISPID_OPTION+3) +#define DISPID_IHTMLOPTIONELEMENT_INDEX (DISPID_OPTION+5) +#define DISPID_IHTMLOPTIONELEMENT_TEXT (DISPID_OPTION+4) +#define DISPID_IHTMLOPTIONELEMENT_FORM (DISPID_OPTION+6) + +/* IHTMLFormElement */ +#define DISPID_IHTMLFORMELEMENT_ACTION (DISPID_FORM+1) +#define DISPID_IHTMLFORMELEMENT_DIR (DISPID_FORM+2) +#define DISPID_IHTMLFORMELEMENT_ENCODING (DISPID_FORM+3) +#define DISPID_IHTMLFORMELEMENT_METHOD (DISPID_FORM+4) +#define DISPID_IHTMLFORMELEMENT_ELEMENTS (DISPID_FORM+5) +#define DISPID_IHTMLFORMELEMENT_TARGET (DISPID_FORM+6) +#define DISPID_IHTMLFORMELEMENT_SUBMIT (DISPID_FORM+9) +#define DISPID_IHTMLFORMELEMENT_RESET (DISPID_FORM+10) +#define DISPID_IHTMLFORMELEMENT_TAGS (DISPID_COLLECTION+2) +#define DISPID_IHTMLFORMELEMENT_NAME STDPROPID_XOBJ_NAME +#define DISPID_IHTMLFORMELEMENT_ONSUBMIT DISPID_EVPROP_ONSUBMIT +#define DISPID_IHTMLFORMELEMENT_ONRESET DISPID_EVPROP_ONRESET +#define DISPID_IHTMLFORMELEMENT_LENGTH DISPID_COLLECTION +#define DISPID_IHTMLFORMELEMENT__NEWENUM DISPID_NEWENUM +#define DISPID_IHTMLFORMELEMENT_ITEM DISPID_VALUE + +/* IHTMLStyleSheetsCollection */ +#define DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH (DISPID_STYLESHEETS_COL+1) +#define DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM DISPID_NEWENUM +#define DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM DISPID_VALUE + +/* IHTMLStyleSheet */ +#define DISPID_IHTMLSTYLESHEET_TITLE (DISPID_STYLESHEET+1) +#define DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET (DISPID_STYLESHEET+2) +#define DISPID_IHTMLSTYLESHEET_OWNINGELEMENT (DISPID_STYLESHEET+3) +#define DISPID_IHTMLSTYLESHEET_READONLY (DISPID_STYLESHEET+4) +#define DISPID_IHTMLSTYLESHEET_IMPORTS (DISPID_STYLESHEET+5) +#define DISPID_IHTMLSTYLESHEET_HREF (DISPID_STYLESHEET+6) +#define DISPID_IHTMLSTYLESHEET_TYPE (DISPID_STYLESHEET+7) +#define DISPID_IHTMLSTYLESHEET_ID (DISPID_STYLESHEET+8) +#define DISPID_IHTMLSTYLESHEET_ADDIMPORT (DISPID_STYLESHEET+9) +#define DISPID_IHTMLSTYLESHEET_ADDRULE (DISPID_STYLESHEET+10) +#define DISPID_IHTMLSTYLESHEET_REMOVEIMPORT (DISPID_STYLESHEET+11) +#define DISPID_IHTMLSTYLESHEET_REMOVERULE (DISPID_STYLESHEET+12) +#define DISPID_IHTMLSTYLESHEET_MEDIA (DISPID_STYLESHEET+13) +#define DISPID_IHTMLSTYLESHEET_CSSTEXT (DISPID_STYLESHEET+14) +#define DISPID_IHTMLSTYLESHEET_RULES (DISPID_STYLESHEET+15) +#define DISPID_IHTMLSTYLESHEET_DISABLED STDPROPID_XOBJ_DISABLED + +/* IHTMLStyleSheetRulesCollection */ +#define DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH (DISPID_STYLERULES_COL+1) +#define DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM DISPID_VALUE + +/* IHTMLStyleSheetRule */ +#define DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT (DISPID_STYLERULE+1) +#define DISPID_IHTMLSTYLESHEETRULE_READONLY (DISPID_STYLERULE+2) +#define DISPID_IHTMLSTYLESHEETRULE_STYLE STDPROPID_XOBJ_STYLE + +/* IHTMLRuleStyle */ +#define DISPID_IHTMLRULESTYLE_SETATTRIBUTE (DISPID_HTMLOBJECT+1) +#define DISPID_IHTMLRULESTYLE_GETATTRIBUTE (DISPID_HTMLOBJECT+2) +#define DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE (DISPID_HTMLOBJECT+3) +#define DISPID_IHTMLRULESTYLE_FONTFAMILY DISPID_A_FONTFACE +#define DISPID_IHTMLRULESTYLE_FONTSTYLE DISPID_A_FONTSTYLE +#define DISPID_IHTMLRULESTYLE_FONTVARIANT DISPID_A_FONTVARIANT +#define DISPID_IHTMLRULESTYLE_FONTWEIGHT DISPID_A_FONTWEIGHT +#define DISPID_IHTMLRULESTYLE_FONTSIZE DISPID_A_FONTSIZE +#define DISPID_IHTMLRULESTYLE_FONT DISPID_A_FONT +#define DISPID_IHTMLRULESTYLE_COLOR DISPID_A_COLOR +#define DISPID_IHTMLRULESTYLE_BACKGROUND DISPID_A_BACKGROUND +#define DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE DISPID_A_BACKGROUNDIMAGE +#define DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT DISPID_A_BACKGROUNDREPEAT +#define DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT DISPID_A_BACKGROUNDATTACHMENT +#define DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION DISPID_A_BACKGROUNDPOSITION +#define DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX DISPID_A_BACKGROUNDPOSX +#define DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY DISPID_A_BACKGROUNDPOSY +#define DISPID_IHTMLRULESTYLE_WORDSPACING DISPID_A_WORDSPACING +#define DISPID_IHTMLRULESTYLE_LETTERSPACING DISPID_A_LETTERSPACING +#define DISPID_IHTMLRULESTYLE_TEXTDECORATION DISPID_A_TEXTDECORATION +#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE DISPID_A_TEXTDECORATIONNONE +#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE DISPID_A_TEXTDECORATIONUNDERLINE +#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE DISPID_A_TEXTDECORATIONOVERLINE +#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH DISPID_A_TEXTDECORATIONLINETHROUGH +#define DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK DISPID_A_TEXTDECORATIONBLINK +#define DISPID_IHTMLRULESTYLE_VERTICALALIGN DISPID_A_VERTICALALIGN +#define DISPID_IHTMLRULESTYLE_TEXTTRANSFORM DISPID_A_TEXTTRANSFORM +#define DISPID_IHTMLRULESTYLE_TEXTINDENT DISPID_A_TEXTINDENT +#define DISPID_IHTMLRULESTYLE_LINEHEIGHT DISPID_A_LINEHEIGHT +#define DISPID_IHTMLRULESTYLE_MARGINTOP DISPID_A_MARGINTOP +#define DISPID_IHTMLRULESTYLE_MARGINRIGHT DISPID_A_MARGINRIGHT +#define DISPID_IHTMLRULESTYLE_MARGINBOTTOM DISPID_A_MARGINBOTTOM +#define DISPID_IHTMLRULESTYLE_MARGINLEFT DISPID_A_MARGINLEFT +#define DISPID_IHTMLRULESTYLE_MARGIN DISPID_A_MARGIN +#define DISPID_IHTMLRULESTYLE_PADDINGTOP DISPID_A_PADDINGTOP +#define DISPID_IHTMLRULESTYLE_PADDINGRIGHT DISPID_A_PADDINGRIGHT +#define DISPID_IHTMLRULESTYLE_PADDINGBOTTOM DISPID_A_PADDINGBOTTOM +#define DISPID_IHTMLRULESTYLE_PADDINGLEFT DISPID_A_PADDINGLEFT +#define DISPID_IHTMLRULESTYLE_PADDING DISPID_A_PADDING +#define DISPID_IHTMLRULESTYLE_BORDER DISPID_A_BORDER +#define DISPID_IHTMLRULESTYLE_BORDERTOP DISPID_A_BORDERTOP +#define DISPID_IHTMLRULESTYLE_BORDERRIGHT DISPID_A_BORDERRIGHT +#define DISPID_IHTMLRULESTYLE_BORDERBOTTOM DISPID_A_BORDERBOTTOM +#define DISPID_IHTMLRULESTYLE_BORDERLEFT DISPID_A_BORDERLEFT +#define DISPID_IHTMLRULESTYLE_BORDERCOLOR DISPID_A_BORDERCOLOR +#define DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR DISPID_A_BORDERTOPCOLOR +#define DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR DISPID_A_BORDERRIGHTCOLOR +#define DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR DISPID_A_BORDERBOTTOMCOLOR +#define DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR DISPID_A_BORDERLEFTCOLOR +#define DISPID_IHTMLRULESTYLE_BORDERWIDTH DISPID_A_BORDERWIDTH +#define DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH DISPID_A_BORDERTOPWIDTH +#define DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH DISPID_A_BORDERRIGHTWIDTH +#define DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH DISPID_A_BORDERBOTTOMWIDTH +#define DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH DISPID_A_BORDERLEFTWIDTH +#define DISPID_IHTMLRULESTYLE_BORDERSTYLE DISPID_A_BORDERSTYLE +#define DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE DISPID_A_BORDERTOPSTYLE +#define DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE DISPID_A_BORDERRIGHTSTYLE +#define DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE DISPID_A_BORDERBOTTOMSTYLE +#define DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE DISPID_A_BORDERLEFTSTYLE +#define DISPID_IHTMLRULESTYLE_STYLEFLOAT DISPID_A_FLOAT +#define DISPID_IHTMLRULESTYLE_CLEAR DISPID_A_CLEAR +#define DISPID_IHTMLRULESTYLE_DISPLAY DISPID_A_DISPLAY +#define DISPID_IHTMLRULESTYLE_VISIBILITY DISPID_A_VISIBILITY +#define DISPID_IHTMLRULESTYLE_LISTSTYLETYPE DISPID_A_LISTSTYLETYPE +#define DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION DISPID_A_LISTSTYLEPOSITION +#define DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE DISPID_A_LISTSTYLEIMAGE +#define DISPID_IHTMLRULESTYLE_LISTSTYLE DISPID_A_LISTSTYLE +#define DISPID_IHTMLRULESTYLE_WHITESPACE DISPID_A_WHITESPACE +#define DISPID_IHTMLRULESTYLE_POSITION DISPID_A_POSITION +#define DISPID_IHTMLRULESTYLE_ZINDEX DISPID_A_ZINDEX +#define DISPID_IHTMLRULESTYLE_OVERFLOW DISPID_A_OVERFLOW +#define DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE DISPID_A_PAGEBREAKBEFORE +#define DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER DISPID_A_PAGEBREAKAFTER +#define DISPID_IHTMLRULESTYLE_CSSTEXT DISPID_A_STYLETEXT +#define DISPID_IHTMLRULESTYLE_CURSOR DISPID_A_CURSOR +#define DISPID_IHTMLRULESTYLE_CLIP DISPID_A_CLIP +#define DISPID_IHTMLRULESTYLE_FILTER DISPID_A_FILTER +#define DISPID_IHTMLRULESTYLE_TOP STDPROPID_XOBJ_TOP +#define DISPID_IHTMLRULESTYLE_LEFT STDPROPID_XOBJ_LEFT +#define DISPID_IHTMLRULESTYLE_WIDTH STDPROPID_XOBJ_WIDTH +#define DISPID_IHTMLRULESTYLE_HEIGHT STDPROPID_XOBJ_HEIGHT +#define DISPID_IHTMLRULESTYLE_TEXTALIGN STDPROPID_XOBJ_BLOCKALIGN +#define DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR DISPID_BACKCOLOR + +/* IHTMLDOMNode */ +#define DISPID_IHTMLDOMNODE_NODETYPE DISPID_ELEMENT+46 +#define DISPID_IHTMLDOMNODE_PARENTNODE DISPID_ELEMENT+47 +#define DISPID_IHTMLDOMNODE_HASCHILDNODES DISPID_ELEMENT+48 +#define DISPID_IHTMLDOMNODE_CHILDNODES DISPID_ELEMENT+49 +#define DISPID_IHTMLDOMNODE_ATTRIBUTES DISPID_ELEMENT+50 +#define DISPID_IHTMLDOMNODE_INSERTBEFORE DISPID_ELEMENT+51 +#define DISPID_IHTMLDOMNODE_REMOVECHILD DISPID_ELEMENT+52 +#define DISPID_IHTMLDOMNODE_REPLACECHILD DISPID_ELEMENT+53 +#define DISPID_IHTMLDOMNODE_CLONENODE DISPID_ELEMENT+61 +#define DISPID_IHTMLDOMNODE_REMOVENODE DISPID_ELEMENT+66 +#define DISPID_IHTMLDOMNODE_SWAPNODE DISPID_ELEMENT+68 +#define DISPID_IHTMLDOMNODE_REPLACENODE DISPID_ELEMENT+67 +#define DISPID_IHTMLDOMNODE_APPENDCHILD DISPID_ELEMENT+73 +#define DISPID_IHTMLDOMNODE_NODENAME DISPID_ELEMENT+74 +#define DISPID_IHTMLDOMNODE_NODEVALUE DISPID_ELEMENT+75 +#define DISPID_IHTMLDOMNODE_FIRSTCHILD DISPID_ELEMENT+76 +#define DISPID_IHTMLDOMNODE_LASTCHILD DISPID_ELEMENT+77 +#define DISPID_IHTMLDOMNODE_PREVIOUSSIBLING DISPID_ELEMENT+78 +#define DISPID_IHTMLDOMNODE_NEXTSIBLING DISPID_ELEMENT+79 + +/* IHTMLDOMNode2 */ +#define DISPID_IHTMLDOMNODE2_OWNERDOCUMENT DISPID_ELEMENT+113 + +/* IHTMLRenderStyle */ +#define DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE DISPID_A_TEXTLINETHROUGHSTYLE +#define DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE DISPID_A_TEXTUNDERLINESTYLE +#define DISPID_IHTMLRENDERSTYLE_TEXTEFFECT DISPID_A_TEXTEFFECT +#define DISPID_IHTMLRENDERSTYLE_TEXTCOLOR DISPID_A_TEXTCOLOR +#define DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR DISPID_A_TEXTBACKGROUNDCOLOR +#define DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR DISPID_A_TEXTDECORATIONCOLOR +#define DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY DISPID_A_RENDERINGPRIORITY +#define DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION DISPID_A_DEFAULTTEXTSELECTION +#define DISPID_IHTMLRENDERSTYLE_TEXTDECORATION DISPID_A_STYLETEXTDECORATION + +/* IHTMLDOMImplementation */ +#define DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE DISPID_DOMIMPLEMENTATION + +/* IHTMLDOMAttribute */ +#define DISPID_IHTMLDOMATTRIBUTE_NODENAME DISPID_DOMATTRIBUTE +#define DISPID_IHTMLDOMATTRIBUTE_NODEVALUE DISPID_DOMATTRIBUTE+2 +#define DISPID_IHTMLDOMATTRIBUTE_SPECIFIED DISPID_DOMATTRIBUTE+1 + +/* IHTMLBodyElement */ +#define DISPID_IHTMLBODYELEMENT_BACKGROUND DISPID_A_BACKGROUNDIMAGE +#define DISPID_IHTMLBODYELEMENT_BGPROPERTIES DISPID_A_BACKGROUNDATTACHMENT +#define DISPID_IHTMLBODYELEMENT_LEFTMARGIN DISPID_A_MARGINLEFT +#define DISPID_IHTMLBODYELEMENT_TOPMARGIN DISPID_A_MARGINTOP +#define DISPID_IHTMLBODYELEMENT_RIGHTMARGIN DISPID_A_MARGINRIGHT +#define DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN DISPID_A_MARGINBOTTOM +#define DISPID_IHTMLBODYELEMENT_NOWRAP DISPID_A_NOWRAP +#define DISPID_IHTMLBODYELEMENT_BGCOLOR DISPID_BACKCOLOR +#define DISPID_IHTMLBODYELEMENT_TEXT DISPID_A_COLOR +#define DISPID_IHTMLBODYELEMENT_LINK DISPID_BODY+10 +#define DISPID_IHTMLBODYELEMENT_VLINK DISPID_BODY+12 +#define DISPID_IHTMLBODYELEMENT_ALINK DISPID_BODY+11 +#define DISPID_IHTMLBODYELEMENT_ONLOAD DISPID_EVPROP_ONLOAD +#define DISPID_IHTMLBODYELEMENT_ONUNLOAD DISPID_EVPROP_ONUNLOAD +#define DISPID_IHTMLBODYELEMENT_SCROLL DISPID_A_SCROLL +#define DISPID_IHTMLBODYELEMENT_ONSELECT DISPID_EVPROP_ONSELECT +#define DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD DISPID_EVPROP_ONBEFOREUNLOAD +#define DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE DISPID_BODY+13 + +/* IHTMLBodyElement2 */ +#define DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT DISPID_EVPROP_ONBEFOREPRINT +#define DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT DISPID_EVPROP_ONAFTERPRINT + +/* IHTMLTxtRange */ +#define DISPID_IHTMLTXTRANGE_HTMLTEXT DISPID_RANGE+3 +#define DISPID_IHTMLTXTRANGE_TEXT DISPID_RANGE+4 +#define DISPID_IHTMLTXTRANGE_PARENTELEMENT DISPID_RANGE+6 +#define DISPID_IHTMLTXTRANGE_DUPLICATE DISPID_RANGE+8 +#define DISPID_IHTMLTXTRANGE_INRANGE DISPID_RANGE+10 +#define DISPID_IHTMLTXTRANGE_ISEQUAL DISPID_RANGE+11 +#define DISPID_IHTMLTXTRANGE_SCROLLINTOVIEW DISPID_RANGE+12 +#define DISPID_IHTMLTXTRANGE_COLLAPSE DISPID_RANGE+13 +#define DISPID_IHTMLTXTRANGE_EXPAND DISPID_RANGE+14 +#define DISPID_IHTMLTXTRANGE_MOVE DISPID_RANGE+15 +#define DISPID_IHTMLTXTRANGE_MOVESTART DISPID_RANGE+16 +#define DISPID_IHTMLTXTRANGE_MOVEEND DISPID_RANGE+17 +#define DISPID_IHTMLTXTRANGE_SELECT DISPID_RANGE+24 +#define DISPID_IHTMLTXTRANGE_PASTEHTML DISPID_RANGE+26 +#define DISPID_IHTMLTXTRANGE_MOVETOELEMENTTEXT DISPID_RANGE+1 +#define DISPID_IHTMLTXTRANGE_SETENDPOINT DISPID_RANGE+25 +#define DISPID_IHTMLTXTRANGE_COMPAREENDPOINTS DISPID_RANGE+18 +#define DISPID_IHTMLTXTRANGE_FINDTEXT DISPID_RANGE+19 +#define DISPID_IHTMLTXTRANGE_MOVETOPOINT DISPID_RANGE+20 +#define DISPID_IHTMLTXTRANGE_GETBOOKMARK DISPID_RANGE+21 +#define DISPID_IHTMLTXTRANGE_MOVETOBOOKMARK DISPID_RANGE+9 +#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDSUPPORTED DISPID_RANGE+27 +#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDENABLED DISPID_RANGE+28 +#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDSTATE DISPID_RANGE+29 +#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDINDETERM DISPID_RANGE+30 +#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDTEXT DISPID_RANGE+31 +#define DISPID_IHTMLTXTRANGE_QUERYCOMMANDVALUE DISPID_RANGE+32 +#define DISPID_IHTMLTXTRANGE_EXECCOMMAND DISPID_RANGE+33 +#define DISPID_IHTMLTXTRANGE_EXECCOMMANDSHOWHELP DISPID_RANGE+34 + +/* IHTMLTextAreaElement */ +#define DISPID_IHTMLTEXTAREAELEMENT_TYPE DISPID_INPUT +#define DISPID_IHTMLTEXTAREAELEMENT_VALUE DISPID_A_VALUE +#define DISPID_IHTMLTEXTAREAELEMENT_NAME STDPROPID_XOBJ_NAME +#define DISPID_IHTMLTEXTAREAELEMENT_STATUS DISPID_INPUT+1 +#define DISPID_IHTMLTEXTAREAELEMENT_DISABLED STDPROPID_XOBJ_DISABLED +#define DISPID_IHTMLTEXTAREAELEMENT_FORM DISPID_SITE+4 +#define DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE DISPID_DEFAULTVALUE +#define DISPID_IHTMLTEXTAREAELEMENT_SELECT DISPID_RICHTEXT+5 +#define DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE DISPID_EVPROP_ONCHANGE +#define DISPID_IHTMLTEXTAREAELEMENT_ONSELECT DISPID_EVPROP_ONSELECT +#define DISPID_IHTMLTEXTAREAELEMENT_READONLY DISPID_RICHTEXT+4 +#define DISPID_IHTMLTEXTAREAELEMENT_ROWS DISPID_RICHTEXT+1 +#define DISPID_IHTMLTEXTAREAELEMENT_COLS DISPID_RICHTEXT+2 +#define DISPID_IHTMLTEXTAREAELEMENT_WRAP DISPID_RICHTEXT+3 +#define DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE DISPID_RICHTEXT+6 + +/* IHTMLInputElement */ +#define DISPID_IHTMLINPUTELEMENT_TYPE DISPID_INPUT +#define DISPID_IHTMLINPUTELEMENT_VALUE DISPID_A_VALUE +#define DISPID_IHTMLINPUTELEMENT_NAME STDPROPID_XOBJ_NAME +#define DISPID_IHTMLINPUTELEMENT_STATUS DISPID_INPUT+1 +#define DISPID_IHTMLINPUTELEMENT_DISABLED STDPROPID_XOBJ_DISABLED +#define DISPID_IHTMLINPUTELEMENT_FORM DISPID_SITE+4 +#define DISPID_IHTMLINPUTELEMENT_SIZE DISPID_INPUT+2 +#define DISPID_IHTMLINPUTELEMENT_MAXLENGTH DISPID_INPUT+3 +#define DISPID_IHTMLINPUTELEMENT_SELECT DISPID_INPUT+4 +#define DISPID_IHTMLINPUTELEMENT_ONCHANGE DISPID_EVPROP_ONCHANGE +#define DISPID_IHTMLINPUTELEMENT_ONSELECT DISPID_EVPROP_ONSELECT +#define DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE DISPID_DEFAULTVALUE +#define DISPID_IHTMLINPUTELEMENT_READONLY DISPID_INPUT+5 +#define DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE DISPID_INPUT+6 +#define DISPID_IHTMLINPUTELEMENT_INDETERMINATE DISPID_INPUT+7 +#define DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED DISPID_INPUT+8 +#define DISPID_IHTMLINPUTELEMENT_CHECKED DISPID_INPUT+9 +#define DISPID_IHTMLINPUTELEMENT_BORDER DISPID_INPUT+12 +#define DISPID_IHTMLINPUTELEMENT_VSPACE DISPID_INPUT+13 +#define DISPID_IHTMLINPUTELEMENT_HSPACE DISPID_INPUT+14 +#define DISPID_IHTMLINPUTELEMENT_ALT DISPID_INPUT+10 +#define DISPID_IHTMLINPUTELEMENT_SRC DISPID_INPUT+11 +#define DISPID_IHTMLINPUTELEMENT_LOWSRC DISPID_INPUT+15 +#define DISPID_IHTMLINPUTELEMENT_VRML DISPID_INPUT+16 +#define DISPID_IHTMLINPUTELEMENT_DYNSRC DISPID_INPUT+17 +#define DISPID_IHTMLINPUTELEMENT_READYSTATE DISPID_A_READYSTATE +#define DISPID_IHTMLINPUTELEMENT_COMPLETE DISPID_INPUT+18 +#define DISPID_IHTMLINPUTELEMENT_LOOP DISPID_INPUT+19 +#define DISPID_IHTMLINPUTELEMENT_ALIGN STDPROPID_XOBJ_CONTROLALIGN +#define DISPID_IHTMLINPUTELEMENT_ONLOAD DISPID_EVPROP_ONLOAD +#define DISPID_IHTMLINPUTELEMENT_ONERROR DISPID_EVPROP_ONERROR +#define DISPID_IHTMLINPUTELEMENT_ONABORT DISPID_EVPROP_ONABORT +#define DISPID_IHTMLINPUTELEMENT_WIDTH STDPROPID_XOBJ_WIDTH +#define DISPID_IHTMLINPUTELEMENT_HEIGHT STDPROPID_XOBJ_HEIGHT +#define DISPID_IHTMLINPUTELEMENT_START DISPID_INPUT+20 + +/* IHTMLSelectElement */ +#define DISPID_IHTMLSELECTELEMENT_SIZE DISPID_SELECT+2 +#define DISPID_IHTMLSELECTELEMENT_MULTIPLE DISPID_SELECT+3 +#define DISPID_IHTMLSELECTELEMENT_NAME STDPROPID_XOBJ_NAME +#define DISPID_IHTMLSELECTELEMENT_OPTIONS DISPID_SELECT+5 +#define DISPID_IHTMLSELECTELEMENT_ONCHANGE DISPID_EVPROP_ONCHANGE +#define DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX DISPID_SELECT+10 +#define DISPID_IHTMLSELECTELEMENT_TYPE DISPID_SELECT+12 +#define DISPID_IHTMLSELECTELEMENT_VALUE DISPID_SELECT+11 +#define DISPID_IHTMLSELECTELEMENT_DISABLED STDPROPID_XOBJ_DISABLED +#define DISPID_IHTMLSELECTELEMENT_FORM DISPID_SITE+4 +#define DISPID_IHTMLSELECTELEMENT_ADD DISPID_COLLECTION+3 +#define DISPID_IHTMLSELECTELEMENT_REMOVE DISPID_COLLECTION+4 +#define DISPID_IHTMLSELECTELEMENT_LENGTH DISPID_COLLECTION +#define DISPID_IHTMLSELECTELEMENT__NEWENUM DISPID_NEWENUM +#define DISPID_IHTMLSELECTELEMENT_ITEM DISPID_VALUE +#define DISPID_IHTMLSELECTELEMENT_TAGS DISPID_COLLECTION+2 + +/* IHTMLRect */ +#define DISPID_IHTMLRECT_LEFT DISPID_OMRECT+1 +#define DISPID_IHTMLRECT_TOP DISPID_OMRECT+2 +#define DISPID_IHTMLRECT_RIGHT DISPID_OMRECT+3 +#define DISPID_IHTMLRECT_BOTTOM DISPID_OMRECT+4 + +/* IHTMLRectCollection */ +#define DISPID_IHTMLRECTCOLLECTION_LENGTH DISPID_COLLECTION +#define DISPID_IHTMLRECTCOLLECTION__NEWENUM DISPID_NEWENUM +#define DISPID_IHTMLRECTCOLLECTION_ITEM DISPID_VALUE + +/* IHTMLCurrentStyle */ +#define DISPID_IHTMLCURRENTSTYLE_POSITION DISPID_A_POSITION +#define DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT DISPID_A_FLOAT +#define DISPID_IHTMLCURRENTSTYLE_COLOR DISPID_A_COLOR +#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR DISPID_BACKCOLOR +#define DISPID_IHTMLCURRENTSTYLE_FONTFAMILY DISPID_A_FONTFACE +#define DISPID_IHTMLCURRENTSTYLE_FONTSTYLE DISPID_A_FONTSTYLE +#define DISPID_IHTMLCURRENTSTYLE_FONTVARIANT DISPID_A_FONTVARIANT +#define DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT DISPID_A_FONTWEIGHT +#define DISPID_IHTMLCURRENTSTYLE_FONTSIZE DISPID_A_FONTSIZE +#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE DISPID_A_BACKGROUNDIMAGE +#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX DISPID_A_BACKGROUNDPOSX +#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY DISPID_A_BACKGROUNDPOSY +#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT DISPID_A_BACKGROUNDREPEAT +#define DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR DISPID_A_BORDERLEFTCOLOR +#define DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR DISPID_A_BORDERTOPCOLOR +#define DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR DISPID_A_BORDERRIGHTCOLOR +#define DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR DISPID_A_BORDERBOTTOMCOLOR +#define DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE DISPID_A_BORDERTOPSTYLE +#define DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE DISPID_A_BORDERRIGHTSTYLE +#define DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE DISPID_A_BORDERBOTTOMSTYLE +#define DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE DISPID_A_BORDERLEFTSTYLE +#define DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH DISPID_A_BORDERTOPWIDTH +#define DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH DISPID_A_BORDERRIGHTWIDTH +#define DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH DISPID_A_BORDERBOTTOMWIDTH +#define DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH DISPID_A_BORDERLEFTWIDTH +#define DISPID_IHTMLCURRENTSTYLE_LEFT STDPROPID_XOBJ_LEFT +#define DISPID_IHTMLCURRENTSTYLE_TOP STDPROPID_XOBJ_TOP +#define DISPID_IHTMLCURRENTSTYLE_WIDTH STDPROPID_XOBJ_WIDTH +#define DISPID_IHTMLCURRENTSTYLE_HEIGHT STDPROPID_XOBJ_HEIGHT +#define DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT DISPID_A_PADDINGLEFT +#define DISPID_IHTMLCURRENTSTYLE_PADDINGTOP DISPID_A_PADDINGTOP +#define DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT DISPID_A_PADDINGRIGHT +#define DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM DISPID_A_PADDINGBOTTOM +#define DISPID_IHTMLCURRENTSTYLE_TEXTALIGN STDPROPID_XOBJ_BLOCKALIGN +#define DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION DISPID_A_TEXTDECORATION +#define DISPID_IHTMLCURRENTSTYLE_DISPLAY DISPID_A_DISPLAY +#define DISPID_IHTMLCURRENTSTYLE_VISIBILITY DISPID_A_VISIBILITY +#define DISPID_IHTMLCURRENTSTYLE_ZINDEX DISPID_A_ZINDEX +#define DISPID_IHTMLCURRENTSTYLE_LETTERSPACING DISPID_A_LETTERSPACING +#define DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT DISPID_A_LINEHEIGHT +#define DISPID_IHTMLCURRENTSTYLE_TEXTINDENT DISPID_A_TEXTINDENT +#define DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN DISPID_A_VERTICALALIGN +#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT DISPID_A_BACKGROUNDATTACHMENT +#define DISPID_IHTMLCURRENTSTYLE_MARGINTOP DISPID_A_MARGINTOP +#define DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT DISPID_A_MARGINRIGHT +#define DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM DISPID_A_MARGINBOTTOM +#define DISPID_IHTMLCURRENTSTYLE_MARGINLEFT DISPID_A_MARGINLEFT +#define DISPID_IHTMLCURRENTSTYLE_CLEAR DISPID_A_CLEAR +#define DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE DISPID_A_LISTSTYLETYPE +#define DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION DISPID_A_LISTSTYLEPOSITION +#define DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE DISPID_A_LISTSTYLEIMAGE +#define DISPID_IHTMLCURRENTSTYLE_CLIPTOP DISPID_A_CLIPRECTTOP +#define DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT DISPID_A_CLIPRECTRIGHT +#define DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM DISPID_A_CLIPRECTBOTTOM +#define DISPID_IHTMLCURRENTSTYLE_CLIPLEFT DISPID_A_CLIPRECTLEFT +#define DISPID_IHTMLCURRENTSTYLE_OVERFLOW DISPID_A_OVERFLOW +#define DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE DISPID_A_PAGEBREAKBEFORE +#define DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER DISPID_A_PAGEBREAKAFTER +#define DISPID_IHTMLCURRENTSTYLE_CURSOR DISPID_A_CURSOR +#define DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT DISPID_A_TABLELAYOUT +#define DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE DISPID_A_BORDERCOLLAPSE +#define DISPID_IHTMLCURRENTSTYLE_DIRECTION DISPID_A_DIRECTION +#define DISPID_IHTMLCURRENTSTYLE_BEHAVIOR DISPID_A_BEHAVIOR +#define DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE DISPID_HTMLOBJECT+2 +#define DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI DISPID_A_UNICODEBIDI +#define DISPID_IHTMLCURRENTSTYLE_RIGHT STDPROPID_XOBJ_RIGHT +#define DISPID_IHTMLCURRENTSTYLE_BOTTOM STDPROPID_XOBJ_BOTTOM +#define DISPID_IHTMLCURRENTSTYLE_IMEMODE DISPID_A_IMEMODE +#define DISPID_IHTMLCURRENTSTYLE_RUBYALIGN DISPID_A_RUBYALIGN +#define DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION DISPID_A_RUBYPOSITION +#define DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG DISPID_A_RUBYOVERHANG +#define DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE DISPID_A_TEXTAUTOSPACE +#define DISPID_IHTMLCURRENTSTYLE_LINEBREAK DISPID_A_LINEBREAK +#define DISPID_IHTMLCURRENTSTYLE_WORDBREAK DISPID_A_WORDBREAK +#define DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY DISPID_A_TEXTJUSTIFY +#define DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM DISPID_A_TEXTJUSTIFYTRIM +#define DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA DISPID_A_TEXTKASHIDA +#define DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION DISPID_A_DIR +#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR DISPID_A_LAYOUTGRIDCHAR +#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE DISPID_A_LAYOUTGRIDLINE +#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE DISPID_A_LAYOUTGRIDMODE +#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE DISPID_A_LAYOUTGRIDTYPE +#define DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE DISPID_A_BORDERSTYLE +#define DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR DISPID_A_BORDERCOLOR +#define DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH DISPID_A_BORDERWIDTH +#define DISPID_IHTMLCURRENTSTYLE_PADDING DISPID_A_PADDING +#define DISPID_IHTMLCURRENTSTYLE_MARGIN DISPID_A_MARGIN +#define DISPID_IHTMLCURRENTSTYLE_ACCELERATOR DISPID_A_ACCELERATOR +#define DISPID_IHTMLCURRENTSTYLE_OVERFLOWX DISPID_A_OVERFLOWX +#define DISPID_IHTMLCURRENTSTYLE_OVERFLOWY DISPID_A_OVERFLOWY +#define DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM DISPID_A_TEXTTRANSFORM + +/* IHTMLTextContainer */ +#define DISPID_IHTMLTEXTCONTAINER_CREATECONTROLRANGE DISPID_TEXTSITE+1 +#define DISPID_IHTMLTEXTCONTAINER_SCROLLHEIGHT DISPID_TEXTSITE+2 +#define DISPID_IHTMLTEXTCONTAINER_SCROLLWIDTH DISPID_TEXTSITE+3 +#define DISPID_IHTMLTEXTCONTAINER_SCROLLTOP DISPID_TEXTSITE+4 +#define DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT DISPID_TEXTSITE+5 +#define DISPID_IHTMLTEXTCONTAINER_ONSCROLL DISPID_EVPROP_ONSCROLL + +/* IHTMLFrameBase2 */ +#define DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW DISPID_FRAMESITE+9 +#define DISPID_IHTMLFRAMEBASE2_ONLOAD DISPID_EVPROP_ONLOAD +#define DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE DISPID_EVPROP_ONREADYSTATECHANGE +#define DISPID_IHTMLFRAMEBASE2_READYSTATE DISPID_A_READYSTATE +#define DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY DISPID_A_ALLOWTRANSPARENCY + +#endif /* __MSHTMDID_H__ */ diff --git a/reactos/include/psdk/mshtmhst.h b/reactos/include/psdk/mshtmhst.h deleted file mode 100644 index 807b116abf0..00000000000 --- a/reactos/include/psdk/mshtmhst.h +++ /dev/null @@ -1,977 +0,0 @@ -/*** Autogenerated by WIDL 0.9.2 from mshtmhst.idl - Do not edit ***/ -#include -#include - -#ifndef __WIDL_MSHTMHST_H -#define __WIDL_MSHTMHST_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include -#include -#include -#define CONTEXT_MENU_DEFAULT 0 -#define CONTEXT_MENU_IMAGE 1 -#define CONTEXT_MENU_CONTROL 2 -#define CONTEXT_MENU_TABLE 3 -#define CONTEXT_MENU_TEXTSELECT 4 -#define CONTEXT_MENU_ANCHOR 5 -#define CONTEXT_MENU_UNKNOWN 6 -#define CONTEXT_MENU_IMGDYNSRC 7 -#define CONTEXT_MENU_IMGART 8 -#define CONTEXT_MENU_DEBUG 9 -#define CONTEXT_MENU_VSCROLL 10 -#define CONTEXT_MENU_HSCROLL 11 -#define MENUEXT_SHOWDIALOG 1 -#define DOCHOSTUIFLAG_BROWSER (DOCHOSTUIFLAG_DISABLE_HELP_MENU|DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE) -#define HTMLDLG_NOUI 0x0010 -#define HTMLDLG_MODAL 0x0020 -#define HTMLDLG_MODELESS 0x0040 -#define HTMLDLG_PRINT_TEMPLATE 0x0080 -#define HTMLDLG_VERIFY 0x0100 -#define PRINT_DONTBOTHERUSER 0x0001 -#define PRINT_WAITFORCOMPLETION 0x0002 -#ifndef __IHTMLWindow2_FWD_DEFINED__ -#define __IHTMLWindow2_FWD_DEFINED__ -typedef interface IHTMLWindow2 IHTMLWindow2; -#endif -#ifndef __IHostDialogHelper_FWD_DEFINED__ -#define __IHostDialogHelper_FWD_DEFINED__ -typedef struct IHostDialogHelper IHostDialogHelper; -#endif - -/***************************************************************************** - * IHostDialogHelper interface - */ -#ifndef __IHostDialogHelper_INTERFACE_DEFINED__ -#define __IHostDialogHelper_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IHostDialogHelper, 0x53dec138, 0xa51e, 0x11d2, 0x86,0x1e, 0x00,0xc0,0x4f,0xa3,0x5c,0x89); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IHostDialogHelper : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE ShowHTMLDialog( - HWND hwndParent, - IMoniker* pMk, - VARIANT* pvarArgIn, - WCHAR* pchOptions, - VARIANT* pvarArgOut, - IUnknown* punkHost) = 0; - -}; -#else -typedef struct IHostDialogHelperVtbl IHostDialogHelperVtbl; -struct IHostDialogHelper { - const IHostDialogHelperVtbl* lpVtbl; -}; -struct IHostDialogHelperVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IHostDialogHelper* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IHostDialogHelper* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IHostDialogHelper* This); - - /*** IHostDialogHelper methods ***/ - HRESULT (STDMETHODCALLTYPE *ShowHTMLDialog)( - IHostDialogHelper* This, - HWND hwndParent, - IMoniker* pMk, - VARIANT* pvarArgIn, - WCHAR* pchOptions, - VARIANT* pvarArgOut, - IUnknown* punkHost); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IHostDialogHelper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IHostDialogHelper_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IHostDialogHelper_Release(p) (p)->lpVtbl->Release(p) -/*** IHostDialogHelper methods ***/ -#define IHostDialogHelper_ShowHTMLDialog(p,a,b,c,d,e,f) (p)->lpVtbl->ShowHTMLDialog(p,a,b,c,d,e,f) -#endif - -#endif - -HRESULT CALLBACK IHostDialogHelper_ShowHTMLDialog_Proxy( - IHostDialogHelper* This, - HWND hwndParent, - IMoniker* pMk, - VARIANT* pvarArgIn, - WCHAR* pchOptions, - VARIANT* pvarArgOut, - IUnknown* punkHost); -void __RPC_STUB IHostDialogHelper_ShowHTMLDialog_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IHostDialogHelper_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * HostDialogHelper coclass - */ - -DEFINE_GUID(CLSID_HostDialogHelper, 0x429af92c, 0xa51f, 0x11d2, 0x86,0x1e, 0x00,0xc0,0x4f,0xa3,0x5c,0x89); - -typedef enum tagDOCHOSTUIDBLCLK { - DOCHOSTUIDBLCLK_DEFAULT = 0, - DOCHOSTUIDBLCLK_SHOWPROPERTIES = 1, - DOCHOSTUIDBLCLK_SHOWCODE = 2 -} DOCHOSTUIDBLCLK; -typedef enum tagDOCHOSTUIFLAG { - DOCHOSTUIFLAG_DIALOG = 0x1, - DOCHOSTUIFLAG_DISABLE_HELP_MENU = 0x2, - DOCHOSTUIFLAG_NO3DBORDER = 0x4, - DOCHOSTUIFLAG_SCROLL_NO = 0x8, - DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 0x10, - DOCHOSTUIFLAG_OPENNEWWIN = 0x20, - DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 0x40, - DOCHOSTUIFLAG_FLAT_SCROLLBAR = 0x80, - DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 0x100, - DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 0x200, - DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY = 0x400, - DOCHOSTUIFLAG_CODEPAGELINKEDFONTS = 0x800, - DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 = 0x1000, - DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 = 0x2000, - DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE = 0x4000, - DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION = 0x10000, - DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION = 0x20000, - DOCHOSTUIFLAG_THEME = 0x40000, - DOCHOSTUIFLAG_NOTHEME = 0x80000, - DOCHOSTUIFLAG_NOPICS = 0x100000, - DOCHOSTUIFLAG_NO3DOUTERBORDER = 0x200000, - DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP = 0x400000, - DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK = 0x800000, - DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL = 0x1000000 -} DOCHOSTUIFLAG; -#ifndef __IDocHostUIHandler_FWD_DEFINED__ -#define __IDocHostUIHandler_FWD_DEFINED__ -typedef struct IDocHostUIHandler IDocHostUIHandler; -#endif - -typedef struct _DOCHOSTUIINFO { - ULONG cbSize; - DWORD dwFlags; - DWORD dwDoubleClick; - OLECHAR *pchHostCss; - OLECHAR *pchHostNS; -} DOCHOSTUIINFO; -/***************************************************************************** - * IDocHostUIHandler interface - */ -#ifndef __IDocHostUIHandler_INTERFACE_DEFINED__ -#define __IDocHostUIHandler_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IDocHostUIHandler, 0xbd3f23c0, 0xd43e, 0x11cf, 0x89,0x3b, 0x00,0xaa,0x00,0xbd,0xce,0x1a); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IDocHostUIHandler : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE ShowContextMenu( - DWORD dwID, - POINT* ppt, - IUnknown* pcmdtReserved, - IDispatch* pdispReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHostInfo( - DOCHOSTUIINFO* pInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE ShowUI( - DWORD dwID, - IOleInPlaceActiveObject* pActiveObject, - IOleCommandTarget* pCommandTarget, - IOleInPlaceFrame* pFrame, - IOleInPlaceUIWindow* pDoc) = 0; - - virtual HRESULT STDMETHODCALLTYPE HideUI( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE UpdateUI( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnableModeless( - BOOL fEnable) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate( - BOOL fActivate) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate( - BOOL fActivate) = 0; - - virtual HRESULT STDMETHODCALLTYPE ResizeBorder( - LPCRECT prcBorder, - IOleInPlaceUIWindow* pUIWindow, - BOOL fRameWindow) = 0; - - virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator( - LPMSG lpMsg, - const GUID* pguidCmdGroup, - DWORD nCmdID) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOptionKeyPath( - LPOLESTR* pchKey, - DWORD dw) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDropTarget( - IDropTarget* pDropTarget, - IDropTarget** ppDropTarget) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetExternal( - IDispatch** ppDispatch) = 0; - - virtual HRESULT STDMETHODCALLTYPE TranslateUrl( - DWORD dwTranslate, - OLECHAR* pchURLIn, - OLECHAR** ppchURLOut) = 0; - - virtual HRESULT STDMETHODCALLTYPE FilterDataObject( - IDataObject* pDO, - IDataObject** ppDORet) = 0; - -}; -#else -typedef struct IDocHostUIHandlerVtbl IDocHostUIHandlerVtbl; -struct IDocHostUIHandler { - const IDocHostUIHandlerVtbl* lpVtbl; -}; -struct IDocHostUIHandlerVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IDocHostUIHandler* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IDocHostUIHandler* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IDocHostUIHandler* This); - - /*** IDocHostUIHandler methods ***/ - HRESULT (STDMETHODCALLTYPE *ShowContextMenu)( - IDocHostUIHandler* This, - DWORD dwID, - POINT* ppt, - IUnknown* pcmdtReserved, - IDispatch* pdispReserved); - - HRESULT (STDMETHODCALLTYPE *GetHostInfo)( - IDocHostUIHandler* This, - DOCHOSTUIINFO* pInfo); - - HRESULT (STDMETHODCALLTYPE *ShowUI)( - IDocHostUIHandler* This, - DWORD dwID, - IOleInPlaceActiveObject* pActiveObject, - IOleCommandTarget* pCommandTarget, - IOleInPlaceFrame* pFrame, - IOleInPlaceUIWindow* pDoc); - - HRESULT (STDMETHODCALLTYPE *HideUI)( - IDocHostUIHandler* This); - - HRESULT (STDMETHODCALLTYPE *UpdateUI)( - IDocHostUIHandler* This); - - HRESULT (STDMETHODCALLTYPE *EnableModeless)( - IDocHostUIHandler* This, - BOOL fEnable); - - HRESULT (STDMETHODCALLTYPE *OnDocWindowActivate)( - IDocHostUIHandler* This, - BOOL fActivate); - - HRESULT (STDMETHODCALLTYPE *OnFrameWindowActivate)( - IDocHostUIHandler* This, - BOOL fActivate); - - HRESULT (STDMETHODCALLTYPE *ResizeBorder)( - IDocHostUIHandler* This, - LPCRECT prcBorder, - IOleInPlaceUIWindow* pUIWindow, - BOOL fRameWindow); - - HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)( - IDocHostUIHandler* This, - LPMSG lpMsg, - const GUID* pguidCmdGroup, - DWORD nCmdID); - - HRESULT (STDMETHODCALLTYPE *GetOptionKeyPath)( - IDocHostUIHandler* This, - LPOLESTR* pchKey, - DWORD dw); - - HRESULT (STDMETHODCALLTYPE *GetDropTarget)( - IDocHostUIHandler* This, - IDropTarget* pDropTarget, - IDropTarget** ppDropTarget); - - HRESULT (STDMETHODCALLTYPE *GetExternal)( - IDocHostUIHandler* This, - IDispatch** ppDispatch); - - HRESULT (STDMETHODCALLTYPE *TranslateUrl)( - IDocHostUIHandler* This, - DWORD dwTranslate, - OLECHAR* pchURLIn, - OLECHAR** ppchURLOut); - - HRESULT (STDMETHODCALLTYPE *FilterDataObject)( - IDocHostUIHandler* This, - IDataObject* pDO, - IDataObject** ppDORet); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IDocHostUIHandler_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDocHostUIHandler_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDocHostUIHandler_Release(p) (p)->lpVtbl->Release(p) -/*** IDocHostUIHandler methods ***/ -#define IDocHostUIHandler_ShowContextMenu(p,a,b,c,d) (p)->lpVtbl->ShowContextMenu(p,a,b,c,d) -#define IDocHostUIHandler_GetHostInfo(p,a) (p)->lpVtbl->GetHostInfo(p,a) -#define IDocHostUIHandler_ShowUI(p,a,b,c,d,e) (p)->lpVtbl->ShowUI(p,a,b,c,d,e) -#define IDocHostUIHandler_HideUI(p) (p)->lpVtbl->HideUI(p) -#define IDocHostUIHandler_UpdateUI(p) (p)->lpVtbl->UpdateUI(p) -#define IDocHostUIHandler_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a) -#define IDocHostUIHandler_OnDocWindowActivate(p,a) (p)->lpVtbl->OnDocWindowActivate(p,a) -#define IDocHostUIHandler_OnFrameWindowActivate(p,a) (p)->lpVtbl->OnFrameWindowActivate(p,a) -#define IDocHostUIHandler_ResizeBorder(p,a,b,c) (p)->lpVtbl->ResizeBorder(p,a,b,c) -#define IDocHostUIHandler_TranslateAccelerator(p,a,b,c) (p)->lpVtbl->TranslateAccelerator(p,a,b,c) -#define IDocHostUIHandler_GetOptionKeyPath(p,a,b) (p)->lpVtbl->GetOptionKeyPath(p,a,b) -#define IDocHostUIHandler_GetDropTarget(p,a,b) (p)->lpVtbl->GetDropTarget(p,a,b) -#define IDocHostUIHandler_GetExternal(p,a) (p)->lpVtbl->GetExternal(p,a) -#define IDocHostUIHandler_TranslateUrl(p,a,b,c) (p)->lpVtbl->TranslateUrl(p,a,b,c) -#define IDocHostUIHandler_FilterDataObject(p,a,b) (p)->lpVtbl->FilterDataObject(p,a,b) -#endif - -#endif - -HRESULT CALLBACK IDocHostUIHandler_ShowContextMenu_Proxy( - IDocHostUIHandler* This, - DWORD dwID, - POINT* ppt, - IUnknown* pcmdtReserved, - IDispatch* pdispReserved); -void __RPC_STUB IDocHostUIHandler_ShowContextMenu_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_GetHostInfo_Proxy( - IDocHostUIHandler* This, - DOCHOSTUIINFO* pInfo); -void __RPC_STUB IDocHostUIHandler_GetHostInfo_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_ShowUI_Proxy( - IDocHostUIHandler* This, - DWORD dwID, - IOleInPlaceActiveObject* pActiveObject, - IOleCommandTarget* pCommandTarget, - IOleInPlaceFrame* pFrame, - IOleInPlaceUIWindow* pDoc); -void __RPC_STUB IDocHostUIHandler_ShowUI_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_HideUI_Proxy( - IDocHostUIHandler* This); -void __RPC_STUB IDocHostUIHandler_HideUI_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_UpdateUI_Proxy( - IDocHostUIHandler* This); -void __RPC_STUB IDocHostUIHandler_UpdateUI_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_EnableModeless_Proxy( - IDocHostUIHandler* This, - BOOL fEnable); -void __RPC_STUB IDocHostUIHandler_EnableModeless_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_OnDocWindowActivate_Proxy( - IDocHostUIHandler* This, - BOOL fActivate); -void __RPC_STUB IDocHostUIHandler_OnDocWindowActivate_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_OnFrameWindowActivate_Proxy( - IDocHostUIHandler* This, - BOOL fActivate); -void __RPC_STUB IDocHostUIHandler_OnFrameWindowActivate_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_ResizeBorder_Proxy( - IDocHostUIHandler* This, - LPCRECT prcBorder, - IOleInPlaceUIWindow* pUIWindow, - BOOL fRameWindow); -void __RPC_STUB IDocHostUIHandler_ResizeBorder_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_TranslateAccelerator_Proxy( - IDocHostUIHandler* This, - LPMSG lpMsg, - const GUID* pguidCmdGroup, - DWORD nCmdID); -void __RPC_STUB IDocHostUIHandler_TranslateAccelerator_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_GetOptionKeyPath_Proxy( - IDocHostUIHandler* This, - LPOLESTR* pchKey, - DWORD dw); -void __RPC_STUB IDocHostUIHandler_GetOptionKeyPath_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_GetDropTarget_Proxy( - IDocHostUIHandler* This, - IDropTarget* pDropTarget, - IDropTarget** ppDropTarget); -void __RPC_STUB IDocHostUIHandler_GetDropTarget_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_GetExternal_Proxy( - IDocHostUIHandler* This, - IDispatch** ppDispatch); -void __RPC_STUB IDocHostUIHandler_GetExternal_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_TranslateUrl_Proxy( - IDocHostUIHandler* This, - DWORD dwTranslate, - OLECHAR* pchURLIn, - OLECHAR** ppchURLOut); -void __RPC_STUB IDocHostUIHandler_TranslateUrl_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostUIHandler_FilterDataObject_Proxy( - IDocHostUIHandler* This, - IDataObject* pDO, - IDataObject** ppDORet); -void __RPC_STUB IDocHostUIHandler_FilterDataObject_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IDocHostUIHandler_INTERFACE_DEFINED__ */ - -#ifndef __IDocHostUIHandler2_FWD_DEFINED__ -#define __IDocHostUIHandler2_FWD_DEFINED__ -typedef struct IDocHostUIHandler2 IDocHostUIHandler2; -#endif - -/***************************************************************************** - * IDocHostUIHandler2 interface - */ -#ifndef __IDocHostUIHandler2_INTERFACE_DEFINED__ -#define __IDocHostUIHandler2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IDocHostUIHandler2, 0x3050f6d0, 0x98b5, 0x11cf, 0xbb,0x82, 0x00,0xaa,0x00,0xbd,0xce,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IDocHostUIHandler2 : public IDocHostUIHandler -{ - virtual HRESULT STDMETHODCALLTYPE GetOverrideKeyPath( - LPOLESTR* pchKey, - DWORD dw) = 0; - -}; -#else -typedef struct IDocHostUIHandler2Vtbl IDocHostUIHandler2Vtbl; -struct IDocHostUIHandler2 { - const IDocHostUIHandler2Vtbl* lpVtbl; -}; -struct IDocHostUIHandler2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IDocHostUIHandler2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IDocHostUIHandler2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IDocHostUIHandler2* This); - - /*** IDocHostUIHandler methods ***/ - HRESULT (STDMETHODCALLTYPE *ShowContextMenu)( - IDocHostUIHandler2* This, - DWORD dwID, - POINT* ppt, - IUnknown* pcmdtReserved, - IDispatch* pdispReserved); - - HRESULT (STDMETHODCALLTYPE *GetHostInfo)( - IDocHostUIHandler2* This, - DOCHOSTUIINFO* pInfo); - - HRESULT (STDMETHODCALLTYPE *ShowUI)( - IDocHostUIHandler2* This, - DWORD dwID, - IOleInPlaceActiveObject* pActiveObject, - IOleCommandTarget* pCommandTarget, - IOleInPlaceFrame* pFrame, - IOleInPlaceUIWindow* pDoc); - - HRESULT (STDMETHODCALLTYPE *HideUI)( - IDocHostUIHandler2* This); - - HRESULT (STDMETHODCALLTYPE *UpdateUI)( - IDocHostUIHandler2* This); - - HRESULT (STDMETHODCALLTYPE *EnableModeless)( - IDocHostUIHandler2* This, - BOOL fEnable); - - HRESULT (STDMETHODCALLTYPE *OnDocWindowActivate)( - IDocHostUIHandler2* This, - BOOL fActivate); - - HRESULT (STDMETHODCALLTYPE *OnFrameWindowActivate)( - IDocHostUIHandler2* This, - BOOL fActivate); - - HRESULT (STDMETHODCALLTYPE *ResizeBorder)( - IDocHostUIHandler2* This, - LPCRECT prcBorder, - IOleInPlaceUIWindow* pUIWindow, - BOOL fRameWindow); - - HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)( - IDocHostUIHandler2* This, - LPMSG lpMsg, - const GUID* pguidCmdGroup, - DWORD nCmdID); - - HRESULT (STDMETHODCALLTYPE *GetOptionKeyPath)( - IDocHostUIHandler2* This, - LPOLESTR* pchKey, - DWORD dw); - - HRESULT (STDMETHODCALLTYPE *GetDropTarget)( - IDocHostUIHandler2* This, - IDropTarget* pDropTarget, - IDropTarget** ppDropTarget); - - HRESULT (STDMETHODCALLTYPE *GetExternal)( - IDocHostUIHandler2* This, - IDispatch** ppDispatch); - - HRESULT (STDMETHODCALLTYPE *TranslateUrl)( - IDocHostUIHandler2* This, - DWORD dwTranslate, - OLECHAR* pchURLIn, - OLECHAR** ppchURLOut); - - HRESULT (STDMETHODCALLTYPE *FilterDataObject)( - IDocHostUIHandler2* This, - IDataObject* pDO, - IDataObject** ppDORet); - - /*** IDocHostUIHandler2 methods ***/ - HRESULT (STDMETHODCALLTYPE *GetOverrideKeyPath)( - IDocHostUIHandler2* This, - LPOLESTR* pchKey, - DWORD dw); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IDocHostUIHandler2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDocHostUIHandler2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDocHostUIHandler2_Release(p) (p)->lpVtbl->Release(p) -/*** IDocHostUIHandler methods ***/ -#define IDocHostUIHandler2_ShowContextMenu(p,a,b,c,d) (p)->lpVtbl->ShowContextMenu(p,a,b,c,d) -#define IDocHostUIHandler2_GetHostInfo(p,a) (p)->lpVtbl->GetHostInfo(p,a) -#define IDocHostUIHandler2_ShowUI(p,a,b,c,d,e) (p)->lpVtbl->ShowUI(p,a,b,c,d,e) -#define IDocHostUIHandler2_HideUI(p) (p)->lpVtbl->HideUI(p) -#define IDocHostUIHandler2_UpdateUI(p) (p)->lpVtbl->UpdateUI(p) -#define IDocHostUIHandler2_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a) -#define IDocHostUIHandler2_OnDocWindowActivate(p,a) (p)->lpVtbl->OnDocWindowActivate(p,a) -#define IDocHostUIHandler2_OnFrameWindowActivate(p,a) (p)->lpVtbl->OnFrameWindowActivate(p,a) -#define IDocHostUIHandler2_ResizeBorder(p,a,b,c) (p)->lpVtbl->ResizeBorder(p,a,b,c) -#define IDocHostUIHandler2_TranslateAccelerator(p,a,b,c) (p)->lpVtbl->TranslateAccelerator(p,a,b,c) -#define IDocHostUIHandler2_GetOptionKeyPath(p,a,b) (p)->lpVtbl->GetOptionKeyPath(p,a,b) -#define IDocHostUIHandler2_GetDropTarget(p,a,b) (p)->lpVtbl->GetDropTarget(p,a,b) -#define IDocHostUIHandler2_GetExternal(p,a) (p)->lpVtbl->GetExternal(p,a) -#define IDocHostUIHandler2_TranslateUrl(p,a,b,c) (p)->lpVtbl->TranslateUrl(p,a,b,c) -#define IDocHostUIHandler2_FilterDataObject(p,a,b) (p)->lpVtbl->FilterDataObject(p,a,b) -/*** IDocHostUIHandler2 methods ***/ -#define IDocHostUIHandler2_GetOverrideKeyPath(p,a,b) (p)->lpVtbl->GetOverrideKeyPath(p,a,b) -#endif - -#endif - -HRESULT CALLBACK IDocHostUIHandler2_GetOverrideKeyPath_Proxy( - IDocHostUIHandler2* This, - LPOLESTR* pchKey, - DWORD dw); -void __RPC_STUB IDocHostUIHandler2_GetOverrideKeyPath_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IDocHostUIHandler2_INTERFACE_DEFINED__ */ - -#ifndef __ICustomDoc_FWD_DEFINED__ -#define __ICustomDoc_FWD_DEFINED__ -typedef struct ICustomDoc ICustomDoc; -#endif - -/***************************************************************************** - * ICustomDoc interface - */ -#ifndef __ICustomDoc_INTERFACE_DEFINED__ -#define __ICustomDoc_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ICustomDoc, 0x3050f3f0, 0x98b5, 0x11cf, 0xbb,0x82, 0x00,0xaa,0x00,0xbd,0xce,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct ICustomDoc : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE SetUIHandler( - IDocHostUIHandler* pUIHandler) = 0; - -}; -#else -typedef struct ICustomDocVtbl ICustomDocVtbl; -struct ICustomDoc { - const ICustomDocVtbl* lpVtbl; -}; -struct ICustomDocVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ICustomDoc* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ICustomDoc* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ICustomDoc* This); - - /*** ICustomDoc methods ***/ - HRESULT (STDMETHODCALLTYPE *SetUIHandler)( - ICustomDoc* This, - IDocHostUIHandler* pUIHandler); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ICustomDoc_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICustomDoc_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICustomDoc_Release(p) (p)->lpVtbl->Release(p) -/*** ICustomDoc methods ***/ -#define ICustomDoc_SetUIHandler(p,a) (p)->lpVtbl->SetUIHandler(p,a) -#endif - -#endif - -HRESULT CALLBACK ICustomDoc_SetUIHandler_Proxy( - ICustomDoc* This, - IDocHostUIHandler* pUIHandler); -void __RPC_STUB ICustomDoc_SetUIHandler_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ICustomDoc_INTERFACE_DEFINED__ */ - -#ifndef __IDocHostShowUI_FWD_DEFINED__ -#define __IDocHostShowUI_FWD_DEFINED__ -typedef struct IDocHostShowUI IDocHostShowUI; -#endif - -/***************************************************************************** - * IDocHostShowUI interface - */ -#ifndef __IDocHostShowUI_INTERFACE_DEFINED__ -#define __IDocHostShowUI_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IDocHostShowUI, 0xc4d244b0, 0xd43e, 0x11cf, 0x89,0x3b, 0x00,0xaa,0x00,0xbd,0xce,0x1a); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IDocHostShowUI : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE ShowMessage( - HWND hwnd, - LPOLESTR lpstrText, - LPOLESTR lpstrCaption, - DWORD dwType, - LPOLESTR lpstrHelpFile, - DWORD dwHelpContext, - LRESULT* plResult) = 0; - - virtual HRESULT STDMETHODCALLTYPE ShowHelp( - HWND hwnd, - LPOLESTR pszHelpFile, - UINT uCommand, - DWORD dwData, - POINT ptMouse, - IDispatch* pDispatchObjectHit) = 0; - -}; -#else -typedef struct IDocHostShowUIVtbl IDocHostShowUIVtbl; -struct IDocHostShowUI { - const IDocHostShowUIVtbl* lpVtbl; -}; -struct IDocHostShowUIVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IDocHostShowUI* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IDocHostShowUI* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IDocHostShowUI* This); - - /*** IDocHostShowUI methods ***/ - HRESULT (STDMETHODCALLTYPE *ShowMessage)( - IDocHostShowUI* This, - HWND hwnd, - LPOLESTR lpstrText, - LPOLESTR lpstrCaption, - DWORD dwType, - LPOLESTR lpstrHelpFile, - DWORD dwHelpContext, - LRESULT* plResult); - - HRESULT (STDMETHODCALLTYPE *ShowHelp)( - IDocHostShowUI* This, - HWND hwnd, - LPOLESTR pszHelpFile, - UINT uCommand, - DWORD dwData, - POINT ptMouse, - IDispatch* pDispatchObjectHit); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IDocHostShowUI_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDocHostShowUI_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDocHostShowUI_Release(p) (p)->lpVtbl->Release(p) -/*** IDocHostShowUI methods ***/ -#define IDocHostShowUI_ShowMessage(p,a,b,c,d,e,f,g) (p)->lpVtbl->ShowMessage(p,a,b,c,d,e,f,g) -#define IDocHostShowUI_ShowHelp(p,a,b,c,d,e,f) (p)->lpVtbl->ShowHelp(p,a,b,c,d,e,f) -#endif - -#endif - -HRESULT CALLBACK IDocHostShowUI_ShowMessage_Proxy( - IDocHostShowUI* This, - HWND hwnd, - LPOLESTR lpstrText, - LPOLESTR lpstrCaption, - DWORD dwType, - LPOLESTR lpstrHelpFile, - DWORD dwHelpContext, - LRESULT* plResult); -void __RPC_STUB IDocHostShowUI_ShowMessage_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IDocHostShowUI_ShowHelp_Proxy( - IDocHostShowUI* This, - HWND hwnd, - LPOLESTR pszHelpFile, - UINT uCommand, - DWORD dwData, - POINT ptMouse, - IDispatch* pDispatchObjectHit); -void __RPC_STUB IDocHostShowUI_ShowHelp_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IDocHostShowUI_INTERFACE_DEFINED__ */ - -#define IClassFactory3 IClassFactoryEx -#define IID_IClassFactory3 IID_IClassFactoryEx -#ifndef __IClassFactoryEx_FWD_DEFINED__ -#define __IClassFactoryEx_FWD_DEFINED__ -typedef struct IClassFactoryEx IClassFactoryEx; -#endif - -/***************************************************************************** - * IClassFactoryEx interface - */ -#ifndef __IClassFactoryEx_INTERFACE_DEFINED__ -#define __IClassFactoryEx_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IClassFactoryEx, 0x342d1ea0, 0xae25, 0x11d1, 0x89,0xc5, 0x00,0x60,0x08,0xc3,0xfb,0xfc); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IClassFactoryEx : public IClassFactory -{ - virtual HRESULT STDMETHODCALLTYPE CreateInstanceWithContext( - IUnknown* punkContext, - IUnknown* punkOuter, - REFIID riid, - void** ppv) = 0; - -}; -#else -typedef struct IClassFactoryExVtbl IClassFactoryExVtbl; -struct IClassFactoryEx { - const IClassFactoryExVtbl* lpVtbl; -}; -struct IClassFactoryExVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IClassFactoryEx* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IClassFactoryEx* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IClassFactoryEx* This); - - /*** IClassFactory methods ***/ - HRESULT (STDMETHODCALLTYPE *CreateInstance)( - IClassFactoryEx* This, - IUnknown* pUnkOuter, - REFIID riid, - void** ppvObject); - - HRESULT (STDMETHODCALLTYPE *LockServer)( - IClassFactoryEx* This, - BOOL fLock); - - /*** IClassFactoryEx methods ***/ - HRESULT (STDMETHODCALLTYPE *CreateInstanceWithContext)( - IClassFactoryEx* This, - IUnknown* punkContext, - IUnknown* punkOuter, - REFIID riid, - void** ppv); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IClassFactoryEx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IClassFactoryEx_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IClassFactoryEx_Release(p) (p)->lpVtbl->Release(p) -/*** IClassFactory methods ***/ -#define IClassFactoryEx_CreateInstance(p,a,b,c) (p)->lpVtbl->CreateInstance(p,a,b,c) -#define IClassFactoryEx_LockServer(p,a) (p)->lpVtbl->LockServer(p,a) -/*** IClassFactoryEx methods ***/ -#define IClassFactoryEx_CreateInstanceWithContext(p,a,b,c,d) (p)->lpVtbl->CreateInstanceWithContext(p,a,b,c,d) -#endif - -#endif - -HRESULT CALLBACK IClassFactoryEx_CreateInstanceWithContext_Proxy( - IClassFactoryEx* This, - IUnknown* punkContext, - IUnknown* punkOuter, - REFIID riid, - void** ppv); -void __RPC_STUB IClassFactoryEx_CreateInstanceWithContext_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IClassFactoryEx_INTERFACE_DEFINED__ */ - -typedef HRESULT WINAPI SHOWHTMLDIALOGFN(HWND,IMoniker*,VARIANT*,WCHAR*,VARIANT*); -typedef HRESULT WINAPI SHOWHTMLDIALOGEXFN(HWND,IMoniker*,DWORD,VARIANT*,WCHAR*,VARIANT*); -typedef HRESULT WINAPI SHOWMODELESSHTMLDIALOGFN(HWND,IMoniker*,VARIANT*,VARIANT*,IHTMLWindow2**); -EXTERN_C HRESULT WINAPI ShowHTMLDialog(HWND,IMoniker*,VARIANT*,WCHAR*,VARIANT*); -EXTERN_C HRESULT WINAPI ShowHTMLDialogEx(HWND,IMoniker*,DWORD,VARIANT*,WCHAR*,VARIANT*); -EXTERN_C HRESULT WINAPI ShowModelessHTMLDialog(HWND,IMoniker*,VARIANT*,VARIANT*,IHTMLWindow2**); -EXTERN_C HRESULT WINAPI RunHTMLApplication(HINSTANCE,HINSTANCE,LPSTR,int); -EXTERN_C HRESULT WINAPI CreateHTMLPropertyPage(IMoniker*,IPropertyPage**); -/* Begin additional prototypes for all interfaces */ - -unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); -unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); -unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); -void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); -unsigned long __RPC_USER VARIANT_UserSize (unsigned long *, unsigned long, VARIANT *); -unsigned char * __RPC_USER VARIANT_UserMarshal (unsigned long *, unsigned char *, VARIANT *); -unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT *); -void __RPC_USER VARIANT_UserFree (unsigned long *, VARIANT *); -unsigned long __RPC_USER HWND_UserSize (unsigned long *, unsigned long, HWND *); -unsigned char * __RPC_USER HWND_UserMarshal (unsigned long *, unsigned char *, HWND *); -unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND *); -void __RPC_USER HWND_UserFree (unsigned long *, HWND *); - -/* End additional prototypes */ - -#ifdef __cplusplus -} -#endif -#endif /* __WIDL_MSHTMHST_H */ diff --git a/reactos/include/psdk/mshtmhst.idl b/reactos/include/psdk/mshtmhst.idl new file mode 100644 index 00000000000..344a88f2d10 --- /dev/null +++ b/reactos/include/psdk/mshtmhst.idl @@ -0,0 +1,302 @@ +/* + * Copyright 2005 Jacek Caban + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "ocidl.idl"; +import "objidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; +import "docobj.idl"; + +cpp_quote("#define CONTEXT_MENU_DEFAULT 0") +cpp_quote("#define CONTEXT_MENU_IMAGE 1") +cpp_quote("#define CONTEXT_MENU_CONTROL 2") +cpp_quote("#define CONTEXT_MENU_TABLE 3") +cpp_quote("#define CONTEXT_MENU_TEXTSELECT 4") +cpp_quote("#define CONTEXT_MENU_ANCHOR 5") +cpp_quote("#define CONTEXT_MENU_UNKNOWN 6") +cpp_quote("#define CONTEXT_MENU_IMGDYNSRC 7") +cpp_quote("#define CONTEXT_MENU_IMGART 8") +cpp_quote("#define CONTEXT_MENU_DEBUG 9") +cpp_quote("#define CONTEXT_MENU_VSCROLL 10") +cpp_quote("#define CONTEXT_MENU_HSCROLL 11") + +cpp_quote("#define MENUEXT_SHOWDIALOG 1") + +cpp_quote("#define DOCHOSTUIFLAG_BROWSER (DOCHOSTUIFLAG_DISABLE_HELP_MENU|DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE)") + +cpp_quote("#define HTMLDLG_NOUI 0x0010") +cpp_quote("#define HTMLDLG_MODAL 0x0020") +cpp_quote("#define HTMLDLG_MODELESS 0x0040") +cpp_quote("#define HTMLDLG_PRINT_TEMPLATE 0x0080") +cpp_quote("#define HTMLDLG_VERIFY 0x0100") + +cpp_quote("#define PRINT_DONTBOTHERUSER 0x0001") +cpp_quote("#define PRINT_WAITFORCOMPLETION 0x0002") + +cpp_quote("DEFINE_GUID(CGID_MSHTML, 0xde4ba900,0x59ca,0x11cf,0x95,0x92,0x44,0x45,0x53,0x54,0x00,0x00);") +cpp_quote("#define CMDSETID_Forms3 CGID_MSHTML") + +cpp_quote("#if defined(__GNUC__)") +cpp_quote("#define SZ_HTML_CLIENTSITE_OBJECTPARAM (const WCHAR[]) {'{','d','4','d','b','6','8','5','0','-','5','3','8','5','-','1','1','d','0','-','8','9','e','9','-','0','0','a','0','c','9','0','a','9','0','a','c','}',0}") +cpp_quote("#elif defined(_MSC_VER)") +cpp_quote("#define SZ_HTML_CLIENTSITE_OBJECTPARAM L\"{d4db6850-5385-11d0-89e9-00a0c90a90ac}\"") +cpp_quote("#else") +cpp_quote("static const WCHAR SZ_HTML_CLIENTSITE_OBJECTPARAM[] = {'{','d','4','d','b','6','8','5','0','-','5','3','8','5','-','1','1','d','0','-','8','9','e','9','-','0','0','a','0','c','9','0','a','9','0','a','c','}',0};") +cpp_quote("#endif") + +cpp_quote("#ifndef __IHTMLWindow2_FWD_DEFINED__") +cpp_quote("#define __IHTMLWindow2_FWD_DEFINED__") +cpp_quote("typedef interface IHTMLWindow2 IHTMLWindow2;") +cpp_quote("#endif") + +/***************************************************************************** + * IHostDialogHelper interface + */ +[ + object, + uuid(53DEC138-A51E-11d2-861E-00C04FA35C89), + pointer_default(unique), + local +] +interface IHostDialogHelper : IUnknown +{ + HRESULT ShowHTMLDialog( + HWND hwndParent, + IMoniker *pMk, + VARIANT *pvarArgIn, + WCHAR *pchOptions, + VARIANT *pvarArgOut, + IUnknown *punkHost); +} + +/***************************************************************************** + * HostDialogHelper coclass + */ +[ + uuid(429AF92C-A51F-11d2-861E-00C04FA35C89) +] +coclass HostDialogHelper +{ + [default] interface IHostDialogHelper; +} + +/***************************************************************************** + * IDocHostUIHandler interface + */ + +typedef enum tagDOCHOSTUITYPE { + DOCHOSTUITYPE_BROWSE = 0, + DOCHOSTUITYPE_AUTHOR = 1 +} DOCHOSTUITYPE; + +typedef enum tagDOCHOSTUIDBLCLK +{ + DOCHOSTUIDBLCLK_DEFAULT = 0, + DOCHOSTUIDBLCLK_SHOWPROPERTIES = 1, + DOCHOSTUIDBLCLK_SHOWCODE = 2 +} DOCHOSTUIDBLCLK; + +typedef enum tagDOCHOSTUIFLAG +{ + DOCHOSTUIFLAG_DIALOG = 0x00000001, + DOCHOSTUIFLAG_DISABLE_HELP_MENU = 0x00000002, + DOCHOSTUIFLAG_NO3DBORDER = 0x00000004, + DOCHOSTUIFLAG_SCROLL_NO = 0x00000008, + DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 0x00000010, + DOCHOSTUIFLAG_OPENNEWWIN = 0x00000020, + DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 0x00000040, + DOCHOSTUIFLAG_FLAT_SCROLLBAR = 0x00000080, + DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 0x00000100, + DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 0x00000200, + DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY = 0x00000400, + DOCHOSTUIFLAG_CODEPAGELINKEDFONTS = 0x00000800, + DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 = 0x00001000, + DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 = 0x00002000, + DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE = 0x00004000, + DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION = 0x00010000, + DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION = 0x00020000, + DOCHOSTUIFLAG_THEME = 0x00040000, + DOCHOSTUIFLAG_NOTHEME = 0x00080000, + DOCHOSTUIFLAG_NOPICS = 0x00100000, + DOCHOSTUIFLAG_NO3DOUTERBORDER = 0x00200000, + DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP = 0x00400000, + DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK = 0x00800000, + DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL = 0x01000000 +} DOCHOSTUIFLAG; + +[ + object, + uuid(BD3F23C0-D43E-11CF-893B-00AA00BDCE1A), + pointer_default(unique), + local +] +interface IDocHostUIHandler : IUnknown +{ + typedef struct _DOCHOSTUIINFO + { + ULONG cbSize; + DWORD dwFlags; + DWORD dwDoubleClick; + OLECHAR *pchHostCss; + OLECHAR *pchHostNS; + } DOCHOSTUIINFO; + + HRESULT ShowContextMenu( + [in] DWORD dwID, + [in] POINT *ppt, + [in] IUnknown *pcmdtReserved, + [in] IDispatch *pdispReserved); + + HRESULT GetHostInfo([in, out] DOCHOSTUIINFO *pInfo); + + HRESULT ShowUI( + [in] DWORD dwID, + [in] IOleInPlaceActiveObject *pActiveObject, + [in] IOleCommandTarget *pCommandTarget, + [in] IOleInPlaceFrame *pFrame, + [in] IOleInPlaceUIWindow *pDoc); + + HRESULT HideUI(); + + HRESULT UpdateUI(); + + HRESULT EnableModeless([in] BOOL fEnable); + + HRESULT OnDocWindowActivate([in] BOOL fActivate); + + HRESULT OnFrameWindowActivate([in] BOOL fActivate); + + HRESULT ResizeBorder( + [in] LPCRECT prcBorder, + [in] IOleInPlaceUIWindow *pUIWindow, + [in] BOOL fRameWindow); + + HRESULT TranslateAccelerator( + [in] LPMSG lpMsg, + [in] const GUID *pguidCmdGroup, + [in] DWORD nCmdID); + + HRESULT GetOptionKeyPath( + [out] LPOLESTR *pchKey, + [in] DWORD dw); + + HRESULT GetDropTarget( + [in] IDropTarget *pDropTarget, + [out] IDropTarget **ppDropTarget); + + HRESULT GetExternal([out] IDispatch **ppDispatch); + + HRESULT TranslateUrl( + [in] DWORD dwTranslate, + [in] OLECHAR *pchURLIn, + [out] OLECHAR **ppchURLOut); + + HRESULT FilterDataObject( + [in] IDataObject *pDO, + [out] IDataObject **ppDORet); +} + +cpp_quote("DEFINE_GUID(CGID_DocHostCommandHandler,0xf38bc242,0xb950,0x11d1,0x89,0x18,0x00,0xc0,0x4f,0xc2,0xc8,0x36);") + +[ + object, + uuid(3050F6D0-98b5-11CF-BB82-00AA00BDCE0B), + pointer_default(unique), + local +] +interface IDocHostUIHandler2 : IDocHostUIHandler +{ + HRESULT GetOverrideKeyPath( + [out] LPOLESTR *pchKey, + [in] DWORD dw); +} + +/***************************************************************************** + * ICustomDoc interface + */ +[ + object, + uuid(3050f3f0-98b5-11cf-bb82-00aa00bdce0b), + pointer_default(unique), + local +] +interface ICustomDoc : IUnknown +{ + HRESULT SetUIHandler([in] IDocHostUIHandler *pUIHandler); +} + +/***************************************************************************** + * IDocHostShowUI interface + */ +[ + object, + uuid(c4d244b0-d43e-11cf-893b-00aa00bdce1a), + pointer_default(unique), + local +] +interface IDocHostShowUI : IUnknown +{ + HRESULT ShowMessage( + [in] HWND hwnd, + [in] LPOLESTR lpstrText, + [in] LPOLESTR lpstrCaption, + [in] DWORD dwType, + [in] LPOLESTR lpstrHelpFile, + [in] DWORD dwHelpContext, + [out] LRESULT *plResult); + + HRESULT ShowHelp( + [in] HWND hwnd, + [in] LPOLESTR pszHelpFile, + [in] UINT uCommand, + [in] DWORD dwData, + [in] POINT ptMouse, + [out] IDispatch *pDispatchObjectHit); +} + +/***************************************************************************** + * IClassFactoryEx interface + */ + +cpp_quote("#define IClassFactory3 IClassFactoryEx") +cpp_quote("#define IID_IClassFactory3 IID_IClassFactoryEx") + +[ + object, + uuid(342D1EA0-AE25-11D1-89C5-006008C3FBFC), + pointer_default(unique), + local +] +interface IClassFactoryEx : IClassFactory +{ + HRESULT CreateInstanceWithContext( + IUnknown *punkContext, + IUnknown *punkOuter, + REFIID riid, + [out] void **ppv); +} + +cpp_quote("typedef HRESULT WINAPI SHOWHTMLDIALOGFN(HWND,IMoniker*,VARIANT*,WCHAR*,VARIANT*);") +cpp_quote("typedef HRESULT WINAPI SHOWHTMLDIALOGEXFN(HWND,IMoniker*,DWORD,VARIANT*,WCHAR*,VARIANT*);") +cpp_quote("typedef HRESULT WINAPI SHOWMODELESSHTMLDIALOGFN(HWND,IMoniker*,VARIANT*,VARIANT*,IHTMLWindow2**);") + +cpp_quote("EXTERN_C HRESULT WINAPI ShowHTMLDialog(HWND,IMoniker*,VARIANT*,WCHAR*,VARIANT*);") +cpp_quote("EXTERN_C HRESULT WINAPI ShowHTMLDialogEx(HWND,IMoniker*,DWORD,VARIANT*,WCHAR*,VARIANT*);") +cpp_quote("EXTERN_C HRESULT WINAPI ShowModelessHTMLDialog(HWND,IMoniker*,VARIANT*,VARIANT*,IHTMLWindow2**);") +cpp_quote("EXTERN_C HRESULT WINAPI RunHTMLApplication(HINSTANCE,HINSTANCE,LPSTR,int);") +cpp_quote("EXTERN_C HRESULT WINAPI CreateHTMLPropertyPage(IMoniker*,IPropertyPage**);") diff --git a/reactos/include/psdk/mshtml.idl b/reactos/include/psdk/mshtml.idl new file mode 100644 index 00000000000..97316f9a94a --- /dev/null +++ b/reactos/include/psdk/mshtml.idl @@ -0,0 +1,5841 @@ +/* + * Copyright 2004-2007 Jacek Caban for CodeWeavers + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include +#include +#include + +import "ocidl.idl"; +/* import "dimm.idl"; */ + +cpp_quote("#include ") + +interface IHTMLDocument2; +interface IHTMLStyleSheetsCollection; + +/***************************************************************************** + * IHTMLFiltersCollection interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F3EE-98B5-11Cf-BB82-00AA00BDCE0B) +] +interface IHTMLFiltersCollection : IDispatch +{ + [propget, id(DISPID_IHTMLFILTERSCOLLECTION_LENGTH)] + HRESULT length([retval, out] long *p); + + [propget, id(DISPID_IHTMLFILTERSCOLLECTION__NEWENUM)] + HRESULT _newEnum([retval, out] IUnknown **p); + + [id(DISPID_IHTMLFILTERSCOLLECTION_ITEM)] + HRESULT item( + [in] VARIANT *pvarIndex, + [retval, out] VARIANT *pvarResult); +} + +[ + uuid(3050F1C5-98B5-11CF-BB82-00AA00BDCE0B) +] +library MSHTML +{ + +importlib("stdole2.tlb"); + +/***************************************************************************** + * IHTMLStyle interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F25E-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLStyle : IDispatch +{ + [propput, id(DISPID_IHTMLSTYLE_FONTFAMILY)] + HRESULT fontFamily([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_FONTFAMILY)] + HRESULT fontFamily([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_FONTSTYLE)] + HRESULT fontStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_FONTSTYLE)] + HRESULT fontStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_FONTVARIANT)] + HRESULT fontVariant([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_FONTVARIANT)] + HRESULT fontVariant([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_FONTWEIGHT)] + HRESULT fontWeight([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_FONTWEIGHT)] + HRESULT fontWeight([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_FONTSIZE)] + HRESULT fontSize([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_FONTSIZE)] + HRESULT fontSize([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_FONT)] + HRESULT font([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_FONT)] + HRESULT font([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_COLOR)] + HRESULT color([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_COLOR)] + HRESULT color([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BACKGROUND)] + HRESULT background([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BACKGROUND)] + HRESULT background([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR)] + HRESULT backgroundColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR)] + HRESULT backgroundColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE)] + HRESULT backgroundImage([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE)] + HRESULT backgroundImage([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT)] + HRESULT backgroundRepeat([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT)] + HRESULT backgroundRepeat([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT)] + HRESULT backgroundAttachment([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT)] + HRESULT backgroundAttachment([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION)] + HRESULT backgroundPosition([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION)] + HRESULT backgroundPosition([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX)] + HRESULT backgroundPositionX([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX)] + HRESULT backgroundPositionX([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY)] + HRESULT backgroundPositionY([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY)] + HRESULT backgroundPositionY([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_WORDSPACING)] + HRESULT wordSpacing([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_WORDSPACING)] + HRESULT wordSpacing([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_LETTERSPACING)] + HRESULT letterSpacing([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_LETTERSPACING)] + HRESULT letterSpacing([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATION)] + HRESULT textDecoration([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATION)] + HRESULT textDecoration([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE)] + HRESULT textDecorationNone([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE)] + HRESULT textDecorationNone([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE)] + HRESULT textDecorationUnderline([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE)] + HRESULT textDecorationUnderline([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE)] + HRESULT textDecorationOverline([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE)] + HRESULT textDecorationOverline([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH)] + HRESULT textDecorationLineThrough([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH)] + HRESULT textDecorationLineThrough([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK)] + HRESULT textDecorationBlink([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK)] + HRESULT textDecorationBlink([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLSTYLE_VERTICALALIGN)] + HRESULT verticalAlign([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_VERTICALALIGN)] + HRESULT verticalAlign([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM)] + HRESULT textTransform([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM)] + HRESULT textTransform([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_TEXTALIGN)] + HRESULT textAlign([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_TEXTALIGN)] + HRESULT textAlign([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_TEXTINDENT)] + HRESULT textIndent([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_TEXTINDENT)] + HRESULT textIndent([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_LINEHEIGHT)] + HRESULT lineHeight([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_LINEHEIGHT)] + HRESULT lineHeight([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_MARGINTOP)] + HRESULT marginTop([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_MARGINTOP)] + HRESULT marginTop([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_MARGINRIGHT)] + HRESULT marginRight([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_MARGINRIGHT)] + HRESULT marginRight([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_MARGINBOTTOM)] + HRESULT marginBottom([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_MARGINBOTTOM)] + HRESULT marginBottom([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_MARGINLEFT)] + HRESULT marginLeft([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_MARGINLEFT)] + HRESULT marginLeft([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_MARGIN)] + HRESULT margin([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_MARGIN)] + HRESULT margin([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_PADDINGTOP)] + HRESULT paddingTop([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_PADDINGTOP)] + HRESULT paddingTop([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_PADDINGRIGHT)] + HRESULT paddingRight([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_PADDINGRIGHT)] + HRESULT paddingRight([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM)] + HRESULT paddingBottom([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM)] + HRESULT paddingBottom([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_PADDINGLEFT)] + HRESULT paddingLeft([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_PADDINGLEFT)] + HRESULT paddingLeft([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_PADDING)] + HRESULT padding([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_PADDING)] + HRESULT padding([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDER)] + HRESULT border([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDER)] + HRESULT border([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERTOP)] + HRESULT borderTop([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERTOP)] + HRESULT borderTop([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHT)] + HRESULT borderRight([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHT)] + HRESULT borderRight([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOM)] + HRESULT borderBottom([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOM)] + HRESULT borderBottom([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERLEFT)] + HRESULT borderLeft([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERLEFT)] + HRESULT borderLeft([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERCOLOR)] + HRESULT borderColor([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERCOLOR)] + HRESULT borderColor([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR)] + HRESULT borderTopColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR)] + HRESULT borderTopColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR)] + HRESULT borderRightColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR)] + HRESULT borderRightColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR)] + HRESULT borderBottomColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR)] + HRESULT borderBottomColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR)] + HRESULT borderLeftColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR)] + HRESULT borderLeftColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERWIDTH)] + HRESULT borderWidth([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERWIDTH)] + HRESULT borderWidth([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH)] + HRESULT borderTopWidth([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH)] + HRESULT borderTopWidth([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH)] + HRESULT borderRightWidth([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH)] + HRESULT borderRightWidth([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH)] + HRESULT borderBottomWidth([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH)] + HRESULT borderBottomWidth([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH)] + HRESULT borderLeftWidth([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH)] + HRESULT borderLeftWidth([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERSTYLE)] + HRESULT borderStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERSTYLE)] + HRESULT borderStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE)] + HRESULT borderTopStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE)] + HRESULT borderTopStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE)] + HRESULT borderRightStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE)] + HRESULT borderRightStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE)] + HRESULT borderBottomStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE)] + HRESULT borderBottomStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE)] + HRESULT borderLeftStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE)] + HRESULT borderLeftStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_WIDTH)] + HRESULT width([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_WIDTH)] + HRESULT width([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_HEIGHT)] + HRESULT height([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_HEIGHT)] + HRESULT height([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_STYLEFLOAT)] + HRESULT styleFloat([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_STYLEFLOAT)] + HRESULT styleFloat([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_CLEAR)] + HRESULT clear([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_CLEAR)] + HRESULT clear([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_DISPLAY)] + HRESULT display([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_DISPLAY)] + HRESULT display([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_VISIBILITY)] + HRESULT visibility([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_VISIBILITY)] + HRESULT visibility([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE)] + HRESULT listStyleType([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE)] + HRESULT listStyleType([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION)] + HRESULT listStylePosition([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION)] + HRESULT listStylePosition([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE)] + HRESULT listStyleImage([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE)] + HRESULT listStyleImage([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_LISTSTYLE)] + HRESULT listStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_LISTSTYLE)] + HRESULT listStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_WHITESPACE)] + HRESULT whiteSpace([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_WHITESPACE)] + HRESULT whiteSpace([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_TOP)] + HRESULT top([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_TOP)] + HRESULT top([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_LEFT)] + HRESULT left([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_LEFT)] + HRESULT left([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLSTYLE_POSITION)] + HRESULT position([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_ZINDEX)] + HRESULT zIndex([in] VARIANT v); + + [propget, id(DISPID_IHTMLSTYLE_ZINDEX)] + HRESULT zIndex([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSTYLE_OVERFLOW)] + HRESULT overflow([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_OVERFLOW)] + HRESULT overflow([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE)] + HRESULT pageBreakBefore([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE)] + HRESULT pageBreakBefore([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER)] + HRESULT pageBreakAfter([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER)] + HRESULT pageBreakAfter([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_CSSTEXT)] + HRESULT cssText([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_CSSTEXT)] + HRESULT cssText([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_PIXELTOP)] + HRESULT pixelTop([in] long v); + + [propget, id(DISPID_IHTMLSTYLE_PIXELTOP)] + HRESULT pixelTop([retval, out] long *p); + + [propput, id(DISPID_IHTMLSTYLE_PIXELLEFT)] + HRESULT pixelLeft([in] long v); + + [propget, id(DISPID_IHTMLSTYLE_PIXELLEFT)] + HRESULT pixelLeft([retval, out] long *p); + + [propput, id(DISPID_IHTMLSTYLE_PIXELWIDTH)] + HRESULT pixelWidth([in] long v); + + [propget, id(DISPID_IHTMLSTYLE_PIXELWIDTH)] + HRESULT pixelWidth([retval, out] long *p); + + [propput, id(DISPID_IHTMLSTYLE_PIXELHEIGHT)] + HRESULT pixelHeight([in] long v); + + [propget, id(DISPID_IHTMLSTYLE_PIXELHEIGHT)] + HRESULT pixelHeight([retval, out] long *p); + + [propput, id(DISPID_IHTMLSTYLE_POSTOP)] + HRESULT posTop([in] float v); + + [propget, id(DISPID_IHTMLSTYLE_POSTOP)] + HRESULT posTop([retval, out] float *p); + + [propput, id(DISPID_IHTMLSTYLE_POSLEFT)] + HRESULT posLeft([in] float v); + + [propget, id(DISPID_IHTMLSTYLE_POSLEFT)] + HRESULT posLeft([retval, out] float *p); + + [propput, id(DISPID_IHTMLSTYLE_POSWIDTH)] + HRESULT posWidth([in] float v); + + [propget, id(DISPID_IHTMLSTYLE_POSWIDTH)] + HRESULT posWidth([retval, out] float *p); + + [propput, id(DISPID_IHTMLSTYLE_POSHEIGHT)] + HRESULT posHeight([in] float v); + + [propget, id(DISPID_IHTMLSTYLE_POSHEIGHT)] + HRESULT posHeight([retval, out] float *p); + + [propput, id(DISPID_IHTMLSTYLE_CURSOR)] + HRESULT cursor([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_CURSOR)] + HRESULT cursor([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_CLIP)] + HRESULT clip([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_CLIP)] + HRESULT clip([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLE_FILTER)] + HRESULT filter([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLE_FILTER)] + HRESULT filter([retval, out] BSTR *p); + + [id(DISPID_IHTMLSTYLE_SETATTRIBUTE)] + HRESULT setAttribute( + [in] BSTR strAttributeName, + [in] VARIANT AttributeValue, + [defaultvalue(1), in] LONG lFlags); + + [id(DISPID_IHTMLSTYLE_GETATTRIBUTE)] + HRESULT getAttribute( + [in] BSTR strAttributeName, + [defaultvalue(0), in] LONG lFlags, + [retval, out] VARIANT *AttributeValue); + + [id(DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)] + HRESULT removeAttribute( + [in] BSTR strAttributeName, + [defaultvalue(1), in] + LONG lFlags, + [retval, out] VARIANT_BOOL *pfSuccess); + + [id(DISPID_IHTMLSTYLE_TOSTRING)] + HRESULT toString([retval, out] BSTR *String); +} + +/***************************************************************************** + * IHTMLRuleStyle interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F3CF-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLRuleStyle : IDispatch +{ + [propput, id(DISPID_IHTMLRULESTYLE_FONTFAMILY)] + HRESULT fontFamily([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_FONTFAMILY)] + HRESULT fontFamily([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_FONTSTYLE)] + HRESULT fontStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_FONTSTYLE)] + HRESULT fontStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_FONTVARIANT)] + HRESULT fontVariant([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_FONTVARIANT)] + HRESULT fontVariant([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_FONTWEIGHT)] + HRESULT fontWeight([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_FONTWEIGHT)] + HRESULT fontWeight([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_FONTSIZE)] + HRESULT fontSize([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_FONTSIZE)] + HRESULT fontSize([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_FONT)] + HRESULT font([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_FONT)] + HRESULT font([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_COLOR)] + HRESULT color([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_COLOR)] + HRESULT color([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUND)] + HRESULT background([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUND)] + HRESULT background([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR)] + HRESULT backgroundColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR)] + HRESULT backgroundColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE)] + HRESULT backgroundImage([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE)] + HRESULT backgroundImage([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT)] + HRESULT backgroundRepeat([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT)] + HRESULT backgroundRepeat([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT)] + HRESULT backgroundAttachment([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT)] + HRESULT backgroundAttachment([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION)] + HRESULT backgroundPosition([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION)] + HRESULT backgroundPosition([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX)] + HRESULT backgroundPositionX([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX)] + HRESULT backgroundPositionX([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY)] + HRESULT backgroundPositionY([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY)] + HRESULT backgroundPositionY([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_WORDSPACING)] + HRESULT wordSpacing([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_WORDSPACING)] + HRESULT wordSpacing([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_LETTERSPACING)] + HRESULT letterSpacing([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_LETTERSPACING)] + HRESULT letterSpacing([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATION)] + HRESULT textDecoration([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATION)] + HRESULT textDecoration([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE)] + HRESULT textDecorationNone([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE)] + HRESULT textDecorationNone([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE)] + HRESULT textDecorationUnderline([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE)] + HRESULT textDecorationUnderline([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE)] + HRESULT textDecorationOverline([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE)] + HRESULT textDecorationOverline([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH)] + HRESULT textDecorationLineThrough([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH)] + HRESULT textDecorationLineThrough([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK)] + HRESULT textDecorationBlink([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK)] + HRESULT textDecorationBlink([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLRULESTYLE_VERTICALALIGN)] + HRESULT verticalAlign([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_VERTICALALIGN)] + HRESULT verticalAlign([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TEXTTRANSFORM)] + HRESULT textTransform([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_TEXTTRANSFORM)] + HRESULT textTransform([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TEXTALIGN)] + HRESULT textAlign([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_TEXTALIGN)] + HRESULT textAlign([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TEXTINDENT)] + HRESULT textIndent([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_TEXTINDENT)] + HRESULT textIndent([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_LINEHEIGHT)] + HRESULT lineHeight([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_LINEHEIGHT)] + HRESULT lineHeight([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_MARGINTOP)] + HRESULT marginTop([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_MARGINTOP)] + HRESULT marginTop([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_MARGINRIGHT)] + HRESULT marginRight([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_MARGINRIGHT)] + HRESULT marginRight([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_MARGINBOTTOM)] + HRESULT marginBottom([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_MARGINBOTTOM)] + HRESULT marginBottom([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_MARGINLEFT)] + HRESULT marginLeft([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_MARGINLEFT)] + HRESULT marginLeft([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_MARGIN)] + HRESULT margin([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_MARGIN)] + HRESULT margin([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_PADDINGTOP)] + HRESULT paddingTop([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_PADDINGTOP)] + HRESULT paddingTop([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_PADDINGRIGHT)] + HRESULT paddingRight([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_PADDINGRIGHT)] + HRESULT paddingRight([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_PADDINGBOTTOM)] + HRESULT paddingBottom([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_PADDINGBOTTOM)] + HRESULT paddingBottom([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_PADDINGLEFT)] + HRESULT paddingLeft([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_PADDINGLEFT)] + HRESULT paddingLeft([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_PADDING)] + HRESULT padding([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_PADDING)] + HRESULT padding([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDER)] + HRESULT border([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDER)] + HRESULT border([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOP)] + HRESULT borderTop([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOP)] + HRESULT borderTop([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHT)] + HRESULT borderRight([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHT)] + HRESULT borderRight([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOM)] + HRESULT borderBottom([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOM)] + HRESULT borderBottom([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFT)] + HRESULT borderLeft([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFT)] + HRESULT borderLeft([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERCOLOR)] + HRESULT borderColor([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERCOLOR)] + HRESULT borderColor([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR)] + HRESULT borderTopColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR)] + HRESULT borderTopColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR)] + HRESULT borderRightColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR)] + HRESULT borderRightColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR)] + HRESULT borderBottomColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR)] + HRESULT borderBottomColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR)] + HRESULT borderLeftColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR)] + HRESULT borderLeftColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERWIDTH)] + HRESULT borderWidth([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERWIDTH)] + HRESULT borderWidth([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH)] + HRESULT borderTopWidth([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH)] + HRESULT borderTopWidth([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH)] + HRESULT borderRightWidth([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH)] + HRESULT borderRightWidth([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH)] + HRESULT borderBottomWidth([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH)] + HRESULT borderBottomWidth([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH)] + HRESULT borderLeftWidth([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH)] + HRESULT borderLeftWidth([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERSTYLE)] + HRESULT borderStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERSTYLE)] + HRESULT borderStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE)] + HRESULT borderTopStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE)] + HRESULT borderTopStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE)] + HRESULT borderRightStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE)] + HRESULT borderRightStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE)] + HRESULT borderBottomStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE)] + HRESULT borderBottomStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE)] + HRESULT borderLeftStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE)] + HRESULT borderLeftStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_WIDTH)] + HRESULT width([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_WIDTH)] + HRESULT width([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_HEIGHT)] + HRESULT height([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_HEIGHT)] + HRESULT height([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_STYLEFLOAT)] + HRESULT styleFloat([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_STYLEFLOAT)] + HRESULT styleFloat([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_CLEAR)] + HRESULT clear([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_CLEAR)] + HRESULT clear([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_DISPLAY)] + HRESULT display([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_DISPLAY)] + HRESULT display([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_VISIBILITY)] + HRESULT visibility([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_VISIBILITY)] + HRESULT visibility([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLETYPE)] + HRESULT listStyleType([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLETYPE)] + HRESULT listStyleType([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION)] + HRESULT listStylePosition([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION)] + HRESULT listStylePosition([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE)] + HRESULT listStyleImage([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE)] + HRESULT listStyleImage([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLE)] + HRESULT listStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLE)] + HRESULT listStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_WHITESPACE)] + HRESULT whiteSpace([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_WHITESPACE)] + HRESULT whiteSpace([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_TOP)] + HRESULT top([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_TOP)] + HRESULT top([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_LEFT)] + HRESULT left([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_LEFT)] + HRESULT left([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLRULESTYLE_POSITION)] + HRESULT position([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_ZINDEX)] + HRESULT zIndex([in] VARIANT v); + + [propget, id(DISPID_IHTMLRULESTYLE_ZINDEX)] + HRESULT zIndex([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRULESTYLE_OVERFLOW)] + HRESULT overflow([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_OVERFLOW)] + HRESULT overflow([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE)] + HRESULT pageBreakBefore([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE)] + HRESULT pageBreakBefore([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER)] + HRESULT pageBreakAfter([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER)] + HRESULT pageBreakAfter([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_CSSTEXT)] + HRESULT cssText([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_CSSTEXT)] + HRESULT cssText([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_CURSOR)] + HRESULT cursor([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_CURSOR)] + HRESULT cursor([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_CLIP)] + HRESULT clip([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_CLIP)] + HRESULT clip([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRULESTYLE_FILTER)] + HRESULT filter([in] BSTR v); + + [propget, id(DISPID_IHTMLRULESTYLE_FILTER)] + HRESULT filter([retval, out] BSTR *p); + + [id(DISPID_IHTMLRULESTYLE_SETATTRIBUTE)] + HRESULT setAttribute( + [in] BSTR strAttributeName, + [in] VARIANT AttributeValue, + [defaultvalue(1), in] LONG lFlags); + + [id(DISPID_IHTMLRULESTYLE_GETATTRIBUTE)] + HRESULT getAttribute( + [in] BSTR strAttributeName, + [defaultvalue(0), in] LONG lFlags, + [retval, out] VARIANT *AttributeValue); + + [id(DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE)] + HRESULT removeAttribute( + [in] BSTR strAttributeName, + [defaultvalue(1), in] LONG lFlags, + [retval, out] VARIANT_BOOL *pfSuccess); +} + +/***************************************************************************** + * IHTMLRenderStyle interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f6ae-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLRenderStyle : IDispatch +{ + [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable] + HRESULT textLineThroughStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable] + HRESULT textLineThroughStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable] + HRESULT textUnderlineStyle([in] BSTR v); + + [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable] + HRESULT textUnderlineStyle([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable] + HRESULT textEffect([in] BSTR v); + + [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable] + HRESULT textEffect([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable] + HRESULT textColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable] + HRESULT textColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable] + HRESULT textBackgroundColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable] + HRESULT textBackgroundColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable] + HRESULT textDecorationColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable] + HRESULT textDecorationColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable] + HRESULT renderingPriority([in] long v); + + [propget, id(DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable] + HRESULT renderingPriority([retval, out] long *p); + + [propput, id(DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable] + HRESULT defaultTextSelection([in] BSTR v); + + [propget, id(DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable] + HRESULT defaultTextSelection([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable] + HRESULT textDecoration([in] BSTR v); + + [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable] + HRESULT textDecoration([retval, out] BSTR *p); +} + +/***************************************************************************** + * IHTMLCurrentStyle interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f3db-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLCurrentStyle : IDispatch +{ + [propget, id(DISPID_IHTMLCURRENTSTYLE_POSITION), displaybind, bindable] + HRESULT position([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT), displaybind, bindable] + HRESULT styleFloat([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_COLOR), displaybind, bindable] + HRESULT color([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR), displaybind, bindable] + HRESULT backgroundColor([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTFAMILY), displaybind, bindable] + HRESULT fontFamily([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSTYLE), displaybind, bindable] + HRESULT fontStyle([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTVARIANT), displaybind, bindable, hidden] + HRESULT fontVariant([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT), displaybind, bindable] + HRESULT fontWeight([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSIZE), displaybind, bindable] + HRESULT fontSize([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE), displaybind, bindable] + HRESULT backgroundImage([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] + HRESULT backgroundPositionX([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] + HRESULT backgroundPositionY([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT), displaybind, bindable] + HRESULT backgroundRepeat([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR), displaybind, bindable] + HRESULT borderLeftColor([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR), displaybind, bindable] + HRESULT borderTopColor([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR), displaybind, bindable] + HRESULT borderRightColor([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] + HRESULT borderBottomColor([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE), displaybind, bindable] + HRESULT borderTopStyle([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE), displaybind, bindable] + HRESULT borderRightStyle([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] + HRESULT borderBottomStyle([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE), displaybind, bindable] + HRESULT borderLeftStyle([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH), displaybind, bindable] + HRESULT borderTopWidth([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH), displaybind, bindable] + HRESULT borderRightWidth([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] + HRESULT borderBottomWidth([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH), displaybind, bindable] + HRESULT borderLeftWidth([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LEFT), displaybind, bindable] + HRESULT left([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TOP), displaybind, bindable] + HRESULT top([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_WIDTH), displaybind, bindable] + HRESULT width([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_HEIGHT), displaybind, bindable] + HRESULT height([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT), displaybind, bindable] + HRESULT paddingLeft([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGTOP), displaybind, bindable] + HRESULT paddingTop([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT), displaybind, bindable] + HRESULT paddingRight([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM), displaybind, bindable] + HRESULT paddingBottom([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTALIGN), displaybind, bindable] + HRESULT textAlign([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION), displaybind, bindable] + HRESULT textDecoration([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_DISPLAY), displaybind, bindable] + HRESULT display([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_VISIBILITY), displaybind, bindable] + HRESULT visibility([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_ZINDEX), displaybind, bindable] + HRESULT zIndex([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LETTERSPACING), displaybind, bindable] + HRESULT letterSpacing([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT), displaybind, bindable] + HRESULT lineHeight([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTINDENT), displaybind, bindable] + HRESULT textIndent([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN), displaybind, bindable] + HRESULT verticalAlign([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] + HRESULT backgroundAttachment([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINTOP), displaybind, bindable] + HRESULT marginTop([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT), displaybind, bindable] + HRESULT marginRight([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM), displaybind, bindable] + HRESULT marginBottom([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINLEFT), displaybind, bindable] + HRESULT marginLeft([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_CLEAR), displaybind, bindable] + HRESULT clear([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE), displaybind, bindable] + HRESULT listStyleType([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION), displaybind, bindable] + HRESULT listStylePosition([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE), displaybind, bindable] + HRESULT listStyleImage([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPTOP), displaybind, bindable] + HRESULT clipTop([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT), displaybind, bindable] + HRESULT clipRight([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM), displaybind, bindable] + HRESULT clipBottom([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPLEFT), displaybind, bindable] + HRESULT clipLeft([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOW), displaybind, bindable] + HRESULT overflow([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE), displaybind, bindable] + HRESULT pageBreakBefore([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER), displaybind, bindable] + HRESULT pageBreakAfter([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_CURSOR), displaybind, bindable] + HRESULT cursor([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT), displaybind, bindable] + HRESULT tableLayout([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE), displaybind, bindable] + HRESULT borderCollapse([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_DIRECTION), displaybind, bindable] + HRESULT direction([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BEHAVIOR), displaybind, bindable] + HRESULT behavior([retval, out] BSTR *p); + + [id(DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE)] + HRESULT getAttribute( + [in] BSTR strAttributeName, + [defaultvalue(0), in] LONG lFlags, + [retval, out] VARIANT *AttributeValue); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI), displaybind, bindable] + HRESULT unicodeBidi([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_RIGHT), displaybind, bindable] + HRESULT right([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BOTTOM), displaybind, bindable] + HRESULT bottom([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_IMEMODE), displaybind, bindable] + HRESULT imeMode([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYALIGN), displaybind, bindable] + HRESULT rubyAlign([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION), displaybind, bindable] + HRESULT rubyPosition([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG), displaybind, bindable] + HRESULT rubyOverhang([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE), displaybind, bindable] + HRESULT textAutospace([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEBREAK), displaybind, bindable] + HRESULT lineBreak([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_WORDBREAK), displaybind, bindable] + HRESULT wordBreak([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY), displaybind, bindable] + HRESULT textJustify([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM), displaybind, bindable] + HRESULT textJustifyTrim([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA), displaybind, bindable] + HRESULT textKashida([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION), displaybind, bindable] + HRESULT blockDirection([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR), displaybind, bindable] + HRESULT layoutGridChar([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE), displaybind, bindable] + HRESULT layoutGridLine([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE), displaybind, bindable] + HRESULT layoutGridMode([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE), displaybind, bindable] + HRESULT layoutGridType([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE), displaybind, bindable] + HRESULT borderStyle([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR), displaybind, bindable] + HRESULT borderColor([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH), displaybind, bindable] + HRESULT borderWidth([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDING), displaybind, bindable] + HRESULT padding([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGIN), displaybind, bindable] + HRESULT margin([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_ACCELERATOR), displaybind, bindable] + HRESULT accelerator([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWX), displaybind, bindable] + HRESULT overflowX([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWY), displaybind, bindable] + HRESULT overflowY([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM), displaybind, bindable] + HRESULT textTransform([retval, out] BSTR *p); +} + +/***************************************************************************** + * IHTMLRect interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f4a3-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLRect : IDispatch +{ + [propput, id(DISPID_IHTMLRECT_LEFT)] + HRESULT left([in] long v); + + [propget, id(DISPID_IHTMLRECT_LEFT)] + HRESULT left([retval, out] long *p); + + [propput, id(DISPID_IHTMLRECT_TOP)] + HRESULT top([in] long v); + + [propget, id(DISPID_IHTMLRECT_TOP)] + HRESULT top([retval, out] long *p); + + [propput, id(DISPID_IHTMLRECT_RIGHT)] + HRESULT right([in] long v); + + [propget, id(DISPID_IHTMLRECT_RIGHT)] + HRESULT right([retval, out] long *p); + + [propput, id(DISPID_IHTMLRECT_BOTTOM)] + HRESULT bottom([in] long v); + + [propget, id(DISPID_IHTMLRECT_BOTTOM)] + HRESULT bottom([retval, out] long *p); +} + +/***************************************************************************** + * IHTMLRectCollection interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f4a4-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLRectCollection : IDispatch +{ + [propget, id(DISPID_IHTMLRECTCOLLECTION_LENGTH)] + HRESULT length([retval, out] long *p); + + [propget, id(DISPID_IHTMLRECTCOLLECTION__NEWENUM), hidden, restricted] + HRESULT _newEnum([retval, out] IUnknown **p); + + [id(DISPID_IHTMLRECTCOLLECTION_ITEM)] + HRESULT item( + [in] VARIANT *pvarIndex, + [retval, out] VARIANT *pvarResult); +} + +/***************************************************************************** + * IHTMLDOMNode interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f5da-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLDOMNode : IDispatch +{ + [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)] + HRESULT nodeType([retval, out] long *p); + + [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)] + HRESULT parentNode([retval, out] IHTMLDOMNode **p); + + [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)] + HRESULT hasChildNodes([retval, out] VARIANT_BOOL *fChildren); + + [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)] + HRESULT childNodes([retval, out] IDispatch **p); + + [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)] + HRESULT attributes([retval, out] IDispatch **p); + + [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)] + HRESULT insertBefore( + [in] IHTMLDOMNode *newChild, + [optional, in] VARIANT refChild, + [retval, out] IHTMLDOMNode **node); + + [id(DISPID_IHTMLDOMNODE_REMOVECHILD)] + HRESULT removeChild( + [in] IHTMLDOMNode *oldChild, + [retval, out] IHTMLDOMNode **node); + + [id(DISPID_IHTMLDOMNODE_REPLACECHILD)] + HRESULT replaceChild( + [in] IHTMLDOMNode *newChild, + [in] IHTMLDOMNode *oldChild, + [retval, out] IHTMLDOMNode **node); + + [id(DISPID_IHTMLDOMNODE_CLONENODE)] + HRESULT cloneNode( + [in] VARIANT_BOOL fDeep, + [retval, out] IHTMLDOMNode **clonedNode); + + [id(DISPID_IHTMLDOMNODE_REMOVENODE)] + HRESULT removeNode( + [defaultvalue(0), in] VARIANT_BOOL fDeep, + [retval, out] IHTMLDOMNode **removed); + + [id(DISPID_IHTMLDOMNODE_SWAPNODE)] + HRESULT swapNode( + [in] IHTMLDOMNode *otherNode, + [retval, out] IHTMLDOMNode **swappedNode); + + [id(DISPID_IHTMLDOMNODE_REPLACENODE)] + HRESULT replaceNode( + [in] IHTMLDOMNode *replacement, + [retval, out] IHTMLDOMNode **replaced); + + [id(DISPID_IHTMLDOMNODE_APPENDCHILD)] + HRESULT appendChild( + [in] IHTMLDOMNode *newChild, + [retval, out] IHTMLDOMNode **node); + + [propget, id(DISPID_IHTMLDOMNODE_NODENAME)] + HRESULT nodeName([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)] + HRESULT nodeValue([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)] + HRESULT nodeValue([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)] + HRESULT firstChild([retval, out] IHTMLDOMNode **p); + + [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)] + HRESULT lastChild([retval, out] IHTMLDOMNode **p); + + [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] + HRESULT previousSibling([retval, out] IHTMLDOMNode **p); + + [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)] + HRESULT nextSibling([retval, out] IHTMLDOMNode **p); +} + +/***************************************************************************** + * IHTMLDOMNode2 interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f80b-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLDOMNode2 : IDispatch +{ + [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] + HRESULT ownerDocument([retval, out] IDispatch **p); +} + +/***************************************************************************** + * IHTMLDOMAttribute interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f4b0-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLDOMAttribute : IDispatch +{ + [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODENAME)] + HRESULT nodeName([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)] + HRESULT nodeValue([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)] + HRESULT nodeValue([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLDOMATTRIBUTE_SPECIFIED)] + HRESULT specified([retval, out] VARIANT_BOOL *p); +} + +/***************************************************************************** + * IHTMLDOMImplementation interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f80d-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLDOMImplementation : IDispatch +{ + [id(DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE)] + HRESULT hasFeature( + [in] BSTR bstrfeature, + [optional, in] VARIANT version, + [retval, out] VARIANT_BOOL *pfHasFeature); +} + +interface IHTMLElementCollection; + +/***************************************************************************** + * IHTMLElement interface + */ +[ + odl, + dual, + oleautomation, + uuid(3050f1FF-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLElement : IDispatch +{ + [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)] + HRESULT setAttribute( + [in] BSTR strAttributeName, + [in] VARIANT AttributeValue, + [defaultvalue(1), in] LONG lFlags); + + [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)] + HRESULT getAttribute( + [in] BSTR strAttributeName, + [defaultvalue(0), in] LONG lFlags, + [retval, out] VARIANT *AttributeValue); + + [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] + HRESULT removeAttribute( + [in] BSTR strAttributeName, + [defaultvalue(1), in] LONG lFlags, + [retval, out] VARIANT_BOOL *pfSuccess); + + [propput, id(DISPID_IHTMLELEMENT_CLASSNAME)] + HRESULT className([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT_CLASSNAME)] + HRESULT className([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLELEMENT_ID)] + HRESULT id([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT_ID)] + HRESULT id([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLELEMENT_TAGNAME)] + HRESULT tagName([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)] + HRESULT parentElement([retval, out] IHTMLElement **p); + + [propget, id(DISPID_IHTMLELEMENT_STYLE)] + HRESULT style([retval, out] IHTMLStyle **p); + + [propput, id(DISPID_IHTMLELEMENT_ONHELP)] + HRESULT onhelp([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONHELP)] + HRESULT onhelp([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONCLICK)] + HRESULT onclick([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONCLICK)] + HRESULT onclick([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK)] + HRESULT ondblclick([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK)] + HRESULT ondblclick([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN)] + HRESULT onkeydown([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN)] + HRESULT onkeydown([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONKEYUP)] + HRESULT onkeyup([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONKEYUP)] + HRESULT onkeyup([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS)] + HRESULT onkeypress([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS)] + HRESULT onkeypress([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)] + HRESULT onmouseout([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)] + HRESULT onmouseout([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)] + HRESULT onmouseover([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)] + HRESULT onmouseover([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)] + HRESULT onmousemove([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)] + HRESULT onmousemove([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)] + HRESULT onmousedown([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)] + HRESULT onmousedown([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP)] + HRESULT onmouseup([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP)] + HRESULT onmouseup([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)] + HRESULT document([retval, out] IDispatch **p); + + [propput, id(DISPID_IHTMLELEMENT_TITLE)] + HRESULT title([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT_TITLE)] + HRESULT title([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLELEMENT_LANGUAGE)] + HRESULT language([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT_LANGUAGE)] + HRESULT language([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART)] + HRESULT onselectstart([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART)] + HRESULT onselectstart([retval, out] VARIANT *p); + + [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] + HRESULT scrollIntoView([optional, in] VARIANT varargStart); + + [id(DISPID_IHTMLELEMENT_CONTAINS)] + HRESULT contains( + [in] IHTMLElement *pChild, + [retval, out] VARIANT_BOOL *pfResult); + + [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX)] + HRESULT sourceIndex([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)] + HRESULT recordNumber([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_LANG)] + HRESULT lang([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT_LANG)] + HRESULT lang([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)] + HRESULT offsetLeft([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)] + HRESULT offsetTop([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)] + HRESULT offsetWidth([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)] + HRESULT offsetHeight([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)] + HRESULT offsetParent([retval, out] IHTMLElement **p); + + [propput, id(DISPID_IHTMLELEMENT_INNERHTML)] + HRESULT innerHTML([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT_INNERHTML)] + HRESULT innerHTML([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)] + HRESULT innerText([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)] + HRESULT innerText([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)] + HRESULT outerHTML([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)] + HRESULT outerHTML([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)] + HRESULT outerText([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)] + HRESULT outerText([retval, out] BSTR *p); + + [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)] + HRESULT insertAdjacentHTML([in] BSTR where, [in] BSTR html); + + [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)] + HRESULT insertAdjacentText([in] BSTR where, [in] BSTR text); + + [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)] + HRESULT parentTextEdit([retval, out] IHTMLElement **p); + + [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)] + HRESULT isTextEdit([retval, out] VARIANT_BOOL *p); + + [id(DISPID_IHTMLELEMENT_CLICK)] + HRESULT click(); + + [propget, id(DISPID_IHTMLELEMENT_FILTERS)] + HRESULT filters([retval, out] IHTMLFiltersCollection **p); + + [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART)] + HRESULT ondragstart([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART)] + HRESULT ondragstart([retval, out] VARIANT *p); + + [id(DISPID_IHTMLELEMENT_TOSTRING)] + HRESULT toString([retval, out] BSTR *String); + + [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)] + HRESULT onbeforeupdate([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)] + HRESULT onbeforeupdate([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)] + HRESULT onafterupdate([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)] + HRESULT onafterupdate([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)] + HRESULT onerrorupdate([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)] + HRESULT onerrorupdate([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT)] + HRESULT onrowexit([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT)] + HRESULT onrowexit([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONROWENTER)] + HRESULT onrowenter([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONROWENTER)] + HRESULT onrowenter([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)] + HRESULT ondatasetchanged([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)] + HRESULT ondatasetchanged([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)] + HRESULT ondataavailable([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)] + HRESULT ondataavailable([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)] + HRESULT ondatasetcomplete([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)] + HRESULT ondatasetcomplete([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)] + HRESULT onfilterchange([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)] + HRESULT onfilterchange([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLELEMENT_CHILDREN)] + HRESULT children([retval, out] IDispatch **p); + + [propget, id(DISPID_IHTMLELEMENT_ALL)] + HRESULT all([retval, out] IDispatch **p); +} + +/***************************************************************************** + * IHTMLElement2 interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f434-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLElement2 : IDispatch +{ + [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)] + HRESULT scopeName([retval, out] BSTR *p); + + [id(DISPID_IHTMLELEMENT2_SETCAPTURE)] + HRESULT setCapture([defaultvalue(-1), in] VARIANT_BOOL containerCapture); + + [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)] + HRESULT releaseCapture(); + + [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] + HRESULT onlosecapture([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] + HRESULT onlosecapture([retval, out] VARIANT *p); + + [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)] + HRESULT componentFromPoint( + [in] long x, + [in] long y, + [retval, out] BSTR *component); + + [id(DISPID_IHTMLELEMENT2_DOSCROLL)] + HRESULT doScroll([optional, in] VARIANT component); + + [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] + HRESULT onscroll([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] + HRESULT onscroll([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] + HRESULT ondrag([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable] + HRESULT ondrag([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] + HRESULT ondragend([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] + HRESULT ondragend([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] + HRESULT ondragenter([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] + HRESULT ondragenter([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] + HRESULT ondragover([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] + HRESULT ondragover([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] + HRESULT ondragleave([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] + HRESULT ondragleave([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] + HRESULT ondrop([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable] + HRESULT ondrop([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] + HRESULT onbeforecut([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] + HRESULT onbeforecut([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] + HRESULT oncut([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable] + HRESULT oncut([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] + HRESULT onbeforecopy([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] + HRESULT onbeforecopy([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] + HRESULT oncopy([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable] + HRESULT oncopy([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] + HRESULT onbeforepaste([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] + HRESULT onbeforepaste([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] + HRESULT onpaste([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable] + HRESULT onpaste([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable] + HRESULT currentStyle([retval, out] IHTMLCurrentStyle **p); + + [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] + HRESULT onpropertychange([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] + HRESULT onpropertychange([retval, out] VARIANT *p); + + [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)] + HRESULT getClientRects([retval, out] IHTMLRectCollection **pRectCol); + + [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)] + HRESULT getBoundingClientRect([retval, out] IHTMLRect **pRect); + + [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)] + HRESULT setExpression( + [in] BSTR propname, + [in] BSTR expression, + [defaultvalue(""), in] BSTR language); + + [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)] + HRESULT getExpression( + [in] BSTR propname, + [retval, out] VARIANT *expression); + + [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)] + HRESULT removeExpression( + [in] BSTR propname, + [retval, out] VARIANT_BOOL *pfSuccess); + + [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] + HRESULT tabIndex([in] short v); + + [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] + HRESULT tabIndex([retval, out] short *p); + + [id(DISPID_IHTMLELEMENT2_FOCUS)] + HRESULT focus(); + + [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] + HRESULT accessKey([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable] + HRESULT accessKey([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] + HRESULT onblur([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable] + HRESULT onblur([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] + HRESULT onfocus([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable] + HRESULT onfocus([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] + HRESULT onresize([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] + HRESULT onresize([retval, out] VARIANT *p); + + [id(DISPID_IHTMLELEMENT2_BLUR)] + HRESULT blur(); + + [id(DISPID_IHTMLELEMENT2_ADDFILTER)] + HRESULT addFilter([in] IUnknown *pUnk); + + [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)] + HRESULT removeFilter([in] IUnknown *pUnk); + + [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] + HRESULT clientHeight([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] + HRESULT clientWidth([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] + HRESULT clientTop([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] + HRESULT clientLeft([retval, out] long *p); + + [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)] + HRESULT attachEvent( + [in] BSTR event, + [in] IDispatch *pDisp, + [retval, out] VARIANT_BOOL *pfResult); + + [id(DISPID_IHTMLELEMENT2_DETACHEVENT)] + HRESULT detachEvent( + [in] BSTR event, + [in] IDispatch *pDisp); + + [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)] + HRESULT readyState([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] + HRESULT onreadystatechange([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] + HRESULT onreadystatechange([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] + HRESULT onrowsdelete([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] + HRESULT onrowsdelete([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] + HRESULT onrowsinserted([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] + HRESULT onrowsinserted([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] + HRESULT oncellchange([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] + HRESULT oncellchange([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] + HRESULT dir([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable] + HRESULT dir([retval, out] BSTR *p); + + [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)] + HRESULT createControlRange([retval, out] IDispatch **range); + + [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] + HRESULT scrollHeight([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] + HRESULT scrollWidth([retval, out] long *p); + + [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] + HRESULT scrollTop([in] long v); + + [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable] + HRESULT scrollTop([retval, out] long *p); + + [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] + HRESULT scrollLeft([in] long v); + + [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] + HRESULT scrollLeft([retval, out] long *p); + + [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)] + HRESULT clearAttributes(); + + [id(DISPID_IHTMLELEMENT2_MERGEATTRIBUTES)] + HRESULT mergeAttributes([in] IHTMLElement *mergeThis); + + [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] + HRESULT oncontextmenu([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] + HRESULT oncontextmenu([retval, out] VARIANT *p); + + [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)] + HRESULT insertAdjacentElement( + [in] BSTR where, + [in] IHTMLElement *insertedElement, + [retval, out] IHTMLElement **inserted); + + [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)] + HRESULT applyElement( + [in] IHTMLElement *apply, + [in] BSTR where, + [retval, out] IHTMLElement **applied); + + [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)] + HRESULT getAdjacentText( + [in] BSTR where, + [retval, out] BSTR *text); + + [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)] + HRESULT replaceAdjacentText( + [in] BSTR where, + [in] BSTR newText, + [retval, out] BSTR *oldText); + + [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)] + HRESULT canHaveChildren([retval, out] VARIANT_BOOL *p); + + [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)] + HRESULT addBehavior( + [in] BSTR bstrUrl, + [optional, in] VARIANT *pvarFactory, + [retval, out] long *pCookie); + + [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)] + HRESULT removeBehavior( + [in] long cookie, + [retval, out] VARIANT_BOOL *pfResult); + + [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable] + HRESULT runtimeStyle([retval, out] IHTMLStyle **p); + + [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)] + HRESULT behaviorUrns([retval, out] IDispatch **p); + + [propput, id(DISPID_IHTMLELEMENT2_TAGURN)] + HRESULT tagUrn([in] BSTR v); + + [propget, id(DISPID_IHTMLELEMENT2_TAGURN)] + HRESULT tagUrn([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] + HRESULT onbeforeeditfocus([in] VARIANT v); + + [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] + HRESULT onbeforeeditfocus([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] + HRESULT readyStateValue([retval, out] long *p); + + [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] + HRESULT getElementsByTagName( + [in] BSTR v, + [retval, out] IHTMLElementCollection **pelColl); +} + +/***************************************************************************** + * IHTMLStyleSheetRule interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F357-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLStyleSheetRule : IDispatch +{ + [propput, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)] + HRESULT selectorText([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)] + HRESULT selectorText([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLSTYLESHEETRULE_STYLE)] + HRESULT style([retval, out] IHTMLRuleStyle **p); + + [propget, id(DISPID_IHTMLSTYLESHEETRULE_READONLY)] + HRESULT readOnly([retval, out] VARIANT_BOOL *p); +} + +/***************************************************************************** + * IHTMLStyleSheetRulesCollection interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F2E5-98B5-11Cf-BB82-00AA00BDCE0B) +] +interface IHTMLStyleSheetRulesCollection : IDispatch +{ + [propget, id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH)] + HRESULT length([retval, out] long *p); + + [id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM)] + HRESULT item( + [in] long index, + [retval, out] IHTMLStyleSheetRule **ppHTMLStyleSheetRule); +} + +/***************************************************************************** + * IHTMLStyleSheet interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F2E3-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLStyleSheet : IDispatch +{ + [propput, id(DISPID_IHTMLSTYLESHEET_TITLE)] + HRESULT title([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLESHEET_TITLE)] + HRESULT title([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET)] + HRESULT parentStyleSheet([retval, out] IHTMLStyleSheet **p); + + [propget, id(DISPID_IHTMLSTYLESHEET_OWNINGELEMENT)] + HRESULT owningElement([retval, out] IHTMLElement **p); + + [propput, id(DISPID_IHTMLSTYLESHEET_DISABLED)] + HRESULT disabled([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLSTYLESHEET_DISABLED)] + HRESULT disabled([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IHTMLSTYLESHEET_READONLY)] + HRESULT readOnly([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IHTMLSTYLESHEET_IMPORTS)] + HRESULT imports([retval, out] IHTMLStyleSheetsCollection **p); + + [propput, id(DISPID_IHTMLSTYLESHEET_HREF)] + HRESULT href([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLESHEET_HREF)] + HRESULT href([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLSTYLESHEET_TYPE)] + HRESULT type([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLSTYLESHEET_ID)] + HRESULT id([retval, out] BSTR *p); + + [id(DISPID_IHTMLSTYLESHEET_ADDIMPORT)] + HRESULT addImport( + [in] BSTR bstrURL, + [defaultvalue(-1), in] long lIndex, + [retval, out] long *plIndex); + + [id(DISPID_IHTMLSTYLESHEET_ADDRULE)] + HRESULT addRule( + [in] BSTR bstrSelector, + [in] BSTR bstrStyle, + [defaultvalue(-1), in] long lIndex, + [retval, out] long *plNewIndex); + + [id(DISPID_IHTMLSTYLESHEET_REMOVEIMPORT)] + HRESULT removeImport([in] long lIndex); + + [id(DISPID_IHTMLSTYLESHEET_REMOVERULE)] + HRESULT removeRule([in] long lIndex); + + [propput, id(DISPID_IHTMLSTYLESHEET_MEDIA)] + HRESULT media([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLESHEET_MEDIA)] + HRESULT media([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)] + HRESULT cssText([in] BSTR v); + + [propget, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)] + HRESULT cssText([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLSTYLESHEET_RULES)] + HRESULT rules([retval, out] IHTMLStyleSheetRulesCollection **p); +} + +/***************************************************************************** + * IHTMLStyleSheetsCollection interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F37E-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLStyleSheetsCollection : IDispatch +{ + [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH)] + HRESULT length([retval, out] long *p); + + [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM)] + HRESULT _newEnum([retval, out] IUnknown **p); + + [id(DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM)] + HRESULT item( + [in] VARIANT *pvarIndex, + [retval, out] VARIANT *pvarResult); +} + +/***************************************************************************** + * IHTMLTxtRange interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f220-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLTxtRange : IDispatch +{ + [propget, id(DISPID_IHTMLTXTRANGE_HTMLTEXT)] + HRESULT htmlText([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLTXTRANGE_TEXT)] + HRESULT text([in] BSTR v); + + [propget, id(DISPID_IHTMLTXTRANGE_TEXT)] + HRESULT text([retval, out] BSTR *p); + + [id(DISPID_IHTMLTXTRANGE_PARENTELEMENT)] + HRESULT parentElement([retval, out] IHTMLElement **parent); + + [id(DISPID_IHTMLTXTRANGE_DUPLICATE)] + HRESULT duplicate([retval, out] IHTMLTxtRange **Duplicate); + + [id(DISPID_IHTMLTXTRANGE_INRANGE)] + HRESULT inRange( + [in] IHTMLTxtRange *Range, + [retval, out] VARIANT_BOOL *InRange); + + [id(DISPID_IHTMLTXTRANGE_ISEQUAL)] + HRESULT isEqual( + [in] IHTMLTxtRange *Range, + [retval, out] VARIANT_BOOL *IsEqual); + + [id(DISPID_IHTMLTXTRANGE_SCROLLINTOVIEW)] + HRESULT scrollIntoView([defaultvalue(-1), in] VARIANT_BOOL fStart); + + [id(DISPID_IHTMLTXTRANGE_COLLAPSE)] + HRESULT collapse([defaultvalue(-1), in] VARIANT_BOOL Start); + + [id(DISPID_IHTMLTXTRANGE_EXPAND)] + HRESULT expand( + [in] BSTR Unit, + [retval, out] VARIANT_BOOL *Success); + + [id(DISPID_IHTMLTXTRANGE_MOVE)] + HRESULT move( + [in] BSTR Unit, + [defaultvalue(1), in] long Count, + [retval, out] long *ActualCount); + + [id(DISPID_IHTMLTXTRANGE_MOVESTART)] + HRESULT moveStart( + [in] BSTR Unit, + [defaultvalue(1), in] long Count, + [retval, out] long *ActualCount); + + [id(DISPID_IHTMLTXTRANGE_MOVEEND)] + HRESULT moveEnd( + [in] BSTR Unit, + [defaultvalue(1), in] long Count, + [retval, out] long *ActualCount); + + [id(DISPID_IHTMLTXTRANGE_SELECT)] + HRESULT select(); + + [id(DISPID_IHTMLTXTRANGE_PASTEHTML)] + HRESULT pasteHTML([in] BSTR html); + + [id(DISPID_IHTMLTXTRANGE_MOVETOELEMENTTEXT)] + HRESULT moveToElementText([in] IHTMLElement *element); + + [id(DISPID_IHTMLTXTRANGE_SETENDPOINT)] + HRESULT setEndPoint( + [in] BSTR how, + [in] IHTMLTxtRange *SourceRange); + + [id(DISPID_IHTMLTXTRANGE_COMPAREENDPOINTS)] + HRESULT compareEndPoints( + [in] BSTR how, + [in] IHTMLTxtRange *SourceRange, + [retval, out] long *ret); + + [id(DISPID_IHTMLTXTRANGE_FINDTEXT)] + HRESULT findText( + [in] BSTR String, + [defaultvalue(1073741823), in] long count, + [defaultvalue(0), in] long Flags, + [retval, out] VARIANT_BOOL *Success); + + [id(DISPID_IHTMLTXTRANGE_MOVETOPOINT)] + HRESULT moveToPoint( + [in] long x, + [in] long y); + + [id(DISPID_IHTMLTXTRANGE_GETBOOKMARK)] + HRESULT getBookmark([retval, out] BSTR *Boolmark); + + [id(DISPID_IHTMLTXTRANGE_MOVETOBOOKMARK)] + HRESULT moveToBookmark( + [in] BSTR Bookmark, + [retval, out] VARIANT_BOOL *Success); + + [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSUPPORTED)] + HRESULT queryCommandSupported( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDENABLED)] + HRESULT queryCommandEnabled( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSTATE)] + HRESULT queryCommandState( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDINDETERM)] + HRESULT queryCommandIndeterm( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDTEXT)] + HRESULT queryCommandText( + [in] BSTR cmdID, + [retval, out] BSTR *pcmdText); + + [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDVALUE)] + HRESULT queryCommandValue( + [in] BSTR cmdID, + [retval, out] VARIANT *pcmdValue); + + [id(DISPID_IHTMLTXTRANGE_EXECCOMMAND)] + HRESULT execCommand( + [in] BSTR cmdID, + [defaultvalue(0), in] VARIANT_BOOL showUI, + [optional, in] VARIANT value, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLTXTRANGE_EXECCOMMANDSHOWHELP)] + HRESULT execCommandShowHelp( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); +} + +/***************************************************************************** + * IHTMLFormElement interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F1F7-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLFormElement : IDispatch +{ + [propput, id(DISPID_IHTMLFORMELEMENT_ACTION)] + HRESULT action([in] BSTR v); + + [propget, id(DISPID_IHTMLFORMELEMENT_ACTION)] + HRESULT action([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLFORMELEMENT_DIR)] + HRESULT dir([in] BSTR v); + + [propget, id(DISPID_IHTMLFORMELEMENT_DIR)] + HRESULT dir([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLFORMELEMENT_ENCODING)] + HRESULT encoding([in] BSTR v); + + [propget, id(DISPID_IHTMLFORMELEMENT_ENCODING)] + HRESULT encoding([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLFORMELEMENT_METHOD)] + HRESULT method([in] BSTR v); + + [propget, id(DISPID_IHTMLFORMELEMENT_METHOD)] + HRESULT method([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLFORMELEMENT_ELEMENTS)] + HRESULT elements([retval, out] IDispatch **p); + + [propput, id(DISPID_IHTMLFORMELEMENT_TARGET)] + HRESULT target([in] BSTR v); + + [propget, id(DISPID_IHTMLFORMELEMENT_TARGET)] + HRESULT target([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLFORMELEMENT_NAME)] + HRESULT name([in] BSTR v); + + [propget, id(DISPID_IHTMLFORMELEMENT_NAME)] + HRESULT name([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)] + HRESULT onsubmit([in] VARIANT v); + + [propget, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)] + HRESULT onsubmit([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLFORMELEMENT_ONRESET)] + HRESULT onreset([in] VARIANT v); + + [propget, id(DISPID_IHTMLFORMELEMENT_ONRESET)] + HRESULT onreset([retval, out] VARIANT *p); + + [id(DISPID_IHTMLFORMELEMENT_SUBMIT)] + HRESULT submit(); + + [id(DISPID_IHTMLFORMELEMENT_RESET)] + HRESULT reset(); + + [propput, id(DISPID_IHTMLFORMELEMENT_LENGTH)] + HRESULT length([in] long v); + + [propget, id(DISPID_IHTMLFORMELEMENT_LENGTH)] + HRESULT length([retval, out] long *p); + + [propget, id(DISPID_IHTMLFORMELEMENT__NEWENUM)] + HRESULT _newEnum([retval, out] IUnknown **p); + + [id(DISPID_IHTMLFORMELEMENT_ITEM)] + HRESULT item( + [optional, in] VARIANT name, + [optional, in] VARIANT index, + [retval, out] IDispatch **pdisp); + + [id(DISPID_IHTMLFORMELEMENT_TAGS)] + HRESULT tags( + [in] VARIANT tagName, + [retval, out] IDispatch **pdisp); +} + +/***************************************************************************** + * IHTMLTextContainer interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f230-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLTextContainer : IDispatch +{ + [id(DISPID_IHTMLTEXTCONTAINER_CREATECONTROLRANGE)] + HRESULT createControlRange([retval, out] IDispatch **range); + + [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLHEIGHT), displaybind, bindable] + HRESULT scrollHeight([retval, out] long *p); + + [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLWIDTH), displaybind, bindable] + HRESULT scrollWidth([retval, out] long *p); + + [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable] + HRESULT scrollTop([in] long v); + + [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable] + HRESULT scrollTop([retval, out] long *p); + + [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable] + HRESULT scrollLeft([in] long v); + + [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable] + HRESULT scrollLeft([retval, out] long *p); + + [propput, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable] + HRESULT onscroll([in] VARIANT v); + + [propget, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable] + HRESULT onscroll([retval, out] VARIANT *p); +} + +/***************************************************************************** + * IHTMLImgElement interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F240-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLImgElement : IDispatch +{ + [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP)] + HRESULT isMap([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP)] + HRESULT isMap([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP)] + HRESULT useMap([in] BSTR v); + + [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP)] + HRESULT useMap([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)] + HRESULT mimeType([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)] + HRESULT fileSize([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)] + HRESULT fileCreatedDate([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)] + HRESULT fileModifiedDate([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)] + HRESULT fileUpdatedDate([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)] + HRESULT protocol([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_HREF)] + HRESULT href([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)] + HRESULT nameProp([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_BORDER)] + HRESULT border([in] VARIANT v); + + [propget, id(DISPID_IHTMLIMGELEMENT_BORDER)] + HRESULT border([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE)] + HRESULT vspace([in] long v); + + [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE)] + HRESULT vspace([retval, out] long *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE)] + HRESULT hspace([in] long v); + + [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE)] + HRESULT hspace([retval, out] long *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_ALT)] + HRESULT alt([in] BSTR v); + + [propget, id(DISPID_IHTMLIMGELEMENT_ALT)] + HRESULT alt([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_SRC)] + HRESULT src([in] BSTR v); + + [propget, id(DISPID_IHTMLIMGELEMENT_SRC)] + HRESULT src([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC)] + HRESULT lowsrc([in] BSTR v); + + [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC)] + HRESULT lowsrc([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_VRML)] + HRESULT vrml([in] BSTR v); + + [propget, id(DISPID_IHTMLIMGELEMENT_VRML)] + HRESULT vrml([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC)] + HRESULT dynsrc([in] BSTR v); + + [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC)] + HRESULT dynsrc([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_READYSTATE)] + HRESULT readyState([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)] + HRESULT complete([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_LOOP)] + HRESULT loop([in] VARIANT v); + + [propget, id(DISPID_IHTMLIMGELEMENT_LOOP)] + HRESULT loop([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN)] + HRESULT align([in] BSTR v); + + [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN)] + HRESULT align([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_ONLOAD)] + HRESULT onload([in] VARIANT v); + + [propget, id(DISPID_IHTMLIMGELEMENT_ONLOAD)] + HRESULT onload([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_ONERROR)] + HRESULT onerror([in] VARIANT v); + + [propget, id(DISPID_IHTMLIMGELEMENT_ONERROR)] + HRESULT onerror([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_ONABORT)] + HRESULT onabort([in] VARIANT v); + + [propget, id(DISPID_IHTMLIMGELEMENT_ONABORT)] + HRESULT onabort([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_NAME)] + HRESULT name([in] BSTR v); + + [propget, id(DISPID_IHTMLIMGELEMENT_NAME)] + HRESULT name([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)] + HRESULT width([in] long v); + + [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)] + HRESULT width([retval, out] long *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)] + HRESULT height([in] long v); + + [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)] + HRESULT height([retval, out] long *p); + + [propput, id(DISPID_IHTMLIMGELEMENT_START)] + HRESULT start([in] BSTR v); + + [propget, id(DISPID_IHTMLIMGELEMENT_START)] + HRESULT start([retval, out] BSTR *p); +} + +/***************************************************************************** + * IHTMLImageElementFactory interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F38E-98B5-11CF-BB82-00AAA0BDCE0B) +] +interface IHTMLImageElementFactory : IDispatch +{ + [id(DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE)] + HRESULT create( + [optional, in] VARIANT width, + [optional, in] VARIANT height, + [retval, out] IHTMLImgElement **elem); +} + +/***************************************************************************** + * IHTMLBodyElement interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f1d8-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLBodyElement : IDispatch +{ + [propput, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable] + HRESULT background([in] BSTR v); + + [propget, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable] + HRESULT background([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable] + HRESULT bgProperties([in] BSTR v); + + [propget, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable] + HRESULT bgProperties([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable] + HRESULT leftMargin([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable] + HRESULT leftMargin([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable] + HRESULT topMargin([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable] + HRESULT topMargin([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable] + HRESULT rightMargin([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable] + HRESULT rightMargin([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable] + HRESULT bottomMargin([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable] + HRESULT bottomMargin([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable] + HRESULT noWrap([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable] + HRESULT noWrap([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable] + HRESULT bgColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable] + HRESULT bgColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable] + HRESULT text([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable] + HRESULT text([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable] + HRESULT link([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable] + HRESULT link([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable] + HRESULT vLink([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable] + HRESULT vLink([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable] + HRESULT aLink([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable] + HRESULT aLink([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable] + HRESULT onload([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable] + HRESULT onload([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable] + HRESULT onunload([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable] + HRESULT onunload([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable] + HRESULT scroll([in] BSTR v); + + [propget, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable] + HRESULT scroll([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable] + HRESULT onselect([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable] + HRESULT onselect([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable] + HRESULT onbeforeunload([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable] + HRESULT onbeforeunload([retval, out] VARIANT *p); + + [id(DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)] + HRESULT createTextRange([retval, out] IHTMLTxtRange **range); +} + +/***************************************************************************** + * IHTMLBodyElement2 interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f5c5-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLBodyElement2 : IDispatch +{ + [propput, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable] + HRESULT onbeforeprint([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable] + HRESULT onbeforeprint([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable] + HRESULT onafterprint([in] VARIANT v); + + [propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable] + HRESULT onafterprint([retval, out] VARIANT *p); +} + + +/***************************************************************************** + * IHTMLElementCollection interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F21F-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLElementCollection : IDispatch +{ + [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)] + HRESULT toString([retval, out] BSTR *String); + + [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)] + HRESULT length([in] long v); + + [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)] + HRESULT length([retval, out] long *p); + + [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM)] + HRESULT _newEnum([retval, out] IUnknown **p); + + [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)] + HRESULT item( + [optional, in] VARIANT name, + [optional, in] VARIANT index, + [retval, out] IDispatch **pdisp); + + [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)] + HRESULT tags( + [in] VARIANT tagName, + [retval, out] IDispatch **pdisp); +} + +/***************************************************************************** + * IHTMLSelectElement interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f244-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLSelectElement : IDispatch +{ + [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable] + HRESULT size([in] long v); + + [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable] + HRESULT size([retval, out] long *p); + + [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable] + HRESULT multiple([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable] + HRESULT multiple([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable] + HRESULT name([in] BSTR v); + + [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable] + HRESULT name([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)] + HRESULT options([retval, out] IDispatch **p); + + [propput, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable] + HRESULT onchange([in] VARIANT v); + + [propget, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable] + HRESULT onchange([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)] + HRESULT selectedIndex([in] long v); + + [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)] + HRESULT selectedIndex([retval, out] long *p); + + [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable] + HRESULT type([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable] + HRESULT value([in] BSTR v); + + [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable] + HRESULT value([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable] + HRESULT disabled([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable] + HRESULT disabled([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)] + HRESULT form([retval, out] IHTMLFormElement **p); + + [id(DISPID_IHTMLSELECTELEMENT_ADD)] + HRESULT add( + [in] IHTMLElement *element, + [optional, in] VARIANT before); + + [id(DISPID_IHTMLSELECTELEMENT_REMOVE)] + HRESULT remove([defaultvalue(-1), in] long index); + + [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)] + HRESULT length([in] long v); + + [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)] + HRESULT length([retval, out] long *p); + + [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted] + HRESULT _newEnum([retval, out] IUnknown **p); + + [id(DISPID_IHTMLSELECTELEMENT_ITEM)] + HRESULT item( + [optional, in] VARIANT name, + [optional, in] VARIANT index, + [retval, out] IDispatch **pdisp); + + [id(DISPID_IHTMLSELECTELEMENT_TAGS)] + HRESULT tags( + [in] VARIANT tagName, + [retval, out] IDispatch **pdisp); +} + +/***************************************************************************** + * IHTMLSelectionObject interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F25A-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLSelectionObject : IDispatch +{ + [id(DISPID_IHTMLSELECTIONOBJECT_CREATERANGE)] + HRESULT createRange([retval, out] IDispatch **range); + + [id(DISPID_IHTMLSELECTIONOBJECT_EMPTY)] + HRESULT empty(); + + [id(DISPID_IHTMLSELECTIONOBJECT_CLEAR)] + HRESULT clear(); + + [propget, id(DISPID_IHTMLSELECTIONOBJECT_TYPE)] + HRESULT type([retval, out] BSTR *p); +} + +/***************************************************************************** + * IHTMLOptionElement interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F211-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLOptionElement : IDispatch +{ + [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)] + HRESULT selected([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)] + HRESULT selected([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)] + HRESULT value([in] BSTR v); + + [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)] + HRESULT value([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)] + HRESULT defaultSelected([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)] + HRESULT defaultSelected([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)] + HRESULT index([in] LONG v); + + [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)] + HRESULT index([retval, out] LONG *p); + + [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)] + HRESULT text([in] BSTR v); + + [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)] + HRESULT text([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)] + HRESULT form([retval, out] IHTMLFormElement **p); +} + +/***************************************************************************** + * IHTMLOptionElementFactory interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F38C-98B5-11Cf-BB82-00AA00BDCE0B) +] +interface IHTMLOptionElementFactory : IDispatch +{ + [id(DISPID_IHTMLOPTIONELEMENTFACTORY_CREATE)] + HRESULT create( + [optional, in] VARIANT text, + [optional, in] VARIANT value, + [optional, in] VARIANT defaultselected, + [optional, in] VARIANT selected, + [retval, out] IHTMLOptionElement **optelem); +} + +/***************************************************************************** + * IHTMLInputElement interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f5d2-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLInputElement : IDispatch +{ + [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)] + HRESULT type([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_TYPE)] + HRESULT type([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable] + HRESULT value([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable] + HRESULT value([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable] + HRESULT name([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable] + HRESULT name([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_STATUS)] + HRESULT status([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_STATUS)] + HRESULT status([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable] + HRESULT disabled([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable] + HRESULT disabled([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IHTMLINPUTELEMENT_FORM)] + HRESULT form([retval, out] IHTMLFormElement **p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable] + HRESULT size([in] long v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable] + HRESULT size([retval, out] long *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable] + HRESULT maxLength([in] long v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable] + HRESULT maxLength([retval, out] long *p); + + [id(DISPID_IHTMLINPUTELEMENT_SELECT)] + HRESULT select(); + + [propput, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable] + HRESULT onchange([in] VARIANT v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable] + HRESULT onchange([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable] + HRESULT onselect([in] VARIANT v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable] + HRESULT onselect([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] + HRESULT defaultValue([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] + HRESULT defaultValue([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable] + HRESULT readOnly([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable] + HRESULT readOnly([retval, out] VARIANT_BOOL *p); + + [id(DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)] + HRESULT createTextRange([retval, out] IHTMLTxtRange **range); + + [propput, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable] + HRESULT indeterminate([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable] + HRESULT indeterminate([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable] + HRESULT defaultChecked([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable] + HRESULT defaultChecked([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable] + HRESULT checked([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable] + HRESULT checked([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable] + HRESULT border([in] VARIANT v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable] + HRESULT border([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable] + HRESULT vspace([in] long v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable] + HRESULT vspace([retval, out] long *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable] + HRESULT hspace([in] long v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable] + HRESULT hspace([retval, out] long *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable] + HRESULT alt([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable] + HRESULT alt([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable] + HRESULT src([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable] + HRESULT src([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable] + HRESULT lowsrc([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable] + HRESULT lowsrc([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable] + HRESULT vrml([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable] + HRESULT vrml([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable] + HRESULT dynsrc([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable] + HRESULT dynsrc([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLINPUTELEMENT_READYSTATE)] + HRESULT readyState([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLINPUTELEMENT_COMPLETE)] + HRESULT complete([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable] + HRESULT loop([in] VARIANT v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable] + HRESULT loop([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable] + HRESULT align([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable] + HRESULT align([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable] + HRESULT onload([in] VARIANT v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable] + HRESULT onload([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable] + HRESULT onerror([in] VARIANT v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable] + HRESULT onerror([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable] + HRESULT onabort([in] VARIANT v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable] + HRESULT onabort([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)] + HRESULT width([in] long v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)] + HRESULT width([retval, out] long *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)] + HRESULT height([in] long v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)] + HRESULT height([retval, out] long *p); + + [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable] + HRESULT start([in] BSTR v); + + [propget, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable] + HRESULT start([retval, out] BSTR *p); +} + +/***************************************************************************** + * IHTMLTextAreaElement interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f2aa-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLTextAreaElement : IDispatch +{ + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_TYPE)] + HRESULT type([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable] + HRESULT value([in] BSTR v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable] + HRESULT value([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable] + HRESULT name([in] BSTR v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable] + HRESULT name([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)] + HRESULT status([in] VARIANT v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)] + HRESULT status([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_DISABLED), displaybind, bindable] + HRESULT disabled([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_DISABLED), displaybind, bindable] + HRESULT disabled([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_FORM)] + HRESULT form([retval, out] IHTMLFormElement **p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] + HRESULT defaultValue([in] BSTR v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] + HRESULT defaultValue([retval, out] BSTR *p); + + [id(DISPID_IHTMLTEXTAREAELEMENT_SELECT)] + HRESULT select(); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable] + HRESULT onchange([in] VARIANT v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable] + HRESULT onchange([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable] + HRESULT onselect([in] VARIANT v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable] + HRESULT onselect([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable] + HRESULT readOnly([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable] + HRESULT readOnly([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable] + HRESULT rows([in] long v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable] + HRESULT rows([retval, out] long *p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable] + HRESULT cols([in] long v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable] + HRESULT cols([retval, out] long *p); + + [propput, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable] + HRESULT wrap([in] BSTR v); + + [propget, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable] + HRESULT wrap([retval, out] BSTR *p); + + [id(DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)] + HRESULT createTextRange([retval, out] IHTMLTxtRange **range); +} + +/***************************************************************************** + * IOmHistory interface + */ +[ + odl, + oleautomation, + dual, + uuid(FECEAAA2-8405-11CF-8BA1-00AA00476DA6) +] +interface IOmHistory : IDispatch +{ + [propget, id(DISPID_IOMHISTORY_LENGTH)] + HRESULT length([retval, out] short *p); + + [id(DISPID_IOMHISTORY_BACK)] + HRESULT back([optional, in] VARIANT *pvargdistance); + + [id(DISPID_IOMHISTORY_FORWARD)] + HRESULT forward([optional, in] VARIANT *pvargdistance); + + [id(DISPID_IOMHISTORY_GO)] + HRESULT go([optional, in] VARIANT *pvargdistance); +} + +/***************************************************************************** + * IHTMLMimeTypesCollection interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F3FC-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLMimeTypesCollection : IDispatch +{ + [propget, id(DISPID_IHTMLMIMETYPESCOLLECTION_LENGTH)] + HRESULT length([retval, out] long *p); +} + +/***************************************************************************** + * IHTMLPluginsCollection interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F3FD-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLPluginsCollection : IDispatch +{ + [propget, id(DISPID_IHTMLPLUGINSCOLLECTION_LENGTH)] + HRESULT length([retval, out] long *p); + + [id(DISPID_IHTMLPLUGINSCOLLECTION_REFRESH)] + HRESULT refresh([defaultvalue(0), in] VARIANT_BOOL reload); +} + +/***************************************************************************** + * IHTMLOpsProfile interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F401-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLOpsProfile : IDispatch +{ + [id(DISPID_IHTMLOPSPROFILE_ADDREQUEST)] + HRESULT addRequest( + [in] BSTR name, + [optional, in] VARIANT reserved, + [retval, out] VARIANT_BOOL *success); + + [id(DISPID_IHTMLOPSPROFILE_CLEARREQUEST)] + HRESULT clearRequest(); + + [id(DISPID_IHTMLOPSPROFILE_DOREQUEST)] + HRESULT doRequest( + [in] VARIANT usage, + [optional, in] VARIANT fname, + [optional, in] VARIANT domain, + [optional, in] VARIANT path, + [optional, in] VARIANT expire, + [optional, in] VARIANT reserved); + + [id(DISPID_IHTMLOPSPROFILE_GETATTRIBUTE)] + HRESULT getAttribute( + [in] BSTR name, + [retval, out] BSTR *value); + + [id(DISPID_IHTMLOPSPROFILE_SETATTRIBUTE)] + HRESULT setAttribute( + [in] BSTR name, + [in] BSTR value, + [optional, in] VARIANT prefs, + [retval, out] VARIANT_BOOL *success); + + [id(DISPID_IHTMLOPSPROFILE_COMMITCHANGES)] + HRESULT commitChanges([retval, out] VARIANT_BOOL *success); + + [id(DISPID_IHTMLOPSPROFILE_ADDREADREQUEST)] + HRESULT addReadRequest( + [in] BSTR name, + [optional, in] VARIANT reserved, + [retval, out] VARIANT_BOOL *success); + + [id(DISPID_IHTMLOPSPROFILE_DOREADREQUEST)] + HRESULT doReadRequest( + [in] VARIANT usage, + [optional, in] VARIANT fname, + [optional, in] VARIANT domain, + [optional, in] VARIANT path, + [optional, in] VARIANT expire, + [optional, in] VARIANT reserved); + + [id(DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST)] + HRESULT doWriteRequest([retval, out] VARIANT_BOOL *success); +} + +/***************************************************************************** + * IOmNavigator interface + */ +[ + odl, + oleautomation, + dual, + uuid(FECEAAA5-8405-11CF-8BA1-00AA00476DA6) +] +interface IOmNavigator : IDispatch +{ + [propget, id(DISPID_IOMNAVIGATOR_APPCODENAME)] + HRESULT appCodeName([retval, out] BSTR *p); + + [propget, id(DISPID_IOMNAVIGATOR_APPNAME)] + HRESULT appName([retval, out] BSTR *p); + + [propget, id(DISPID_IOMNAVIGATOR_APPVERSION)] + HRESULT appVersion([retval, out] BSTR *p); + + [propget, id(DISPID_IOMNAVIGATOR_USERAGENT)] + HRESULT userAgent([retval, out] BSTR *p); + + [id(DISPID_IOMNAVIGATOR_JAVAENABLED)] + HRESULT javaEnabled([retval, out] VARIANT_BOOL *enabled); + + [id(DISPID_IOMNAVIGATOR_TAINTENABLED)] + HRESULT taintEnabled([retval, out] VARIANT_BOOL *enabled); + + [propget, id(DISPID_IOMNAVIGATOR_MIMETYPES)] + HRESULT mimeTypes([retval, out] IHTMLMimeTypesCollection **p); + + [propget, id(DISPID_IOMNAVIGATOR_PLUGINS)] + HRESULT plugins([retval, out] IHTMLPluginsCollection **p); + + [propget, id(DISPID_IOMNAVIGATOR_COOKIEENABLED)] + HRESULT cookieEnabled([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IOMNAVIGATOR_OPSPROFILE)] + HRESULT opsProfile([retval, out] IHTMLOpsProfile **p); + + [id(DISPID_IOMNAVIGATOR_TOSTRING)] + HRESULT toString([retval, out] BSTR *String); + + [propget, id(DISPID_IOMNAVIGATOR_CPUCLASS)] + HRESULT cpuClass([retval, out] BSTR *p); + + [propget, id(DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)] + HRESULT systemLanguage([retval, out] BSTR *p); + + [propget, id(DISPID_IOMNAVIGATOR_BROWSERLANGUAGE)] + HRESULT browserLanguage([retval, out] BSTR *p); + + [propget, id(DISPID_IOMNAVIGATOR_USERLANGUAGE)] + HRESULT userLanguage([retval, out] BSTR *p); + + [propget, id(DISPID_IOMNAVIGATOR_PLATFORM)] + HRESULT platform([retval, out] BSTR *p); + + [propget, id(DISPID_IOMNAVIGATOR_APPMINORVERSION)] + HRESULT appMinorVersion([retval, out] BSTR *p); + + [propget, id(DISPID_IOMNAVIGATOR_CONNECTIONSPEED)] + HRESULT connectionSpeed([retval, out] long *p); + + [propget, id(DISPID_IOMNAVIGATOR_ONLINE)] + HRESULT onLine([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IOMNAVIGATOR_USERPROFILE)] + HRESULT userProfile([retval, out] IHTMLOpsProfile **p); +} + +/***************************************************************************** + * IHTMLLocation interface + */ +[ + odl, + oleautomation, + dual, + uuid(163BB1E0-6E00-11cf-837A-48DC04C10000) +] +interface IHTMLLocation : IDispatch +{ + [propput, id(DISPID_IHTMLLOCATION_HREF)] + HRESULT href([in] BSTR v); + + [propget, id(DISPID_IHTMLLOCATION_HREF)] + HRESULT href([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLLOCATION_PROTOCOL)] + HRESULT protocol([in] BSTR v); + + [propget, id(DISPID_IHTMLLOCATION_PROTOCOL)] + HRESULT protocol([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLLOCATION_HOST)] + HRESULT host([in] BSTR v); + + [propget, id(DISPID_IHTMLLOCATION_HOST)] + HRESULT host([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLLOCATION_HOSTNAME)] + HRESULT hostname([in] BSTR v); + + [propget, id(DISPID_IHTMLLOCATION_HOSTNAME)] + HRESULT hostname([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLLOCATION_PORT)] + HRESULT port([in] BSTR v); + + [propget, id(DISPID_IHTMLLOCATION_PORT)] + HRESULT port([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLLOCATION_PATHNAME)] + HRESULT pathname([in] BSTR v); + + [propget, id(DISPID_IHTMLLOCATION_PATHNAME)] + HRESULT pathname([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLLOCATION_SEARCH)] + HRESULT search([in] BSTR v); + + [propget, id(DISPID_IHTMLLOCATION_SEARCH)] + HRESULT search([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLLOCATION_HASH)] + HRESULT hash([in] BSTR v); + + [propget, id(DISPID_IHTMLLOCATION_HASH)] + HRESULT hash([retval, out] BSTR *p); + + [id(DISPID_IHTMLLOCATION_RELOAD)] + HRESULT reload([defaultvalue(0), in] VARIANT_BOOL flag); + + [id(DISPID_IHTMLLOCATION_REPLACE)] + HRESULT replace([in] BSTR bstr); + + [id(DISPID_IHTMLLOCATION_ASSIGN)] + HRESULT assign([in] BSTR bstr); + + [id(DISPID_IHTMLLOCATION_TOSTRING)] + HRESULT toString([retval, out] BSTR *String); +} + +/***************************************************************************** + * IHTMLEventObj interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050F32D-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLEventObj : IDispatch +{ + [propget, id(DISPID_IHTMLEVENTOBJ_SRCELEMENT)] + HRESULT srcElement([retval, out] IHTMLElement **p); + + [propget, id(DISPID_IHTMLEVENTOBJ_ALTKEY)] + HRESULT altKey([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_CTRLKEY)] + HRESULT ctrlKey([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_SHIFTKEY)] + HRESULT shiftKey([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)] + HRESULT returnValue([in] VARIANT v); + + [propget, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)] + HRESULT returnValue([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)] + HRESULT cancelBubble([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)] + HRESULT cancelBubble([retval, out] VARIANT_BOOL *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_FROMELEMENT)] + HRESULT fromElement([retval, out] IHTMLElement **p); + + [propget, id(DISPID_IHTMLEVENTOBJ_TOELEMENT)] + HRESULT toElement([retval, out] IHTMLElement **p); + + [propput, id(DISPID_IHTMLEVENTOBJ_KEYCODE)] + HRESULT keyCode([in] long v); + + [propget, id(DISPID_IHTMLEVENTOBJ_KEYCODE)] + HRESULT keyCode([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_BUTTON)] + HRESULT button([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_TYPE)] + HRESULT type([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_QUALIFIER)] + HRESULT qualifier([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_REASON)] + HRESULT reason([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_X)] + HRESULT x([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_Y)] + HRESULT y([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTX)] + HRESULT clientX([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTY)] + HRESULT clientY([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETX)] + HRESULT offsetX([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETY)] + HRESULT offsetY([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_SCREENX)] + HRESULT screenX([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_SCREENY)] + HRESULT screenY([retval, out] long *p); + + [propget, id(DISPID_IHTMLEVENTOBJ_SRCFILTER)] + HRESULT srcFilter([retval, out] IDispatch **p); +} + +/***************************************************************************** + * IHTMLFramesCollection2 interface + */ +[ + odl, + oleautomation, + dual, + uuid(332C4426-26CB-11D0-B483-00C04FD90119) +] +interface IHTMLFramesCollection2 : IDispatch +{ + [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)] + HRESULT item( + [in] VARIANT *pvarIndex, + [retval, out] VARIANT *pvarResult); + + [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)] + HRESULT length([retval, out] long *p); +} + +/***************************************************************************** + * IHTMLScreen interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f35C-98B5-11CF-BB82-00AA00BDCE0B) +] +interface IHTMLScreen : IDispatch +{ + [propget, id(DISPID_IHTMLSCREEN_COLORDEPTH)] + HRESULT colorDepth([retval, out] long *p); + + [propput, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)] + HRESULT bufferDepth([in] long v); + + [propget, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)] + HRESULT bufferDepth([retval, out] long *p); + + [propget, id(DISPID_IHTMLSCREEN_WIDTH)] + HRESULT width([retval, out] long *p); + + [propget, id(DISPID_IHTMLSCREEN_HEIGHT)] + HRESULT height([retval, out] long *p); + + [propput, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)] + HRESULT updateInterval([in] long v); + + [propget, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)] + HRESULT updateInterval([retval, out] long *p); + + [propget, id(DISPID_IHTMLSCREEN_AVAILHEIGHT)] + HRESULT availHeight([retval, out] long *p); + + [propget, id(DISPID_IHTMLSCREEN_AVAILWIDTH)] + HRESULT availWidth([retval, out] long *p); + + [propget, id(DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED)] + HRESULT fontSmoothingEnabled([retval, out] VARIANT_BOOL *p); +} + +/***************************************************************************** + * IHTMLWindow2 interface + */ +[ + odl, + oleautomation, + dual, + uuid(332C4427-26CB-11D0-B483-00C04FD90119) +] +interface IHTMLWindow2 : IHTMLFramesCollection2 +{ + [propget, id(DISPID_IHTMLWINDOW2_FRAMES)] + HRESULT frames([retval, out] IHTMLFramesCollection2 **p); + + [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)] + HRESULT defaultStatus([in] BSTR v); + + [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)] + HRESULT defaultStatus([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLWINDOW2_STATUS)] + HRESULT status([in] BSTR v); + + [propget, id(DISPID_IHTMLWINDOW2_STATUS)] + HRESULT status([retval, out] BSTR *p); + + [id(DISPID_IHTMLWINDOW2_SETTIMEOUT)] + HRESULT setTimeout( + [in] BSTR expression, + [in] long msec, + [optional, in] VARIANT *language, + [retval, out] long *timerID); + + [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)] + HRESULT clearTimeout([in] long timerID); + + [id(DISPID_IHTMLWINDOW2_ALERT)] + HRESULT alert([defaultvalue(""), in] BSTR message); + + [id(DISPID_IHTMLWINDOW2_CONFIRM)] + HRESULT confirm( + [defaultvalue(""), in] BSTR message, + [retval, out] VARIANT_BOOL *confirmed); + + [id(DISPID_IHTMLWINDOW2_PROMPT)] + HRESULT prompt( + [defaultvalue(""), in] BSTR message, + [defaultvalue("undefined"), in] BSTR defstr, + [retval, out] VARIANT *textdata); + + [propget, id(DISPID_IHTMLWINDOW2_IMAGE)] + HRESULT Image([retval, out] IHTMLImageElementFactory **p); + + [propget, id(DISPID_IHTMLWINDOW2_LOCATION)] + HRESULT location([retval, out] IHTMLLocation **p); + + [propget, id(DISPID_IHTMLWINDOW2_HISTORY)] + HRESULT history([retval, out] IOmHistory **p); + + [id(DISPID_IHTMLWINDOW2_CLOSE)] + HRESULT close(); + + [propput, id(DISPID_IHTMLWINDOW2_OPENER)] + HRESULT opener([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_OPENER)] + HRESULT opener([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)] + HRESULT navigator([retval, out] IOmNavigator **p); + + [propput, id(DISPID_IHTMLWINDOW2_NAME)] + HRESULT name([in] BSTR v); + + [propget, id(DISPID_IHTMLWINDOW2_NAME)] + HRESULT name([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLWINDOW2_PARENT)] + HRESULT parent([retval, out] IHTMLWindow2 **p); + + [id(DISPID_IHTMLWINDOW2_OPEN)] + HRESULT open( + [defaultvalue(""), in] BSTR url, + [defaultvalue(""), in] BSTR name, + [defaultvalue(""), in] BSTR features, + [defaultvalue(0), in] VARIANT_BOOL replace, + [retval, out] IHTMLWindow2 **pomWindowResult); + + [propget, id(DISPID_IHTMLWINDOW2_SELF)] + HRESULT self([retval, out] IHTMLWindow2 **p); + + [propget, id(DISPID_IHTMLWINDOW2_TOP)] + HRESULT top([retval, out] IHTMLWindow2 **p); + + [propget, id(DISPID_IHTMLWINDOW2_WINDOW)] + HRESULT window([retval, out] IHTMLWindow2 **p); + + [id(DISPID_IHTMLWINDOW2_NAVIGATE)] + HRESULT navigate([in] BSTR url); + + [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS)] + HRESULT onfocus([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS)] + HRESULT onfocus([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLWINDOW2_ONBLUR)] + HRESULT onblur([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_ONBLUR)] + HRESULT onblur([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLWINDOW2_ONLOAD)] + HRESULT onload([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_ONLOAD)] + HRESULT onload([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)] + HRESULT onbeforeunload([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)] + HRESULT onbeforeunload([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD)] + HRESULT onunload([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD)] + HRESULT onunload([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLWINDOW2_ONHELP)] + HRESULT onhelp([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_ONHELP)] + HRESULT onhelp([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLWINDOW2_ONERROR)] + HRESULT onerror([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_ONERROR)] + HRESULT onerror([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE)] + HRESULT onresize([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE)] + HRESULT onresize([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL)] + HRESULT onscroll([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL)] + HRESULT onscroll([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT)] + HRESULT document([retval, out] IHTMLDocument2 **p); + + [propget, id(DISPID_IHTMLWINDOW2_EVENT)] + HRESULT event([retval, out] IHTMLEventObj **p); + + [propget, id(DISPID_IHTMLWINDOW2__NEWENUM)] + HRESULT _newEnum([retval, out] IUnknown **p); + + [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)] + HRESULT showModalDialog( + [in] BSTR dialog, + [optional, in] VARIANT *varArgIn, + [optional, in] VARIANT *varOptions, + [retval, out] VARIANT *varArgOut); + + [id(DISPID_IHTMLWINDOW2_SHOWHELP)] + HRESULT showHelp( + [in] BSTR helpURL, + [optional, in] VARIANT helpArg, + [defaultvalue(""), in] BSTR features); + + [propget, id(DISPID_IHTMLWINDOW2_SCREEN)] + HRESULT screen([retval, out] IHTMLScreen **p); + + [propget, id(DISPID_IHTMLWINDOW2_OPTION)] + HRESULT Option([retval, out] IHTMLOptionElementFactory **p); + + [id(DISPID_IHTMLWINDOW2_FOCUS)] + HRESULT focus(); + + [propget, id(DISPID_IHTMLWINDOW2_CLOSED)] + HRESULT closed([retval, out] VARIANT_BOOL *p); + + [id(DISPID_IHTMLWINDOW2_BLUR)] + HRESULT blur(); + + [id(DISPID_IHTMLWINDOW2_SCROLL)] + HRESULT scroll([in] long x, [in] long y); + + [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)] + HRESULT clientInformation([retval, out] IOmNavigator **p); + + [id(DISPID_IHTMLWINDOW2_SETINTERVAL)] + HRESULT setInterval([ + in] BSTR expression, + [in] long msec, + [optional, in] VARIANT *language, + [retval, out] long *timerID); + + [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)] + HRESULT clearInterval([in] long timerID); + + [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)] + HRESULT offscreenBuffering([in] VARIANT v); + + [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)] + HRESULT offscreenBuffering([retval, out] VARIANT *p); + + [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)] + HRESULT execScript( + [in] BSTR scode, + [defaultvalue("JScript"), in] BSTR language, + [retval, out] VARIANT *pvarRet); + + [id(DISPID_IHTMLWINDOW2_TOSTRING)] + HRESULT toString([retval, out] BSTR *String); + + [id(DISPID_IHTMLWINDOW2_SCROLLBY)] + HRESULT scrollBy([in] long x, [in] long y); + + [id(DISPID_IHTMLWINDOW2_SCROLLTO)] + HRESULT scrollTo([in] long x, [in] long y); + + [id(DISPID_IHTMLWINDOW2_MOVETO)] + HRESULT moveTo([in] long x, [in] long y); + + [id(DISPID_IHTMLWINDOW2_MOVEBY)] + HRESULT moveBy([in] long x, [in] long y); + + [id(DISPID_IHTMLWINDOW2_RESIZETO)] + HRESULT resizeTo([in] long x, [in] long y); + + [id(DISPID_IHTMLWINDOW2_RESIZEBY)] + HRESULT resizeBy([in] long x, [in] long y); + + [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)] + HRESULT external([retval, out] IDispatch **p); +} + +/***************************************************************************** + * HTMLDocumentEvents2 interface + */ +[ + hidden, + uuid(3050f613-98b5-11cf-bb82-00aa00bdce0b) +] +dispinterface HTMLDocumentEvents2 +{ + properties: + methods: + [id(DISPID_HTMLDOCUMENTEVENTS2_ONHELP)] + VARIANT_BOOL onhelp([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONCLICK)] + VARIANT_BOOL onclick([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONDBLCLICK)] + VARIANT_BOOL ondblclick([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONKEYDOWN)] + void onkeydown([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONKEYUP)] + void onkeyup([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONKEYPRESS)] + VARIANT_BOOL onkeypress([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEDOWN)] + void onmousedown([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEMOVE)] + void onmousemove([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEUP)] + void onmouseup([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOUT)] + void onmouseout([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOVER)] + void onmouseover([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE)] + void onreadystatechange([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREUPDATE)] + VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONAFTERUPDATE)] + void onafterupdate([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWEXIT)] + VARIANT_BOOL onrowexit([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWENTER)] + void onrowenter([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONDRAGSTART)] + VARIANT_BOOL ondragstart([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONSELECTSTART)] + VARIANT_BOOL onselectstart([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONERRORUPDATE)] + VARIANT_BOOL onerrorupdate([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONCONTEXTMENU)] + VARIANT_BOOL oncontextmenu([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONSTOP)] + VARIANT_BOOL onstop([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWSDELETE)] + void onrowsdelete([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWSINSERTED)] + void onrowsinserted([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONCELLCHANGE)] + void oncellchange([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONPROPERTYCHANGE)] + void onpropertychange([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCHANGED)] + void ondatasetchanged([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONDATAAVAILABLE)] + void ondataavailable([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCOMPLETE)] + void ondatasetcomplete([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREEDITFOCUS)] + void onbeforeeditfocus([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONSELECTIONCHANGE)] + void onselectionchange([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONCONTROLSELECT)] + VARIANT_BOOL oncontrolselect([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEWHEEL)] + VARIANT_BOOL onmousewheel([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSIN)] + void onfocusin([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSOUT)] + void onfocusout([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONACTIVATE)] + void onactivate([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONDEACTIVATE)] + void ondeactivate([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREACTIVATE)] + VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj *pEvtObj); + + [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREDEACTIVATE)] + VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj *pEvtObj); +} + +/***************************************************************************** + * HTMLDocumentEvents interface + */ +[ + hidden, + uuid(3050f260-98b5-11cf-bb82-00aa00bdce0b) +] +dispinterface HTMLDocumentEvents +{ + properties: + methods: + [id(DISPID_HTMLDOCUMENTEVENTS_ONHELP)] + VARIANT_BOOL onhelp(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONCLICK)] + VARIANT_BOOL onclick(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONDBLCLICK)] + VARIANT_BOOL ondblclick(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONKEYDOWN)] + void onkeydown(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONKEYUP)] + void onkeyup(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONKEYPRESS)] + VARIANT_BOOL onkeypress(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEDOWN)] + void onmousedown(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEMOVE)] + void onmousemove(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEUP)] + void onmouseup(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOUT)] + void onmouseout(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOVER)] + void onmouseover(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONREADYSTATECHANGE)] + void onreadystatechange(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREUPDATE)] + VARIANT_BOOL onbeforeupdate(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONAFTERUPDATE)] + void onafterupdate(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONROWEXIT)] + VARIANT_BOOL onrowexit(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONROWENTER)] + void onrowenter(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONDRAGSTART)] + VARIANT_BOOL ondragstart(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONSELECTSTART)] + VARIANT_BOOL onselectstart(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONERRORUPDATE)] + VARIANT_BOOL onerrorupdate(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONCONTEXTMENU)] + VARIANT_BOOL oncontextmenu(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONSTOP)] + VARIANT_BOOL onstop(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONROWSDELETE)] + void onrowsdelete(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONROWSINSERTED)] + void onrowsinserted(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONCELLCHANGE)] + void oncellchange(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONPROPERTYCHANGE)] + void onpropertychange(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONDATASETCHANGED)] + void ondatasetchanged(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONDATAAVAILABLE)] + void ondataavailable(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONDATASETCOMPLETE)] + void ondatasetcomplete(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREEDITFOCUS)] + void onbeforeeditfocus(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONSELECTIONCHANGE)] + void onselectionchange(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONCONTROLSELECT)] + VARIANT_BOOL oncontrolselect(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEWHEEL)] + VARIANT_BOOL onmousewheel(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONFOCUSIN)] + void onfocusin(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONFOCUSOUT)] + void onfocusout(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONACTIVATE)] + void onactivate(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONDEACTIVATE)] + void ondeactivate(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREACTIVATE)] + VARIANT_BOOL onbeforeactivate(); + + [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREDEACTIVATE)] + VARIANT_BOOL onbeforedeactivate(); +} + +/***************************************************************************** + * IHTMLDocument interface + */ +[ + odl, + oleautomation, + dual, + uuid(626FC520-A41E-11CF-A731-00A0C9082637) +] +interface IHTMLDocument : IDispatch +{ + [propget, id(DISPID_IHTMLDOCUMENT_SCRIPT)] + HRESULT Script([retval, out] IDispatch **p); +} + +/***************************************************************************** + * IHTMLDocument2 interface + */ +[ + odl, + oleautomation, + dual, + uuid(332C4425-26CB-11D0-B483-00C04FD90119) +] +interface IHTMLDocument2 : IHTMLDocument +{ + [propget, id(DISPID_IHTMLDOCUMENT2_ALL)] + HRESULT all([retval, out] IHTMLElementCollection **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_BODY)] + HRESULT body([retval, out] IHTMLElement **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT)] + HRESULT activeElement([retval, out] IHTMLElement **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_IMAGES)] + HRESULT images([retval, out] IHTMLElementCollection **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_APPLETS)] + HRESULT applets([retval, out] IHTMLElementCollection **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_LINKS)] + HRESULT links([retval, out] IHTMLElementCollection **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_FORMS)] + HRESULT forms([retval, out] IHTMLElementCollection **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_ANCHORS)] + HRESULT anchors([retval, out] IHTMLElementCollection **p); + + [propput, id(DISPID_IHTMLDOCUMENT2_TITLE)] + HRESULT title([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_TITLE)] + HRESULT title([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_SCRIPTS)] + HRESULT scripts([retval, out] IHTMLElementCollection **p); + + [propput, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE)] + HRESULT designMode([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE)] + HRESULT designMode([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_SELECTION)] + HRESULT selection([retval, out] IHTMLSelectionObject **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_READYSTATE)] + HRESULT readyState([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_FRAMES)] + HRESULT frames([retval, out] IHTMLFramesCollection2 **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_EMBEDS)] + HRESULT embeds([retval, out] IHTMLElementCollection **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_PLUGINS)] + HRESULT plugins([retval, out] IHTMLElementCollection **p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)] + HRESULT alinkColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)] + HRESULT alinkColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)] + HRESULT bgColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)] + HRESULT bgColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)] + HRESULT fgColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)] + HRESULT fgColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)] + HRESULT linkColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)] + HRESULT linkColor([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)] + HRESULT vlinkColor([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)] + HRESULT vlinkColor([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_REFERRER)] + HRESULT referrer([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_LOCATION)] + HRESULT location([retval, out] IHTMLLocation **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_LASTMODIFIED)] + HRESULT lastModified([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_URL)] + HRESULT URL([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_URL)] + HRESULT URL([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_DOMAIN)] + HRESULT domain([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_DOMAIN)] + HRESULT domain([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_COOKIE)] + HRESULT cookie([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_COOKIE)] + HRESULT cookie([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_EXPANDO)] + HRESULT expando([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLDOCUMENT2_EXPANDO)] + HRESULT expando([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_CHARSET)] + HRESULT charset([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_CHARSET)] + HRESULT charset([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)] + HRESULT defaultCharset([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)] + HRESULT defaultCharset([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_MIMETYPE)] + HRESULT mimeType([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_FILESIZE)] + HRESULT fileSize([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_FILECREATEDDATE)] + HRESULT fileCreatedDate([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE)] + HRESULT fileModifiedDate([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE)] + HRESULT fileUpdatedDate([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_SECURITY)] + HRESULT security([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_PROTOCOL)] + HRESULT protocol([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT2_NAMEPROP)] + HRESULT nameProp([retval, out] BSTR *p); + + [vararg, id(DISPID_IHTMLDOCUMENT2_WRITE)] + HRESULT write([in] SAFEARRAY(VARIANT) psarray); + + [vararg, id(DISPID_IHTMLDOCUMENT2_WRITELN)] + HRESULT writeln([in] SAFEARRAY(VARIANT) psarray); + + [id(DISPID_IHTMLDOCUMENT2_OPEN)] + HRESULT open( + [defaultvalue("text/html"), in] BSTR url, + [optional, in] VARIANT name, + [optional, in] VARIANT features, + [optional, in] VARIANT replace, + [retval, out] IDispatch **pomWindowResult); + + [id(DISPID_IHTMLDOCUMENT2_CLOSE)] + HRESULT close(); + + [id(DISPID_IHTMLDOCUMENT2_CLEAR)] + HRESULT clear(); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED)] + HRESULT queryCommandSupported( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED)] + HRESULT queryCommandEnabled( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE)] + HRESULT queryCommandState( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM)] + HRESULT queryCommandIndeterm( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT)] + HRESULT queryCommandText( + [in] BSTR cmdID, + [retval, out] BSTR *pcmdText); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE)] + HRESULT queryCommandValue( + [in] BSTR cmdID, + [retval, out] VARIANT *pcmdValue); + + [id(DISPID_IHTMLDOCUMENT2_EXECCOMMAND)] + HRESULT execCommand( + [in] BSTR cmdID, + [defaultvalue(0), in] VARIANT_BOOL showUI, + [optional, in] VARIANT value, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP)] + HRESULT execCommandShowHelp( + [in] BSTR cmdID, + [retval, out] VARIANT_BOOL *pfRet); + + [id(DISPID_IHTMLDOCUMENT2_CREATEELEMENT)] + HRESULT createElement( + [in] BSTR eTag, + [retval, out] IHTMLElement **newElem); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONHELP)] + HRESULT onhelp([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONHELP)] + HRESULT onhelp([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONCLICK)] + HRESULT onclick([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONCLICK)] + HRESULT onclick([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK)] + HRESULT ondblclick([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK)] + HRESULT ondblclick([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYUP)] + HRESULT onkeyup([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYUP)] + HRESULT onkeyup([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN)] + HRESULT onkeydown([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN)] + HRESULT onkeydown([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS)] + HRESULT onkeypress([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS)] + HRESULT onkeypress([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP)] + HRESULT onmouseup([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP)] + HRESULT onmouseup([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN)] + HRESULT onmousedown([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN)] + HRESULT onmousedown([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE)] + HRESULT onmousemove([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE)] + HRESULT onmousemove([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT)] + HRESULT onmouseout([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT)] + HRESULT onmouseout([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER)] + HRESULT onmouseover([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER)] + HRESULT onmouseover([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE)] + HRESULT onreadystatechange([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE)] + HRESULT onreadystatechange([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE)] + HRESULT onafterupdate([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE)] + HRESULT onafterupdate([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT)] + HRESULT onrowexit([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT)] + HRESULT onrowexit([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONROWENTER)] + HRESULT onrowenter([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONROWENTER)] + HRESULT onrowenter([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART)] + HRESULT ondragstart([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART)] + HRESULT ondragstart([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART)] + HRESULT onselectstart([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART)] + HRESULT onselectstart([retval, out] VARIANT *p); + + [id(DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)] + HRESULT elementFromPoint( + [in] long x, + [in] long y, + [retval, out] IHTMLElement **elementHit); + + [propget, id(DISPID_IHTMLDOCUMENT2_PARENTWINDOW)] + HRESULT parentWindow([retval, out] IHTMLWindow2 **p); + + [propget, id(DISPID_IHTMLDOCUMENT2_STYLESHEETS)] + HRESULT styleSheets([retval, out] IHTMLStyleSheetsCollection **p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE)] + HRESULT onbeforeupdate([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE)] + HRESULT onbeforeupdate([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE)] + HRESULT onerrorupdate([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE)] + HRESULT onerrorupdate([retval, out] VARIANT *p); + + [id(DISPID_IHTMLDOCUMENT2_TOSTRING)] + HRESULT toString([retval, out] BSTR *String); + + [id(DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)] + HRESULT createStyleSheet( + [defaultvalue(""), in] BSTR bstrHref, + [defaultvalue(-1), in] long lIndex, + [retval, out] IHTMLStyleSheet **ppnewStyleSheet); +} + +/***************************************************************************** + * IHTMLDocument3 interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f485-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLDocument3 : IDispatch +{ + [id(DISPID_IHTMLDOCUMENT3_RELEASECAPTURE)] + HRESULT releaseCapture(); + + [id(DISPID_IHTMLDOCUMENT3_RECALC)] + HRESULT recalc([defaultvalue(0), in] VARIANT_BOOL fForce); + + [id(DISPID_IHTMLDOCUMENT3_CREATETEXTNODE)] + HRESULT createTextNode( + [in] BSTR text, + [retval, out] IHTMLDOMNode **newTextNode); + + [propget, id(DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT)] + HRESULT documentElement([retval, out] IHTMLElement **p); + + [propget, id(DISPID_IHTMLDOCUMENT3_UNIQUEID), hidden] + HRESULT uniqueID([retval, out] BSTR *p); + + [id(DISPID_IHTMLDOCUMENT3_ATTACHEVENT)] + HRESULT attachEvent( + [in] BSTR event, + [in] IDispatch* pDisp, + [retval, out] VARIANT_BOOL *pfResult); + + [id(DISPID_IHTMLDOCUMENT3_DETACHEVENT)] + HRESULT detachEvent( + [in] BSTR event, + [in] IDispatch *pDisp); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable] + HRESULT onrowsdelete([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable] + HRESULT onrowsdelete([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable] + HRESULT onrowsinserted([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable] + HRESULT onrowsinserted([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable] + HRESULT oncellchange([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable] + HRESULT oncellchange([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable] + HRESULT ondatasetchanged([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable] + HRESULT ondatasetchanged([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable] + HRESULT ondataavailable([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable] + HRESULT ondataavailable([retval, out] VARIANT * p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable] + HRESULT ondatasetcomplete([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable] + HRESULT ondatasetcomplete([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable] + HRESULT onpropertychange([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable] + HRESULT onpropertychange([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_DIR)] + HRESULT dir([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT3_DIR)] + HRESULT dir([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable] + HRESULT oncontextmenu([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable] + HRESULT oncontextmenu([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable] + HRESULT onstop([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable] + HRESULT onstop([retval, out] VARIANT *p); + + [id(DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT)] + HRESULT createDocumentFragment([retval, out] IHTMLDocument2 **pNewDoc); + + [propget, id(DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT), hidden, restricted] + HRESULT parentDocument([retval, out] IHTMLDocument2 **p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted] + HRESULT enableDownload([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted] + HRESULT enableDownload([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted] + HRESULT baseUrl([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted] + HRESULT baseUrl([retval, out] BSTR *p); + + [propget, id(DISPID_IHTMLDOCUMENT3_CHILDNODES)] + HRESULT childNodes([retval, out] IDispatch **p); + + [propput, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted] + HRESULT inheritStyleSheets([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted] + HRESULT inheritStyleSheets([retval, out] VARIANT_BOOL *p); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable] + HRESULT onbeforeeditfocus([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable] + HRESULT onbeforeeditfocus([retval, out] VARIANT *p); + + [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME)] + HRESULT getElementsByName( + [in] BSTR v, + [retval, out] IHTMLElementCollection **pelColl); + + [id(DISPID_IHTMLDOCUMENT3_GETELEMENTBYID)] + HRESULT getElementById( + [in] BSTR v, + [retval, out] IHTMLElement **pel); + + [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME)] + HRESULT getElementsByTagName( + [in] BSTR v, + [retval, out] IHTMLElementCollection **pelColl); +} + +/***************************************************************************** + * IHTMLDocument4 interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f69a-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLDocument4 : IDispatch +{ + [id(DISPID_IHTMLDOCUMENT4_FOCUS)] + HRESULT focus(); + + [id(DISPID_IHTMLDOCUMENT4_HASFOCUS)] + HRESULT hasFocus([retval, out] VARIANT_BOOL *pfFocus); + + [propput, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable] + HRESULT onselectionchange([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable] + HRESULT onselectionchange([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLDOCUMENT4_NAMESPACES)] + HRESULT namespaces([retval, out] IDispatch **p); + + [id(DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL)] + HRESULT createDocumentFromUrl( + [in] BSTR bstrUrl, + [in] BSTR bstrOptions, + [retval, out] IHTMLDocument2 **newDoc); + + [propput, id(DISPID_IHTMLDOCUMENT4_MEDIA)] + HRESULT media([in] BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT4_MEDIA)] + HRESULT media([retval, out] BSTR *p); + + [id(DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT)] + HRESULT createEventObject( + [optional, in] VARIANT *pvarEventObject, + [retval, out] IHTMLEventObj **ppEventObj); + + [id(DISPID_IHTMLDOCUMENT4_FIREEVENT)] + HRESULT fireEvent( + [in] BSTR bstrEventName, + [optional, in] VARIANT *pvarEventObject, + [retval, out] VARIANT_BOOL *pfCancelled); + + [id(DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE)] + HRESULT createRenderStyle( + [in] BSTR v, + [retval, out] IHTMLRenderStyle **ppIHTMLRenderStyle); + + [propput, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable] + HRESULT oncontrolselect([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable] + HRESULT oncontrolselect([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLDOCUMENT4_URLUNENCODED)] + HRESULT URLUnencoded([retval, out] BSTR *p); +} + +/***************************************************************************** + * IHTMLDocument5 interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f80c-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLDocument5 : IDispatch +{ + [propput, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable] + HRESULT onmousewheel([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable] + HRESULT onmousewheel([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLDOCUMENT5_DOCTYPE)] + HRESULT doctype([retval, out] IHTMLDOMNode **p); + + [propget, id(DISPID_IHTMLDOCUMENT5_IMPLEMENTATION)] + HRESULT implementation([retval, out] IHTMLDOMImplementation **p); + + [id(DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE)] + HRESULT createAttribute( + [in] BSTR bstrattrName, + [retval, out] IHTMLDOMAttribute **ppattribute); + + [id(DISPID_IHTMLDOCUMENT5_CREATECOMMENT)] + HRESULT createComment( + [in] BSTR bstrdata, + [retval, out] IHTMLDOMNode **ppRetNode); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable] + HRESULT onfocusin([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable] + HRESULT onfocusin([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable] + HRESULT onfocusout([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable] + HRESULT onfocusout([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable] + HRESULT onactivate([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable] + HRESULT onactivate([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable] + HRESULT ondeactivate([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable] + HRESULT ondeactivate([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable] + HRESULT onbeforeactivate([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable] + HRESULT onbeforeactivate([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable] + HRESULT onbeforedeactivate([in] VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable] + HRESULT onbeforedeactivate([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLDOCUMENT5_COMPATMODE)] + HRESULT compatMode([retval, out] BSTR *p); +} + +/***************************************************************************** + * DispHTMLDocument dispinterface + */ +[ + hidden, + uuid(3050f55f-98b5-11cf-bb82-00aa00bdce0b) +] +dispinterface DispHTMLDocument +{ +properties: +methods: + [propget, id(DISPID_IHTMLDOCUMENT_SCRIPT), hidden, nonbrowsable] + IDispatch *Script(); + + [propget, id(DISPID_IHTMLDOCUMENT2_ALL)] + IHTMLElementCollection *all(); + + [propget, id(DISPID_IHTMLDOCUMENT2_BODY)] + IHTMLElement *body(); + + [propget, id(DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT)] + IHTMLElement *activeElement(); + + [propget, id(DISPID_IHTMLDOCUMENT2_IMAGES)] + IHTMLElementCollection *images(); + + [propget, id(DISPID_IHTMLDOCUMENT2_APPLETS)] + IHTMLElementCollection *applets(); + + [propget, id(DISPID_IHTMLDOCUMENT2_LINKS)] + IHTMLElementCollection *links(); + + [propget, id(DISPID_IHTMLDOCUMENT2_FORMS)] + IHTMLElementCollection *forms(); + + [propget, id(DISPID_IHTMLDOCUMENT2_ANCHORS)] + IHTMLElementCollection *anchors(); + + [propput, id(DISPID_IHTMLDOCUMENT2_TITLE)] + void title(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_TITLE)] + BSTR title(); + + [propget, id(DISPID_IHTMLDOCUMENT2_SCRIPTS)] + IHTMLElementCollection *scripts(); + + [propput, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden] + void designMode(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden] + BSTR designMode(); + + [propget, id(DISPID_IHTMLDOCUMENT2_SELECTION)] + IHTMLSelectionObject *selection(); + + [propget, id(DISPID_IHTMLDOCUMENT2_READYSTATE), bindable] + BSTR readyState(); + + [propget, id(DISPID_IHTMLDOCUMENT2_FRAMES)] + IHTMLFramesCollection2 *frames(); + + [propget, id(DISPID_IHTMLDOCUMENT2_EMBEDS)] + IHTMLElementCollection *embeds(); + + [propget, id(DISPID_IHTMLDOCUMENT2_PLUGINS)] + IHTMLElementCollection *plugins(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)] + void alinkColor(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)] + VARIANT alinkColor(); + + [propput, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)] + void bgColor(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)] + VARIANT bgColor(); + + [propput, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)] + void fgColor(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)] + VARIANT fgColor(); + + [propput, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)] + void linkColor(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)] + VARIANT linkColor(); + + [propput, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)] + void vlinkColor(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)] + VARIANT vlinkColor(); + + [propget, id(DISPID_IHTMLDOCUMENT2_REFERRER)] + BSTR referrer(); + + [propget, id(DISPID_IHTMLDOCUMENT2_LOCATION)] + IHTMLLocation *location(); + + [propget, id(DISPID_IHTMLDOCUMENT2_LASTMODIFIED)] + BSTR lastModified(); + + [propput, id(DISPID_IHTMLDOCUMENT2_URL)] + void URL(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_URL)] + BSTR URL(); + + [propput, id(DISPID_IHTMLDOCUMENT2_DOMAIN)] + void domain(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_DOMAIN)] + BSTR domain(); + + [propput, id(DISPID_IHTMLDOCUMENT2_COOKIE)] + void cookie(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_COOKIE)] + BSTR cookie(); + + [propput, id(DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden] + void expando(VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden] + VARIANT_BOOL expando(); + + [propput, id(DISPID_IHTMLDOCUMENT2_CHARSET), hidden] + void charset(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_CHARSET), hidden] + BSTR charset(); + + [propput, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)] + void defaultCharset(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)] + BSTR defaultCharset(); + + [propget, id(DISPID_IHTMLDOCUMENT2_MIMETYPE)] + BSTR mimeType(); + + [propget, id(DISPID_IHTMLDOCUMENT2_FILESIZE)] + BSTR fileSize(); + + [propget, id(DISPID_IHTMLDOCUMENT2_FILECREATEDDATE)] + BSTR fileCreatedDate(); + + [propget, id(DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE)] + BSTR fileModifiedDate(); + + [propget, id(DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE)] + BSTR fileUpdatedDate(); + + [propget, id(DISPID_IHTMLDOCUMENT2_SECURITY)] + BSTR security(); + + [propget, id(DISPID_IHTMLDOCUMENT2_PROTOCOL)] + BSTR protocol(); + + [propget, id(DISPID_IHTMLDOCUMENT2_NAMEPROP)] + BSTR nameProp(); + + [vararg, id(DISPID_IHTMLDOCUMENT2_WRITE)] + void write([in] SAFEARRAY(VARIANT) psarray); + + [vararg, id(DISPID_IHTMLDOCUMENT2_WRITELN)] + void writeln([in] SAFEARRAY(VARIANT) psarray); + + [id(DISPID_IHTMLDOCUMENT2_OPEN)] + IDispatch *open( + [defaultvalue("text/html"), in] BSTR url, + [optional, in] VARIANT name, + [optional, in] VARIANT features, + [optional, in] VARIANT replace); + + [id(DISPID_IHTMLDOCUMENT2_CLOSE)] + void close(); + + [id(DISPID_IHTMLDOCUMENT2_CLEAR)] + void clear(); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED)] + VARIANT_BOOL queryCommandSupported([in] BSTR cmdID); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED)] + VARIANT_BOOL queryCommandEnabled([in] BSTR cmdID); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE)] + VARIANT_BOOL queryCommandState([in] BSTR cmdID); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM)] + VARIANT_BOOL queryCommandIndeterm([in] BSTR cmdID); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT)] + BSTR queryCommandText([in] BSTR cmdID); + + [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE)] + VARIANT queryCommandValue([in] BSTR cmdID); + + [id(DISPID_IHTMLDOCUMENT2_EXECCOMMAND)] + VARIANT_BOOL execCommand( + [in] BSTR cmdID, + [defaultvalue(0), in] VARIANT_BOOL showUI, + [optional, in] VARIANT value); + + [id(DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP)] + VARIANT_BOOL execCommandShowHelp([in] BSTR cmdID); + + [id(DISPID_IHTMLDOCUMENT2_CREATEELEMENT)] + IHTMLElement *createElement([in] BSTR eTag); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable] + void onhelp(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable] + VARIANT onhelp(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable] + void onclick(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable] + VARIANT onclick(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable] + void ondblclick(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable] + VARIANT ondblclick(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable] + void onkeyup(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable] + VARIANT onkeyup(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable] + void onkeydown(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable] + VARIANT onkeydown(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable] + void onkeypress(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable] + VARIANT onkeypress(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable] + void onmouseup(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable] + VARIANT onmouseup(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable] + void onmousedown(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable] + VARIANT onmousedown(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable] + void onmousemove(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable] + VARIANT onmousemove(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable] + void onmouseout(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable] + VARIANT onmouseout(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable] + void onmouseover(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable] + VARIANT onmouseover(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable] + void onreadystatechange(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable] + VARIANT onreadystatechange(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable] + void onafterupdate(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable] + VARIANT onafterupdate(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable] + void onrowexit(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable] + VARIANT onrowexit(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable] + void onrowenter(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable] + VARIANT onrowenter(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable] + void ondragstart(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable] + VARIANT ondragstart(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable] + void onselectstart(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable] + VARIANT onselectstart(); + + [id(DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)] + IHTMLElement *elementFromPoint( + [in] long x, + [in] long y); + + [propget, id(DISPID_IHTMLDOCUMENT2_PARENTWINDOW)] + IHTMLWindow2 *parentWindow(); + + [propget, id(DISPID_IHTMLDOCUMENT2_STYLESHEETS)] + IHTMLStyleSheetsCollection *styleSheets(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable] + void onbeforeupdate(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable] + VARIANT onbeforeupdate(); + + [propput, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable] + void onerrorupdate(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable] + VARIANT onerrorupdate(); + + [id(DISPID_IHTMLDOCUMENT2_TOSTRING)] + BSTR toString(); + + [id(DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)] + IHTMLStyleSheet *createStyleSheet( + [defaultvalue(""), in] BSTR bstrHref, + [defaultvalue(-1), in] long lIndex); + + [id(DISPID_IHTMLDOCUMENT3_RELEASECAPTURE)] + void releaseCapture(); + + [id(DISPID_IHTMLDOCUMENT3_RECALC)] + void recalc([defaultvalue(0), in] VARIANT_BOOL fForce); + + [id(DISPID_IHTMLDOCUMENT3_CREATETEXTNODE)] + IHTMLDOMNode *createTextNode([in] BSTR text); + + [propget, id(DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT)] + IHTMLElement *documentElement(); + + [propget, id(DISPID_IHTMLDOCUMENT3_UNIQUEID), hidden] + BSTR uniqueID(); + + [id(DISPID_IHTMLDOCUMENT3_ATTACHEVENT)] + VARIANT_BOOL attachEvent( + [in] BSTR event, + [in] IDispatch *pDisp); + + [id(DISPID_IHTMLDOCUMENT3_DETACHEVENT)] + void detachEvent( + [in] BSTR event, + [in] IDispatch *pDisp); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable] + void onrowsdelete(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable] + VARIANT onrowsdelete(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable] + void onrowsinserted(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable] + VARIANT onrowsinserted(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable] + void oncellchange(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable] + VARIANT oncellchange(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable] + void ondatasetchanged(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable] + VARIANT ondatasetchanged(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable] + void ondataavailable(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable] + VARIANT ondataavailable(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable] + void ondatasetcomplete(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable] + VARIANT ondatasetcomplete(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable] + void onpropertychange(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable] + VARIANT onpropertychange(); + + [propput, id(DISPID_IHTMLDOCUMENT3_DIR)] + void dir(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT3_DIR)] + BSTR dir(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable] + void oncontextmenu(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable] + VARIANT oncontextmenu(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable] + void onstop(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable] + VARIANT onstop(); + + [id(DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT)] + IHTMLDocument2 *createDocumentFragment(); + + [propget, id(DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT), hidden, restricted] + IHTMLDocument2 *parentDocument(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted] + void enableDownload(VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted] + VARIANT_BOOL enableDownload(); + + [propput, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted] + void baseUrl(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted] + BSTR baseUrl(); + + [propput, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted] + void inheritStyleSheets(VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted] + VARIANT_BOOL inheritStyleSheets(); + + [propput, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable] + void onbeforeeditfocus(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable] + VARIANT onbeforeeditfocus(); + + [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME)] + IHTMLElementCollection *getElementsByName([in] BSTR v); + + [id(DISPID_IHTMLDOCUMENT3_GETELEMENTBYID)] + IHTMLElement *getElementById([in] BSTR v); + + [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME)] + IHTMLElementCollection *getElementsByTagName([in] BSTR v); + + [id(DISPID_IHTMLDOCUMENT4_FOCUS)] + void focus(); + + [id(DISPID_IHTMLDOCUMENT4_HASFOCUS)] + VARIANT_BOOL hasFocus(); + + [propput, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable] + void onselectionchange(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable] + VARIANT onselectionchange(); + + [propget, id(DISPID_IHTMLDOCUMENT4_NAMESPACES)] + IDispatch *namespaces(); + + [id(DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL)] + IHTMLDocument2 *createDocumentFromUrl( + [in] BSTR bstrUrl, + [in] BSTR bstrOptions); + + [propput, id(DISPID_IHTMLDOCUMENT4_MEDIA)] + void media(BSTR v); + + [propget, id(DISPID_IHTMLDOCUMENT4_MEDIA)] + BSTR media(); + + [id(DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT)] + IHTMLEventObj *createEventObject([optional, in] VARIANT *pvarEventObject); + + [id(DISPID_IHTMLDOCUMENT4_FIREEVENT)] + VARIANT_BOOL fireEvent( + [in] BSTR bstrEventName, + [optional, in] VARIANT *pvarEventObject); + + [id(DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE)] + IHTMLRenderStyle *createRenderStyle([in] BSTR v); + + [propput, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable] + void oncontrolselect(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable] + VARIANT oncontrolselect(); + + [propget, id(DISPID_IHTMLDOCUMENT4_URLUNENCODED)] + BSTR URLUnencoded(); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable] + void onmousewheel(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable] + VARIANT onmousewheel(); + + [propget, id(DISPID_IHTMLDOCUMENT5_DOCTYPE)] + IHTMLDOMNode *doctype(); + + [propget, id(DISPID_IHTMLDOCUMENT5_IMPLEMENTATION)] + IHTMLDOMImplementation *implementation(); + + [id(DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE)] + IHTMLDOMAttribute *createAttribute([in] BSTR bstrattrName); + + [id(DISPID_IHTMLDOCUMENT5_CREATECOMMENT)] + IHTMLDOMNode *createComment([in] BSTR bstrdata); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable] + void onfocusin(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable] + VARIANT onfocusin(); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable] + void onfocusout(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable] + VARIANT onfocusout(); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable] + void onactivate(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable] + VARIANT onactivate(); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable] + void ondeactivate(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable] + VARIANT ondeactivate(); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable] + void onbeforeactivate(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable] + VARIANT onbeforeactivate(); + + [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable] + void onbeforedeactivate(VARIANT v); + + [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable] + VARIANT onbeforedeactivate(); + + [propget, id(DISPID_IHTMLDOCUMENT5_COMPATMODE)] + BSTR compatMode(); + + [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)] + long nodeType(); + + [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)] + IHTMLDOMNode *parentNode(); + + [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)] + VARIANT_BOOL hasChildNodes(); + + [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)] + IDispatch *childNodes(); + + [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)] + IDispatch *attributes(); + + [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)] + IHTMLDOMNode *insertBefore( + [in] IHTMLDOMNode *newChild, + [optional, in] VARIANT refChild); + + [id(DISPID_IHTMLDOMNODE_REMOVECHILD)] + IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild); + + [id(DISPID_IHTMLDOMNODE_REPLACECHILD)] + IHTMLDOMNode *replaceChild( + [in] IHTMLDOMNode *newChild, + [in] IHTMLDOMNode *oldChild); + + [id(DISPID_IHTMLDOMNODE_CLONENODE)] + IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep); + + [id(DISPID_IHTMLDOMNODE_REMOVENODE)] + IHTMLDOMNode *removeNode([defaultvalue(0), in] VARIANT_BOOL fDeep); + + [id(DISPID_IHTMLDOMNODE_SWAPNODE)] + IHTMLDOMNode *swapNode([in] IHTMLDOMNode* otherNode); + + [id(DISPID_IHTMLDOMNODE_REPLACENODE)] + IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement); + + [id(DISPID_IHTMLDOMNODE_APPENDCHILD)] + IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild); + + [propget, id(DISPID_IHTMLDOMNODE_NODENAME)] + BSTR nodeName(); + + [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)] + void nodeValue(VARIANT v); + + [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)] + VARIANT nodeValue(); + + [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)] + IHTMLDOMNode *firstChild(); + + [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)] + IHTMLDOMNode *lastChild(); + + [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)] + IHTMLDOMNode *previousSibling(); + + [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)] + IHTMLDOMNode *nextSibling(); + + [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] + IDispatch *ownerDocument(); +} + +/***************************************************************************** + * HTMLDocument coclass + */ +[ + uuid(25336920-03F9-11cf-8FD0-00AA00686F13) +] +coclass HTMLDocument +{ + [default] dispinterface DispHTMLDocument; + [source, default] dispinterface HTMLDocumentEvents; + [source] dispinterface HTMLDocumentEvents2; + interface IHTMLDocument2; + interface IHTMLDocument3; + interface IHTMLDocument4; + interface IHTMLDocument5; + interface IHTMLDOMNode; + interface IHTMLDOMNode2; +} + +/***************************************************************************** + * IHTMLFrameBase2 interface + */ +[ + odl, + oleautomation, + dual, + uuid(3050f6db-98b5-11cf-bb82-00aa00bdce0b) +] +interface IHTMLFrameBase2 : IDispatch +{ + [propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)] + HRESULT contentWindow([retval, out] IHTMLWindow2 **p); + + [propput, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] + HRESULT onload([in] VARIANT v); + + [propget, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] + HRESULT onload([retval, out] VARIANT *p); + + [propput, id(DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE), displaybind, bindable] + HRESULT onreadystatechange([in] VARIANT v); + + [propget, id(DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE), displaybind, bindable] + HRESULT onreadystatechange([retval, out] VARIANT *p); + + [propget, id(DISPID_IHTMLFRAMEBASE2_READYSTATE)] + HRESULT readyState([retval, out] BSTR *p); + + [propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] + HRESULT allowTransparency([in] VARIANT_BOOL v); + + [propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] + HRESULT allowTransparency([retval, out] VARIANT_BOOL *p); +} + +} /* library MSHTML */ diff --git a/reactos/include/psdk/msxml.idl b/reactos/include/psdk/msxml.idl new file mode 100644 index 00000000000..2d4ecc972c8 --- /dev/null +++ b/reactos/include/psdk/msxml.idl @@ -0,0 +1,335 @@ +/* + * Copyright (C) 2005 Mike McCormack + * Copyright (C) 2005 Vijay Kiran Kamuju + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include + +import "unknwn.idl"; +import "wtypes.idl"; +import "objidl.idl"; +import "oaidl.idl"; + + +[ +local, +object, +odl, +dual, +oleautomation, +uuid(65725580-9b5d-11d0-9bfe-00c04fc99c8e) +] +interface IXMLElementCollection : IDispatch +{ + [propput, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)] + HRESULT length( [in] long v ); + + [propget, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)] + HRESULT length( [retval, out] long *p ); + + [propget, id(DISPID_XMLELEMENTCOLLECTION_NEWENUM)] + HRESULT _newEnum( [retval, out] IUnknown ** ppUnk ); + + [id(DISPID_XMLELEMENTCOLLECTION_ITEM)] + HRESULT item( + [optional, in] VARIANT var1, + [optional, in] VARIANT var2, + [retval, out] IDispatch ** ppDisp ); +} + +[ +local, +object, +uuid(3f7f31ac-e15f-11d0-9c25-00c04fc99c8e) +] +interface IXMLElement : IDispatch +{ + [propget, id(DISPID_XMLELEMENT_TAGNAME)] + HRESULT tagName( [retval, out] BSTR *p); + + [propput, id(DISPID_XMLELEMENT_TAGNAME)] + HRESULT tagName( [in] BSTR p ); + + [propget, id(DISPID_XMLELEMENT_PARENT)] + HRESULT parent( [retval, out] IXMLElement **parent ); + + [id(DISPID_XMLELEMENT_SETATTRIBUTE)] + HRESULT setAttribute( + [in] BSTR strPropertyName, + [in] VARIANT PropertyValue ); + + [id(DISPID_XMLELEMENT_GETATTRIBUTE)] + HRESULT getAttribute( + [in] BSTR strPropertyName, + [retval, out] VARIANT *PropertyValue ); + + [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE)] + HRESULT removeAttribute( + [in] BSTR strPropertyName ); + + [propget, id(DISPID_XMLELEMENT_CHILDREN)] + HRESULT children( [retval, out] IXMLElementCollection **p ); + + [propget, id(DISPID_XMLELEMENT_TYPE)] + HRESULT type( [retval, out] long *p ); + + [propget, id(DISPID_XMLELEMENT_TEXT)] + HRESULT text( [retval, out] BSTR *p ); + + [propput, id(DISPID_XMLELEMENT_TEXT)] + HRESULT text( [in] BSTR p ); + + [id(DISPID_XMLELEMENT_ADDCHILD)] + HRESULT addChild( + [in] IXMLElement *pChildElem, + [in] long lIndex, + [in] long lreserved ); + + [id(DISPID_XMLELEMENT_REMOVECHILD)] + HRESULT removeChild( + [in] IXMLElement *pChildElem ); +} + +[ +local, +object, +uuid(f52e2b61-18a1-11d1-b105-00805f49916b) +] +interface IXMLDocument : IDispatch +{ + [propget, id(DISPID_XMLDOCUMENT_ROOT)] + HRESULT root( [retval, out] IXMLElement **p ); + + [propget, id(DISPID_XMLDOCUMENT_FILESIZE)] + HRESULT fileSize( [retval, out] BSTR *p ); + + [propget, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)] + HRESULT fileModifiedDate( [retval, out] BSTR *p ); + + [propget, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)] + HRESULT fileUpdatedDate( [retval, out] BSTR *p ); + + [propget, id(DISPID_XMLDOCUMENT_URL)] + HRESULT URL( [retval, out] BSTR *p ); + + [propput, id(DISPID_XMLDOCUMENT_URL)] + HRESULT URL( [in] BSTR p ); + + [propget, id(DISPID_XMLDOCUMENT_MIMETYPE)] + HRESULT mimeType( [retval, out] BSTR *p ); + + [propget, id(DISPID_XMLDOCUMENT_READYSTATE)] + HRESULT readyState( [retval, out] long *p ); + + [propget, id(DISPID_XMLDOCUMENT_CHARSET)] + HRESULT charset( [retval, out] BSTR *p ); + + [propput, id(DISPID_XMLDOCUMENT_CHARSET)] + HRESULT charset( [in] BSTR p ); + + [propget, id(DISPID_XMLDOCUMENT_VERSION)] + HRESULT version( [retval, out] BSTR *p ); + + [propget, id(DISPID_XMLDOCUMENT_DOCTYPE)] + HRESULT doctype( [retval, out] BSTR *p ); + + [propget, id(DISPID_XMLDOCUMENT_DTDURL)] + HRESULT dtdURl( [retval, out] BSTR *p ); + + [id(DISPID_XMLDOCUMENT_CREATEELEMENT)] + HRESULT createElement( + [in] VARIANT vType, + [optional, in] VARIANT var1, + [retval, out] IXMLElement **ppElem ); +} + +[ +local, +object, +uuid(2B8DE2FF-8D2D-11d1-B2FC-00C04FD915A9) +] +interface IXMLElement2 : IDispatch +{ + [propget, id(DISPID_XMLELEMENT_TAGNAME)] + HRESULT tagName([retval, out] BSTR *p); + + [propput, id(DISPID_XMLELEMENT_TAGNAME)] + HRESULT tagName([in] BSTR p); + + [propget, id(DISPID_XMLELEMENT_PARENT)] + HRESULT parent([retval, out]IXMLElement2 **ppParent); + + [id(DISPID_XMLELEMENT_SETATTRIBUTE)] + HRESULT setAttribute( + [in] BSTR strPropertyName, + [in] VARIANT PropertyValue); + + [id(DISPID_XMLELEMENT_GETATTRIBUTE)] + HRESULT getAttribute( + [in] BSTR strPropertyName, + [retval, out] VARIANT *PropertyValue); + + [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE)] + HRESULT removeAttribute([in] BSTR strPropertyName); + + [propget, id(DISPID_XMLELEMENT_CHILDREN)] + HRESULT children([retval, out] IXMLElementCollection **pp); + + [propget, id(DISPID_XMLELEMENT_TYPE)] + HRESULT type([retval, out] long *plType); + + [propget, id(DISPID_XMLELEMENT_TEXT)] + HRESULT text([retval, out] BSTR *p); + + [propput, id(DISPID_XMLELEMENT_TEXT)] + HRESULT text([in] BSTR p); + + [id(DISPID_XMLELEMENT_ADDCHILD)] + HRESULT addChild( + [in] IXMLElement2 *pChildElem, + [in] long lIndex, + [in] long lReserved); + + [id(DISPID_XMLELEMENT_REMOVECHILD)] + HRESULT removeChild([in]IXMLElement2 *pChildElem); + + [propget, id(DISPID_XMLELEMENT_ATTRIBUTES)] + HRESULT attributes([retval, out] IXMLElementCollection **pp); +} + +[ +local, +object, +uuid(2B8DE2FE-8D2D-11d1-B2FC-00C04FD915A9) +] +interface IXMLDocument2 : IDispatch +{ + [propget, id(DISPID_XMLDOCUMENT_ROOT)] + HRESULT root([retval, out] IXMLElement2 **p); + + [propget, id(DISPID_XMLDOCUMENT_FILESIZE)] + HRESULT fileSize([retval, out] BSTR *p); + + [propget, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)] + HRESULT fileModifiedDate([retval, out] BSTR *p); + + [propget, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)] + HRESULT fileUpdatedDate([retval, out] BSTR *p); + + [propget, id(DISPID_XMLDOCUMENT_URL)] + HRESULT URL([retval, out] BSTR *p); + + [propput, id(DISPID_XMLDOCUMENT_URL)] + HRESULT URL([in] BSTR p); + + [propget, id(DISPID_XMLDOCUMENT_MIMETYPE)] + HRESULT mimeType([retval, out] BSTR *p); + + [propget, id(DISPID_XMLDOCUMENT_READYSTATE)] + HRESULT readyState([retval, out]long *pl); + + [propget, id(DISPID_XMLDOCUMENT_CHARSET)] + HRESULT charset([retval, out]BSTR *p); + + [propput, id(DISPID_XMLDOCUMENT_CHARSET)] + HRESULT charset([in]BSTR p); + + [propget, id(DISPID_XMLDOCUMENT_VERSION)] + HRESULT version([retval, out]BSTR *p); + + [propget, id(DISPID_XMLDOCUMENT_DOCTYPE)] + HRESULT doctype([retval, out]BSTR *p); + + [propget, restricted, id(DISPID_XMLDOCUMENT_DTDURL)] + HRESULT dtdURL([retval, out]BSTR *p); + + [id(DISPID_XMLDOCUMENT_CREATEELEMENT)] + HRESULT createElement( + [in] VARIANT vType, + [optional, in] VARIANT var, + [retval, out] IXMLElement2 **ppElem); + + [propget, id(DISPID_XMLDOCUMENT_ASYNC)] + HRESULT async([retval, out] VARIANT_BOOL *pf); + + [propput, id(DISPID_XMLDOCUMENT_ASYNC)] + HRESULT async([in] VARIANT_BOOL f); +} + +typedef enum tagXMLEMEM_TYPE { + XMLELEMTYPE_ELEMENT = 0, + XMLELEMTYPE_TEXT = 1, + XMLELEMTYPE_COMMENT = 2, + XMLELEMTYPE_DOCUMENT = 3, + XMLELEMTYPE_DTD = 4, + XMLELEMTYPE_PI = 5, + XMLELEMTYPE_OTHER = 6 +} XMLELEM_TYPE; + +typedef struct _xml_error { + UINT _nLine; + BSTR _pchBuf; + BSTR _cchBuf; + UINT _ich; + BSTR _pszFound; + BSTR _pszExpected; + DWORD _reserved1; + DWORD _reserved2; +} XML_ERROR; + +[ +local, +object, +uuid(d4d4a0fc-3b73-11d1-b2b4-00c04fb92596) +] +interface IXMLAttribute : IDispatch +{ + [propget, id(DISPID_XMLATTRIBUTE_NAME)] + HRESULT name( [retval, out] BSTR *p ); + + [propget, id(DISPID_XMLATTRIBUTE_VALUE)] + HRESULT value( [retval, out] BSTR *p ); +} + +[ +local, +object, +uuid(948c5ad3-c58d-11d0-9c0b-00c04fc99c8e) +] +interface IXMLError : IUnknown +{ + HRESULT GetErrorInfo([out]XML_ERROR *pErrorReturn); +} + +[ + object, + local, + uuid(D9F1E15A-CCDB-11d0-9C0C-00C04FC99C8E) +] +interface IXMLElementNotificationSink : IDispatch +{ + [id(DISPID_XMLNOTIFSINK_CHILDADDED)] + HRESULT ChildAdded([in]IDispatch *pChildElem); +} + +[ +uuid(cfc399af-d876-11d0-9c10-00c04fc99c8e) +] +coclass XMLDocument +{ + [default] interface IXMLDocument; +} diff --git a/reactos/include/psdk/msxml2.idl b/reactos/include/psdk/msxml2.idl new file mode 100644 index 00000000000..fb32a79cff9 --- /dev/null +++ b/reactos/include/psdk/msxml2.idl @@ -0,0 +1,1054 @@ +/* + * Copyright (C) 2005 Vijay Kiran Kamuju + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include +#include + +import "unknwn.idl"; +import "objidl.idl"; +import "oaidl.idl"; + +interface IXMLDOMImplementation; +interface IXMLDOMNode; +interface IXMLDOMDocumentFragment; +interface IXMLDOMDocument; +interface IXMLDOMSchemaCollection; +interface IXMLDOMDocument2; +interface IXMLDOMNodeList; +interface IXMLDOMNamedNodeMap; +interface IXMLDOMCharacterData; +interface IXMLDOMAttribute; +interface IXMLDOMElement; +interface IXMLDOMText; +interface IXMLDOMComment; +interface IXMLDOMProcessingInstruction; +interface IXMLDOMCDATASection; +interface IXMLDOMDocumentType; +interface IXMLDOMNotation; +interface IXMLDOMEntity; +interface IXMLDOMEntityReference; +interface IXMLDOMParseError; +interface IXTLRuntime; +interface IXSLTemplate; +interface IXSLProcessor; + +cpp_quote("#define DOMDocument DOMDocument2") +cpp_quote("#define CLSID_DOMDocument CLSID_DOMDocument2") + +cpp_quote("#ifndef __WIDL_XMLDOM_H") +typedef enum tagDOMNodeType +{ + NODE_INVALID = 0, + NODE_ELEMENT = 1, + NODE_ATTRIBUTE = 2, + NODE_TEXT = 3, + NODE_CDATA_SECTION = 4, + NODE_ENTITY_REFERENCE = 5, + NODE_ENTITY = 6, + NODE_PROCESSING_INSTRUCTION = 7, + NODE_COMMENT = 8, + NODE_DOCUMENT = 9, + NODE_DOCUMENT_TYPE = 10, + NODE_DOCUMENT_FRAGMENT = 11, + NODE_NOTATION = 12 +} DOMNodeType; +cpp_quote("#endif /* __WIDL_XMLDOM_H */") + +[ +local, +object, +uuid (2933BF80-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMNode : IDispatch +{ + [propget, id(DISPID_DOM_NODE_NODENAME)] + HRESULT nodeName([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_NODE_NODEVALUE)] + HRESULT nodeValue([retval, out] VARIANT *var1); + + [propput, id(DISPID_DOM_NODE_NODEVALUE)] + HRESULT nodeValue([in] VARIANT var1); + + [propget, id(DISPID_DOM_NODE_NODETYPE)] + HRESULT nodeType([retval, out] DOMNodeType *domNodeType); + + [propget, id(DISPID_DOM_NODE_PARENTNODE)] + HRESULT parentNode([retval, out] IXMLDOMNode **parent); + + [propget, id(DISPID_DOM_NODE_CHILDNODES)] + HRESULT childNodes([retval, out] IXMLDOMNodeList **outList); + + [propget, id(DISPID_DOM_NODE_FIRSTCHILD)] + HRESULT firstChild([retval, out] IXMLDOMNode **domNode); + + [propget, id(DISPID_DOM_NODE_LASTCHILD)] + HRESULT lastChild([retval, out] IXMLDOMNode **domNode); + + [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)] + HRESULT previousSibling([retval, out] IXMLDOMNode **domNode); + + [propget, id(DISPID_DOM_NODE_NEXTSIBLING)] + HRESULT nextSibling([retval, out] IXMLDOMNode **domNode); + + [propget, id(DISPID_DOM_NODE_ATTRIBUTES)] + HRESULT attributes([retval, out] IXMLDOMNamedNodeMap **attributeMap); + + [id(DISPID_DOM_NODE_INSERTBEFORE)] + HRESULT insertBefore( + [in] IXMLDOMNode *newNode, + [in] VARIANT var1, + [retval, out] IXMLDOMNode **outOldNode); + + [id(DISPID_DOM_NODE_REPLACECHILD)] + HRESULT replaceChild( + [in] IXMLDOMNode *newNode, + [in] IXMLDOMNode *oldNode, + [retval, out] IXMLDOMNode **outOldNode); + + [id(DISPID_DOM_NODE_REMOVECHILD)] + HRESULT removeChild( + [in] IXMLDOMNode *domNode, + [retval, out] IXMLDOMNode **oldNode); + + [id(DISPID_DOM_NODE_APPENDCHILD)] + HRESULT appendChild( + [in] IXMLDOMNode *newNode, + [retval, out] IXMLDOMNode **outNewNode); + + [id(DISPID_DOM_NODE_HASCHILDNODES)] + HRESULT hasChildNodes( + [retval, out] VARIANT_BOOL *pbool); + + [propget, id(DISPID_DOM_NODE_OWNERDOC)] + HRESULT ownerDocument([retval, out] IXMLDOMDocument **domDocument); + + [id(DISPID_DOM_NODE_CLONENODE)] + HRESULT cloneNode( + [in] VARIANT_BOOL pbool, + [retval, out] IXMLDOMNode **outNode); + + [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)] + HRESULT nodeTypeString([retval, out] BSTR *p); + + [propget, id(DISPID_XMLDOM_NODE_TEXT)] + HRESULT text([retval, out] BSTR *p); + + [propput, id(DISPID_XMLDOM_NODE_TEXT)] + HRESULT text([in] BSTR p); + + [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)] + HRESULT specified([retval, out] VARIANT_BOOL *pbool); + + [propget, id(DISPID_XMLDOM_NODE_DEFINITION)] + HRESULT definition([retval,out] IXMLDOMNode **domNode); + + [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)] + HRESULT nodeTypedValue([retval, out] VARIANT *var1); + + [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)] + HRESULT nodeTypedValue([in] VARIANT var1); + + [propget, id(DISPID_XMLDOM_NODE_DATATYPE)] + HRESULT dataType([retval, out] VARIANT *var1); + + [propput, id(DISPID_XMLDOM_NODE_DATATYPE)] + HRESULT dataType([in] BSTR p); + + [propget, id(DISPID_XMLDOM_NODE_XML)] + HRESULT xml([retval, out] BSTR *p); + + [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)] + HRESULT transformNode( + [in] IXMLDOMNode *domNode, + [retval, out] BSTR *p); + + [id(DISPID_XMLDOM_NODE_SELECTNODES)] + HRESULT selectNodes( + [in] BSTR p, + [retval, out] IXMLDOMNodeList **outList); + + [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)] + HRESULT selectSingleNode( + [in] BSTR p, + [retval, out] IXMLDOMNode **outNode); + + [propget,id(DISPID_XMLDOM_NODE_PARSED)] + HRESULT parsed([retval, out] VARIANT_BOOL *pbool); + + [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)] + HRESULT namespaceURI([retval, out] BSTR *p); + + [propget, id(DISPID_XMLDOM_NODE_PREFIX)] + HRESULT prefix([retval, out] BSTR *p); + + [propget, id(DISPID_XMLDOM_NODE_BASENAME)] + HRESULT baseName([retval, out] BSTR *p); + + [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)] + HRESULT transformNodeToObject( + [in] IXMLDOMNode *domNode, + [in] VARIANT var1); +} + +[ +local, +object, +uuid (2933BF81-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMDocument : IXMLDOMNode +{ + [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)] + HRESULT doctype([retval, out] IXMLDOMDocumentType **docType); + + [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)] + HRESULT implementation([retval, out] IXMLDOMImplementation **impl); + + [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)] + HRESULT documentElement([retval, out] IXMLDOMElement **domElement); + + [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)] + HRESULT documentElement([in] IXMLDOMElement *domElement); + + [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)] + HRESULT createElement( + [in] BSTR p, + [retval, out] IXMLDOMElement **domElement); + + [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)] + HRESULT createDocumentFragment( + [retval, out] IXMLDOMDocumentFragment **docFrag); + + [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)] + HRESULT createTextNode( + [in] BSTR p, + [retval, out] IXMLDOMText **text); + + [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)] + HRESULT createComment( + [in] BSTR p, + [retval, out] IXMLDOMComment **comment); + + [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)] + HRESULT createCDATASection( + [in] BSTR p, + [retval, out] IXMLDOMCDATASection **cdata); + + [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)] + HRESULT createProcessingInstruction( + [in] BSTR target, + [in] BSTR data, + [retval, out] IXMLDOMProcessingInstruction **pi); + + [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)] + HRESULT createAttribute( + [in] BSTR p, + [retval, out] IXMLDOMAttribute **attribute); + + [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)] + HRESULT createEntityReference( + [in] BSTR p, + [retval, out] IXMLDOMEntityReference **entityRef); + + [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)] + HRESULT getElementsByTagName( + [in] BSTR p, + [retval, out] IXMLDOMNodeList **resultList); + + [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)] + HRESULT createNode( + [in] VARIANT var, + [in] BSTR name, + [in] BSTR uri, + [retval, out] IXMLDOMNode **node); + + [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)] + HRESULT nodeFromID( + [in] BSTR id, + [retval, out] IXMLDOMNode **node); + + [id(DISPID_XMLDOM_DOCUMENT_LOAD)] + HRESULT load( + [in] VARIANT var1, + [retval, out] VARIANT_BOOL *pbool); + + [propget, id(DISPID_READYSTATE)] + HRESULT readyState([retval, out] long *value); + + [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)] + HRESULT parseError([retval, out] IXMLDOMParseError **err); + + [propget, id(DISPID_XMLDOM_DOCUMENT_URL)] + HRESULT url([retval, out] BSTR *p); + + [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)] + HRESULT async([retval, out] VARIANT_BOOL *pbool); + + [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)] + HRESULT async([in] VARIANT_BOOL pbool); + + [id(DISPID_XMLDOM_DOCUMENT_ABORT)] + HRESULT abort(); + + [id(DISPID_XMLDOM_DOCUMENT_LOADXML)] + HRESULT loadXML( + [in] BSTR p, + [out, retval] VARIANT_BOOL *pbool); + + [id(DISPID_XMLDOM_DOCUMENT_SAVE)] + HRESULT save( + [in] VARIANT var1); + + [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)] + HRESULT validateOnParse([retval, out] VARIANT_BOOL *pbool); + + [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)] + HRESULT validateOnParse([in] VARIANT_BOOL pbool); + + [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)] + HRESULT resolveExternals([retval,out] VARIANT_BOOL *pbool); + + [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)] + HRESULT resolveExternals([in] VARIANT_BOOL pbool); + + [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)] + HRESULT preserveWhiteSpace([retval,out] VARIANT_BOOL *pbool); + + [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)] + HRESULT preserveWhiteSpace([in] VARIANT_BOOL pbool); + + [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)] + HRESULT onreadystatechange([in] VARIANT var1); + + [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)] + HRESULT ondataavailable([in] VARIANT var1); + + [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)] + HRESULT ontransformnode([in] VARIANT var1); +} + +[ +local, +object, +uuid (373984c8-b845-449b-91e7-45ac83036ade) +] +interface IXMLDOMSchemaCollection : IDispatch +{ + [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADD)] + HRESULT add( + [in] BSTR uri, + [in] VARIANT var); + + [id(DISPID_XMLDOM_SCHEMACOLLECTION_GET)] + HRESULT get( + [in] BSTR uri, + [retval, out] IXMLDOMNode **node); + + [id(DISPID_XMLDOM_SCHEMACOLLECTION_REMOVE)] + HRESULT remove( + [in] BSTR uri); + + [propget, id(DISPID_XMLDOM_SCHEMACOLLECTION_LENGTH)] + HRESULT length( + [retval, out] long *length); + + [propget, id(DISPID_VALUE)] + HRESULT namespaceURI([in] long index, [out, retval] BSTR *len); + + [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADDCOLLECTION)] + HRESULT addCollection( + [in] IXMLDOMSchemaCollection *otherCollection); + + [propget, id(DISPID_NEWENUM)] + HRESULT _newEnum([retval, out] IUnknown **ppUnk); +} + +[ +local, +object, +uuid (2933BF95-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMDocument2 : IXMLDOMDocument +{ + [propget, id(DISPID_XMLDOM_DOCUMENT2_NAMESPACES)] + HRESULT namespaces([retval, out] IXMLDOMSchemaCollection **schemaCollection); + + [propget, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS)] + HRESULT schemas([retval, out] VARIANT *var1); + + [propputref, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS)] + HRESULT schemas([in] VARIANT var1); + + [id(DISPID_XMLDOM_DOCUMENT2_VALIDATE)] + HRESULT validate( + [retval, out] IXMLDOMParseError **err); + + [id(DISPID_XMLDOM_DOCUMENT2_SETPROPERTY)] + HRESULT setProperty( + [in] BSTR p, + [in] VARIANT var); + + [id(DISPID_XMLDOM_DOCUMENT2_GETPROPERTY)] + HRESULT getProperty( + [in] BSTR p, + [retval, out] VARIANT *var); +} + +[ +local, +object, +uuid (2933BF82-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMNodeList : IDispatch +{ + [propget, id(DISPID_VALUE)] + HRESULT item([in] long lIndex, [retval, out] IXMLDOMNode **outNode); + + [propget, id(DISPID_DOM_NODELIST_LENGTH)] + HRESULT length([retval, out] long *lLength); + + [id(DISPID_XMLDOM_NODELIST_NEXTNODE)] + HRESULT nextNode( + [retval, out] IXMLDOMNode **outNode); + + [id(DISPID_XMLDOM_NODELIST_RESET)] + HRESULT reset(); + + [propget, id(DISPID_NEWENUM)] + HRESULT _newEnum([retval, out] IUnknown **ppUnk); +} + +[ +local, +object, +uuid (AA634FC7-5888-44a7-A257-3A47150D3A0E) +] +interface IXMLDOMSelection : IXMLDOMNodeList +{ + [propget, id(DISPID_XMLDOM_SELECTION_EXPR)] + HRESULT expr([retval, out] BSTR *p); + + [propput, id(DISPID_XMLDOM_SELECTION_EXPR)] + HRESULT expr([in] BSTR p); + + [propget, id(DISPID_XMLDOM_SELECTION_CONTEXT)] + HRESULT context([retval, out] IXMLDOMNode **ppNode); + + [propputref, id(DISPID_XMLDOM_SELECTION_CONTEXT)] + HRESULT context([in] IXMLDOMNode * pNode); + + [id(DISPID_XMLDOM_SELECTION_PEEKNODE)] + HRESULT peekNode( + [retval, out] IXMLDOMNode **ppNode); + + [id(DISPID_XMLDOM_SELECTION_MATCHES)] + HRESULT matches( + [in] IXMLDOMNode *pNode, + [retval, out] IXMLDOMNode **ppNode); + + [id(DISPID_XMLDOM_SELECTION_REMOVENEXT)] + HRESULT removeNext( + [retval, out] IXMLDOMNode **ppNode); + + [id(DISPID_XMLDOM_SELECTION_REMOVEALL)] + HRESULT removeAll(); + + [id(DISPID_XMLDOM_SELECTION_CLONE)] + HRESULT clone( + [retval, out] IXMLDOMSelection **ppNode); + + [id(DISPID_XMLDOM_SELECTION_GETPROPERTY)] + HRESULT getProperty( + [in] BSTR p, + [retval, out] VARIANT * var); + + [id(DISPID_XMLDOM_SELECTION_SETPROPERTY)] + HRESULT setProperty( + [in] BSTR p, + [in] VARIANT var); +} + +[ +local, +object, +uuid (2933BF83-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMNamedNodeMap : IDispatch +{ + [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)] + HRESULT getNamedItem( + [in] BSTR p, + [retval, out] IXMLDOMNode **outNode); + + [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)] + HRESULT setNamedItem( + [in] IXMLDOMNode *newNode, + [retval, out] IXMLDOMNode **outNode); + + [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)] + HRESULT removeNamedItem( + [in] BSTR p, + [retval, out] IXMLDOMNode **outNode); + + [propget, id(DISPID_VALUE)] + HRESULT item([in] long lIndex, [retval, out] IXMLDOMNode **outNode); + + [propget, id(DISPID_DOM_NODELIST_LENGTH)] + HRESULT length([retval, out] long *lLength); + + [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)] + HRESULT getQualifiedItem( + [in] BSTR name, + [in] BSTR uri, + [retval, out] IXMLDOMNode **outNode); + + [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)] + HRESULT removeQualifiedItem( + [in] BSTR name, + [in] BSTR uri, + [retval, out] IXMLDOMNode **outNode); + + [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)] + HRESULT nextNode( + [retval, out] IXMLDOMNode **outNode); + + [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)] + HRESULT reset(); + + [propget, id(DISPID_NEWENUM)] + HRESULT _newEnum([retval, out] IUnknown **ppUnk); +} + +[ +local, +object, +uuid (3efaa413-272f-11d2-836f-0000f87a7782) +] +interface IXMLDOMDocumentFragment : IXMLDOMNode +{ +} + +[ +local, +object, +uuid (2933BF84-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMCharacterData : IXMLDOMNode +{ + [propget, id(DISPID_DOM_DATA_DATA)] + HRESULT data([retval, out] BSTR *p); + + [propput, id(DISPID_DOM_DATA_DATA)] + HRESULT data([in] BSTR data); + + [propget, id(DISPID_DOM_DATA_LENGTH)] + HRESULT length([retval, out] long *len); + + [id(DISPID_DOM_DATA_SUBSTRING)] + HRESULT substringData( + [in] long offset, + [in] long count, + [retval, out] BSTR *p); + + [id(DISPID_DOM_DATA_APPEND)] + HRESULT appendData( + [in] BSTR p); + + [id(DISPID_DOM_DATA_INSERT)] + HRESULT insertData( + [in] long offset, + [in] BSTR p); + + [id(DISPID_DOM_DATA_DELETE)] + HRESULT deleteData( + [in] long offset, + [in] long count); + + [id(DISPID_DOM_DATA_REPLACE)] + HRESULT replaceData( + [in] long offset, + [in] long count, + [in] BSTR p); +} + +[ +local, +object, +uuid (2933BF85-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMAttribute : IXMLDOMNode +{ + [propget, id(DISPID_DOM_ATTRIBUTE_GETNAME)] + HRESULT name([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_ATTRIBUTE_VALUE)] + HRESULT value([retval, out] VARIANT *var1); + + [propput, id(DISPID_DOM_ATTRIBUTE_VALUE)] + HRESULT value([in] VARIANT var1); +} + +[ +local, +object, +uuid (2933BF86-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMElement : IXMLDOMNode +{ + [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME)] + HRESULT tagName([retval, out] BSTR *p); + + [id(DISPID_DOM_ELEMENT_GETATTRIBUTE)] + HRESULT getAttribute( + [in] BSTR p, + [retval, out] VARIANT *var); + + [id(DISPID_DOM_ELEMENT_SETATTRIBUTE)] + HRESULT setAttribute( + [in] BSTR p, + [in] VARIANT var); + + [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE)] + HRESULT removeAttribute( + [in] BSTR p); + + [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE)] + HRESULT getAttributeNode( + [in] BSTR p, + [retval, out] IXMLDOMAttribute **attributeNode); + + [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE)] + HRESULT setAttributeNode( + [in] IXMLDOMAttribute *domAttribute, + [retval, out] IXMLDOMAttribute **attributeNode); + + [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE)] + HRESULT removeAttributeNode( + [in] IXMLDOMAttribute *domAttribute, + [retval, out] IXMLDOMAttribute **attributeNode); + + [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME)] + HRESULT getElementsByTagName( + [in] BSTR p, + [retval, out] IXMLDOMNodeList **resultList); + + [id(DISPID_DOM_ELEMENT_NORMALIZE)] + HRESULT normalize(); +} + +[ +local, +object, +uuid (2933BF87-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMText : IXMLDOMCharacterData +{ + [id(DISPID_DOM_TEXT_SPLITTEXT)] + HRESULT splitText( + [in] long offset, + [retval, out] IXMLDOMText **txtNode); +} + +[ +local, +object, +uuid (2933BF88-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMComment : IXMLDOMCharacterData +{ +} + +[ +local, +object, +uuid (2933BF89-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMProcessingInstruction : IXMLDOMNode +{ + [propget, id(DISPID_DOM_PI_TARGET)] + HRESULT target([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_PI_DATA)] + HRESULT data([retval, out] BSTR *p); + + [propput, id(DISPID_DOM_PI_DATA)] + HRESULT data([in] BSTR p); +} + +[ +local, +object, +uuid (2933BF8A-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMCDATASection : IXMLDOMText +{ +} + +[ +local, +object, +uuid (2933BF8B-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMDocumentType : IXMLDOMNode +{ + [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)] + HRESULT name([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)] + HRESULT entities([retval, out] IXMLDOMNamedNodeMap **entityMap); + + [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)] + HRESULT notations([retval, out] IXMLDOMNamedNodeMap **notationMap); +} + +[ +local, +object, +uuid (2933BF8C-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMNotation : IXMLDOMNode +{ + [propget, id(DISPID_DOM_NOTATION_PUBLICID)] + HRESULT publicId([retval, out] VARIANT *id); + + [propget, id(DISPID_DOM_NOTATION_SYSTEMID)] + HRESULT systemId([retval, out] VARIANT *id); +} + +[ +local, +object, +uuid (2933BF8D-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMEntity : IXMLDOMNode +{ + [propget, id(DISPID_DOM_ENTITY_PUBLICID)] + HRESULT publicId([retval, out] VARIANT *id1); + + [propget, id(DISPID_DOM_ENTITY_SYSTEMID)] + HRESULT systemId([retval, out] VARIANT *id1); + + [propget, id(DISPID_DOM_ENTITY_NOTATIONNAME)] + HRESULT notationName([retval, out] BSTR *p); +} + +[ +local, +object, +uuid (2933BF8E-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMEntityReference : IXMLDOMNode +{ +} + +[ +local, +object, +uuid (2933BF8F-7B36-11d2-B20E-00C04F983E60) +] +interface IXMLDOMImplementation : IDispatch +{ + [id(DISPID_DOM_IMPLEMENTATION_HASFEATURE)] + HRESULT hasFeature( + [in] BSTR feature, + [in] BSTR version, + [retval, out] VARIANT_BOOL *pbool); +} + +[ +local, +object, +uuid (3efaa425-272f-11d2-836f-0000f87a7782) +] +interface IXTLRuntime : IXMLDOMNode +{ + [id(DISPID_XTLRUNTIME_UNIQUEID)] + HRESULT uniqueID( + [in]IXMLDOMNode *pNode, + [retval, out]long *pID); + + [id(DISPID_XTLRUNTIME_DEPTH)] + HRESULT depth( + [in] IXMLDOMNode *pNode, + [retval, out]long * pDepth); + + [id(DISPID_XTLRUNTIME_CHILDNUMBER)] + HRESULT childNumber( + [in]IXMLDOMNode *pNode, + [retval, out] long *pNumber); + + [id(DISPID_XTLRUNTIME_ANCESTORCHILDNUMBER)] + HRESULT ancestorChildNumber( + [in]BSTR bstr, + [in]IXMLDOMNode *pNode, + [retval, out]long *pNumber); + + [id(DISPID_XTLRUNTIME_ABSOLUTECHILDNUMBER)] + HRESULT absoluteChildNumber( + [in]IXMLDOMNode *pNode, + [retval, out]long *pNumber); + + [id(DISPID_XTLRUNTIME_FORMATINDEX)] + HRESULT formatIndex( + [in] long lIndex, + [in] BSTR bstr, + [retval, out]BSTR *pbstr); + + [id(DISPID_XTLRUNTIME_FORMATNUMBER)] + HRESULT formatNumber( + [in] double dblNumber, + [in] BSTR bstr, + [retval, out]BSTR *pbstr); + + [id(DISPID_XTLRUNTIME_FORMATDATE)] + HRESULT formatDate( + [in] VARIANT var1, + [in] BSTR bstr, + [optional, in] VARIANT var2, + [retval, out]BSTR *pbstr); + + [id(DISPID_XTLRUNTIME_FORMATTIME)] + HRESULT formatTime( + [in] VARIANT var1, + [in] BSTR bstr, + [optional, in] VARIANT var2, + [retval, out]BSTR *pbstr); + +} + +[ + uuid(3efaa427-272f-11d2-836f-0000f87a7782) +] +dispinterface XMLDOMDocumentEvents +{ + properties: + methods: + [id (DISPID_XMLDOMEVENT_ONDATAAVAILABLE)] + HRESULT ondataavailable(); + + [id (DISPID_XMLDOMEVENT_ONREADYSTATECHANGE)] + HRESULT onreadystatechange(); +} + +[ +local, +object, +uuid (2933BF92-7B36-11d2-B20E-00C04F983E60) +] +interface IXSLProcessor : IDispatch +{ + [propput, id(DISPID_XMLDOM_PROCESSOR_INPUT)] + HRESULT input([in] VARIANT var); + + [propget, id(DISPID_XMLDOM_PROCESSOR_INPUT)] + HRESULT input([retval, out] VARIANT *var); + + [propget, id(DISPID_XMLDOM_PROCESSOR_XSLTEMPLATE)] + HRESULT ownerTemplate([retval, out] IXSLTemplate **ppTemplate); + + [id(DISPID_XMLDOM_PROCESSOR_SETSTARTMODE)] + HRESULT setStartMode( + [in] BSTR p, + [in, defaultvalue("")] BSTR uri); + + [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODE)] + HRESULT startMode([retval, out] BSTR *p); + + [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODEURI)] + HRESULT startModeURI([retval, out] BSTR *uri); + + [propput, id(DISPID_XMLDOM_PROCESSOR_OUTPUT)] + HRESULT output([in] VARIANT var); + + [propget, id(DISPID_XMLDOM_PROCESSOR_OUTPUT)] + HRESULT output([retval, out] VARIANT *var); + + [id(DISPID_XMLDOM_PROCESSOR_TRANSFORM)] + HRESULT transform( + [retval, out] VARIANT_BOOL *pbool); + + [id(DISPID_XMLDOM_PROCESSOR_RESET)] + HRESULT reset(); + + [propget, id(DISPID_XMLDOM_PROCESSOR_READYSTATE)] + HRESULT readyState([retval, out] long *pstate); + + [id(DISPID_XMLDOM_PROCESSOR_ADDPARAMETER)] + HRESULT addParameter( + [in] BSTR p, + [in] VARIANT var, + [in, defaultvalue("")] BSTR uri); + + [id(DISPID_XMLDOM_PROCESSOR_ADDOBJECT)] + HRESULT addObject( + [in] IDispatch* obj, + [in] BSTR uri); + + [propget, id(DISPID_XMLDOM_PROCESSOR_STYLESHEET)] + HRESULT stylesheet([retval, out] IXMLDOMNode **node); +} + +[ +local, +object, +uuid (2933BF93-7B36-11d2-B20E-00C04F983E60) +] +interface IXSLTemplate : IDispatch +{ + [propputref, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET)] + HRESULT stylesheet([in] IXMLDOMNode *node); + + [propget, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET)] + HRESULT stylesheet([retval, out] IXMLDOMNode **node); + + [id(DISPID_XMLDOM_TEMPLATE_CREATEPROCESSOR)] + HRESULT createProcessor( + [retval, out] IXSLProcessor **ppProcessor); +} + +[ +local, +object, +uuid (3efaa426-272f-11d2-836f-0000f87a7782) +] +interface IXMLDOMParseError : IDispatch +{ + [propget, id(DISPID_VALUE)] + HRESULT errorCode([retval, out] long *errCode); + + [propget, id(DISPID_DOM_ERROR_URL)] + HRESULT url([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_ERROR_REASON)] + HRESULT reason([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_ERROR_SRCTEXT)] + HRESULT srcText([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_ERROR_LINE)] + HRESULT line([retval, out] long *lineNo); + + [propget, id(DISPID_DOM_ERROR_LINEPOS)] + HRESULT linepos([retval, out] long * linePos); + + [propget, id(DISPID_DOM_ERROR_FILEPOS)] + HRESULT filepos([retval, out] long * filePos); +} + +[ + uuid(F6D90F11-9C73-11D3-B32E-00C04F990BB4) +] +coclass DOMDocument +{ + [default] interface IXMLDOMDocument2; + [default, source] dispinterface XMLDOMDocumentEvents; +} + +[ + uuid(f5078f1b-c551-11d3-89b9-0000f81fe221) +] +coclass DOMDocument26 +{ + [default] interface IXMLDOMDocument2; + [default, source] dispinterface XMLDOMDocumentEvents; +} + +[ + uuid(f5078f32-c551-11d3-89b9-0000f81fe221) +] +coclass DOMDocument30 +{ + [default] interface IXMLDOMDocument2; + [default, source] dispinterface XMLDOMDocumentEvents; +} + + +[ + uuid(F6D90F12-9C73-11D3-B32E-00C04F990BB4) +] +coclass FreeThreadedDOMDocument +{ + [default] interface IXMLDOMDocument2; + [default, source] dispinterface XMLDOMDocumentEvents; +} + +[ + uuid(f5078f1c-c551-11d3-89b9-0000f81fe221) +] +coclass FreeThreadedDOMDocument26 +{ + [default] interface IXMLDOMDocument2; + [default, source] dispinterface XMLDOMDocumentEvents; +} + +[ + uuid(f5078f33-c551-11d3-89b9-0000f81fe221) +] +coclass FreeThreadedDOMDocument30 +{ + [default] interface IXMLDOMDocument2; + [default, source] dispinterface XMLDOMDocumentEvents; +} + +[ + uuid(373984c9-b845-449b-91e7-45ac83036ade) +] +coclass XMLSchemaCache +{ + [default] interface IXMLDOMSchemaCollection; +} + +[ + uuid(f5078f1d-c551-11d3-89b9-0000f81fe221) +] +coclass XMLSchemaCache26 +{ + [default] interface IXMLDOMSchemaCollection; +} + +[ + uuid(f5078f34-c551-11d3-89b9-0000f81fe221) +] +coclass XMLSchemaCache30 +{ + [default] interface IXMLDOMSchemaCollection; +} + +[ + uuid(2933BF94-7B36-11d2-B20E-00C04F983E60) +] +coclass XSLTemplate +{ + [default] interface IXSLTemplate; +} + +[ + uuid(f5078f21-c551-11d3-89b9-0000f81fe221) +] +coclass XSLTemplate26 +{ + [default] interface IXSLTemplate; +} + +[ + uuid(f5078f36-c551-11d3-89b9-0000f81fe221) +] +coclass XSLTemplate30 +{ + [default] interface IXSLTemplate; +} diff --git a/reactos/include/psdk/oaidl.h b/reactos/include/psdk/oaidl.h deleted file mode 100644 index b2626c569c2..00000000000 --- a/reactos/include/psdk/oaidl.h +++ /dev/null @@ -1,1642 +0,0 @@ -#ifndef _OAIDL_H -#define _OAIDL_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif -#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION) -#define __VARIANT_NAME_1 n1 -#define __VARIANT_NAME_2 n2 -#define __VARIANT_NAME_3 n3 -#define __VARIANT_NAME_4 brecVal -#else -#define __tagVARIANT -#define __tagBRECORD -#define __VARIANT_NAME_1 -#define __VARIANT_NAME_2 -#define __VARIANT_NAME_3 -#define __VARIANT_NAME_4 -#endif -#define DISPID_UNKNOWN (-1) -#define DISPID_VALUE (0) -#define DISPID_PROPERTYPUT (-3) -#define DISPID_NEWENUM (-4) -#define DISPID_EVALUATE (-5) -#define DISPID_CONSTRUCTOR (-6) -#define DISPID_DESTRUCTOR (-7) -#define DISPID_COLLECT (-8) -#define FADF_AUTO (1) -#define FADF_STATIC (2) -#define FADF_EMBEDDED (4) -#define FADF_FIXEDSIZE (16) -#define FADF_RECORD (32) -#define FADF_HAVEIID (64) -#define FADF_HAVEVARTYPE (128) -#define FADF_BSTR (256) -#define FADF_UNKNOWN (512) -#define FADF_DISPATCH (1024) -#define FADF_VARIANT (2048) -#define FADF_RESERVED (0xf0e8) -#define FADF_DATADELETED (0x1000) -#define FADF_CREATEVECTOR (0x2000) -#define PARAMFLAG_NONE (0) -#define PARAMFLAG_FIN (1) -#define PARAMFLAG_FOUT (2) -#define PARAMFLAG_FLCID (4) -#define PARAMFLAG_FRETVAL (8) -#define PARAMFLAG_FOPT (16) -#define PARAMFLAG_FHASDEFAULT (32) -#define PARAMFLAG_FHASCUSTDATA (64) -#define IDLFLAG_NONE PARAMFLAG_NONE -#define IDLFLAG_FIN PARAMFLAG_FIN -#define IDLFLAG_FOUT PARAMFLAG_FOUT -#define IDLFLAG_FLCID PARAMFLAG_FLCID -#define IDLFLAG_FRETVAL PARAMFLAG_FRETVAL -#define IMPLTYPEFLAG_FDEFAULT 1 -#define IMPLTYPEFLAG_FSOURCE 2 -#define IMPLTYPEFLAG_FRESTRICTED 4 -#define IMPLTYPEFLAG_FDEFAULTVTABLE 8 - -typedef interface ITypeLib *LPTYPELIB; -typedef interface ITypeLib2 *LPTYPELIB2; -typedef interface ICreateTypeInfo *LPCREATETYPEINFO; -typedef interface ICreateTypeInfo2 *LPCREATETYPEINFO2; -typedef interface ICreateTypeLib *LPCREATETYPELIB; -typedef interface ICreateTypeLib2 *LPCREATETYPELIB2; -typedef interface ITypeComp *LPTYPECOMP; -typedef interface ITypeInfo *LPTYPEINFO; -typedef interface ITypeInfo2 *LPTYPEINFO2; -typedef interface IErrorInfo *LPERRORINFO; -typedef interface IDispatch *LPDISPATCH; -typedef interface IEnumVARIANT *LPENUMVARIANT; -typedef interface ICreateErrorInfo *LPCREATEERRORINFO; -typedef interface ISupportErrorInfo *LPSUPPORTERRORINFO; -typedef interface IRecordInfo *LPRECORDINFO; - -extern const IID IID_ITypeLib; -extern const IID IID_ITypeLib2; -extern const IID IID_ICreateTypeInfo; -extern const IID IID_ICreateTypeInfo2; -extern const IID IID_ICreateTypeLib; -extern const IID IID_ICreateTypeLib2; -extern const IID IID_ITypeInfo; -extern const IID IID_ITypeInfo2; -extern const IID IID_IErrorInfo; -extern const IID IID_IDispatch; -extern const IID IID_IEnumVARIANT; -extern const IID IID_ICreateErrorInfo; -extern const IID IID_ISupportErrorInfo; -extern const IID IID_IRecordInfo; -extern const IID IID_ITypeMarshal; - -#ifndef __ITypeLib_FWD_DEFINED__ -#define __ITypeLib_FWD_DEFINED__ -typedef struct ITypeLib ITypeLib; -#endif - -typedef enum tagSYSKIND { - SYS_WIN16,SYS_WIN32,SYS_MAC -} SYSKIND; -typedef enum tagLIBFLAGS { - LIBFLAG_FRESTRICTED=1,LIBFLAG_FCONTROL=2,LIBFLAG_FHIDDEN=4, - LIBFLAG_FHASDISKIMAGE=8 -} LIBFLAGS; -typedef struct tagTLIBATTR { - GUID guid; - LCID lcid; - SYSKIND syskind; - WORD wMajorVerNum; - WORD wMinorVerNum; - WORD wLibFlags; -} TLIBATTR,*LPTLIBATTR; -typedef CY CURRENCY; -typedef struct tagSAFEARRAYBOUND { - ULONG cElements; - LONG lLbound; -}SAFEARRAYBOUND,*LPSAFEARRAYBOUND; -typedef struct _wireSAFEARR_BSTR -{ - ULONG Size; - wireBSTR *aBstr; -}SAFEARR_BSTR; -typedef struct _wireSAFEARR_UNKNOWN { - ULONG Size; - IUnknown **apUnknown; -}SAFEARR_UNKNOWN; -typedef struct _wireSAFEARR_DISPATCH { - ULONG Size; - LPDISPATCH *apDispatch; -}SAFEARR_DISPATCH; -typedef struct _wireSAFEARR_VARIANT { - ULONG Size; - struct _wireVARIANT *aVariant; -}SAFEARR_VARIANT; -typedef enum tagSF_TYPE { - SF_ERROR=VT_ERROR, - SF_I1=VT_I1, - SF_I2=VT_I2, - SF_I4=VT_I4, - SF_I8=VT_I8, - SF_BSTR=VT_BSTR, - SF_UNKNOWN=VT_UNKNOWN, - SF_DISPATCH=VT_DISPATCH, - SF_VARIANT=VT_VARIANT, - SF_RECORD=VT_RECORD, - SF_HAVEIID=VT_UNKNOWN|VT_RESERVED, -}SF_TYPE; -typedef struct _wireBRECORD { - ULONG fFlags; - ULONG clSize; - LPRECORDINFO* pRecInfo; - byte* pRecord; -} *wireBRECORD; -typedef struct _wireSAFEARR_BRECORD { - ULONG Size; - wireBRECORD* aRecord; - } SAFEARR_BRECORD; -typedef struct _wireSAFEARR_HAVEIID { - ULONG Size; - IUnknown** apUnknown; - IID iid; - } SAFEARR_HAVEIID; -typedef struct _wireSAFEARRAY_UNION { - ULONG sfType; - union { - SAFEARR_BSTR BstrStr; - SAFEARR_UNKNOWN UnknownStr; - SAFEARR_DISPATCH DispatchStr; - SAFEARR_VARIANT VariantStr; - SAFEARR_BRECORD RecordStr; - SAFEARR_HAVEIID HaveIidStr; - BYTE_SIZEDARR ByteStr; - WORD_SIZEDARR WordStr; - DWORD_SIZEDARR LongStr; - HYPER_SIZEDARR HyperStr; - }u; -}SAFEARRAYUNION; -typedef struct _wireSAFEARRAY { - USHORT cDims; - USHORT fFeatures; - ULONG cbElements; - ULONG cLocks; - SAFEARRAYUNION uArrayStructs; - SAFEARRAYBOUND rgsabound[1]; -}*wireSAFEARRAY; -typedef wireSAFEARRAY *wirePSAFEARRAY; -typedef struct tagSAFEARRAY { - USHORT cDims; - USHORT fFeatures; - ULONG cbElements; - ULONG cLocks; - PVOID pvData; - SAFEARRAYBOUND rgsabound[1]; -}SAFEARRAY,*LPSAFEARRAY; -#if defined (__GNUC__) && !defined (NONAMELESSUNION) -__extension__ /* no named members */ -#endif -typedef struct tagVARIANT { - _ANONYMOUS_UNION union { - struct __tagVARIANT { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - _ANONYMOUS_UNION union { - long lVal; - LONGLONG llVal; - unsigned char bVal; - short iVal; - float fltVal; - double dblVal; - VARIANT_BOOL boolVal; - SCODE scode; - CY cyVal; - DATE date; - BSTR bstrVal; - IUnknown *punkVal; - LPDISPATCH pdispVal; - SAFEARRAY *parray; - unsigned char *pbVal; - short *piVal; - long *plVal; - float *pfltVal; - double *pdblVal; - VARIANT_BOOL *pboolVal; - _VARIANT_BOOL *pbool; - SCODE *pscode; - CY *pcyVal; - DATE *pdate; - BSTR *pbstrVal; - IUnknown **ppunkVal; - LPDISPATCH *ppdispVal; - SAFEARRAY **pparray; - struct tagVARIANT *pvarVal; - void *byref; - CHAR cVal; - USHORT uiVal; - ULONG ulVal; - ULONGLONG ullVal; - INT intVal; - UINT uintVal; - DECIMAL *pdecVal; - CHAR *pcVal; - USHORT *puiVal; - ULONG *pulVal; - INT *pintVal; - UINT *puintVal; - _ANONYMOUS_STRUCT struct __tagBRECORD { - PVOID pvRecord; - struct IRecordInfo *pRecInfo; - } __VARIANT_NAME_4; - } __VARIANT_NAME_3; - } __VARIANT_NAME_2; - DECIMAL decVal; - } __VARIANT_NAME_1; -} VARIANT,*LPVARIANT; -typedef VARIANT VARIANTARG; -typedef VARIANT *LPVARIANTARG; -typedef struct _wireVARIANT { - DWORD clSize; - DWORD rpcReserved; - USHORT vt; - USHORT wReserved1; - USHORT wReserved2; - USHORT wReserved3; - _ANONYMOUS_UNION union { - LONG lVal; - LONGLONG llVal; - BYTE bVal; - SHORT iVal; - FLOAT fltVal; - DOUBLE dblVal; - VARIANT_BOOL boolVal; - SCODE scode; - CY cyVal; - DATE date; - wireBSTR bstrVal; - IUnknown *punkVal; - LPDISPATCH pdispVal; - wirePSAFEARRAY parray; - wireBRECORD brecVal; - BYTE *pbVal; - SHORT *piVal; - LONG *plVal; - FLOAT *pfltVal; - DOUBLE *pdblVal; - VARIANT_BOOL *pboolVal; - SCODE *pscode; - CY *pcyVal; - DATE *pdate; - wireBSTR *pbstrVal; - IUnknown **ppunkVal; - LPDISPATCH *ppdispVal; - wirePSAFEARRAY *pparray; - struct _wireVARIANT *pvarVal; - CHAR cVal; - USHORT uiVal; - ULONG ulVal; - ULONGLONG ullVal; - INT intVal; - UINT uintVal; - DECIMAL decVal; - DECIMAL *pdecVal; - CHAR *pcVal; - USHORT *puiVal; - ULONG *pulVal; - INT *pintVal; - UINT *puintVal; - } DUMMYUNIONNAME; -} *wireVARIANT; -typedef LONG DISPID; -typedef DISPID MEMBERID; -typedef DWORD HREFTYPE; -typedef enum tagTYPEKIND { - TKIND_ENUM,TKIND_RECORD,TKIND_MODULE,TKIND_INTERFACE,TKIND_DISPATCH, - TKIND_COCLASS,TKIND_ALIAS,TKIND_UNION,TKIND_MAX -}TYPEKIND; -typedef struct tagTYPEDESC { - _ANONYMOUS_UNION union { - struct tagTYPEDESC *lptdesc; - struct tagARRAYDESC *lpadesc; - HREFTYPE hreftype; - } DUMMYUNIONNAME; - VARTYPE vt; -}TYPEDESC; -typedef struct tagARRAYDESC { - TYPEDESC tdescElem; - USHORT cDims; - SAFEARRAYBOUND rgbounds[1]; -}ARRAYDESC; -typedef struct tagPARAMDESCEX { - ULONG cBytes; - VARIANTARG varDefaultValue; -}PARAMDESCEX,*LPPARAMDESCEX; -typedef struct tagPARAMDESC { - LPPARAMDESCEX pparamdescex; - USHORT wParamFlags; -}PARAMDESC,*LPPARAMDESC; -typedef struct tagIDLDESC { - ULONG dwReserved; - USHORT wIDLFlags; -}IDLDESC,*LPIDLDESC; -typedef struct tagELEMDESC { - TYPEDESC tdesc; - _ANONYMOUS_UNION union { - IDLDESC idldesc; - PARAMDESC paramdesc; - } DUMMYUNIONNAME; -} ELEMDESC,*LPELEMDESC; -typedef struct tagTYPEATTR { - GUID guid; - LCID lcid; - DWORD dwReserved; - MEMBERID memidConstructor; - MEMBERID memidDestructor; - LPOLESTR lpstrSchema; - ULONG cbSizeInstance; - TYPEKIND typekind; - WORD cFuncs; - WORD cVars; - WORD cImplTypes; - WORD cbSizeVft; - WORD cbAlignment; - WORD wTypeFlags; - WORD wMajorVerNum; - WORD wMinorVerNum; - TYPEDESC tdescAlias; - IDLDESC idldescType; -}TYPEATTR,*LPTYPEATTR; -typedef struct tagDISPPARAMS { - VARIANTARG *rgvarg; - DISPID *rgdispidNamedArgs; - UINT cArgs; - UINT cNamedArgs; -}DISPPARAMS; -typedef struct tagEXCEPINFO { - WORD wCode; - WORD wReserved; - BSTR bstrSource; - BSTR bstrDescription; - BSTR bstrHelpFile; - DWORD dwHelpContext; - PVOID pvReserved; - HRESULT(__stdcall * pfnDeferredFillIn)(struct tagEXCEPINFO*); - SCODE scode; -} EXCEPINFO,*LPEXCEPINFO; -typedef enum tagCALLCONV { - CC_FASTCALL,CC_CDECL,CC_MSCPASCAL,CC_PASCAL=CC_MSCPASCAL, - CC_MACPASCAL,CC_STDCALL,CC_FPFASTCALL,CC_SYSCALL,CC_MPWCDECL, - CC_MPWPASCAL,CC_MAX=CC_MPWPASCAL -}CALLCONV; -typedef enum tagFUNCKIND { - FUNC_VIRTUAL,FUNC_PUREVIRTUAL,FUNC_NONVIRTUAL, - FUNC_STATIC,FUNC_DISPATCH -}FUNCKIND; -typedef enum tagINVOKEKIND { - INVOKE_FUNC=1,INVOKE_PROPERTYGET,INVOKE_PROPERTYPUT=4, - INVOKE_PROPERTYPUTREF=8 -}INVOKEKIND; -typedef struct tagFUNCDESC { - MEMBERID memid; - SCODE *lprgscode; - ELEMDESC *lprgelemdescParam; - FUNCKIND funckind; - INVOKEKIND invkind; - CALLCONV callconv; - SHORT cParams; - SHORT cParamsOpt; - SHORT oVft; - SHORT cScodes; - ELEMDESC elemdescFunc; - WORD wFuncFlags; -}FUNCDESC,*LPFUNCDESC; -typedef enum tagVARKIND { - VAR_PERINSTANCE,VAR_STATIC,VAR_CONST,VAR_DISPATCH -} VARKIND; -typedef struct tagVARDESC { - MEMBERID memid; - LPOLESTR lpstrSchema; - _ANONYMOUS_UNION union { - ULONG oInst; - VARIANT *lpvarValue; - } DUMMYUNIONNAME; - ELEMDESC elemdescVar; - WORD wVarFlags; - VARKIND varkind; -} VARDESC,*LPVARDESC; -typedef enum tagTYPEFLAGS { - TYPEFLAG_FAPPOBJECT=1,TYPEFLAG_FCANCREATE=2,TYPEFLAG_FLICENSED=4, - TYPEFLAG_FPREDECLID=8,TYPEFLAG_FHIDDEN=16,TYPEFLAG_FCONTROL=32, - TYPEFLAG_FDUAL=64,TYPEFLAG_FNONEXTENSIBLE=128, - TYPEFLAG_FOLEAUTOMATION=256,TYPEFLAG_FRESTRICTED=512, - TYPEFLAG_FAGGREGATABLE=1024,TYPEFLAG_FREPLACEABLE=2048, - TYPEFLAG_FDISPATCHABLE=4096,TYPEFLAG_FREVERSEBIND=8192, - TYPEFLAG_FPROXY=16384 -} TYPEFLAGS; -typedef enum tagFUNCFLAGS { - FUNCFLAG_FRESTRICTED=1,FUNCFLAG_FSOURCE=2,FUNCFLAG_FBINDABLE=4, - FUNCFLAG_FREQUESTEDIT=8,FUNCFLAG_FDISPLAYBIND=16,FUNCFLAG_FDEFAULTBIND=32, - FUNCFLAG_FHIDDEN=64,FUNCFLAG_FUSESGETLASTERROR=128,FUNCFLAG_FDEFAULTCOLLELEM=256, - FUNCFLAG_FUIDEFAULT=512,FUNCFLAG_FNONBROWSABLE=1024,FUNCFLAG_FREPLACEABLE=2048, - FUNCFLAG_FIMMEDIATEBIND=4096 -} FUNCFLAGS; -typedef enum tagVARFLAGS { - VARFLAG_FREADONLY=1,VARFLAG_FSOURCE=2,VARFLAG_FBINDABLE=4,VARFLAG_FREQUESTEDIT=8, - VARFLAG_FDISPLAYBIND=16,VARFLAG_FDEFAULTBIND=32,VARFLAG_FHIDDEN=64,VARFLAG_FRESTRICTED=128, - VARFLAG_FDEFAULTCOLLELEM=256,VARFLAG_FUIDEFAULT=512,VARFLAG_FNONBROWSABLE=1024, - VARFLAG_FREPLACEABLE=2048,VARFLAG_FIMMEDIATEBIND=4096 -} VARFLAGS; -typedef struct tagCLEANLOCALSTORAGE { - IUnknown *pInterface; - PVOID pStorage; - DWORD flags; -} CLEANLOCALSTORAGE; -typedef struct tagCUSTDATAITEM { - GUID guid; - VARIANTARG varValue; -} CUSTDATAITEM,*LPCUSTDATAITEM; -typedef struct tagCUSTDATA { - DWORD cCustData; - LPCUSTDATAITEM prgCustData; -} CUSTDATA,*LPCUSTDATA; - -typedef enum tagDESCKIND { - DESCKIND_NONE=0,DESCKIND_FUNCDESC=DESCKIND_NONE+1, - DESCKIND_VARDESC=DESCKIND_FUNCDESC+1,DESCKIND_TYPECOMP=DESCKIND_VARDESC+1, - DESCKIND_IMPLICITAPPOBJ=DESCKIND_TYPECOMP+1, - DESCKIND_MAX=DESCKIND_IMPLICITAPPOBJ+1 -} DESCKIND; - -typedef union tagBINDPTR { - LPFUNCDESC lpfuncdesc; - LPVARDESC lpvardesc; - LPTYPECOMP lptcomp; -} BINDPTR,*LPBINDPTR; - -#define INTERFACE IDispatch -DECLARE_INTERFACE_(IDispatch,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; - STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IDispatch_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDispatch_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDispatch_Release(p) (p)->lpVtbl->Release(p) -#define IDispatch_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define IDispatch_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define IDispatch_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -#endif - -#define INTERFACE IEnumVARIANT -DECLARE_INTERFACE_(IEnumVARIANT,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Next)(THIS_ ULONG,VARIANT*,ULONG*) PURE; - STDMETHOD(Skip)(THIS_ ULONG) PURE; - STDMETHOD(Reset)(THIS) PURE; - STDMETHOD(Clone)(THIS_ IEnumVARIANT**) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IEnumVARIANT_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumVARIANT_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumVARIANT_Release(p) (p)->lpVtbl->Release(p) -#define IEnumVARIANT_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumVARIANT_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumVARIANT_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumVARIANT_Clone(p,a) (p)->lpVtbl->Clone(p,a) -#endif - -#define INTERFACE ITypeComp -DECLARE_INTERFACE_(ITypeComp,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Bind)(THIS_ LPOLESTR,ULONG,WORD,LPTYPEINFO*,DESCKIND*,LPBINDPTR) PURE; - STDMETHOD(BindType)(THIS_ LPOLESTR,ULONG,LPTYPEINFO*,LPTYPECOMP*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ITypeComp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITypeComp_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITypeComp_Release(p) (p)->lpVtbl->Release(p) -#define ITypeComp_Bind(p,a,b,c,d,e,f) (p)->lpVtbl->Bind(p,a,b,c,d,e,f) -#define ITypeComp_BindType(p,a,b,c,d) (p)->lpVtbl->BindType(p,a,b,c,d) -#endif - -#define INTERFACE ITypeInfo -DECLARE_INTERFACE_(ITypeInfo,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeAttr)(THIS_ LPTYPEATTR*) PURE; - STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE; - STDMETHOD(GetFuncDesc)(THIS_ UINT,LPFUNCDESC*) PURE; - STDMETHOD(GetVarDesc)(THIS_ UINT,LPVARDESC*) PURE; - STDMETHOD(GetNames)(THIS_ MEMBERID,BSTR*,UINT,UINT*) PURE; - STDMETHOD(GetRefTypeOfImplType)(THIS_ UINT,HREFTYPE*) PURE; - STDMETHOD(GetImplTypeFlags)(THIS_ UINT,INT*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ LPOLESTR*,UINT,MEMBERID*) PURE; - STDMETHOD(Invoke)(THIS_ PVOID,MEMBERID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; - STDMETHOD(GetDocumentation)(THIS_ MEMBERID,BSTR*,BSTR*,DWORD*,BSTR*) PURE; - STDMETHOD(GetDllEntry)(THIS_ MEMBERID,INVOKEKIND,BSTR*,BSTR*,WORD*) PURE; - STDMETHOD(GetRefTypeInfo)(THIS_ HREFTYPE,LPTYPEINFO*) PURE; - STDMETHOD(AddressOfMember)(THIS_ MEMBERID,INVOKEKIND,PVOID*) PURE; - STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE; - STDMETHOD(GetMops)(THIS_ MEMBERID,BSTR*) PURE; - STDMETHOD(GetContainingTypeLib)(THIS_ LPTYPELIB*,UINT*) PURE; - STDMETHOD_(void,ReleaseTypeAttr)(THIS_ LPTYPEATTR) PURE; - STDMETHOD_(void,ReleaseFuncDesc)(THIS_ LPFUNCDESC) PURE; - STDMETHOD_(void,ReleaseVarDesc)(THIS_ LPVARDESC) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ITypeInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITypeInfo_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITypeInfo_Release(p) (p)->lpVtbl->Release(p) -#define ITypeInfo_GetTypeAttr(p,a) (p)->lpVtbl->GetTypeAttr(p,a) -#define ITypeInfo_GetTypeComp(p,a) (p)->lpVtbl->GetTypeComp(p,a) -#define ITypeInfo_GetFuncDesc(p,a,b) (p)->lpVtbl->GetFuncDesc(p,a,b) -#define ITypeInfo_GetVarDesc(p,a,b) (p)->lpVtbl->GetVarDesc(p,a,b) -#define ITypeInfo_GetNames(p,a,b,c,d) (p)->lpVtbl->GetNames(p,a,b,c,d) -#define ITypeInfo_GetRefTypeOfImplType(p,a,b) (p)->lpVtbl->GetRefTypeOfImplType(p,a,b) -#define ITypeInfo_GetImplTypeFlags(p,a,b) (p)->lpVtbl->GetImplTypeFlags(p,a,b) -#define ITypeInfo_GetIDsOfNames(p,a,b,c) (p)->lpVtbl->GetIDsOfNames(p,a,b,c) -#define ITypeInfo_Invoke(p,a,b,c,d,e,f,g) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g) -#define ITypeInfo_GetDocumentation(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation(p,a,b,c,d,e) -#define ITypeInfo_GetDllEntry(p,a,b,c,d,e) (p)->lpVtbl->GetDllEntry(p,a,b,c,d,e) -#define ITypeInfo_GetRefTypeInfo(p,a,b) (p)->lpVtbl->GetRefTypeInfo(p,a,b) -#define ITypeInfo_AddressOfMember(p,a,b,c) (p)->lpVtbl->AddressOfMember(p,a,b,c) -#define ITypeInfo_CreateInstance(p,a,b,c) (p)->lpVtbl->CreateInstance(p,a,b,c) -#define ITypeInfo_GetMops(p,a,b) (p)->lpVtbl->GetMops(p,a,b) -#define ITypeInfo_GetContainingTypeLib(p,a,b) (p)->lpVtbl->GetContainingTypeLib(p,a,b) -#define ITypeInfo_ReleaseTypeAttr(p,a) (p)->lpVtbl->ReleaseTypeAttr(p,a) -#define ITypeInfo_ReleaseFuncDesc(p,a) (p)->lpVtbl->ReleaseFuncDesc(p,a) -#define ITypeInfo_ReleaseVarDesc(p,a) (p)->lpVtbl->ReleaseVarDesc(p,a) -#endif - -HRESULT CALLBACK ITypeInfo_RemoteGetTypeAttr_Proxy( - ITypeInfo* This, - LPTYPEATTR* ppTypeAttr, - CLEANLOCALSTORAGE* pDummy); -void __RPC_STUB ITypeInfo_RemoteGetTypeAttr_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_GetTypeAttr_Proxy( - ITypeInfo* This, - TYPEATTR** ppTypeAttr); -HRESULT __RPC_STUB ITypeInfo_GetTypeAttr_Stub( - ITypeInfo* This, - LPTYPEATTR* ppTypeAttr, - CLEANLOCALSTORAGE* pDummy); -HRESULT CALLBACK ITypeInfo_GetTypeComp_Proxy( - ITypeInfo* This, - ITypeComp** ppTComp); -void __RPC_STUB ITypeInfo_GetTypeComp_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_RemoteGetFuncDesc_Proxy( - ITypeInfo* This, - UINT index, - LPFUNCDESC* ppFuncDesc, - CLEANLOCALSTORAGE* pDummy); -void __RPC_STUB ITypeInfo_RemoteGetFuncDesc_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_GetFuncDesc_Proxy( - ITypeInfo* This, - UINT index, - FUNCDESC** ppFuncDesc); -HRESULT __RPC_STUB ITypeInfo_GetFuncDesc_Stub( - ITypeInfo* This, - UINT index, - LPFUNCDESC* ppFuncDesc, - CLEANLOCALSTORAGE* pDummy); -HRESULT CALLBACK ITypeInfo_RemoteGetVarDesc_Proxy( - ITypeInfo* This, - UINT index, - LPVARDESC* ppVarDesc, - CLEANLOCALSTORAGE* pDummy); -void __RPC_STUB ITypeInfo_RemoteGetVarDesc_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_GetVarDesc_Proxy( - ITypeInfo* This, - UINT index, - VARDESC** ppVarDesc); -HRESULT __RPC_STUB ITypeInfo_GetVarDesc_Stub( - ITypeInfo* This, - UINT index, - LPVARDESC* ppVarDesc, - CLEANLOCALSTORAGE* pDummy); -HRESULT CALLBACK ITypeInfo_RemoteGetNames_Proxy( - ITypeInfo* This, - MEMBERID memid, - BSTR* rgBstrNames, - UINT cMaxNames, - UINT* pcNames); -void __RPC_STUB ITypeInfo_RemoteGetNames_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_GetNames_Proxy( - ITypeInfo* This, - MEMBERID memid, - BSTR* rgBstrNames, - UINT cMaxNames, - UINT* pcNames); -HRESULT __RPC_STUB ITypeInfo_GetNames_Stub( - ITypeInfo* This, - MEMBERID memid, - BSTR* rgBstrNames, - UINT cMaxNames, - UINT* pcNames); -HRESULT CALLBACK ITypeInfo_GetRefTypeOfImplType_Proxy( - ITypeInfo* This, - UINT index, - HREFTYPE* pRefType); -void __RPC_STUB ITypeInfo_GetRefTypeOfImplType_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_GetImplTypeFlags_Proxy( - ITypeInfo* This, - UINT index, - INT* pImplTypeFlags); -void __RPC_STUB ITypeInfo_GetImplTypeFlags_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_LocalGetIDsOfNames_Proxy( - ITypeInfo* This); -void __RPC_STUB ITypeInfo_LocalGetIDsOfNames_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_GetIDsOfNames_Proxy( - ITypeInfo* This, - LPOLESTR* rgszNames, - UINT cNames, - MEMBERID* pMemId); -HRESULT __RPC_STUB ITypeInfo_GetIDsOfNames_Stub( - ITypeInfo* This); -HRESULT CALLBACK ITypeInfo_LocalInvoke_Proxy( - ITypeInfo* This); -void __RPC_STUB ITypeInfo_LocalInvoke_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_Invoke_Proxy( - ITypeInfo* This, - PVOID pvInstance, - MEMBERID memid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); -HRESULT __RPC_STUB ITypeInfo_Invoke_Stub( - ITypeInfo* This); -HRESULT CALLBACK ITypeInfo_RemoteGetDocumentation_Proxy( - ITypeInfo* This, - MEMBERID memid, - DWORD refPtrFlags, - BSTR* pBstrName, - BSTR* pBstrDocString, - DWORD* pdwHelpContext, - BSTR* pBstrHelpFile); -void __RPC_STUB ITypeInfo_RemoteGetDocumentation_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_GetDocumentation_Proxy( - ITypeInfo* This, - MEMBERID memid, - BSTR* pBstrName, - BSTR* pBstrDocString, - DWORD* pdwHelpContext, - BSTR* pBstrHelpFile); -HRESULT __RPC_STUB ITypeInfo_GetDocumentation_Stub( - ITypeInfo* This, - MEMBERID memid, - DWORD refPtrFlags, - BSTR* pBstrName, - BSTR* pBstrDocString, - DWORD* pdwHelpContext, - BSTR* pBstrHelpFile); -HRESULT CALLBACK ITypeInfo_RemoteGetDllEntry_Proxy( - ITypeInfo* This, - MEMBERID memid, - INVOKEKIND invKind, - DWORD refPtrFlags, - BSTR* pBstrDllName, - BSTR* pBstrName, - WORD* pwOrdinal); -void __RPC_STUB ITypeInfo_RemoteGetDllEntry_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_GetDllEntry_Proxy( - ITypeInfo* This, - MEMBERID memid, - INVOKEKIND invKind, - BSTR* pBstrDllName, - BSTR* pBstrName, - WORD* pwOrdinal); -HRESULT __RPC_STUB ITypeInfo_GetDllEntry_Stub( - ITypeInfo* This, - MEMBERID memid, - INVOKEKIND invKind, - DWORD refPtrFlags, - BSTR* pBstrDllName, - BSTR* pBstrName, - WORD* pwOrdinal); -HRESULT CALLBACK ITypeInfo_GetRefTypeInfo_Proxy( - ITypeInfo* This, - HREFTYPE hRefType, - ITypeInfo** ppTInfo); -void __RPC_STUB ITypeInfo_GetRefTypeInfo_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_LocalAddressOfMember_Proxy( - ITypeInfo* This); -void __RPC_STUB ITypeInfo_LocalAddressOfMember_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_AddressOfMember_Proxy( - ITypeInfo* This, - MEMBERID memid, - INVOKEKIND invKind, - PVOID* ppv); -HRESULT __RPC_STUB ITypeInfo_AddressOfMember_Stub( - ITypeInfo* This); -HRESULT CALLBACK ITypeInfo_RemoteCreateInstance_Proxy( - ITypeInfo* This, - REFIID riid, - IUnknown** ppvObj); -void __RPC_STUB ITypeInfo_RemoteCreateInstance_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_CreateInstance_Proxy( - ITypeInfo* This, - IUnknown* pUnkOuter, - REFIID riid, - PVOID* ppvObj); -HRESULT __RPC_STUB ITypeInfo_CreateInstance_Stub( - ITypeInfo* This, - REFIID riid, - IUnknown** ppvObj); -HRESULT CALLBACK ITypeInfo_GetMops_Proxy( - ITypeInfo* This, - MEMBERID memid, - BSTR* pBstrMops); -void __RPC_STUB ITypeInfo_GetMops_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_RemoteGetContainingTypeLib_Proxy( - ITypeInfo* This, - ITypeLib** ppTLib, - UINT* pIndex); -void __RPC_STUB ITypeInfo_RemoteGetContainingTypeLib_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeInfo_GetContainingTypeLib_Proxy( - ITypeInfo* This, - ITypeLib** ppTLib, - UINT* pIndex); -HRESULT __RPC_STUB ITypeInfo_GetContainingTypeLib_Stub( - ITypeInfo* This, - ITypeLib** ppTLib, - UINT* pIndex); -HRESULT CALLBACK ITypeInfo_LocalReleaseTypeAttr_Proxy( - ITypeInfo* This); -void __RPC_STUB ITypeInfo_LocalReleaseTypeAttr_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -void CALLBACK ITypeInfo_ReleaseTypeAttr_Proxy( - ITypeInfo* This, - TYPEATTR* pTypeAttr); -HRESULT __RPC_STUB ITypeInfo_ReleaseTypeAttr_Stub( - ITypeInfo* This); -HRESULT CALLBACK ITypeInfo_LocalReleaseFuncDesc_Proxy( - ITypeInfo* This); -void __RPC_STUB ITypeInfo_LocalReleaseFuncDesc_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -void CALLBACK ITypeInfo_ReleaseFuncDesc_Proxy( - ITypeInfo* This, - FUNCDESC* pFuncDesc); -HRESULT __RPC_STUB ITypeInfo_ReleaseFuncDesc_Stub( - ITypeInfo* This); -HRESULT CALLBACK ITypeInfo_LocalReleaseVarDesc_Proxy( - ITypeInfo* This); -void __RPC_STUB ITypeInfo_LocalReleaseVarDesc_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -void CALLBACK ITypeInfo_ReleaseVarDesc_Proxy( - ITypeInfo* This, - VARDESC* pVarDesc); -HRESULT __RPC_STUB ITypeInfo_ReleaseVarDesc_Stub( - ITypeInfo* This); - -#define INTERFACE ITypeInfo2 -DECLARE_INTERFACE_(ITypeInfo2,ITypeInfo) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeAttr)(THIS_ LPTYPEATTR*) PURE; - STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE; - STDMETHOD(GetFuncDesc)(THIS_ UINT,LPFUNCDESC*) PURE; - STDMETHOD(GetVarDesc)(THIS_ UINT,LPVARDESC*) PURE; - STDMETHOD(GetNames)(THIS_ MEMBERID,BSTR*,UINT,UINT*) PURE; - STDMETHOD(GetRefTypeOfImplType)(THIS_ UINT,HREFTYPE*) PURE; - STDMETHOD(GetImplTypeFlags)(THIS_ UINT,INT*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ LPOLESTR*,UINT,MEMBERID*) PURE; - STDMETHOD(Invoke)(THIS_ PVOID,MEMBERID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; - STDMETHOD(GetDocumentation)(THIS_ MEMBERID,BSTR*,BSTR*,DWORD*,BSTR*) PURE; - STDMETHOD(GetDllEntry)(THIS_ MEMBERID,INVOKEKIND,BSTR*,BSTR*,WORD*) PURE; - STDMETHOD(GetRefTypeInfo)(THIS_ HREFTYPE,LPTYPEINFO*) PURE; - STDMETHOD(AddressOfMember)(THIS_ MEMBERID,INVOKEKIND,PVOID*) PURE; - STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE; - STDMETHOD(GetMops)(THIS_ MEMBERID,BSTR*) PURE; - STDMETHOD(GetContainingTypeLib)(THIS_ LPTYPELIB*,UINT*) PURE; - STDMETHOD_(void,ReleaseTypeAttr)(THIS_ LPTYPEATTR) PURE; - STDMETHOD_(void,ReleaseFuncDesc)(THIS_ LPFUNCDESC) PURE; - STDMETHOD_(void,ReleaseVarDesc)(THIS_ LPVARDESC) PURE; - STDMETHOD(GetTypeKind)(THIS_ TYPEKIND*) PURE; - STDMETHOD(GetTypeFlags)(THIS_ ULONG*) PURE; - STDMETHOD(GetFuncIndexOfMemId)(THIS_ MEMBERID,INVOKEKIND,UINT*) PURE; - STDMETHOD(GetVarIndexOfMemId)(THIS_ MEMBERID,UINT*) PURE; - STDMETHOD(GetCustData)(THIS_ REFGUID,VARIANT*) PURE; - STDMETHOD(GetFuncCustData)(THIS_ UINT,REFGUID,VARIANT*) PURE; - STDMETHOD(GetParamCustData)(THIS_ UINT,UINT,REFGUID,VARIANT*) PURE; - STDMETHOD(GetVarCustData)(THIS_ UINT,REFGUID,VARIANT*) PURE; - STDMETHOD(GetImplTypeCustData)(THIS_ UINT,REFGUID,VARIANT*) PURE; - STDMETHOD(GetDocumentation2)(THIS_ MEMBERID,LCID,BSTR*,DWORD*,BSTR*) PURE; - STDMETHOD(GetAllCustData)(THIS_ CUSTDATA*) PURE; - STDMETHOD(GetAllFuncCustData)(THIS_ UINT,CUSTDATA*) PURE; - STDMETHOD(GetAllParamCustData)(THIS_ UINT,UINT,CUSTDATA*) PURE; - STDMETHOD(GetAllVarCustData)(THIS_ UINT,CUSTDATA*) PURE; - STDMETHOD(GetAllImplTypeCustData)(THIS_ UINT,CUSTDATA*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ITypeInfo2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITypeInfo2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITypeInfo2_Release(p) (p)->lpVtbl->Release(p) -#define ITypeInfo2_GetTypeAttr(p,a) (p)->lpVtbl->GetTypeAttr(p,a) -#define ITypeInfo2_GetTypeComp(p,a) (p)->lpVtbl->GetTypeComp(p,a) -#define ITypeInfo2_GetFuncDesc(p,a,b) (p)->lpVtbl->GetFuncDesc(p,a,b) -#define ITypeInfo2_GetVarDesc(p,a,b) (p)->lpVtbl->GetVarDesc(p,a,b) -#define ITypeInfo2_GetNames(p,a,b,c,d) (p)->lpVtbl->GetNames(p,a,b,c,d) -#define ITypeInfo2_GetRefTypeOfImplType(p,a,b) (p)->lpVtbl->GetRefTypeOfImplType(p,a,b) -#define ITypeInfo2_GetImplTypeFlags(p,a,b) (p)->lpVtbl->GetImplTypeFlags(p,a,b) -#define ITypeInfo2_GetIDsOfNames(p,a,b,c) (p)->lpVtbl->GetIDsOfNames(p,a,b,c) -#define ITypeInfo2_Invoke(p,a,b,c,d,e,f,g) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g) -#define ITypeInfo2_GetDocumentation(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation(p,a,b,c,d,e) -#define ITypeInfo2_GetDllEntry(p,a,b,c,d,e) (p)->lpVtbl->GetDllEntry(p,a,b,c,d,e) -#define ITypeInfo2_GetRefTypeInfo(p,a,b) (p)->lpVtbl->GetRefTypeInfo(p,a,b) -#define ITypeInfo2_AddressOfMember(p,a,b,c) (p)->lpVtbl->AddressOfMember(p,a,b,c) -#define ITypeInfo2_CreateInstance(p,a,b,c) (p)->lpVtbl->CreateInstance(p,a,b,c) -#define ITypeInfo2_GetMops(p,a,b) (p)->lpVtbl->GetMops(p,a,b) -#define ITypeInfo2_GetContainingTypeLib(p,a,b) (p)->lpVtbl->GetContainingTypeLib(p,a,b) -#define ITypeInfo2_ReleaseTypeAttr(p,a) (p)->lpVtbl->ReleaseTypeAttr(p,a) -#define ITypeInfo2_ReleaseFuncDesc(p,a) (p)->lpVtbl->ReleaseFuncDesc(p,a) -#define ITypeInfo2_ReleaseVarDesc(p,a) (p)->lpVtbl->ReleaseVarDesc(p,a) -#define ITypeInfo2_GetTypeKind(p,a) (p)->lpVtbl->GetTypeKind(p,a) -#define ITypeInfo2_GetTypeFlags(p,a) (p)->lpVtbl->GetTypeFlags(p,a) -#define ITypeInfo2_GetFuncIndexOfMemId(p,a,b,c) (p)->lpVtbl->GetFuncIndexOfMemId(p,a,b,c) -#define ITypeInfo2_GetVarIndexOfMemId(p,a,b) (p)->lpVtbl->GetVarIndexOfMemId(p,a,b) -#define ITypeInfo2_GetCustData(p,a,b) (p)->lpVtbl->GetCustData(p,a,b) -#define ITypeInfo2_GetFuncCustData(p,a,b,c) (p)->lpVtbl->GetFuncCustData(p,a,b,c) -#define ITypeInfo2_GetParamCustData(p,a,b,c,d) (p)->lpVtbl->GetParamCustData(p,a,b,c,d) -#define ITypeInfo2_GetVarCustData(p,a,b,c) (p)->lpVtbl->GetVarCustData(p,a,b,c) -#define ITypeInfo2_GetImplTypeCustData(p,a,b,c) (p)->lpVtbl->GetImplTypeCustData(p,a,b,c) -#define ITypeInfo2_GetDocumentation2(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation2(p,a,b,c,d,e) -#define ITypeInfo2_GetAllCustData(p,a) (p)->lpVtbl->GetAllCustData(p,a) -#define ITypeInfo2_GetAllFuncCustData(p,a,b) (p)->lpVtbl->GetAllFuncCustData(p,a,b) -#define ITypeInfo2_GetAllParamCustData(p,a,b,c) (p)->lpVtbl->GetAllParamCustData(p,a,b,c) -#define ITypeInfo2_GetAllVarCustData(p,a,b) (p)->lpVtbl->GetAllVarCustData(p,a,b) -#define ITypeInfo2_GetAllImplTypeCustData(p,a,b) (p)->lpVtbl->GetAllImplTypeCustData(p,a,b) -#endif - -#define INTERFACE ITypeLib -DECLARE_INTERFACE_(ITypeLib,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(UINT,GetTypeInfoCount)(THIS) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,ITypeInfo**) PURE; - STDMETHOD(GetTypeInfoType)(THIS_ UINT,TYPEKIND*) PURE; - STDMETHOD(GetTypeInfoOfGuid)(THIS_ REFGUID,ITypeInfo**) PURE; - STDMETHOD(GetLibAttr)(THIS_ TLIBATTR**) PURE; - STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE; - STDMETHOD(GetDocumentation)(THIS_ INT,BSTR*,BSTR*,DWORD*,BSTR*) PURE; - STDMETHOD(IsName)(THIS_ LPOLESTR,ULONG,BOOL*) PURE; - STDMETHOD(FindName)(THIS_ LPOLESTR,ULONG,ITypeInfo**,MEMBERID*,USHORT*) PURE; - STDMETHOD_(void,ReleaseTLibAttr)(THIS_ TLIBATTR*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ITypeLib_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITypeLib_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITypeLib_Release(p) (p)->lpVtbl->Release(p) -#define ITypeLib_GetTypeInfoCount(p) (p)->lpVtbl->GetTypeInfoCount(p) -#define ITypeLib_GetTypeInfo(p,a,b) (p)->lpVtbl->GetTypeInfo(p,a,b) -#define ITypeLib_GetTypeInfoType(p,a,b) (p)->lpVtbl->GetTypeInfoType(p,a,b) -#define ITypeLib_GetTypeInfoOfGuid(p,a,b) (p)->lpVtbl->GetTypeInfoOfGuid(p,a,b) -#define ITypeLib_GetLibAttr(p,a) (p)->lpVtbl->GetLibAttr(p,a) -#define ITypeLib_GetTypeComp(p,a) (p)->lpVtbl->GetTypeComp(p,a) -#define ITypeLib_GetDocumentation(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation(p,a,b,c,d,e) -#define ITypeLib_IsName(p,a,b,c) (p)->lpVtbl->IsName(p,a,b,c) -#define ITypeLib_FindName(p,a,b,c,d,e) (p)->lpVtbl->FindName(p,a,b,c,d,e) -#define ITypeLib_ReleaseTLibAttr(p,a) (p)->lpVtbl->ReleaseTLibAttr(p,a) -#endif - -HRESULT CALLBACK ITypeLib_RemoteGetTypeInfoCount_Proxy( - ITypeLib* This, - UINT* pcTInfo); -void __RPC_STUB ITypeLib_RemoteGetTypeInfoCount_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -UINT CALLBACK ITypeLib_GetTypeInfoCount_Proxy( - ITypeLib* This); -HRESULT __RPC_STUB ITypeLib_GetTypeInfoCount_Stub( - ITypeLib* This, - UINT* pcTInfo); -HRESULT CALLBACK ITypeLib_GetTypeInfo_Proxy( - ITypeLib* This, - UINT index, - ITypeInfo** ppTInfo); -void __RPC_STUB ITypeLib_GetTypeInfo_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeLib_GetTypeInfoType_Proxy( - ITypeLib* This, - UINT index, - TYPEKIND* pTKind); -void __RPC_STUB ITypeLib_GetTypeInfoType_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeLib_GetTypeInfoOfGuid_Proxy( - ITypeLib* This, - REFGUID guid, - ITypeInfo** ppTinfo); -void __RPC_STUB ITypeLib_GetTypeInfoOfGuid_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeLib_RemoteGetLibAttr_Proxy( - ITypeLib* This, - LPTLIBATTR* ppTLibAttr, - CLEANLOCALSTORAGE* pDummy); -void __RPC_STUB ITypeLib_RemoteGetLibAttr_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeLib_GetLibAttr_Proxy( - ITypeLib* This, - TLIBATTR** ppTLibAttr); -HRESULT __RPC_STUB ITypeLib_GetLibAttr_Stub( - ITypeLib* This, - LPTLIBATTR* ppTLibAttr, - CLEANLOCALSTORAGE* pDummy); -HRESULT CALLBACK ITypeLib_GetTypeComp_Proxy( - ITypeLib* This, - ITypeComp** ppTComp); -void __RPC_STUB ITypeLib_GetTypeComp_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeLib_RemoteGetDocumentation_Proxy( - ITypeLib* This, - INT index, - DWORD refPtrFlags, - BSTR* pBstrName, - BSTR* pBstrDocString, - DWORD* pdwHelpContext, - BSTR* pBstrHelpFile); -void __RPC_STUB ITypeLib_RemoteGetDocumentation_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeLib_GetDocumentation_Proxy( - ITypeLib* This, - INT index, - BSTR* pBstrName, - BSTR* pBstrDocString, - DWORD* pdwHelpContext, - BSTR* pBstrHelpFile); -HRESULT __RPC_STUB ITypeLib_GetDocumentation_Stub( - ITypeLib* This, - INT index, - DWORD refPtrFlags, - BSTR* pBstrName, - BSTR* pBstrDocString, - DWORD* pdwHelpContext, - BSTR* pBstrHelpFile); -HRESULT CALLBACK ITypeLib_RemoteIsName_Proxy( - ITypeLib* This, - LPOLESTR szNameBuf, - ULONG lHashVal, - BOOL* pfName, - BSTR* pBstrLibName); -void __RPC_STUB ITypeLib_RemoteIsName_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeLib_IsName_Proxy( - ITypeLib* This, - LPOLESTR szNameBuf, - ULONG lHashVal, - BOOL* pfName); -HRESULT __RPC_STUB ITypeLib_IsName_Stub( - ITypeLib* This, - LPOLESTR szNameBuf, - ULONG lHashVal, - BOOL* pfName, - BSTR* pBstrLibName); -HRESULT CALLBACK ITypeLib_RemoteFindName_Proxy( - ITypeLib* This, - LPOLESTR szNameBuf, - ULONG lHashVal, - ITypeInfo** ppTInfo, - MEMBERID* rgMemId, - USHORT* pcFound, - BSTR* pBstrLibName); -void __RPC_STUB ITypeLib_RemoteFindName_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITypeLib_FindName_Proxy( - ITypeLib* This, - LPOLESTR szNameBuf, - ULONG lHashVal, - ITypeInfo** ppTInfo, - MEMBERID* rgMemId, - USHORT* pcFound); -HRESULT __RPC_STUB ITypeLib_FindName_Stub( - ITypeLib* This, - LPOLESTR szNameBuf, - ULONG lHashVal, - ITypeInfo** ppTInfo, - MEMBERID* rgMemId, - USHORT* pcFound, - BSTR* pBstrLibName); -HRESULT CALLBACK ITypeLib_LocalReleaseTLibAttr_Proxy( - ITypeLib* This); -void __RPC_STUB ITypeLib_LocalReleaseTLibAttr_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -void CALLBACK ITypeLib_ReleaseTLibAttr_Proxy( - ITypeLib* This, - TLIBATTR* pTLibAttr); -HRESULT __RPC_STUB ITypeLib_ReleaseTLibAttr_Stub( - ITypeLib* This); - -#define INTERFACE ITypeLib2 -DECLARE_INTERFACE_(ITypeLib2,ITypeLib) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(UINT,GetTypeInfoCount)(THIS) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,ITypeInfo**) PURE; - STDMETHOD(GetTypeInfoType)(THIS_ UINT,TYPEKIND*) PURE; - STDMETHOD(GetTypeInfoOfGuid)(THIS_ REFGUID,ITypeInfo**) PURE; - STDMETHOD(GetLibAttr)(THIS_ TLIBATTR**) PURE; - STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE; - STDMETHOD(GetDocumentation)(THIS_ INT,BSTR*,BSTR*,DWORD*,BSTR*) PURE; - STDMETHOD(IsName)(THIS_ LPOLESTR,ULONG,BOOL*) PURE; - STDMETHOD(FindName)(THIS_ LPOLESTR,ULONG,ITypeInfo**,MEMBERID*,USHORT*) PURE; - STDMETHOD_(void,ReleaseTLibAttr)(THIS_ TLIBATTR*) PURE; - STDMETHOD(GetCustData)(THIS_ REFGUID,VARIANT*) PURE; - STDMETHOD(GetLibStatistics)(THIS_ ULONG*,ULONG*) PURE; - STDMETHOD(GetDocumentation2)(THIS_ INT,LCID,BSTR*,DWORD*,BSTR*) PURE; - STDMETHOD(GetAllCustData)(THIS_ CUSTDATA*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ITypeLib2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITypeLib2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITypeLib2_Release(p) (p)->lpVtbl->Release(p) -#define ITypeLib2_GetTypeInfoCount(p) (p)->lpVtbl->GetTypeInfoCount(p) -#define ITypeLib2_GetTypeInfo(p,a,b) (p)->lpVtbl->GetTypeInfo(p,a,b) -#define ITypeLib2_GetTypeInfoType(p,a,b) (p)->lpVtbl->GetTypeInfoType(p,a,b) -#define ITypeLib2_GetTypeInfoOfGuid(p,a,b) (p)->lpVtbl->GetTypeInfoOfGuid(p,a,b) -#define ITypeLib2_GetLibAttr(p,a) (p)->lpVtbl->GetLibAttr(p,a) -#define ITypeLib2_GetTypeComp(p,a) (p)->lpVtbl->GetTypeComp(p,a) -#define ITypeLib2_GetDocumentation(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation(p,a,b,c,d,e) -#define ITypeLib2_IsName(p,a,b,c) (p)->lpVtbl->IsName(p,a,b,c) -#define ITypeLib2_FindName(p,a,b,c,d,e) (p)->lpVtbl->FindName(p,a,b,c,d,e) -#define ITypeLib2_ReleaseTLibAttr(p,a) (p)->lpVtbl->ReleaseTLibAttr(p,a) -#define ITypeLib2_GetCustData(p,a,b) (p)->lpVtbl->GetCustData(p,a,b) -#define ITypeLib2_GetLibStatistics(p,a,b) (p)->lpVtbl->GetLibStatistics(p,a,b) -#define ITypeLib2_GetDocumentation2(p,a,b,c,d,e) (p)->lpVtbl->GetDocumentation2(p,a,b,c,d,e) -#define ITypeLib2_GetAllCustData(p,a) (p)->lpVtbl->GetAllCustData(p,a) -#endif - -#define INTERFACE ITypeFactory -DECLARE_INTERFACE_(ITypeFactory,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetAllCustData)(THIS_ CUSTDATA*) PURE; - STDMETHOD(CreateFromTypeInfo)(THIS_ LPTYPEINFO,REFIID,LPUNKNOWN*); -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ITypeFactory_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITypeFactory_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITypeFactory_Release(p) (p)->lpVtbl->Release(p) -#define ITypeFactory_CreateFromTypeInfo(p,a,b,c) (p)->lpVtbl->CreateFromTypeInfo(p,a,b,c) -#endif - -#define INTERFACE ICreateTypeInfo -DECLARE_INTERFACE_(ICreateTypeInfo,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SetGuid)(THIS_ REFGUID) PURE; - STDMETHOD(SetTypeFlags)(THIS_ UINT) PURE; - STDMETHOD(SetDocString)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetHelpContext)(THIS_ DWORD) PURE; - STDMETHOD(SetVersion)(THIS_ WORD,WORD) PURE; - STDMETHOD(AddRefTypeInfo)(THIS_ ITypeInfo*,HREFTYPE*) PURE; - STDMETHOD(AddFuncDesc)(THIS_ UINT,FUNCDESC*) PURE; - STDMETHOD(AddImplType)(THIS_ UINT,HREFTYPE) PURE; - STDMETHOD(SetImplTypeFlags)(THIS_ UINT,INT) PURE; - STDMETHOD(SetAlignment)(THIS_ WORD) PURE; - STDMETHOD(SetSchema)(THIS_ LPOLESTR) PURE; - STDMETHOD(AddVarDesc)(THIS_ UINT,VARDESC*) PURE; - STDMETHOD(SetFuncAndParamNames)(THIS_ UINT,LPOLESTR*,UINT) PURE; - STDMETHOD(SetVarName)(THIS_ UINT,LPOLESTR) PURE; - STDMETHOD(SetTypeDescAlias)(THIS_ TYPEDESC*) PURE; - STDMETHOD(DefineFuncAsDllEntry)(THIS_ UINT,LPOLESTR,LPOLESTR) PURE; - STDMETHOD(SetFuncDocString)(THIS_ UINT,LPOLESTR) PURE; - STDMETHOD(SetVarDocString)(THIS_ UINT,LPOLESTR) PURE; - STDMETHOD(SetFuncHelpContext)(THIS_ UINT,DWORD) PURE; - STDMETHOD(SetVarHelpContext)(THIS_ UINT,DWORD) PURE; - STDMETHOD(SetMops)(THIS_ UINT,BSTR) PURE; - STDMETHOD(SetTypeIdldesc)(THIS_ IDLDESC*) PURE; - STDMETHOD(LayOut)(THIS) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ICreateTypeInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICreateTypeInfo_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICreateTypeInfo_Release(p) (p)->lpVtbl->Release(p) -#define ICreateTypeInfo_SetGuid(p,a) (p)->lpVtbl->SetGuid(p,a) -#define ICreateTypeInfo_SetTypeFlags(p,a) (p)->lpVtbl->SetTypeFlags(p,a) -#define ICreateTypeInfo_SetDocString(p,a) (p)->lpVtbl->SetDocString(p,a) -#define ICreateTypeInfo_SetHelpContext(p,a) (p)->lpVtbl->SetHelpContext(p,a) -#define ICreateTypeInfo_SetVersion(p,a,b) (p)->lpVtbl->SetVersion(p,a,b) -#define ICreateTypeInfo_AddRefTypeInfo(p,a,b) (p)->lpVtbl->AddRefTypeInfo(p,a,b) -#define ICreateTypeInfo_AddFuncDesc(p,a,b) (p)->lpVtbl->AddFuncDesc(p,a,b) -#define ICreateTypeInfo_AddImplType(p,a,b) (p)->lpVtbl->AddImplType(p,a,b) -#define ICreateTypeInfo_SetImplTypeFlags(p,a,b) (p)->lpVtbl->SetImplTypeFlags(p,a,b) -#define ICreateTypeInfo_SetAlignment(p,a) (p)->lpVtbl->SetAlignment(p,a) -#define ICreateTypeInfo_SetSchema(p,a) (p)->lpVtbl->SetSchema(p,a) -#define ICreateTypeInfo_AddVarDesc(p,a,b) (p)->lpVtbl->AddVarDesc(p,a,b) -#define ICreateTypeInfo_SetFuncAndParamNames(p,a,b,c) (p)->lpVtbl->SetFuncAndParamNames(p,a,b,c) -#define ICreateTypeInfo_SetVarName(p,a,b) (p)->lpVtbl->SetVarName(p,a,b) -#define ICreateTypeInfo_SetTypeDescAlias(p,a) (p)->lpVtbl->SetTypeDescAlias(p,a) -#define ICreateTypeInfo_DefineFuncAsDllEntry(p,a,b,c) (p)->lpVtbl->DefineFuncAsDllEntry(p,a,b,c) -#define ICreateTypeInfo_SetFuncDocString(p,a,b) (p)->lpVtbl->SetFuncDocString(p,a,b) -#define ICreateTypeInfo_SetVarDocString(p,a,b) (p)->lpVtbl->SetVarDocString(p,a,b) -#define ICreateTypeInfo_SetFuncHelpContext(p,a,b) (p)->lpVtbl->SetFuncHelpContext(p,a,b) -#define ICreateTypeInfo_SetVarHelpContext(p,a,b) (p)->lpVtbl->SetVarHelpContext(p,a,b) -#define ICreateTypeInfo_SetMops(p,a,b) (p)->lpVtbl->SetMops(p,a,b) -#define ICreateTypeInfo_SetTypeIdldesc(p,a) (p)->lpVtbl->SetTypeIdldesc(p,a) -#define ICreateTypeInfo_LayOut(p) (p)->lpVtbl->LayOut(p) -#endif - -#define INTERFACE ICreateTypeInfo2 -DECLARE_INTERFACE_(ICreateTypeInfo2,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SetGuid)(THIS_ REFGUID) PURE; - STDMETHOD(SetTypeFlags)(THIS_ UINT) PURE; - STDMETHOD(SetDocString)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetHelpContext)(THIS_ DWORD) PURE; - STDMETHOD(SetVersion)(THIS_ WORD,WORD) PURE; - STDMETHOD(AddRefTypeInfo)(THIS_ ITypeInfo*,HREFTYPE*) PURE; - STDMETHOD(AddFuncDesc)(THIS_ UINT,FUNCDESC*) PURE; - STDMETHOD(AddImplType)(THIS_ UINT,HREFTYPE) PURE; - STDMETHOD(SetImplTypeFlags)(THIS_ UINT,INT) PURE; - STDMETHOD(SetAlignment)(THIS_ WORD) PURE; - STDMETHOD(SetSchema)(THIS_ LPOLESTR) PURE; - STDMETHOD(AddVarDesc)(THIS_ UINT,VARDESC*) PURE; - STDMETHOD(SetFuncAndParamNames)(THIS_ UINT,LPOLESTR*,UINT) PURE; - STDMETHOD(SetVarName)(THIS_ UINT,LPOLESTR) PURE; - STDMETHOD(SetTypeDescAlias)(THIS_ TYPEDESC*) PURE; - STDMETHOD(DefineFuncAsDllEntry)(THIS_ UINT,LPOLESTR,LPOLESTR) PURE; - STDMETHOD(SetFuncDocString)(THIS_ UINT,LPOLESTR) PURE; - STDMETHOD(SetVarDocString)(THIS_ UINT,LPOLESTR) PURE; - STDMETHOD(SetFuncHelpContext)(THIS_ UINT,DWORD) PURE; - STDMETHOD(SetVarHelpContext)(THIS_ UINT,DWORD) PURE; - STDMETHOD(SetMops)(THIS_ UINT,BSTR) PURE; - STDMETHOD(SetTypeIdldesc)(THIS_ IDLDESC*) PURE; - STDMETHOD(LayOut)(THIS) PURE; - STDMETHOD(DeleteFuncDesc)(THIS_ UINT) PURE; - STDMETHOD(DeleteFuncDescByMemId)(THIS_ MEMBERID, INVOKEKIND) PURE; - STDMETHOD(DeleteVarDesc)(THIS_ UINT) PURE; - STDMETHOD(DeleteVarDescByMemId)(THIS_ MEMBERID) PURE; - STDMETHOD(DeleteImplType)(THIS_ UINT) PURE; - STDMETHOD(SetCustData)(THIS_ REFGUID, VARIANT*) PURE; - STDMETHOD(SetFuncCustData)(THIS_ UINT, REFGUID, VARIANT*) PURE; - STDMETHOD(SetParamCustData)(THIS_ UINT, UINT, REFGUID, VARIANT*) PURE; - STDMETHOD(SetVarCustData)(THIS_ UINT, REFGUID, VARIANT*) PURE; - STDMETHOD(SetImplTypeCustData)(THIS_ UINT, REFGUID, VARIANT*) PURE; - STDMETHOD(SetHelpStringContext)(THIS_ ULONG) PURE; - STDMETHOD(SetFuncHelpStringContext)(THIS_ UINT, ULONG) PURE; - STDMETHOD(SetVarHelpStringContext)(THIS_ UINT, ULONG) PURE; - STDMETHOD(Invalidate)(THIS) PURE; - STDMETHOD(SetName)(THIS_ LPOLESTR) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ICreateTypeInfo2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICreateTypeInfo2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICreateTypeInfo2_Release(p) (p)->lpVtbl->Release(p) -#define ICreateTypeInfo2_SetGuid(p,a) (p)->lpVtbl->SetGuid(p,a) -#define ICreateTypeInfo2_SetTypeFlags(p,a) (p)->lpVtbl->SetTypeFlags(p,a) -#define ICreateTypeInfo2_SetDocString(p,a) (p)->lpVtbl->SetDocString(p,a) -#define ICreateTypeInfo2_SetHelpContext(p,a) (p)->lpVtbl->SetHelpContext(p,a) -#define ICreateTypeInfo2_SetVersion(p,a,b) (p)->lpVtbl->SetVersion(p,a,b) -#define ICreateTypeInfo2_AddRefTypeInfo(p,a,b) (p)->lpVtbl->AddRefTypeInfo(p,a,b) -#define ICreateTypeInfo2_AddFuncDesc(p,a,b) (p)->lpVtbl->AddFuncDesc(p,a,b) -#define ICreateTypeInfo2_AddImplType(p,a,b) (p)->lpVtbl->AddImplType(p,a,b) -#define ICreateTypeInfo2_SetImplTypeFlags(p,a,b) (p)->lpVtbl->SetImplTypeFlags(p,a,b) -#define ICreateTypeInfo2_SetAlignment(p,a) (p)->lpVtbl->SetAlignment(p,a) -#define ICreateTypeInfo2_SetSchema(p,a) (p)->lpVtbl->SetSchema(p,a) -#define ICreateTypeInfo2_AddVarDesc(p,a,b) (p)->lpVtbl->AddVarDesc(p,a,b) -#define ICreateTypeInfo2_SetFuncAndParamNames(p,a,b,c) (p)->lpVtbl->SetFuncAndParamNames(p,a,b,c) -#define ICreateTypeInfo2_SetVarName(p,a,b) (p)->lpVtbl->SetVarName(p,a,b) -#define ICreateTypeInfo2_SetTypeDescAlias(p,a) (p)->lpVtbl->SetTypeDescAlias(p,a) -#define ICreateTypeInfo2_DefineFuncAsDllEntry(p,a,b,c) (p)->lpVtbl->DefineFuncAsDllEntry(p,a,b,c) -#define ICreateTypeInfo2_SetFuncDocString(p,a,b) (p)->lpVtbl->SetFuncDocString(p,a,b) -#define ICreateTypeInfo2_SetVarDocString(p,a,b) (p)->lpVtbl->SetVarDocString(p,a,b) -#define ICreateTypeInfo2_SetFuncHelpContext(p,a,b) (p)->lpVtbl->SetFuncHelpContext(p,a,b) -#define ICreateTypeInfo2_SetVarHelpContext(p,a,b) (p)->lpVtbl->SetVarHelpContext(p,a,b) -#define ICreateTypeInfo2_SetMops(p,a,b) (p)->lpVtbl->SetMops(p,a,b) -#define ICreateTypeInfo2_SetTypeIdldesc(p,a) (p)->lpVtbl->SetTypeIdldesc(p,a) -#define ICreateTypeInfo2_LayOut(p) (p)->lpVtbl->LayOut(p) -#define ICreateTypeInfo2_DeleteFuncDesc(p,a) (p)->lpVtbl->DeleteFuncDesc(p,a) -#define ICreateTypeInfo2_DeleteFuncDescByMemId(p,a,b) (p)->lpVtbl->DeleteFuncDescByMemId(p,a,b) -#define ICreateTypeInfo2_DeleteVarDesc(p,a) (p)->lpVtbl->DeleteVarDesc(p,a) -#define ICreateTypeInfo2_DeleteVarDescByMemId(p,a) (p)->lpVtbl->DeleteVarDescByMemId(p,a) -#define ICreateTypeInfo2_DeleteImplType(p,a) (p)->lpVtbl->DeleteImplType(p,a) -#define ICreateTypeInfo2_SetCustData(p,a,b) (p)->lpVtbl->SetCustData(p,a,b) -#define ICreateTypeInfo2_SetFuncCustData(p,a,b,c) (p)->lpVtbl->SetFuncCustData(p,a,b,c) -#define ICreateTypeInfo2_SetParamCustData(p,a,b,c,d) (p)->lpVtbl->SetParamCustData(p,a,b,c,d) -#define ICreateTypeInfo2_SetVarCustData(p,a,b,c) (p)->lpVtbl->SetVarCustData(p,a,b,c) -#define ICreateTypeInfo2_SetImplTypeCustData(p,a,b,c) (p)->lpVtbl->SetImplTypeCustData(p,a,b,c) -#define ICreateTypeInfo2_SetHelpStringContext(p,a) (p)->lpVtbl->SetHelpStringContext(p,a) -#define ICreateTypeInfo2_SetFuncHelpStringContext(p,a,b) (p)->lpVtbl->SetFuncHelpStringContext(p,a,b) -#define ICreateTypeInfo2_SetVarHelpStringContext(p,a,b) (p)->lpVtbl->SetVarHelpStringContext(p,a,b) -#define ICreateTypeInfo2_Invalidate(p) (p)->lpVtbl->Invalidate(p) -#define ICreateTypeInfo2_SetName(p,a) (p)->lpVtbl->SetName(p,a) -#endif - -#define INTERFACE ICreateTypeLib -DECLARE_INTERFACE_(ICreateTypeLib,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CreateTypeInfo)(THIS_ LPOLESTR,TYPEKIND,ICreateTypeInfo**) PURE; - STDMETHOD(SetName)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetVersion)(THIS_ WORD,WORD) PURE; - STDMETHOD(SetGuid)(THIS_ REFGUID) PURE; - STDMETHOD(SetDocString)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetHelpFileName)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetHelpContext)(THIS_ DWORD) PURE; - STDMETHOD(SetLcid)(THIS_ LCID) PURE; - STDMETHOD(SetLibFlags)(THIS_ UINT) PURE; - STDMETHOD(SaveAllChanges)(THIS) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ICreateTypeLib_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICreateTypeLib_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICreateTypeLib_Release(p) (p)->lpVtbl->Release(p) -#define ICreateTypeLib_CreateTypeInfo(p,a,b,c) (p)->lpVtbl->CreateTypeInfo(p,a,b,c) -#define ICreateTypeLib_SetName(p,a) (p)->lpVtbl->SetName(p,a) -#define ICreateTypeLib_SetVersion(p,a,b) (p)->lpVtbl->SetVersion(p,a,b) -#define ICreateTypeLib_SetGuid(p,a) (p)->lpVtbl->SetGuid(p,a) -#define ICreateTypeLib_SetDocString(p,a) (p)->lpVtbl->SetDocString(p,a) -#define ICreateTypeLib_SetHelpFileName(p,a) (p)->lpVtbl->SetHelpFileName(p,a) -#define ICreateTypeLib_SetHelpContext(p,a) (p)->lpVtbl->SetHelpContext(p,a) -#define ICreateTypeLib_SetLcid(p,a) (p)->lpVtbl->SetLcid(p,a) -#define ICreateTypeLib_SetLibFlags(p,a) (p)->lpVtbl->SetLibFlags(p,a) -#define ICreateTypeLib_SaveAllChanges(p) (p)->lpVtbl->SaveAllChanges(p) -#endif - -#define INTERFACE ICreateTypeLib2 -DECLARE_INTERFACE_(ICreateTypeLib2,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CreateTypeInfo)(THIS_ LPOLESTR,TYPEKIND,ICreateTypeInfo**) PURE; - STDMETHOD(SetName)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetVersion)(THIS_ WORD,WORD) PURE; - STDMETHOD(SetGuid)(THIS_ REFGUID) PURE; - STDMETHOD(SetDocString)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetHelpFileName)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetHelpContext)(THIS_ DWORD) PURE; - STDMETHOD(SetLcid)(THIS_ LCID) PURE; - STDMETHOD(SetLibFlags)(THIS_ UINT) PURE; - STDMETHOD(SaveAllChanges)(THIS) PURE; - STDMETHOD(DeleteTypeInfo)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetCustData)(THIS_ REFGUID, VARIANT*) PURE; - STDMETHOD(SetHelpStringContext)(THIS_ ULONG) PURE; - STDMETHOD(SetHelpStringDll)(THIS_ LPOLESTR) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define ICreateTypeLib2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICreateTypeLib2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICreateTypeLib2_Release(p) (p)->lpVtbl->Release(p) -#define ICreateTypeLib2_CreateTypeInfo(p,a,b,c) (p)->lpVtbl->CreateTypeInfo(p,a,b,c) -#define ICreateTypeLib2_SetName(p,a) (p)->lpVtbl->SetName(p,a) -#define ICreateTypeLib2_SetVersion(p,a,b) (p)->lpVtbl->SetVersion(p,a,b) -#define ICreateTypeLib2_SetGuid(p,a) (p)->lpVtbl->SetGuid(p,a) -#define ICreateTypeLib2_SetDocString(p,a) (p)->lpVtbl->SetDocString(p,a) -#define ICreateTypeLib2_SetHelpFileName(p,a) (p)->lpVtbl->SetHelpFileName(p,a) -#define ICreateTypeLib2_SetHelpContext(p,a) (p)->lpVtbl->SetHelpContext(p,a) -#define ICreateTypeLib2_SetLcid(p,a) (p)->lpVtbl->SetLcid(p,a) -#define ICreateTypeLib2_SetLibFlags(p,a) (p)->lpVtbl->SetLibFlags(p,a) -#define ICreateTypeLib2_SaveAllChanges(p) (p)->lpVtbl->SaveAllChanges(p) -#define ICreateTypeLib2_DeleteTypeInfo(p,a) (p)->lpVtbl->DeleteTypeInfo(p,a) -#define ICreateTypeLib2_SetCustData(p,a,b) (p)->lpVtbl->SetCustData(p,a,b) -#define ICreateTypeLib2_SetHelpStringContext(p,a) (p)->lpVtbl->SetHelpStringContext(p,a) -#define ICreateTypeLib2_SetHelpStringDll(p,a) (p)->lpVtbl->SetHelpStringDll(p,a) -#endif - -EXTERN_C const IID IID_IErrorInfo; -#define INTERFACE IErrorInfo -DECLARE_INTERFACE_(IErrorInfo, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetGUID)(THIS_ GUID*) PURE; - STDMETHOD(GetSource)(THIS_ BSTR*) PURE; - STDMETHOD(GetDescription)(THIS_ BSTR*) PURE; - STDMETHOD(GetHelpFile)(THIS_ BSTR*) PURE; - STDMETHOD(GetHelpContext)(THIS_ DWORD*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IErrorInfo_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IErrorInfo_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IErrorInfo_Release(T) (T)->lpVtbl->Release(T) -#define IErrorInfo_GetGUID(T,a) (T)->lpVtbl->GetGUID(T,a) -#define IErrorInfo_GetSource(T,a) (T)->lpVtbl->GetSource(T,a) -#define IErrorInfo_GetDescription(T,a) (T)->lpVtbl->GetDescription(T,a) -#define IErrorInfo_GetHelpFile(T,a) (T)->lpVtbl->GetHelpFile(T,a) -#define IErrorInfo_GetHelpContext(T,a) (T)->lpVtbl->GetHelpContext(T,a) -#endif - -EXTERN_C const IID IID_ICreateErrorInfo; -#define INTERFACE ICreateErrorInfo -DECLARE_INTERFACE_(ICreateErrorInfo, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*)PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SetGUID)(THIS_ REFGUID) PURE; - STDMETHOD(SetSource)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetDescription)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetHelpFile)(THIS_ LPOLESTR) PURE; - STDMETHOD(SetHelpContext)(THIS_ DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_ISupportErrorInfo; -#define INTERFACE ISupportErrorInfo -DECLARE_INTERFACE_(ISupportErrorInfo, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(InterfaceSupportsErrorInfo)(THIS_ REFIID) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRecordInfo; -#define INTERFACE IRecordInfo -DECLARE_INTERFACE_(IRecordInfo, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(RecordInit)(THIS_ PVOID) PURE; - STDMETHOD(RecordClear)(THIS_ PVOID) PURE; - STDMETHOD(RecordCopy)(THIS_ PVOID, PVOID) PURE; - STDMETHOD(GetGuid)(THIS_ GUID*) PURE; - STDMETHOD(GetName)(THIS_ BSTR*) PURE; - STDMETHOD(GetSize)(THIS_ ULONG*) PURE; - STDMETHOD(GetTypeInfo)(THIS_ ITypeInfo**) PURE; - STDMETHOD(GetField)(THIS_ PVOID,LPCOLESTR,VARIANT*) PURE; - STDMETHOD(GetFieldNoCopy)(THIS_ PVOID,LPCOLESTR,VARIANT*,PVOID*) PURE; - STDMETHOD(PutField )(THIS_ ULONG,PVOID,LPCOLESTR, VARIANT*) PURE; - STDMETHOD(PutFieldNoCopy)(THIS_ ULONG,PVOID,LPCOLESTR,VARIANT*) PURE; - STDMETHOD(GetFieldNames)(THIS_ ULONG*,BSTR*) PURE; - STDMETHOD_(BOOL,IsMatchingType)(THIS_ THIS) PURE; - STDMETHOD_(PVOID,RecordCreate)(THIS) PURE; - STDMETHOD(RecordCreateCopy)(THIS_ PVOID,PVOID*) PURE; - STDMETHOD(RecordDestroy )(THIS_ PVOID) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IRecordInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IRecordInfo_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IRecordInfo_Release(p) (p)->lpVtbl->Release(p) -#define IRecordInfo_RecordInit(p,a) (p)->lpVtbl->RecordInit(p,a) -#define IRecordInfo_RecordClear(p,a) (p)->lpVtbl->RecordClear(p,a) -#define IRecordInfo_RecordCopy(p,a,b) (p)->lpVtbl->RecordCopy(p,a,b) -#define IRecordInfo_GetGuid(p,a) (p)->lpVtbl->GetGuid(p,a) -#define IRecordInfo_GetName(p,a) (p)->lpVtbl->GetName(p,a) -#define IRecordInfo_GetSize(p,a) (p)->lpVtbl->GetSize(p,a) -#define IRecordInfo_GetTypeInfo(p,a) (p)->lpVtbl->GetTypeInfo(p,a) -#define IRecordInfo_GetField(p,a,b,c) (p)->lpVtbl->GetField(p,a,b,c) -#define IRecordInfo_GetFieldNoCopy(p,a,b,c,d) (p)->lpVtbl->GetFieldNoCopy(p,a,b,c,d) -#define IRecordInfo_PutField(p,a,b,c,d) (p)->lpVtbl->PutField(p,a,b,c,d) -#define IRecordInfo_PutFieldNoCopy(p,a,b,c,d) (p)->lpVtbl->PutFieldNoCopy(p,a,b,c,d) -#define IRecordInfo_GetFieldNames(p,a,b) (p)->lpVtbl->GetFieldNames(p,a,b) -#define IRecordInfo_IsMatchingType(p,a) (p)->lpVtbl->IsMatchingType(p,a) -#define IRecordInfo_RecordCreate(p) (p)->lpVtbl->RecordCreate(p) -#define IRecordInfo_RecordCreateCopy(p,a,b) (p)->lpVtbl->RecordCreateCopy(p,a,b) -#define IRecordInfo_RecordDestroy(p,a) (p)->lpVtbl->RecordDestroy(p,a) -#endif - -EXTERN_C const IID IID_ITypeMarshal; -#define INTERFACE ITypeMarshal -DECLARE_INTERFACE_(ITypeMarshal, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Size)(THIS_ PVOID,DWORD,PVOID,ULONG*) PURE; - STDMETHOD(Marshal)(THIS_ PVOID,DWORD,PVOID,ULONG,BYTE*,ULONG*) PURE; - STDMETHOD(Unmarshal)(THIS_ PVOID,DWORD,ULONG,BYTE*,ULONG*) PURE; - STDMETHOD(Free)(THIS_ PVOID) PURE; -}; -#undef INTERFACE - -unsigned long __RPC_USER BSTR_UserSize(unsigned long*,unsigned long,LPBSTR); -unsigned char* __RPC_USER BSTR_UserMarshal(unsigned long*,unsigned char*,LPBSTR); -unsigned char* __RPC_USER BSTR_UserUnmarshal(unsigned long*,unsigned char*,LPBSTR); -void __RPC_USER BSTR_UserFree(unsigned long*,LPBSTR); -unsigned long __RPC_USER CLEANLOCALSTORAGE_UserSize(unsigned long*,unsigned long,CLEANLOCALSTORAGE*); -unsigned char* __RPC_USER CLEANLOCALSTORAGE_UserMarshal(unsigned long*,unsigned char*,CLEANLOCALSTORAGE*); -unsigned char* __RPC_USER CLEANLOCALSTORAGE_UserUnmarshal(unsigned long*,unsigned char*,CLEANLOCALSTORAGE*); -void __RPC_USER CLEANLOCALSTORAGE_UserFree(unsigned long*,CLEANLOCALSTORAGE*); -unsigned long __RPC_USER VARIANT_UserSize(unsigned long*,unsigned long,LPVARIANT); -unsigned char* __RPC_USER VARIANT_UserMarshal(unsigned long*,unsigned char*,LPVARIANT); -unsigned char* __RPC_USER VARIANT_UserUnmarshal(unsigned long*,unsigned char*,LPVARIANT); -void __RPC_USER VARIANT_UserFree(unsigned long*,LPVARIANT); -HRESULT STDMETHODCALLTYPE IDispatch_Invoke_Proxy(LPDISPATCH,DISPID,REFIID,LCID,WORD,DISPPARAMS*,LPVARIANT,LPEXCEPINFO,LPUINT); -HRESULT STDMETHODCALLTYPE IDispatch_Invoke_Stub(LPDISPATCH,DISPID,REFIID,LCID,DWORD,DISPPARAMS*,LPVARIANT,LPEXCEPINFO,LPUINT,UINT,LPUINT,LPVARIANTARG); -HRESULT STDMETHODCALLTYPE IDispatch_RemoteInvoke_Proxy(LPDISPATCH,DISPID,REFIID,LCID,DWORD,DISPPARAMS*,LPVARIANT,LPEXCEPINFO,LPUINT,UINT,LPUINT,LPVARIANTARG); -HRESULT STDMETHODCALLTYPE IEnumVARIANT_Next_Proxy(LPENUMVARIANT,ULONG,LPVARIANT,PULONG); -HRESULT STDMETHODCALLTYPE IEnumVARIANT_Next_Stub(LPENUMVARIANT,ULONG,LPVARIANT,PULONG); -HRESULT STDMETHODCALLTYPE IEnumVARIANT_RemoteNext_Proxy(LPENUMVARIANT,ULONG,LPVARIANT,PULONG); -HRESULT STDMETHODCALLTYPE ITypeComp_Bind_Proxy(LPTYPECOMP,LPOLESTR,ULONG,WORD,LPTYPEINFO*,DESCKIND*,BINDPTR*); -HRESULT STDMETHODCALLTYPE ITypeComp_Bind_Stub(LPTYPECOMP,LPOLESTR,ULONG,WORD,LPTYPEINFO*,DESCKIND*,LPFUNCDESC*,LPVARDESC*,LPTYPECOMP*,CLEANLOCALSTORAGE*); -HRESULT STDMETHODCALLTYPE ITypeComp_BindType_Proxy(LPTYPECOMP,LPOLESTR,ULONG,LPTYPEINFO*,LPTYPECOMP*); -HRESULT STDMETHODCALLTYPE ITypeComp_BindType_Stub(LPTYPECOMP,LPOLESTR,ULONG,LPTYPEINFO*); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetTypeAttr_Proxy(LPTYPEINFO,LPTYPEATTR*); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetTypeAttr_Stub(LPTYPEINFO,LPTYPEATTR*,CLEANLOCALSTORAGE*); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetFuncDesc_Proxy(LPTYPEINFO,UINT,FUNCDESC**); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetFuncDesc_Stub(LPTYPEINFO,UINT,LPFUNCDESC*,CLEANLOCALSTORAGE*); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetVarDesc_Proxy(LPTYPEINFO,UINT,LPVARDESC*); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetVarDesc_Stub(LPTYPEINFO,UINT,LPVARDESC*,CLEANLOCALSTORAGE*); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetNames_Proxy(LPTYPEINFO,MEMBERID,LPBSTR,UINT,LPUINT); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetNames_Stub(LPTYPEINFO,MEMBERID,LPBSTR,UINT,LPUINT); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetIDsOfNames_Proxy(LPTYPEINFO,LPOLESTR*,UINT,MEMBERID*); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetIDsOfNames_Stub(LPTYPEINFO); -HRESULT STDMETHODCALLTYPE ITypeInfo_Invoke_Proxy(LPTYPEINFO,PVOID,MEMBERID,WORD,DISPPARAMS*,LPVARIANT,LPEXCEPINFO,LPUINT); -HRESULT STDMETHODCALLTYPE ITypeInfo_Invoke_Stub(LPTYPEINFO); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetDocumentation_Proxy(LPTYPEINFO,MEMBERID,LPBSTR,LPBSTR,LPDWORD,LPBSTR); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetDocumentation_Stub(LPTYPEINFO,MEMBERID,DWORD,LPBSTR,LPBSTR,LPDWORD,LPBSTR); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetDllEntry_Proxy(LPTYPEINFO,MEMBERID,INVOKEKIND,LPBSTR,LPBSTR,LPWORD); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetDllEntry_Stub(LPTYPEINFO,MEMBERID,INVOKEKIND,DWORD,LPBSTR,LPBSTR,LPWORD); -HRESULT STDMETHODCALLTYPE ITypeInfo_AddressOfMember_Proxy(LPTYPEINFO,MEMBERID,INVOKEKIND,PVOID*); -HRESULT STDMETHODCALLTYPE ITypeInfo_AddressOfMember_Stub(LPTYPEINFO); -HRESULT STDMETHODCALLTYPE ITypeInfo_CreateInstance_Proxy(LPTYPEINFO,LPUNKNOWN,REFIID,PVOID*); -HRESULT STDMETHODCALLTYPE ITypeInfo_CreateInstance_Stub(LPTYPEINFO,REFIID,LPUNKNOWN*); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetContainingTypeLib_Proxy(LPTYPEINFO,LPTYPELIB*,PUINT); -HRESULT STDMETHODCALLTYPE ITypeInfo_GetContainingTypeLib_Stub(LPTYPEINFO,LPTYPELIB*,PUINT); -void STDMETHODCALLTYPE ITypeInfo_ReleaseTypeAttr_Proxy(LPTYPEINFO,LPTYPEATTR); -HRESULT STDMETHODCALLTYPE ITypeInfo_ReleaseTypeAttr_Stub(LPTYPEINFO); -void STDMETHODCALLTYPE ITypeInfo_ReleaseFuncDesc_Proxy(LPTYPEINFO,LPFUNCDESC); -HRESULT STDMETHODCALLTYPE ITypeInfo_ReleaseFuncDesc_Stub(LPTYPEINFO); -void STDMETHODCALLTYPE ITypeInfo_ReleaseVarDesc_Proxy(LPTYPEINFO,VARDESC*); -HRESULT STDMETHODCALLTYPE ITypeInfo_ReleaseVarDesc_Stub(LPTYPEINFO); -HRESULT STDMETHODCALLTYPE ITypeInfo2_GetDocumentation2_Proxy(LPTYPEINFO2,MEMBERID,LCID,LPBSTR,LPDWORD,LPBSTR); -HRESULT STDMETHODCALLTYPE ITypeInfo2_GetDocumentation2_Stub(LPTYPEINFO2,MEMBERID,LCID,DWORD,LPBSTR,LPDWORD,LPBSTR); -UINT STDMETHODCALLTYPE ITypeLib_GetTypeInfoCount_Proxy(LPTYPELIB); -HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfoCount_Stub(LPTYPELIB,PUINT); -HRESULT STDMETHODCALLTYPE ITypeLib_GetLibAttr_Proxy(LPTYPELIB,LPTLIBATTR*); -HRESULT STDMETHODCALLTYPE ITypeLib_GetLibAttr_Stub(LPTYPELIB,LPTLIBATTR*,CLEANLOCALSTORAGE*); -HRESULT STDMETHODCALLTYPE ITypeLib_GetDocumentation_Proxy(LPTYPELIB,INT,LPBSTR,LPBSTR,LPDWORD,LPBSTR); -HRESULT STDMETHODCALLTYPE ITypeLib_GetDocumentation_Stub(LPTYPELIB,INT,DWORD,LPBSTR,LPBSTR,LPDWORD,LPBSTR); -HRESULT STDMETHODCALLTYPE ITypeLib_IsName_Proxy(LPTYPELIB,LPOLESTR,ULONG,LPBOOL); -HRESULT STDMETHODCALLTYPE ITypeLib_IsName_Stub(LPTYPELIB,LPOLESTR,ULONG,LPBOOL,LPBSTR); -HRESULT STDMETHODCALLTYPE ITypeLib_FindName_Proxy(LPTYPELIB,LPOLESTR,ULONG,LPTYPEINFO*,MEMBERID*,PUSHORT); -HRESULT STDMETHODCALLTYPE ITypeLib_FindName_Stub(LPTYPELIB,LPOLESTR,ULONG,LPTYPEINFO*,MEMBERID*,PUSHORT,LPBSTR); -void STDMETHODCALLTYPE ITypeLib_ReleaseTLibAttr_Proxy(LPTYPELIB,LPTLIBATTR); -HRESULT STDMETHODCALLTYPE ITypeLib_ReleaseTLibAttr_Stub(LPTYPELIB); -HRESULT STDMETHODCALLTYPE ITypeLib2_GetLibStatistics_Proxy(LPTYPELIB2,PULONG,PULONG); -HRESULT STDMETHODCALLTYPE ITypeLib2_GetLibStatistics_Stub(LPTYPELIB2,PULONG,PULONG); -HRESULT STDMETHODCALLTYPE ITypeLib2_GetDocumentation2_Proxy(LPTYPELIB2,INT,LCID,LPBSTR,LPDWORD,LPBSTR); -HRESULT STDMETHODCALLTYPE ITypeLib2_GetDocumentation2_Stub(LPTYPELIB2,INT,LCID,DWORD,LPBSTR,LPDWORD,LPBSTR); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/reactos/include/psdk/oaidl.idl b/reactos/include/psdk/oaidl.idl new file mode 100644 index 00000000000..7f2f7011177 --- /dev/null +++ b/reactos/include/psdk/oaidl.idl @@ -0,0 +1,1628 @@ +/* + * Copyright 2002 Ove Kaaven + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; + +interface IDispatch; +interface ITypeInfo; +interface ITypeLib; +interface IRecordInfo; + +[ + version(1.0), + pointer_default(unique) +] +interface IOleAutomationTypes +{ + +typedef CY CURRENCY; + +/* Safe Array */ + +typedef struct tagSAFEARRAYBOUND { + ULONG cElements; + LONG lLbound; +} SAFEARRAYBOUND, *LPSAFEARRAYBOUND; + +typedef [unique] struct _wireVARIANT *wireVARIANT; +typedef [unique] struct _wireBRECORD *wireBRECORD; + +typedef struct _wireSAFEARR_BSTR { + ULONG Size; + [size_is(Size), ref] wireBSTR *aBstr; +} SAFEARR_BSTR; + +typedef struct _wireSAFEARR_UNKNOWN { + ULONG Size; + [size_is(Size), ref] IUnknown **apUnknown; +} SAFEARR_UNKNOWN; + +typedef struct _wireSAFEARR_DISPATCH { + ULONG Size; + [size_is(Size), ref] IDispatch **apDispatch; +} SAFEARR_DISPATCH; + +typedef struct _wireSAFEARR_VARIANT { + ULONG Size; + [size_is(Size), ref] wireVARIANT *aVariant; +} SAFEARR_VARIANT; + +typedef struct _wireSAFEARR_BRECORD { + ULONG Size; + [size_is(Size), ref] wireBRECORD *aRecord; +} SAFEARR_BRECORD; + +typedef struct _wireSAFEARR_HAVEIID { + ULONG Size; + [size_is(Size), ref] IUnknown **apUnknown; + IID iid; +} SAFEARR_HAVEIID; + +typedef [v1_enum] enum tagSF_TYPE { + SF_ERROR = VT_ERROR, + SF_I1 = VT_I1, + SF_I2 = VT_I2, + SF_I4 = VT_I4, + SF_I8 = VT_I8, + SF_BSTR = VT_BSTR, + SF_UNKNOWN = VT_UNKNOWN, + SF_DISPATCH = VT_DISPATCH, + SF_VARIANT = VT_VARIANT, + SF_RECORD = VT_RECORD, + SF_HAVEIID = VT_UNKNOWN|VT_RESERVED, +} SF_TYPE; + +typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u { + case SF_BSTR: SAFEARR_BSTR BstrStr; + case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr; + case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr; + case SF_VARIANT: SAFEARR_VARIANT VariantStr; + case SF_RECORD: SAFEARR_BRECORD RecordStr; + case SF_HAVEIID: SAFEARR_HAVEIID HaveIidStr; + case SF_I1: BYTE_SIZEDARR ByteStr; + case SF_I2: WORD_SIZEDARR WordStr; + case SF_I4: DWORD_SIZEDARR LongStr; + case SF_I8: HYPER_SIZEDARR HyperStr; +} SAFEARRAYUNION; + +typedef [unique] struct _wireSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + SAFEARRAYUNION uArrayStructs; + [size_is(cDims)] SAFEARRAYBOUND rgsabound[]; +} *wireSAFEARRAY; + +typedef [unique] wireSAFEARRAY *wirePSAFEARRAY; + +typedef struct tagSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + PVOID pvData; + SAFEARRAYBOUND rgsabound[]; +} SAFEARRAY; + +typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY *LPSAFEARRAY; + +const USHORT FADF_AUTO = 0x0001; +const USHORT FADF_STATIC = 0x0002; +const USHORT FADF_EMBEDDED = 0x0004; +const USHORT FADF_FIXEDSIZE = 0x0010; +const USHORT FADF_RECORD = 0x0020; +const USHORT FADF_HAVEIID = 0x0040; +const USHORT FADF_HAVEVARTYPE = 0x0080; +const USHORT FADF_BSTR = 0x0100; +const USHORT FADF_UNKNOWN = 0x0200; +const USHORT FADF_DISPATCH = 0x0400; +const USHORT FADF_VARIANT = 0x0800; +const USHORT FADF_RESERVED = 0xF008; +/* Undocumented flags */ +const USHORT FADF_DATADELETED = 0x1000; /* Data in a vector has been deleted */ +const USHORT FADF_CREATEVECTOR = 0x2000; /* This array is a vector */ + +/* Variant */ + +cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)") +cpp_quote("#define __VARIANT_NAME_1 n1") +cpp_quote("#define __VARIANT_NAME_2 n2") +cpp_quote("#define __VARIANT_NAME_3 n3") +cpp_quote("#define __VARIANT_NAME_4 brecVal") +cpp_quote("#else") +cpp_quote("#define __tagVARIANT") +cpp_quote("#define __VARIANT_NAME_1") +cpp_quote("#define __VARIANT_NAME_2") +cpp_quote("#define __VARIANT_NAME_3") +cpp_quote("#define __tagBRECORD") +cpp_quote("#define __VARIANT_NAME_4") +cpp_quote("#endif") + +typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT; + +struct tagVARIANT { + union { + struct __tagVARIANT { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + signed char cVal; + USHORT uiVal; + ULONG ulVal; + INT intVal; + UINT uintVal; + BYTE bVal; + SHORT iVal; + LONG lVal; + FLOAT fltVal; + DOUBLE dblVal; + VARIANT_BOOL boolVal; +#if 0 /* illegal in C++ */ + _VARIANT_BOOL bool; +#endif + SCODE scode; + DATE date; + BSTR bstrVal; + CY cyVal; + IUnknown *punkVal; + IDispatch *pdispVal; + SAFEARRAY *parray; + LONGLONG llVal; + ULONGLONG ullVal; + signed char *pcVal; + USHORT *puiVal; + ULONG *pulVal; + INT *pintVal; + UINT *puintVal; + BYTE *pbVal; + SHORT *piVal; + LONG *plVal; + FLOAT *pfltVal; + DOUBLE *pdblVal; + VARIANT_BOOL *pboolVal; +#if 0 + _VARIANT_BOOL *pbool; +#endif + SCODE *pscode; + DATE *pdate; + BSTR *pbstrVal; + VARIANT *pvarVal; + PVOID byref; + CY *pcyVal; + DECIMAL *pdecVal; + IUnknown **ppunkVal; + IDispatch **ppdispVal; + SAFEARRAY **pparray; + LONGLONG *pllVal; + ULONGLONG *pullVal; + struct __tagBRECORD { + PVOID pvRecord; + IRecordInfo *pRecInfo; + } __VARIANT_NAME_4; + } __VARIANT_NAME_3; + } __VARIANT_NAME_2; + + DECIMAL decVal; + } __VARIANT_NAME_1; +}; + +typedef VARIANT *LPVARIANT; +typedef VARIANT VARIANTARG; +typedef VARIANTARG *LPVARIANTARG; + +struct _wireBRECORD { + ULONG fFlags; + ULONG clSize; + IRecordInfo *pRecInfo; + [size_is(clSize)] byte *pRecord; +}; + +struct _wireVARIANT { + DWORD clSize; + DWORD rpcReserved; + USHORT vt; + USHORT wReserved1; + USHORT wReserved2; + USHORT wReserved3; + [switch_is(vt)] union { + [case(VT_EMPTY, VT_NULL)] ; + [case(VT_I1)] signed char cVal; + [case(VT_UI2)] USHORT uiVal; + [case(VT_UI4)] ULONG ulVal; + [case(VT_INT)] INT intVal; + [case(VT_UINT)] UINT uintVal; + [case(VT_UI1)] BYTE bVal; + [case(VT_I2)] SHORT iVal; + [case(VT_I4)] LONG lVal; + [case(VT_R4)] FLOAT fltVal; + [case(VT_R8)] DOUBLE dblVal; + [case(VT_BOOL)] VARIANT_BOOL boolVal; + [case(VT_ERROR)] SCODE scode; + [case(VT_DATE)] DATE date; + [case(VT_BSTR)] wireBSTR bstrVal; + [case(VT_CY)] CY cyVal; + [case(VT_DECIMAL)] DECIMAL decVal; + [case(VT_UNKNOWN)] IUnknown *punkVal; + [case(VT_DISPATCH)] IDispatch *pdispVal; + [case(VT_ARRAY)] wireSAFEARRAY parray; + [case(VT_I1|VT_BYREF)] signed char *pcVal; + [case(VT_UI2|VT_BYREF)] USHORT *puiVal; + [case(VT_UI4|VT_BYREF)] ULONG *pulVal; + [case(VT_INT|VT_BYREF)] INT *pintVal; + [case(VT_UINT|VT_BYREF)] UINT *puintVal; + [case(VT_UI1|VT_BYREF)] BYTE *pbVal; + [case(VT_I2|VT_BYREF)] SHORT *piVal; + [case(VT_I4|VT_BYREF)] LONG *plVal; + [case(VT_R4|VT_BYREF)] FLOAT *pfltVal; + [case(VT_R8|VT_BYREF)] DOUBLE *pdblVal; + [case(VT_BOOL|VT_BYREF)] VARIANT_BOOL *pboolVal; + [case(VT_ERROR|VT_BYREF)] SCODE *pscode; + [case(VT_DATE|VT_BYREF)] DATE *pdate; + [case(VT_BSTR|VT_BYREF)] wireBSTR *pbstrVal; + [case(VT_VARIANT|VT_BYREF)] wireVARIANT *pvarVal; + [case(VT_CY|VT_BYREF)] CY *pcyVal; + [case(VT_DECIMAL|VT_BYREF)] DECIMAL *pdecVal; + [case(VT_UNKNOWN|VT_BYREF)] IUnknown **ppunkVal; + [case(VT_DISPATCH|VT_BYREF)] IDispatch **ppdispVal; + [case(VT_ARRAY|VT_BYREF)] wireSAFEARRAY *pparray; + [case(VT_RECORD, VT_RECORD|VT_BYREF)] wireBRECORD brecVal; + }; +}; + +/* Dispatch */ + +typedef LONG DISPID; +typedef DWORD HREFTYPE; +typedef DISPID MEMBERID; + +typedef [v1_enum] enum tagTYPEKIND { + TKIND_ENUM = 0, + TKIND_RECORD, + TKIND_MODULE, + TKIND_INTERFACE, + TKIND_DISPATCH, + TKIND_COCLASS, + TKIND_ALIAS, + TKIND_UNION, + TKIND_MAX +} TYPEKIND; + +typedef struct tagTYPEDESC { + [switch_is(vt)] union { + [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc; + [case(VT_CARRAY)] struct tagARRAYDESC *lpadesc; + [case(VT_USERDEFINED)] HREFTYPE hreftype; + [default] ; + }; + VARTYPE vt; +} TYPEDESC; + +typedef struct tagARRAYDESC { + TYPEDESC tdescElem; + USHORT cDims; + [size_is(cDims)] SAFEARRAYBOUND rgbounds[]; +} ARRAYDESC; + +typedef struct tagPARAMDESCEX { + ULONG cBytes; + VARIANTARG varDefaultValue; +} PARAMDESCEX, *LPPARAMDESCEX; + +typedef struct tagPARAMDESC { + LPPARAMDESCEX pparamdescex; + USHORT wParamFlags; +} PARAMDESC, *LPPARAMDESC; + +const USHORT PARAMFLAG_NONE = 0x00; +const USHORT PARAMFLAG_FIN = 0x01; +const USHORT PARAMFLAG_FOUT = 0x02; +const USHORT PARAMFLAG_FLCID = 0x04; +const USHORT PARAMFLAG_FRETVAL = 0x08; +const USHORT PARAMFLAG_FOPT = 0x10; +const USHORT PARAMFLAG_FHASDEFAULT = 0x20; +const USHORT PARAMFLAG_FHASCUSTDATA = 0x40; + +typedef struct tagIDLDESC { + ULONG dwReserved; + USHORT wIDLFlags; +} IDLDESC, *LPIDLDESC; + +const USHORT IDLFLAG_NONE = PARAMFLAG_NONE; +const USHORT IDLFLAG_FIN = PARAMFLAG_FIN; +const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT; +const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID; +const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; + +cpp_quote("#if 0") /* for IDL only */ +typedef struct tagELEMDESC { + TYPEDESC tdesc; + PARAMDESC paramdesc; +} ELEMDESC; +cpp_quote("#else") /* C/C++ defs */ +cpp_quote("typedef struct tagELEMDESC {") +cpp_quote(" TYPEDESC tdesc;") +cpp_quote(" union {") +cpp_quote(" IDLDESC idldesc;") +cpp_quote(" PARAMDESC paramdesc;") +cpp_quote(" } DUMMYUNIONNAME;") +cpp_quote("} ELEMDESC, *LPELEMDESC;") +cpp_quote("#endif") + +typedef struct tagTYPEATTR { + GUID guid; + LCID lcid; + DWORD dwReserved; + MEMBERID memidConstructor; + MEMBERID memidDestructor; + LPOLESTR lpstrSchema; + ULONG cbSizeInstance; + TYPEKIND typekind; + WORD cFuncs; + WORD cVars; + WORD cImplTypes; + WORD cbSizeVft; + WORD cbAlignment; + WORD wTypeFlags; + WORD wMajorVerNum; + WORD wMinorVerNum; + TYPEDESC tdescAlias; + IDLDESC idldescType; +} TYPEATTR, *LPTYPEATTR; + +typedef struct tagDISPPARAMS { + [size_is(cArgs)] VARIANTARG *rgvarg; + [size_is(cNamedArgs)] DISPID *rgdispidNamedArgs; + UINT cArgs; + UINT cNamedArgs; +} DISPPARAMS; + +cpp_quote("#if 0") /* for IDL only */ +typedef struct tagEXCEPINFO { + WORD wCode; + WORD wReserved; + BSTR bstrSource; + BSTR bstrDescription; + BSTR bstrHelpFile; + DWORD dwHelpContext; + ULONG pvReserved; + ULONG pfnDeferredFillIn; + SCODE scode; +} EXCEPINFO; +cpp_quote("#else") +cpp_quote("typedef struct tagEXCEPINFO {") +cpp_quote(" WORD wCode;") +cpp_quote(" WORD wReserved;") +cpp_quote(" BSTR bstrSource;") +cpp_quote(" BSTR bstrDescription;") +cpp_quote(" BSTR bstrHelpFile;") +cpp_quote(" DWORD dwHelpContext;") +cpp_quote(" PVOID pvReserved;") +cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);") +cpp_quote(" SCODE scode;") +cpp_quote("} EXCEPINFO, *LPEXCEPINFO;") +cpp_quote("#endif") + +typedef [v1_enum] enum tagCALLCONV { + CC_FASTCALL = 0, + CC_CDECL = 1, + CC_MSCPASCAL, + CC_PASCAL = CC_MSCPASCAL, + CC_MACPASCAL, + CC_STDCALL, + CC_FPFASTCALL, + CC_SYSCALL, + CC_MPWCDECL, + CC_MPWPASCAL, + CC_MAX +} CALLCONV; + +typedef [v1_enum] enum tagFUNCKIND { + FUNC_VIRTUAL, + FUNC_PUREVIRTUAL, + FUNC_NONVIRTUAL, + FUNC_STATIC, + FUNC_DISPATCH +} FUNCKIND; + +typedef [v1_enum] enum tagINVOKEKIND { + INVOKE_FUNC = 1, + INVOKE_PROPERTYGET = 2, + INVOKE_PROPERTYPUT = 4, + INVOKE_PROPERTYPUTREF = 8 +} INVOKEKIND; + +typedef struct tagFUNCDESC { + MEMBERID memid; + [size_is(cScodes)] SCODE *lprgscode; + [size_is(cParams)] ELEMDESC *lprgelemdescParam; + FUNCKIND funckind; + INVOKEKIND invkind; + CALLCONV callconv; + SHORT cParams; + SHORT cParamsOpt; + SHORT oVft; + SHORT cScodes; + ELEMDESC elemdescFunc; + WORD wFuncFlags; +} FUNCDESC, *LPFUNCDESC; + +typedef [v1_enum] enum tagVARKIND { + VAR_PERINSTANCE, + VAR_STATIC, + VAR_CONST, + VAR_DISPATCH +} VARKIND; + +const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1; +const USHORT IMPLTYPEFLAG_FSOURCE = 0x2; +const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4; +const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE = 0x8; + +typedef struct tagVARDESC { + MEMBERID memid; + LPOLESTR lpstrSchema; + [switch_is(varkind)] union { + [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst; + [case(VAR_CONST)] VARIANT *lpvarValue; + }; + ELEMDESC elemdescVar; + WORD wVarFlags; + VARKIND varkind; +} VARDESC, *LPVARDESC; + +typedef enum tagTYPEFLAGS { + TYPEFLAG_FAPPOBJECT = 0x0001, + TYPEFLAG_FCANCREATE = 0x0002, + TYPEFLAG_FLICENSED = 0x0004, + TYPEFLAG_FPREDECLID = 0x0008, + TYPEFLAG_FHIDDEN = 0x0010, + TYPEFLAG_FCONTROL = 0x0020, + TYPEFLAG_FDUAL = 0x0040, + TYPEFLAG_FNONEXTENSIBLE = 0x0080, + TYPEFLAG_FOLEAUTOMATION = 0x0100, + TYPEFLAG_FRESTRICTED = 0x0200, + TYPEFLAG_FAGGREGATABLE = 0x0400, + TYPEFLAG_FREPLACEABLE = 0x0800, + TYPEFLAG_FDISPATCHABLE = 0x1000, + TYPEFLAG_FREVERSEBIND = 0x2000, + TYPEFLAG_FPROXY = 0x4000 +} TYPEFLAGS; + +typedef enum tagFUNCFLAGS { + FUNCFLAG_FRESTRICTED = 0x0001, + FUNCFLAG_FSOURCE = 0x0002, + FUNCFLAG_FBINDABLE = 0x0004, + FUNCFLAG_FREQUESTEDIT = 0x0008, + FUNCFLAG_FDISPLAYBIND = 0x0010, + FUNCFLAG_FDEFAULTBIND = 0x0020, + FUNCFLAG_FHIDDEN = 0x0040, + FUNCFLAG_FUSESGETLASTERROR = 0x0080, + FUNCFLAG_FDEFAULTCOLLELEM = 0x0100, + FUNCFLAG_FUIDEFAULT = 0x0200, + FUNCFLAG_FNONBROWSABLE = 0x0400, + FUNCFLAG_FREPLACEABLE = 0x0800, + FUNCFLAG_FIMMEDIATEBIND = 0x1000 +} FUNCFLAGS; + +typedef enum tagVARFLAGS { + VARFLAG_FREADONLY = 0x0001, + VARFLAG_FSOURCE = 0x0002, + VARFLAG_FBINDABLE = 0x0004, + VARFLAG_FREQUESTEDIT = 0x0008, + VARFLAG_FDISPLAYBIND = 0x0010, + VARFLAG_FDEFAULTBIND = 0x0020, + VARFLAG_FHIDDEN = 0x0040, + VARFLAG_FRESTRICTED = 0x0080, + VARFLAG_FDEFAULTCOLLELEM = 0x0100, + VARFLAG_FUIDEFAULT = 0x0200, + VARFLAG_FNONBROWSABLE = 0x0400, + VARFLAG_FREPLACEABLE = 0x0800, + VARFLAG_FIMMEDIATEBIND = 0x1000 +} VARFLAGS; + +typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE { + IUnknown *pInterface; + PVOID pStorage; + DWORD flags; +} CLEANLOCALSTORAGE; + +typedef struct tagCUSTDATAITEM { + GUID guid; + VARIANTARG varValue; +} CUSTDATAITEM, *LPCUSTDATAITEM; + +typedef struct tagCUSTDATA { + DWORD cCustData; + [size_is(cCustData)] LPCUSTDATAITEM prgCustData; +} CUSTDATA, *LPCUSTDATA; + +} /* interface IOleAutomationTypes */ + +/******************** INTERFACES ********************/ + +[ + object, + uuid(00020400-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IDispatch : IUnknown +{ + typedef [unique] IDispatch *LPDISPATCH; + + const DISPID DISPID_UNKNOWN = -1; + const DISPID DISPID_VALUE = 0; + const DISPID DISPID_PROPERTYPUT = -3; + const DISPID DISPID_NEWENUM = -4; + const DISPID DISPID_EVALUATE = -5; + const DISPID DISPID_CONSTRUCTOR = -6; + const DISPID DISPID_DESTRUCTOR = -7; + const DISPID DISPID_COLLECT = -8; + + HRESULT GetTypeInfoCount( + [out] UINT *pctinfo); + + HRESULT GetTypeInfo( + [in] UINT iTInfo, + [in] LCID lcid, + [out] ITypeInfo **ppTInfo); + + HRESULT GetIDsOfNames( + [in] REFIID riid, + [in, size_is(cNames)] LPOLESTR *rgszNames, + [in] UINT cNames, + [in] LCID lcid, + [out, size_is(cNames)] DISPID *rgDispId); + + [local] + HRESULT Invoke( + [in] DISPID dispIdMember, + [in] REFIID riid, + [in] LCID lcid, + [in] WORD wFlags, + [in, out] DISPPARAMS *pDispParams, + [out] VARIANT *pVarResult, + [out] EXCEPINFO *pExcepInfo, + [out] UINT *puArgErr); + + [call_as(Invoke)] + HRESULT RemoteInvoke( + [in] DISPID dispIdMember, + [in] REFIID riid, + [in] LCID lcid, + [in] DWORD dwFlags, + [in] DISPPARAMS *pDispParams, + [out] VARIANT *pVarResult, + [out] EXCEPINFO *pExcepInfo, + [out] UINT *pArgErr, + [in] UINT cVarRef, + [in, size_is(cVarRef)] UINT *rgVarRefIdx, + [in, out, size_is(cVarRef)] VARIANTARG *rgVarRef); +} + +[ + object, + uuid(00020404-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumVARIANT : IUnknown +{ + typedef [unique] IEnumVARIANT *LPENUMVARIANT; + + [local] + HRESULT Next( + [in] ULONG celt, + [out] VARIANT *rgVar, + [out] ULONG *pCeltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pCeltFetched)] + VARIANT *rgVar, + [out] ULONG *pCeltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumVARIANT **ppEnum); +} + +[ + object, + uuid(00020403-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ITypeComp : IUnknown +{ + typedef [unique] ITypeComp *LPTYPECOMP; + + typedef [v1_enum] enum tagDESCKIND { + DESCKIND_NONE = 0, + DESCKIND_FUNCDESC, + DESCKIND_VARDESC, + DESCKIND_TYPECOMP, + DESCKIND_IMPLICITAPPOBJ, + DESCKIND_MAX + } DESCKIND; + + typedef union tagBINDPTR { + FUNCDESC *lpfuncdesc; + VARDESC *lpvardesc; + ITypeComp *lptcomp; + } BINDPTR, *LPBINDPTR; + + [local] + HRESULT Bind( + [in] LPOLESTR szName, + [in] ULONG lHashVal, + [in] WORD wFlags, + [out] ITypeInfo **ppTInfo, + [out] DESCKIND *pDescKind, + [out] BINDPTR *pBindPtr); + + [call_as(Bind)] + HRESULT RemoteBind( + [in] LPOLESTR szName, + [in] ULONG lHashVal, + [in] WORD wFlags, + [out] ITypeInfo **ppTInfo, + [out] DESCKIND *pDescKind, + [out] LPFUNCDESC *ppFuncDesc, + [out] LPVARDESC *ppVarDesc, + [out] ITypeComp **ppTypeComp, + [out] CLEANLOCALSTORAGE *pDummy); + + [local] + HRESULT BindType( + [in] LPOLESTR szName, + [in] ULONG lHashVal, + [out] ITypeInfo **ppTInfo, + [out] ITypeComp **ppTComp); + + [call_as(BindType)] + HRESULT RemoteBindType( + [in] LPOLESTR szName, + [in] ULONG lHashVal, + [out] ITypeInfo **ppTInfo); +} + +[ + object, + uuid(00020401-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ITypeInfo : IUnknown +{ + typedef [unique] ITypeInfo *LPTYPEINFO; + + [local] + HRESULT GetTypeAttr( + [out] TYPEATTR **ppTypeAttr); + + [call_as(GetTypeAttr)] + HRESULT RemoteGetTypeAttr( + [out] LPTYPEATTR *ppTypeAttr, + [out] CLEANLOCALSTORAGE *pDummy); + + HRESULT GetTypeComp( + [out] ITypeComp **ppTComp); + + [local] + HRESULT GetFuncDesc( + [in] UINT index, + [out] FUNCDESC **ppFuncDesc); + + [call_as(GetFuncDesc)] + HRESULT RemoteGetFuncDesc( + [in] UINT index, + [out] LPFUNCDESC *ppFuncDesc, + [out] CLEANLOCALSTORAGE *pDummy); + + [local] + HRESULT GetVarDesc( + [in] UINT index, + [out] VARDESC **ppVarDesc); + + [call_as(GetVarDesc)] + HRESULT RemoteGetVarDesc( + [in] UINT index, + [out] LPVARDESC *ppVarDesc, + [out] CLEANLOCALSTORAGE *pDummy); + + [local] + HRESULT GetNames( + [in] MEMBERID memid, + [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames, + [in] UINT cMaxNames, + [out] UINT *pcNames); + + [call_as(GetNames)] + HRESULT RemoteGetNames( + [in] MEMBERID memid, + [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames, + [in] UINT cMaxNames, + [out] UINT *pcNames); + + HRESULT GetRefTypeOfImplType( + [in] UINT index, + [out] HREFTYPE *pRefType); + + HRESULT GetImplTypeFlags( + [in] UINT index, + [out] INT *pImplTypeFlags); + + [local] + HRESULT GetIDsOfNames( + [in, size_is(cNames)] LPOLESTR *rgszNames, + [in] UINT cNames, + [out, size_is(cNames)] MEMBERID *pMemId); + + [call_as(GetIDsOfNames)] + HRESULT LocalGetIDsOfNames(); + + [local] + HRESULT Invoke( + [in] PVOID pvInstance, + [in] MEMBERID memid, + [in] WORD wFlags, + [in, out] DISPPARAMS *pDispParams, + [out] VARIANT *pVarResult, + [out] EXCEPINFO *pExcepInfo, + [out] UINT *puArgErr); + + [call_as(Invoke)] + HRESULT LocalInvoke(); + + [local] + HRESULT GetDocumentation( + [in] MEMBERID memid, + [out] BSTR *pBstrName, + [out] BSTR *pBstrDocString, + [out] DWORD *pdwHelpContext, + [out] BSTR *pBstrHelpFile); + + [call_as(GetDocumentation)] + HRESULT RemoteGetDocumentation( + [in] MEMBERID memid, + [in] DWORD refPtrFlags, + [out] BSTR *pBstrName, + [out] BSTR *pBstrDocString, + [out] DWORD *pdwHelpContext, + [out] BSTR *pBstrHelpFile); + + [local] + HRESULT GetDllEntry( + [in] MEMBERID memid, + [in] INVOKEKIND invKind, + [out] BSTR *pBstrDllName, + [out] BSTR *pBstrName, + [out] WORD *pwOrdinal); + + [call_as(GetDllEntry)] + HRESULT RemoteGetDllEntry( + [in] MEMBERID memid, + [in] INVOKEKIND invKind, + [in] DWORD refPtrFlags, + [out] BSTR *pBstrDllName, + [out] BSTR *pBstrName, + [out] WORD *pwOrdinal); + + HRESULT GetRefTypeInfo( + [in] HREFTYPE hRefType, + [out] ITypeInfo **ppTInfo); + + [local] + HRESULT AddressOfMember( + [in] MEMBERID memid, + [in] INVOKEKIND invKind, + [out] PVOID *ppv); + + [call_as(AddressOfMember)] + HRESULT LocalAddressOfMember(); + + [local] + HRESULT CreateInstance( + [in] IUnknown *pUnkOuter, + [in] REFIID riid, + [out, iid_is(riid)] PVOID *ppvObj); + + [call_as(CreateInstance)] + HRESULT RemoteCreateInstance( + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppvObj); + + HRESULT GetMops( + [in] MEMBERID memid, + [out] BSTR *pBstrMops); + + [local] + HRESULT GetContainingTypeLib( + [out] ITypeLib **ppTLib, + [out] UINT *pIndex); + + [call_as(GetContainingTypeLib)] + HRESULT RemoteGetContainingTypeLib( + [out] ITypeLib **ppTLib, + [out] UINT *pIndex); + + [local] + void ReleaseTypeAttr( + [in] TYPEATTR *pTypeAttr); + + [call_as(ReleaseTypeAttr)] + HRESULT LocalReleaseTypeAttr(); + + [local] + void ReleaseFuncDesc( + [in] FUNCDESC *pFuncDesc); + + [call_as(ReleaseFuncDesc)] + HRESULT LocalReleaseFuncDesc(); + + [local] + void ReleaseVarDesc( + [in] VARDESC *pVarDesc); + + [call_as(ReleaseVarDesc)] + HRESULT LocalReleaseVarDesc(); +} + +[ + object, + uuid(00020412-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ITypeInfo2 : ITypeInfo +{ + typedef [unique] ITypeInfo2 *LPTYPEINFO2; + + HRESULT GetTypeKind( + [out] TYPEKIND *pTypeKind); + + HRESULT GetTypeFlags( + [out] ULONG *pTypeFlags); + + HRESULT GetFuncIndexOfMemId( + [in] MEMBERID memid, + [in] INVOKEKIND invKind, + [out] UINT *pFuncIndex); + + HRESULT GetVarIndexOfMemId( + [in] MEMBERID memid, + [out] UINT *pVarIndex); + + HRESULT GetCustData( + [in] REFGUID guid, + [out] VARIANT *pVarVal); + + HRESULT GetFuncCustData( + [in] UINT index, + [in] REFGUID guid, + [out] VARIANT *pVarVal); + + HRESULT GetParamCustData( + [in] UINT indexFunc, + [in] UINT indexParam, + [in] REFGUID guid, + [out] VARIANT *pVarVal); + + HRESULT GetVarCustData( + [in] UINT index, + [in] REFGUID guid, + [out] VARIANT *pVarVal); + + HRESULT GetImplTypeCustData( + [in] UINT index, + [in] REFGUID guid, + [out] VARIANT *pVarVal); + + [local] + HRESULT GetDocumentation2( + [in] MEMBERID memid, + [in] LCID lcid, + [out] BSTR *pbstrHelpString, + [out] DWORD *pdwHelpStringContext, + [out] BSTR *pbstrHelpStringDll); + + [call_as(GetDocumentation2)] + HRESULT RemoteGetDocumentation2( + [in] MEMBERID memid, + [in] LCID lcid, + [in] DWORD refPtrFlags, + [out] BSTR *pbstrHelpString, + [out] DWORD *pdwHelpStringContext, + [out] BSTR *pbstrHelpStringDll); + + HRESULT GetAllCustData( + [out] CUSTDATA *pCustData); + + HRESULT GetAllFuncCustData( + [in] UINT index, + [out] CUSTDATA *pCustData); + + HRESULT GetAllParamCustData( + [in] UINT indexFunc, + [in] UINT indexParam, + [out] CUSTDATA *pCustData); + + HRESULT GetAllVarCustData( + [in] UINT index, + [out] CUSTDATA *pCustData); + + HRESULT GetAllImplTypeCustData( + [in] UINT index, + [out] CUSTDATA *pCustData); +} + +[ + object, + uuid(00020402-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ITypeLib : IUnknown +{ + typedef [unique] ITypeLib *LPTYPELIB; + + typedef [v1_enum] enum tagSYSKIND { + SYS_WIN16 = 0, + SYS_WIN32, + SYS_MAC + } SYSKIND; + + typedef [v1_enum] enum tagLIBFLAGS { + LIBFLAG_FRESTRICTED = 0x01, + LIBFLAG_FCONTROL = 0x02, + LIBFLAG_FHIDDEN = 0x04, + LIBFLAG_FHASDISKIMAGE = 0x08 + } LIBFLAGS; + + typedef struct tagTLIBATTR { + GUID guid; + LCID lcid; + SYSKIND syskind; + WORD wMajorVerNum; + WORD wMinorVerNum; + WORD wLibFlags; + } TLIBATTR, *LPTLIBATTR; + + [local] + UINT GetTypeInfoCount(); + + [call_as(GetTypeInfoCount)] + HRESULT RemoteGetTypeInfoCount( + [out] UINT *pcTInfo); + + HRESULT GetTypeInfo( + [in] UINT index, + [out] ITypeInfo **ppTInfo); + + HRESULT GetTypeInfoType( + [in] UINT index, + [out] TYPEKIND *pTKind); + + HRESULT GetTypeInfoOfGuid( + [in] REFGUID guid, + [out] ITypeInfo **ppTinfo); + + [local] + HRESULT GetLibAttr( + [out] TLIBATTR **ppTLibAttr); + + [call_as(GetLibAttr)] + HRESULT RemoteGetLibAttr( + [out] LPTLIBATTR *ppTLibAttr, + [out] CLEANLOCALSTORAGE *pDummy); + + HRESULT GetTypeComp( + [out] ITypeComp **ppTComp); + + [local] + HRESULT GetDocumentation( + [in] INT index, + [out] BSTR *pBstrName, + [out] BSTR *pBstrDocString, + [out] DWORD *pdwHelpContext, + [out] BSTR *pBstrHelpFile); + + [call_as(GetDocumentation)] + HRESULT RemoteGetDocumentation( + [in] INT index, + [in] DWORD refPtrFlags, + [out] BSTR *pBstrName, + [out] BSTR *pBstrDocString, + [out] DWORD *pdwHelpContext, + [out] BSTR *pBstrHelpFile); + + [local] + HRESULT IsName( + [in, out] LPOLESTR szNameBuf, + [in] ULONG lHashVal, + [out] BOOL *pfName); + + [call_as(IsName)] + HRESULT RemoteIsName( + [in] LPOLESTR szNameBuf, + [in] ULONG lHashVal, + [out] BOOL *pfName, + [out] BSTR *pBstrLibName); + + [local] + HRESULT FindName( + [in, out] LPOLESTR szNameBuf, + [in] ULONG lHashVal, + [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo, + [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId, + [in, out] USHORT *pcFound); + + [call_as(FindName)] + HRESULT RemoteFindName( + [in] LPOLESTR szNameBuf, + [in] ULONG lHashVal, + [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo, + [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId, + [in, out] USHORT *pcFound, + [out] BSTR *pBstrLibName); + + [local] + void ReleaseTLibAttr( + [in] TLIBATTR *pTLibAttr); + + [call_as(ReleaseTLibAttr)] + HRESULT LocalReleaseTLibAttr(); +} + +[ + object, + uuid(00020411-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ITypeLib2 : ITypeLib +{ + typedef [unique] ITypeLib2 *LPTYPELIB2; + + HRESULT GetCustData( + [in] REFGUID guid, + [out] VARIANT *pVarVal); + + [local] + HRESULT GetLibStatistics( + [out] ULONG *pcUniqueNames, + [out] ULONG *pcchUniqueNames); + + [call_as(GetLibStatistics)] + HRESULT RemoteGetLibStatistics( + [out] ULONG *pcUniqueNames, + [out] ULONG *pcchUniqueNames); + + [local] + HRESULT GetDocumentation2( + [in] INT index, + [in] LCID lcid, + [out] BSTR *pbstrHelpString, + [out] DWORD *pdwHelpStringContext, + [out] BSTR *pbstrHelpStringDll); + + [call_as(GetDocumentation2)] + HRESULT RemoteGetDocumentation2( + [in] INT index, + [in] LCID lcid, + [in] DWORD refPtrFlags, + [out] BSTR *pbstrHelpString, + [out] DWORD *pdwHelpStringContext, + [out] BSTR *pbstrHelpStringDll); + + HRESULT GetAllCustData( + [out] CUSTDATA *pCustData); +} + +[ + local, + object, + uuid(00020410-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ITypeChangeEvents : IUnknown +{ + typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS; + + typedef enum tagCHANGEKIND { + CHANGEKIND_ADDMEMBER, + CHANGEKIND_DELETEMEMBER, + CHANGEKIND_SETNAMES, + CHANGEKIND_SETDOCUMENTATION, + CHANGEKIND_GENERAL, + CHANGEKIND_INVALIDATE, + CHANGEKIND_CHANGEFAILED, + CHANGEKIND_MAX + } CHANGEKIND; + + HRESULT RequestTypeChange( + [in] CHANGEKIND changeKind, + [in] ITypeInfo *pTInfoBefore, + [in] LPOLESTR pStrName, + [out] INT *pfCancel); + + HRESULT AfterTypeChange( + [in] CHANGEKIND changeKind, + [in] ITypeInfo *pTInfoAfter, + [in] LPOLESTR pStrName); +} + +[ + object, + uuid(1CF2B120-547D-101B-8E65-08002B2BD119), + pointer_default(unique) +] +interface IErrorInfo : IUnknown +{ + typedef [unique] IErrorInfo *LPERRORINFO; + + HRESULT GetGUID( + [out] GUID *pGUID); + + HRESULT GetSource( + [out] BSTR *pBstrSource); + + HRESULT GetDescription( + [out] BSTR *pBstrDescription); + + HRESULT GetHelpFile( + [out] BSTR *pBstrHelpFile); + + HRESULT GetHelpContext( + [out] DWORD *pdwHelpContext); +} + +[ + object, + uuid(22F03340-547D-101B-8E65-08002B2BD119), + pointer_default(unique) +] +interface ICreateErrorInfo : IUnknown +{ + typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO; + + HRESULT SetGUID( + [in] REFGUID rguid); + + HRESULT SetSource( + [in] LPOLESTR szSource); + + HRESULT SetDescription( + [in] LPOLESTR szDescription); + + HRESULT SetHelpFile( + [in] LPOLESTR szHelpFile); + + HRESULT SetHelpContext( + [in] DWORD dwHelpContext); +} + +[ + object, + uuid(DF0B3D60-548F-101B-8E65-08002B2BD119), + pointer_default(unique) +] +interface ISupportErrorInfo : IUnknown +{ + typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO; + + HRESULT InterfaceSupportsErrorInfo( + [in] REFIID riid); +} + +[ + object, + uuid(0000002E-0000-0000-C000-000000000046) +] +interface ITypeFactory : IUnknown +{ + HRESULT CreateFromTypeInfo( + [in] ITypeInfo *pTypeInfo, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppv); +} + +[ + local, + object, + uuid(0000002D-0000-0000-C000-000000000046) +] +interface ITypeMarshal : IUnknown +{ + HRESULT Size( + [in] PVOID pvType, + [in] DWORD dwDestContext, + [in] PVOID pvDestContext, + [out] ULONG *pSize); + + HRESULT Marshal( + [in] PVOID pvType, + [in] DWORD dwDestContext, + [in] PVOID pvDestContext, + [in] ULONG cbBufferLength, + [out] BYTE *pBuffer, + [out] ULONG *pcbWritten); + + HRESULT Unmarshal( + [out] PVOID pvType, + [in] DWORD dwFlags, + [in] ULONG cbBufferLength, + [in] BYTE *pBuffer, + [out] ULONG *pcbRead); + + HRESULT Free( + [in] PVOID pvType); +} + +[ + local, + object, + uuid(0000002F-0000-0000-C000-000000000046) +] +interface IRecordInfo : IUnknown +{ + typedef [unique] IRecordInfo *LPRECORDINFO; + + HRESULT RecordInit( + [out] PVOID pvNew); + + HRESULT RecordClear( + [in] PVOID pvExisting); + + HRESULT RecordCopy( + [in] PVOID pvExisting, + [out] PVOID pvNew); + + HRESULT GetGuid( + [out] GUID *pguid); + + HRESULT GetName( + [out] BSTR *pbstrName); + + HRESULT GetSize( + [out] ULONG *pcbSize); + + HRESULT GetTypeInfo( + [out] ITypeInfo **ppTypeInfo); + + HRESULT GetField( + [in] PVOID pvData, + [in] LPCOLESTR szFieldName, + [out] VARIANT *pvarField); + + HRESULT GetFieldNoCopy( + [in] PVOID pvData, + [in] LPCOLESTR szFieldName, + [out] VARIANT *pvarField, + [out] PVOID *ppvDataCArray); + + HRESULT PutField( + [in] ULONG wFlags, + [in, out] PVOID pvData, + [in] LPCOLESTR szFieldName, + [in] VARIANT *pvarField); + + HRESULT PutFieldNoCopy( + [in] ULONG wFlags, + [in, out] PVOID pvData, + [in] LPCOLESTR szFieldName, + [in] VARIANT *pvarField); + + HRESULT GetFieldNames( + [in, out] ULONG *pcNames, + [out, size_is(*pcNames), length_is(*pcNames)] BSTR *rgBstrNames); + + BOOL IsMatchingType( + [in] IRecordInfo *pRecordInfo); + + PVOID RecordCreate(); + + HRESULT RecordCreateCopy( + [in] PVOID pvSource, + [out] PVOID *ppvDest); + + HRESULT RecordDestroy( + [in] PVOID pvRecord); +} + +[ + local, + object, + uuid(00020405-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ICreateTypeInfo : IUnknown +{ + typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO; + + HRESULT SetGuid( + [in] REFGUID guid); + + HRESULT SetTypeFlags( + [in] UINT uTypeFlags); + + HRESULT SetDocString( + [in] LPOLESTR pStrDoc); + + HRESULT SetHelpContext( + [in] DWORD dwHelpContext); + + HRESULT SetVersion( + [in] WORD wMajorVerNum, + [in] WORD wMinorVerNum); + + HRESULT AddRefTypeInfo( + [in] ITypeInfo *pTInfo, + [in] HREFTYPE *phRefType); + + HRESULT AddFuncDesc( + [in] UINT index, + [in] FUNCDESC *pFuncDesc); + + HRESULT AddImplType( + [in] UINT index, + [in] HREFTYPE hRefType); + + HRESULT SetImplTypeFlags( + [in] UINT index, + [in] INT implTypeFlags); + + HRESULT SetAlignment( + [in] WORD cbAlignment); + + HRESULT SetSchema( + [in] LPOLESTR pStrSchema); + + HRESULT AddVarDesc( + [in] UINT index, + [in] VARDESC *pVarDesc); + + HRESULT SetFuncAndParamNames( + [in] UINT index, + [in, size_is(cNames)] LPOLESTR *rgszNames, + [in] UINT cNames); + + HRESULT SetVarName( + [in] UINT index, + [in] LPOLESTR szName); + + HRESULT SetTypeDescAlias( + [in] TYPEDESC *pTDescAlias); + + HRESULT DefineFuncAsDllEntry( + [in] UINT index, + [in] LPOLESTR szDllName, + [in] LPOLESTR szProcName); + + HRESULT SetFuncDocString( + [in] UINT index, + [in] LPOLESTR szDocString); + + HRESULT SetVarDocString( + [in] UINT index, + [in] LPOLESTR szDocString); + + HRESULT SetFuncHelpContext( + [in] UINT index, + [in] DWORD dwHelpContext); + + HRESULT SetVarHelpContext( + [in] UINT index, + [in] DWORD dwHelpContext); + + HRESULT SetMops( + [in] UINT index, + [in] BSTR bstrMops); + + HRESULT SetTypeIdldesc( + [in] IDLDESC * pIdlDesc); + + HRESULT LayOut(); +} + +[ + local, + object, + uuid(0002040E-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ICreateTypeInfo2 : ICreateTypeInfo +{ + typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2; + + HRESULT DeleteFuncDesc( + [in] UINT index); + + HRESULT DeleteFuncDescByMemId( + [in] MEMBERID memid, + [in] INVOKEKIND invKind); + + HRESULT DeleteVarDesc( + [in] UINT index); + + HRESULT DeleteVarDescByMemId( + [in] MEMBERID memid); + + HRESULT DeleteImplType( + [in] UINT index); + + HRESULT SetCustData( + [in] REFGUID guid, + [in] VARIANT *pVarVal); + + HRESULT SetFuncCustData( + [in] UINT index, + [in] REFGUID guid, + [in] VARIANT *pVarVal); + + HRESULT SetParamCustData( + [in] UINT indexFunc, + [in] UINT indexParam, + [in] REFGUID guid, + [in] VARIANT *pVarVal); + + HRESULT SetVarCustData( + [in] UINT index, + [in] REFGUID guid, + [in] VARIANT *pVarVal); + + HRESULT SetImplTypeCustData( + [in] UINT index, + [in] REFGUID guid, + [in] VARIANT *pVarVal); + + HRESULT SetHelpStringContext( + [in] ULONG dwHelpStringContext); + + HRESULT SetFuncHelpStringContext( + [in] UINT index, + [in] ULONG dwHelpStringContext); + + HRESULT SetVarHelpStringContext( + [in] UINT index, + [in] ULONG dwHelpStringContext); + + HRESULT Invalidate(); + + HRESULT SetName( + [in] LPOLESTR szName); +} + +[ + local, + object, + uuid(00020406-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ICreateTypeLib : IUnknown +{ + typedef [unique] ICreateTypeLib *LPCREATETYPELIB; + + HRESULT CreateTypeInfo( + [in] LPOLESTR szName, + [in] TYPEKIND tkind, + [out] ICreateTypeInfo **ppCTInfo); + + HRESULT SetName( + [in] LPOLESTR szName); + + HRESULT SetVersion( + [in] WORD wMajorVerNum, + [in] WORD wMinorVerNum); + + HRESULT SetGuid( + [in] REFGUID guid); + + HRESULT SetDocString( + [in] LPOLESTR szDoc); + + HRESULT SetHelpFileName( + [in] LPOLESTR szHelpFileName); + + HRESULT SetHelpContext( + [in] DWORD dwHelpContext); + + HRESULT SetLcid( + [in] LCID lcid); + + HRESULT SetLibFlags( + [in] UINT uLibFlags); + + HRESULT SaveAllChanges(); +} + +[ + local, + object, + uuid(0002040F-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ICreateTypeLib2 : ICreateTypeLib +{ + typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2; + + HRESULT DeleteTypeInfo( + [in] LPOLESTR szName); + + HRESULT SetCustData( + [in] REFGUID guid, + [in] VARIANT *pVarVal); + + HRESULT SetHelpStringContext( + [in] ULONG dwHelpStringContext); + + HRESULT SetHelpStringDll( + [in] LPOLESTR szFileName); +} + + +/***************************************************************************** + * IErrorLog interface + */ +[ + object, + uuid(3127ca40-446e-11ce-8135-00aa004bb851), + pointer_default(unique) +] +interface IErrorLog : IUnknown +{ + typedef IErrorLog *LPERRORLOG; + + HRESULT AddError( + [in] LPCOLESTR pszPropName, + [in] EXCEPINFO *pExcepInfo); +} + + +/***************************************************************************** + * IPropertyBag interface + */ +[ + object, + uuid(55272a00-42cb-11ce-8135-00aa004bb851), + pointer_default(unique) +] +interface IPropertyBag : IUnknown +{ + typedef IPropertyBag *LPPROPERTYBAG; + + [local] + HRESULT Read( + [in] LPCOLESTR pszPropName, + [in, out] VARIANT *pVar, + [in] IErrorLog *pErrorLog); + + [call_as(Read)] + HRESULT RemoteRead( + [in] LPCOLESTR pszPropName, + [out] VARIANT *pVar, + [in] IErrorLog *pErrorLog, + [in] DWORD varType, + [in] IUnknown *pUnkObj); + + HRESULT Write( + [in] LPCOLESTR pszPropName, + [in] VARIANT *pVar); +} diff --git a/reactos/include/psdk/objbase.h b/reactos/include/psdk/objbase.h index 306058fc5a0..4d94c0509cf 100644 --- a/reactos/include/psdk/objbase.h +++ b/reactos/include/psdk/objbase.h @@ -1,98 +1,500 @@ -/* Include here to prevent circular dependencies if windows.h - not already included */ +/* + * Copyright (C) 1998-1999 Francois Gouget + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + #include #include -#ifndef _OBJBASE_H -#define _OBJBASE_H -#if __GNUC__ >=3 -#pragma GCC system_header +#ifndef _OBJBASE_H_ +#define _OBJBASE_H_ + +/***************************************************************************** + * Macros to define a COM interface + */ +/* + * The goal of the following set of definitions is to provide a way to use the same + * header file definitions to provide both a C interface and a C++ object oriented + * interface to COM interfaces. The type of interface is selected automatically + * depending on the language but it is always possible to get the C interface in C++ + * by defining CINTERFACE. + * + * It is based on the following assumptions: + * - all COM interfaces derive from IUnknown, this should not be a problem. + * - the header file only defines the interface, the actual fields are defined + * separately in the C file implementing the interface. + * + * The natural approach to this problem would be to make sure we get a C++ class and + * virtual methods in C++ and a structure with a table of pointer to functions in C. + * Unfortunately the layout of the virtual table is compiler specific, the layout of + * g++ virtual tables is not the same as that of an egcs virtual table which is not the + * same as that generated by Visual C+. There are workarounds to make the virtual tables + * compatible via padding but unfortunately the one which is imposed to the WINE emulator + * by the Windows binaries, i.e. the Visual C++ one, is the most compact of all. + * + * So the solution I finally adopted does not use virtual tables. Instead I use inline + * non virtual methods that dereference the method pointer themselves and perform the call. + * + * Let's take Direct3D as an example: + * + * #define INTERFACE IDirect3D + * DECLARE_INTERFACE_(IDirect3D,IUnknown) + * { + * // *** IUnknown methods *** // + * STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID, void**) PURE; + * STDMETHOD_(ULONG,AddRef)(THIS) PURE; + * STDMETHOD_(ULONG,Release)(THIS) PURE; + * // *** IDirect3D methods *** // + * STDMETHOD(Initialize)(THIS_ REFIID) PURE; + * STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK, LPVOID) PURE; + * STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *, IUnknown *) PURE; + * STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL *, IUnknown *) PURE; + * STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT *, IUnknown *) PURE; + * STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT) PURE; + * }; + * #undef INTERFACE + * + * #ifdef COBJMACROS + * // *** IUnknown methods *** // + * #define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) + * #define IDirect3D_AddRef(p) (p)->lpVtbl->AddRef(p) + * #define IDirect3D_Release(p) (p)->lpVtbl->Release(p) + * // *** IDirect3D methods *** // + * #define IDirect3D_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) + * #define IDirect3D_EnumDevices(p,a,b) (p)->lpVtbl->EnumDevice(p,a,b) + * #define IDirect3D_CreateLight(p,a,b) (p)->lpVtbl->CreateLight(p,a,b) + * #define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b) + * #define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b) + * #define IDirect3D_FindDevice(p,a,b) (p)->lpVtbl->FindDevice(p,a,b) + * #endif + * + * Comments: + * - The INTERFACE macro is used in the STDMETHOD macros to define the type of the 'this' + * pointer. Defining this macro here saves us the trouble of having to repeat the interface + * name everywhere. Note however that because of the way macros work, a macro like STDMETHOD + * cannot use 'INTERFACE##_VTABLE' because this would give 'INTERFACE_VTABLE' and not + * 'IDirect3D_VTABLE'. + * - The DECLARE_INTERFACE declares all the structures necessary for the interface. We have to + * explicitly use the interface name for macro expansion reasons again. It defines the list of + * methods that are inheritable from this interface. It must be written manually (rather than + * using a macro to generate the equivalent code) to avoid macro recursion (which compilers + * don't like). It must start with the methods definition of the parent interface so that + * method inheritance works properly. + * - The 'undef INTERFACE' is here to remind you that using INTERFACE in the following macros + * will not work. + * - Finally the set of 'IDirect3D_Xxx' macros is a standard set of macros defined to ease access + * to the interface methods in C. Unfortunately I don't see any way to avoid having to duplicate + * the inherited method definitions there. This time I could have used a trick to use only one + * macro whatever the number of parameters but I preferred to have it work the same way as above. + * - You probably have noticed that we don't define the fields we need to actually implement this + * interface: reference count, pointer to other resources and miscellaneous fields. That's + * because these interfaces are just that: interfaces. They may be implemented more than once, in + * different contexts and sometimes not even in Wine. Thus it would not make sense to impose + * that the interface contains some specific fields. + * + * + * In C this gives: + * typedef struct IDirect3DVtbl IDirect3DVtbl; + * struct IDirect3D { + * IDirect3DVtbl* lpVtbl; + * }; + * struct IDirect3DVtbl { + * HRESULT (*QueryInterface)(IDirect3D* me, REFIID riid, LPVOID* ppvObj); + * ULONG (*AddRef)(IDirect3D* me); + * ULONG (*Release)(IDirect3D* me); + * HRESULT (*Initialize)(IDirect3D* me, REFIID a); + * HRESULT (*EnumDevices)(IDirect3D* me, LPD3DENUMDEVICESCALLBACK a, LPVOID b); + * HRESULT (*CreateLight)(IDirect3D* me, LPDIRECT3DLIGHT* a, IUnknown* b); + * HRESULT (*CreateMaterial)(IDirect3D* me, LPDIRECT3DMATERIAL* a, IUnknown* b); + * HRESULT (*CreateViewport)(IDirect3D* me, LPDIRECT3DVIEWPORT* a, IUnknown* b); + * HRESULT (*FindDevice)(IDirect3D* me, LPD3DFINDDEVICESEARCH a, LPD3DFINDDEVICERESULT b); + * }; + * + * #ifdef COBJMACROS + * // *** IUnknown methods *** // + * #define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) + * #define IDirect3D_AddRef(p) (p)->lpVtbl->AddRef(p) + * #define IDirect3D_Release(p) (p)->lpVtbl->Release(p) + * // *** IDirect3D methods *** // + * #define IDirect3D_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) + * #define IDirect3D_EnumDevices(p,a,b) (p)->lpVtbl->EnumDevice(p,a,b) + * #define IDirect3D_CreateLight(p,a,b) (p)->lpVtbl->CreateLight(p,a,b) + * #define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b) + * #define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b) + * #define IDirect3D_FindDevice(p,a,b) (p)->lpVtbl->FindDevice(p,a,b) + * #endif + * + * Comments: + * - IDirect3D only contains a pointer to the IDirect3D virtual/jump table. This is the only thing + * the user needs to know to use the interface. Of course the structure we will define to + * implement this interface will have more fields but the first one will match this pointer. + * - The code generated by DECLARE_INTERFACE defines both the structure representing the interface and + * the structure for the jump table. + * - Each method is declared as a pointer to function field in the jump table. The implementation + * will fill this jump table with appropriate values, probably using a static variable, and + * initialize the lpVtbl field to point to this variable. + * - The IDirect3D_Xxx macros then just derefence the lpVtbl pointer and use the function pointer + * corresponding to the macro name. This emulates the behavior of a virtual table and should be + * just as fast. + * - This C code should be quite compatible with the Windows headers both for code that uses COM + * interfaces and for code implementing a COM interface. + * + * + * And in C++ (with gcc's g++): + * + * typedef struct IDirect3D: public IUnknown { + * virtual HRESULT Initialize(REFIID a) = 0; + * virtual HRESULT EnumDevices(LPD3DENUMDEVICESCALLBACK a, LPVOID b) = 0; + * virtual HRESULT CreateLight(LPDIRECT3DLIGHT* a, IUnknown* b) = 0; + * virtual HRESULT CreateMaterial(LPDIRECT3DMATERIAL* a, IUnknown* b) = 0; + * virtual HRESULT CreateViewport(LPDIRECT3DVIEWPORT* a, IUnknown* b) = 0; + * virtual HRESULT FindDevice(LPD3DFINDDEVICESEARCH a, LPD3DFINDDEVICERESULT b) = 0; + * }; + * + * Comments: + * - Of course in C++ we use inheritance so that we don't have to duplicate the method definitions. + * - Finally there is no IDirect3D_Xxx macro. These are not needed in C++ unless the CINTERFACE + * macro is defined in which case we would not be here. + * + * + * Implementing a COM interface. + * + * This continues the above example. This example assumes that the implementation is in C. + * + * typedef struct IDirect3DImpl { + * void* lpVtbl; + * // ... + * + * } IDirect3DImpl; + * + * static IDirect3DVtbl d3dvt; + * + * // implement the IDirect3D methods here + * + * int IDirect3D_QueryInterface(IDirect3D* me) + * { + * IDirect3DImpl *This = (IDirect3DImpl *)me; + * // ... + * } + * + * // ... + * + * static IDirect3DVtbl d3dvt = { + * IDirect3D_QueryInterface, + * IDirect3D_Add, + * IDirect3D_Add2, + * IDirect3D_Initialize, + * IDirect3D_SetWidth + * }; + * + * Comments: + * - We first define what the interface really contains. This is the IDirect3DImpl structure. The + * first field must of course be the virtual table pointer. Everything else is free. + * - Then we predeclare our static virtual table variable, we will need its address in some + * methods to initialize the virtual table pointer of the returned interface objects. + * - Then we implement the interface methods. To match what has been declared in the header file + * they must take a pointer to an IDirect3D structure and we must cast it to an IDirect3DImpl so + * that we can manipulate the fields. + * - Finally we initialize the virtual table. + */ + +#if defined(__cplusplus) && !defined(CINTERFACE) + +/* C++ interface */ + +#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method +#define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method +#define STDMETHODV(method) virtual HRESULT STDMETHODVCALLTYPE method +#define STDMETHODV_(type,method) virtual type STDMETHODVCALLTYPE method + +#define PURE = 0 +#define THIS_ +#define THIS void + +#define interface struct +#define DECLARE_INTERFACE(iface) interface iface +#define DECLARE_INTERFACE_(iface,ibase) interface iface : public ibase + +#define BEGIN_INTERFACE +#define END_INTERFACE + +#else /* __cplusplus && !CINTERFACE */ + +/* C interface */ + +#define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE *method) +#define STDMETHOD_(type,method) type (STDMETHODCALLTYPE *method) +#define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE *method) +#define STDMETHODV_(type,method) type (STDMETHODVCALLTYPE *method) + +#define PURE +#define THIS_ INTERFACE *This, +#define THIS INTERFACE *This + +#define interface struct + +#ifdef __WINESRC__ +#define CONST_VTABLE #endif -#include -#pragma pack(push,8) +#ifdef CONST_VTABLE +#undef CONST_VTBL +#define CONST_VTBL const +#define DECLARE_INTERFACE(iface) \ + typedef interface iface { const struct iface##Vtbl *lpVtbl; } iface; \ + typedef struct iface##Vtbl iface##Vtbl; \ + struct iface##Vtbl +#else +#undef CONST_VTBL +#define CONST_VTBL +#define DECLARE_INTERFACE(iface) \ + typedef interface iface { struct iface##Vtbl *lpVtbl; } iface; \ + typedef struct iface##Vtbl iface##Vtbl; \ + struct iface##Vtbl +#endif +#define DECLARE_INTERFACE_(iface,ibase) DECLARE_INTERFACE(iface) + +#define BEGIN_INTERFACE +#define END_INTERFACE + +#endif /* __cplusplus && !CINTERFACE */ + +#ifndef __IRpcStubBuffer_FWD_DEFINED__ +#define __IRpcStubBuffer_FWD_DEFINED__ +typedef interface IRpcStubBuffer IRpcStubBuffer; +#endif +#ifndef __IRpcChannelBuffer_FWD_DEFINED__ +#define __IRpcChannelBuffer_FWD_DEFINED__ +typedef interface IRpcChannelBuffer IRpcChannelBuffer; +#endif + +#ifndef RC_INVOKED +/* For compatibility only, at least for now */ +#include +#endif -#define WINOLEAPI STDAPI -#define WINOLEAPI_(type) STDAPI_(type) -#define FARSTRUCT -#define HUGEP -#define LISet32(li,v) ((li).HighPart=(v)<0?-1:0,(li).LowPart=(v)) -#define ULISet32(li,v) ((li).HighPart=0,(li).LowPart=(v)) -#define CLSCTX_ALL (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER|CLSCTX_LOCAL_SERVER) -#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER) -#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER) -#define MARSHALINTERFACE_MIN 500 -#define CWCSTORAGENAME 32 -#define STGM_DIRECT 0 -#define STGM_TRANSACTED 0x10000L -#define STGM_SIMPLE 0x8000000L -#define STGM_READ 0 -#define STGM_WRITE 1 -#define STGM_READWRITE 2 -#define STGM_SHARE_DENY_NONE 0x40 -#define STGM_SHARE_DENY_READ 0x30 -#define STGM_SHARE_DENY_WRITE 0x20 -#define STGM_SHARE_EXCLUSIVE 0x10 -#define STGM_PRIORITY 0x40000L -#define STGM_DELETEONRELEASE 0x4000000 -#define STGM_NOSCRATCH 0x100000 -#define STGM_CREATE 0x1000 -#define STGM_CONVERT 0x20000 -#define STGM_NOSNAPSHOT 0x200000 -#define STGM_DIRECT_SWMR 0x400000 -#define STGM_FAILIFTHERE 0 -#define CWCSTORAGENAME 32 -#define ASYNC_MODE_COMPATIBILITY 1 -#define ASYNC_MODE_DEFAULT 0 -#define STGTY_REPEAT 256 -#define STG_TOEND 0xFFFFFFFF -#define STG_LAYOUT_SEQUENTIAL 0 -#define STG_LAYOUT_INTERLEAVED 1 -#define COM_RIGHTS_EXECUTE 1 -#define COM_RIGHTS_SAFE_FOR_SCRIPTING 2 -#define STGFMT_STORAGE 0 -#define STGFMT_FILE 3 -#define STGFMT_ANY 4 -#define STGFMT_DOCFILE 5 -typedef enum tagREGCLS { - REGCLS_SINGLEUSE = 0, - REGCLS_MULTIPLEUSE = 1, - REGCLS_MULTI_SEPARATE = 2 -} REGCLS; #include #include #include -#include + +#include +#ifndef INITGUID +#include +#endif #ifdef __cplusplus -inline BOOL IsEqualGUID(REFGUID rguid1, REFGUID rguid2) - { return !memcmp(&rguid1, &rguid2, sizeof(GUID)); } -inline BOOL operator==(const GUID& guidOne, const GUID& guidOther) - { return !memcmp(&guidOne,&guidOther,sizeof(GUID)); } -inline BOOL operator!=(const GUID& g1, const GUID& g2) - { return !(g1 == g2); } -#else -#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) +extern "C" { #endif -#define IsEqualIID(id1,id2) IsEqualGUID(id1,id2) -#define IsEqualCLSID(id1,id2) IsEqualGUID(id1,id2) -#include -typedef enum tagCOINIT { - COINIT_APARTMENTTHREADED = 0x2, - COINIT_MULTITHREADED = 0x0, - COINIT_DISABLE_OLE1DDE = 0x4, - COINIT_SPEED_OVER_MEMORY = 0x8 +#ifndef NONAMELESSSTRUCT +#define LISet32(li, v) ((li).HighPart = (v) < 0 ? -1 : 0, (li).LowPart = (v)) +#define ULISet32(li, v) ((li).HighPart = 0, (li).LowPart = (v)) +#else +#define LISet32(li, v) ((li).u.HighPart = (v) < 0 ? -1 : 0, (li).u.LowPart = (v)) +#define ULISet32(li, v) ((li).u.HighPart = 0, (li).u.LowPart = (v)) +#endif + +/***************************************************************************** + * Standard API + */ +DWORD WINAPI CoBuildVersion(void); + +typedef enum tagCOINIT +{ + COINIT_APARTMENTTHREADED = 0x2, /* Apartment model */ + COINIT_MULTITHREADED = 0x0, /* OLE calls objects on any thread */ + COINIT_DISABLE_OLE1DDE = 0x4, /* Don't use DDE for Ole1 support */ + COINIT_SPEED_OVER_MEMORY = 0x8 /* Trade memory for speed */ } COINIT; + +HRESULT WINAPI CoInitialize(LPVOID lpReserved); +HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit); +void WINAPI CoUninitialize(void); +DWORD WINAPI CoGetCurrentProcess(void); + +HINSTANCE WINAPI CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree); +void WINAPI CoFreeAllLibraries(void); +void WINAPI CoFreeLibrary(HINSTANCE hLibrary); +void WINAPI CoFreeUnusedLibraries(void); + +HRESULT WINAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv); +HRESULT WINAPI CoCreateInstanceEx(REFCLSID rclsid, + LPUNKNOWN pUnkOuter, + DWORD dwClsContext, + COSERVERINFO* pServerInfo, + ULONG cmq, + MULTI_QI* pResults); + +HRESULT WINAPI CoGetInstanceFromFile(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, DWORD grfMode, OLECHAR* pwszName, DWORD dwCount, MULTI_QI* pResults); +HRESULT WINAPI CoGetInstanceFromIStorage(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, IStorage* pstg, DWORD dwCount, MULTI_QI* pResults); + +HRESULT WINAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC* lpMalloc); +LPVOID WINAPI CoTaskMemAlloc(ULONG size); +void WINAPI CoTaskMemFree(LPVOID ptr); +LPVOID WINAPI CoTaskMemRealloc(LPVOID ptr, ULONG size); + +HRESULT WINAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy); +HRESULT WINAPI CoRevokeMallocSpy(void); + +/* class registration flags; passed to CoRegisterClassObject */ +typedef enum tagREGCLS +{ + REGCLS_SINGLEUSE = 0, + REGCLS_MULTIPLEUSE = 1, + REGCLS_MULTI_SEPARATE = 2, + REGCLS_SUSPENDED = 4, + REGCLS_SURROGATE = 8 +} REGCLS; + +HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID iid, LPVOID *ppv); +HRESULT WINAPI CoRegisterClassObject(REFCLSID rclsid,LPUNKNOWN pUnk,DWORD dwClsContext,DWORD flags,LPDWORD lpdwRegister); +HRESULT WINAPI CoRevokeClassObject(DWORD dwRegister); +HRESULT WINAPI CoGetPSClsid(REFIID riid,CLSID *pclsid); +HRESULT WINAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid); +HRESULT WINAPI CoRegisterSurrogate(LPSURROGATE pSurrogate); +HRESULT WINAPI CoSuspendClassObjects(void); +HRESULT WINAPI CoResumeClassObjects(void); +ULONG WINAPI CoAddRefServerProcess(void); +ULONG WINAPI CoReleaseServerProcess(void); + +/* marshalling */ +HRESULT WINAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter, LPUNKNOWN* ppunkMarshal); +HRESULT WINAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID iid, LPVOID* ppv); +HRESULT WINAPI CoGetMarshalSizeMax(ULONG* pulSize, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags); +HRESULT WINAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL* ppMarshal); +HRESULT WINAPI CoMarshalHresult(LPSTREAM pstm, HRESULT hresult); +HRESULT WINAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags); +HRESULT WINAPI CoMarshalInterThreadInterfaceInStream(REFIID riid, LPUNKNOWN pUnk, LPSTREAM* ppStm); +HRESULT WINAPI CoReleaseMarshalData(LPSTREAM pStm); +HRESULT WINAPI CoDisconnectObject(LPUNKNOWN lpUnk, DWORD reserved); +HRESULT WINAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT* phresult); +HRESULT WINAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID* ppv); +HRESULT WINAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases); +BOOL WINAPI CoIsHandlerConnected(LPUNKNOWN pUnk); + +/* security */ +HRESULT WINAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE* asAuthSvc, void* pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void* pReserved2, DWORD dwCapabilities, void* pReserved3); +HRESULT WINAPI CoGetCallContext(REFIID riid, void** ppInterface); +HRESULT WINAPI CoQueryAuthenticationServices(DWORD* pcAuthSvc, SOLE_AUTHENTICATION_SERVICE** asAuthSvc); + +HRESULT WINAPI CoQueryProxyBlanket(IUnknown* pProxy, DWORD* pwAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTH_IDENTITY_HANDLE* pAuthInfo, DWORD* pCapabilites); +HRESULT WINAPI CoSetProxyBlanket(IUnknown* pProxy, DWORD dwAuthnSvc, DWORD dwAuthzSvc, OLECHAR* pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel, RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities); +HRESULT WINAPI CoCopyProxy(IUnknown* pProxy, IUnknown** ppCopy); + +HRESULT WINAPI CoImpersonateClient(void); +HRESULT WINAPI CoQueryClientBlanket(DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTHZ_HANDLE* pPrivs, DWORD* pCapabilities); +HRESULT WINAPI CoRevertToSelf(void); + +/* misc */ +HRESULT WINAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew); +HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew); +HRESULT WINAPI CoAllowSetForegroundWindow(IUnknown *pUnk, LPVOID lpvReserved); +HRESULT WINAPI CoGetObjectContext(REFIID riid, LPVOID *ppv); + +HRESULT WINAPI CoCreateGuid(GUID* pguid); +BOOL WINAPI CoIsOle1Class(REFCLSID rclsid); + +BOOL WINAPI CoDosDateTimeToFileTime(WORD nDosDate, WORD nDosTime, FILETIME* lpFileTime); +BOOL WINAPI CoFileTimeToDosDateTime(FILETIME* lpFileTime, WORD* lpDosDate, WORD* lpDosTime); +HRESULT WINAPI CoFileTimeNow(FILETIME* lpFileTime); +HRESULT WINAPI CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter); +HRESULT WINAPI CoRegisterChannelHook(REFGUID ExtensionGuid, IChannelHook *pChannelHook); + typedef enum tagCOWAIT_FLAGS { - COWAIT_WAITALL = 0x01, - COWAIT_ALERTABLE = 0x02 + COWAIT_WAITALL = 0x00000001, + COWAIT_ALERTABLE = 0x00000002 } COWAIT_FLAGS; -typedef enum tagSTDMSHLFLAGS { - SMEXF_SERVER = 0x01, - SMEXF_HANDLER = 0x02 -} STDMSHLFLAGS; + +HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags,DWORD dwTimeout,ULONG cHandles,LPHANDLE pHandles,LPDWORD lpdwindex); + +/***************************************************************************** + * GUID API + */ +HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR*); +HRESULT WINAPI CLSIDFromString(LPOLESTR, CLSID *); +HRESULT WINAPI CLSIDFromProgID(LPCOLESTR progid, LPCLSID riid); +HRESULT WINAPI ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *lplpszProgID); + +INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax); + +/***************************************************************************** + * COM Server dll - exports + */ +HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID * ppv) DECLSPEC_HIDDEN; +HRESULT WINAPI DllCanUnloadNow(void) DECLSPEC_HIDDEN; + +/* shouldn't be here, but is nice for type checking */ +#ifdef __WINESRC__ +HRESULT WINAPI DllRegisterServer(void) DECLSPEC_HIDDEN; +HRESULT WINAPI DllUnregisterServer(void) DECLSPEC_HIDDEN; +#endif + + +/***************************************************************************** + * Data Object + */ +HRESULT WINAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER* ppDAHolder); +HRESULT WINAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid, REFIID iid, LPVOID* ppv); + +/***************************************************************************** + * Moniker API + */ +HRESULT WINAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID* ppvResult); +HRESULT WINAPI CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, void **ppv); +HRESULT WINAPI CreateAntiMoniker(LPMONIKER * ppmk); +HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC* ppbc); +HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, LPMONIKER* ppmk); +HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER* ppmk); +HRESULT WINAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER* ppmkComposite); +HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, LPMONIKER* ppmk); +HRESULT WINAPI CreateObjrefMoniker(LPUNKNOWN punk, LPMONIKER * ppmk); +HRESULT WINAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER * ppmk); +HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid); +HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot); +HRESULT WINAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szUserName, ULONG * pchEaten, LPMONIKER * ppmk); +HRESULT WINAPI MonikerCommonPrefixWith(IMoniker* pmkThis,IMoniker* pmkOther,IMoniker** ppmkCommon); +HRESULT WINAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER * ppmkRelPath, BOOL dwReserved); + +/***************************************************************************** + * Storage API + */ +#define STGM_DIRECT 0x00000000 +#define STGM_TRANSACTED 0x00010000 +#define STGM_SIMPLE 0x08000000 +#define STGM_READ 0x00000000 +#define STGM_WRITE 0x00000001 +#define STGM_READWRITE 0x00000002 +#define STGM_SHARE_DENY_NONE 0x00000040 +#define STGM_SHARE_DENY_READ 0x00000030 +#define STGM_SHARE_DENY_WRITE 0x00000020 +#define STGM_SHARE_EXCLUSIVE 0x00000010 +#define STGM_PRIORITY 0x00040000 +#define STGM_DELETEONRELEASE 0x04000000 +#define STGM_CREATE 0x00001000 +#define STGM_CONVERT 0x00020000 +#define STGM_FAILIFTHERE 0x00000000 +#define STGM_NOSCRATCH 0x00100000 +#define STGM_NOSNAPSHOT 0x00200000 +#define STGM_DIRECT_SWMR 0x00400000 + +#define STGFMT_STORAGE 0 +#define STGFMT_FILE 3 +#define STGFMT_ANY 4 +#define STGFMT_DOCFILE 5 typedef struct tagSTGOPTIONS { @@ -102,107 +504,34 @@ typedef struct tagSTGOPTIONS const WCHAR* pwcsTemplateFile; } STGOPTIONS; -WINOLEAPI_(DWORD) CoBuildVersion(void); -WINOLEAPI CoInitialize(PVOID); -WINOLEAPI CoInitializeEx(LPVOID,DWORD); -WINOLEAPI_(void) CoUninitialize(void); -WINOLEAPI CoGetMalloc(DWORD,LPMALLOC*); -WINOLEAPI_(DWORD) CoGetCurrentProcess(void); -WINOLEAPI CoRegisterMallocSpy(LPMALLOCSPY); -WINOLEAPI CoRevokeMallocSpy(void); -WINOLEAPI CoCreateStandardMalloc(DWORD,IMalloc**); -#ifdef DBG -WINOLEAPI_(ULONG) DebugCoGetRpcFault(void); -WINOLEAPI_(void) DebugCoSetRpcFault(ULONG); -#endif -WINOLEAPI CoGetClassObject(REFCLSID,DWORD,COSERVERINFO*,REFIID,PVOID*); -WINOLEAPI CoRegisterClassObject(REFCLSID,LPUNKNOWN,DWORD,DWORD,PDWORD); -WINOLEAPI CoRevokeClassObject(DWORD); -WINOLEAPI CoGetMarshalSizeMax(ULONG*,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD); -WINOLEAPI CoMarshalInterface(LPSTREAM,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD); -WINOLEAPI CoUnmarshalInterface(LPSTREAM,REFIID,PVOID*); -WINOLEAPI CoMarshalHresult(LPSTREAM,HRESULT); -WINOLEAPI CoUnmarshalHresult(LPSTREAM,HRESULT*); -WINOLEAPI CoReleaseMarshalData(LPSTREAM); -WINOLEAPI CoDisconnectObject(LPUNKNOWN,DWORD); -WINOLEAPI CoLockObjectExternal(LPUNKNOWN,BOOL,BOOL); -WINOLEAPI CoGetStandardMarshal(REFIID,LPUNKNOWN,DWORD,PVOID,DWORD,LPMARSHAL*); -WINOLEAPI CoGetStdMarshalEx(LPUNKNOWN,DWORD,LPUNKNOWN*); -WINOLEAPI_(BOOL) CoIsHandlerConnected(LPUNKNOWN); -WINOLEAPI_(BOOL) CoHasStrongExternalConnections(LPUNKNOWN); -WINOLEAPI CoMarshalInterThreadInterfaceInStream(REFIID,LPUNKNOWN,LPSTREAM*); -WINOLEAPI CoGetInterfaceAndReleaseStream(LPSTREAM,REFIID,PVOID*); -WINOLEAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN,LPUNKNOWN*); -WINOLEAPI_(HINSTANCE) CoLoadLibrary(LPOLESTR,BOOL); -WINOLEAPI_(void) CoFreeLibrary(HINSTANCE); -WINOLEAPI_(void) CoFreeAllLibraries(void); -WINOLEAPI_(void) CoFreeUnusedLibraries(void); -WINOLEAPI CoCreateInstance(REFCLSID,LPUNKNOWN,DWORD,REFIID,PVOID*); -WINOLEAPI CoCreateInstanceEx(REFCLSID,IUnknown*,DWORD,COSERVERINFO*,DWORD,MULTI_QI*); -WINOLEAPI StringFromCLSID(REFCLSID,LPOLESTR*); -WINOLEAPI CLSIDFromString(LPOLESTR,LPCLSID); -WINOLEAPI StringFromIID(REFIID,LPOLESTR*); -WINOLEAPI IIDFromString(LPOLESTR,LPIID); -WINOLEAPI_(BOOL) CoIsOle1Class(REFCLSID); -WINOLEAPI ProgIDFromCLSID(REFCLSID,LPOLESTR*); -WINOLEAPI CLSIDFromProgID(LPCOLESTR,LPCLSID); -WINOLEAPI_(int) StringFromGUID2(REFGUID,LPOLESTR,int); -WINOLEAPI CoCreateGuid(GUID*); -WINOLEAPI_(BOOL) CoFileTimeToDosDateTime(FILETIME*,LPWORD,LPWORD); -WINOLEAPI_(BOOL) CoDosDateTimeToFileTime(WORD,WORD,FILETIME*); -WINOLEAPI CoFileTimeNow(FILETIME*); -WINOLEAPI CoRegisterMessageFilter(LPMESSAGEFILTER,LPMESSAGEFILTER*); -WINOLEAPI CoGetTreatAsClass(REFCLSID,LPCLSID); -WINOLEAPI CoTreatAsClass(REFCLSID,REFCLSID); -typedef HRESULT (STDAPICALLTYPE *LPFNGETCLASSOBJECT)(REFCLSID,REFIID,PVOID*); -typedef HRESULT (STDAPICALLTYPE *LPFNCANUNLOADNOW)(void); -STDAPI DllGetClassObject(REFCLSID,REFIID,PVOID*); -STDAPI DllCanUnloadNow(void); -WINOLEAPI_(PVOID) CoTaskMemAlloc(ULONG); -WINOLEAPI_(PVOID) CoTaskMemRealloc(PVOID,ULONG); -WINOLEAPI_(void) CoTaskMemFree(PVOID); -WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*); -WINOLEAPI CreateDataCache(LPUNKNOWN,REFCLSID,REFIID,PVOID*); -WINOLEAPI StgCreateDocfile(const OLECHAR*,DWORD,DWORD,IStorage**); -WINOLEAPI StgCreateDocfileOnILockBytes(ILockBytes*,DWORD,DWORD,IStorage**); -WINOLEAPI StgCreateStorageEx(const WCHAR*,DWORD,DWORD,DWORD,STGOPTIONS*,void*,REFIID,void**); -WINOLEAPI StgOpenStorage(const OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**); -WINOLEAPI StgOpenStorageOnILockBytes(ILockBytes*,IStorage*,DWORD,SNB,DWORD,IStorage**); -WINOLEAPI StgIsStorageFile(const OLECHAR*); -WINOLEAPI StgIsStorageILockBytes(ILockBytes*); -WINOLEAPI StgSetTimes(OLECHAR const*,FILETIME const*,FILETIME const*,FILETIME const*); -WINOLEAPI BindMoniker(LPMONIKER,DWORD,REFIID,PVOID*); -WINOLEAPI CoGetObject(LPCWSTR,BIND_OPTS*,REFIID,void**); -WINOLEAPI MkParseDisplayName(LPBC,LPCOLESTR,ULONG*,LPMONIKER*); -WINOLEAPI MonikerRelativePathTo(LPMONIKER,LPMONIKER,LPMONIKER*,BOOL); -WINOLEAPI MonikerCommonPrefixWith(LPMONIKER,LPMONIKER,LPMONIKER*); -WINOLEAPI CreateBindCtx(DWORD,LPBC*); -WINOLEAPI CreateGenericComposite(LPMONIKER,LPMONIKER,LPMONIKER*); -WINOLEAPI GetClassFile (LPCOLESTR,CLSID*); -WINOLEAPI CreateFileMoniker(LPCOLESTR,LPMONIKER*); -WINOLEAPI CreateItemMoniker(LPCOLESTR,LPCOLESTR,LPMONIKER*); -WINOLEAPI CreateAntiMoniker(LPMONIKER*); -WINOLEAPI CreatePointerMoniker(LPUNKNOWN,LPMONIKER*); -WINOLEAPI GetRunningObjectTable(DWORD,LPRUNNINGOBJECTTABLE*); -WINOLEAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR,LONG,SOLE_AUTHENTICATION_SERVICE*, void*,DWORD,DWORD,void*,DWORD,void*); -WINOLEAPI CoGetCallContext(REFIID,void**); -WINOLEAPI CoQueryProxyBlanket(IUnknown*, DWORD*,DWORD*,OLECHAR**,DWORD*,DWORD*,RPC_AUTH_IDENTITY_HANDLE*,DWORD*); -WINOLEAPI CoSetProxyBlanket(IUnknown*,DWORD,DWORD,OLECHAR*,DWORD,DWORD,RPC_AUTH_IDENTITY_HANDLE, DWORD); -WINOLEAPI CoCopyProxy(IUnknown*,IUnknown**); -WINOLEAPI CoQueryClientBlanket(DWORD*,DWORD*,OLECHAR**, DWORD*,DWORD*,RPC_AUTHZ_HANDLE*,DWORD*); -WINOLEAPI CoImpersonateClient(void); -WINOLEAPI CoRevertToSelf(void); -WINOLEAPI CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**); -WINOLEAPI CoSwitchCallContext(IUnknown*,IUnknown**); -WINOLEAPI CoGetInstanceFromFile(COSERVERINFO*, CLSID*,IUnknown*,DWORD,DWORD,OLECHAR*,DWORD,MULTI_QI*); -WINOLEAPI CoGetInstanceFromIStorage(COSERVERINFO*,CLSID*, IUnknown*,DWORD,struct IStorage*, DWORD,MULTI_QI*); -WINOLEAPI_(ULONG) CoAddRefServerProcess(void); -WINOLEAPI_(ULONG) CoReleaseServerProcess(void); -WINOLEAPI CoResumeClassObjects(void); -WINOLEAPI CoSuspendClassObjects(void); -WINOLEAPI CoGetPSClsid(REFIID,CLSID*); -WINOLEAPI CoRegisterPSClsid(REFIID,REFCLSID); -WINOLEAPI CoWaitForMultipleHandles(DWORD dwFlags,DWORD dwTimeout,ULONG cHandles,const HANDLE* pHandles,LPDWORD lpdwindex); +HRESULT WINAPI StgCreateDocfile(LPCOLESTR pwcsName,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen); +HRESULT WINAPI StgCreateStorageEx(const WCHAR*,DWORD,DWORD,DWORD,STGOPTIONS*,void*,REFIID,void**); +HRESULT WINAPI StgIsStorageFile(LPCOLESTR fn); +HRESULT WINAPI StgIsStorageILockBytes(ILockBytes *plkbyt); +HRESULT WINAPI StgOpenStorage(const OLECHAR* pwcsName,IStorage* pstgPriority,DWORD grfMode,SNB snbExclude,DWORD reserved,IStorage**ppstgOpen); +HRESULT WINAPI StgOpenStorageEx(const WCHAR* pwcwName,DWORD grfMode,DWORD stgfmt,DWORD grfAttrs,STGOPTIONS *pStgOptions, void *reserved, REFIID riid, void **ppObjectOpen); -#pragma pack(pop) +HRESULT WINAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt,DWORD grfMode, DWORD reserved, IStorage** ppstgOpen); +HRESULT WINAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen); +HRESULT WINAPI StgSetTimes( OLECHAR const *lpszName, FILETIME const *pctime, FILETIME const *patime, FILETIME const *pmtime); + +#ifdef __cplusplus +} #endif + +#ifndef __WINESRC__ +# include +#endif +#include + +#ifndef __WINESRC__ + +#define FARSTRUCT +#define HUGEP + +#define WINOLEAPI STDAPI +#define WINOLEAPI_(type) STDAPI_(type) + +#endif /* __WINESRC__ */ + +#endif /* _OBJBASE_H_ */ diff --git a/reactos/include/psdk/objidl.h b/reactos/include/psdk/objidl.h deleted file mode 100644 index 3f070aed312..00000000000 --- a/reactos/include/psdk/objidl.h +++ /dev/null @@ -1,1730 +0,0 @@ -#ifndef _OBJIDL_H -#define _OBJIDL_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif - -#include - -typedef struct tagSTATSTG { - LPOLESTR pwcsName; - DWORD type; - ULARGE_INTEGER cbSize; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; - DWORD grfMode; - DWORD grfLocksSupported; - CLSID clsid; - DWORD grfStateBits; - DWORD reserved; -} STATSTG; -typedef enum tagSTGTY { - STGTY_STORAGE=1, - STGTY_STREAM, - STGTY_LOCKBYTES, - STGTY_PROPERTY -} STGTY; -typedef enum tagSTREAM_SEEK { - STREAM_SEEK_SET, - STREAM_SEEK_CUR, - STREAM_SEEK_END -} STREAM_SEEK; -typedef struct tagINTERFACEINFO { - LPUNKNOWN pUnk; - IID iid; - WORD wMethod; -} INTERFACEINFO,*LPINTERFACEINFO; -typedef enum tagCALLTYPE { - CALLTYPE_TOPLEVEL=1, - CALLTYPE_NESTED, - CALLTYPE_ASYNC, - CALLTYPE_TOPLEVEL_CALLPENDING, - CALLTYPE_ASYNC_CALLPENDING -} CALLTYPE; -typedef enum tagPENDINGTYPE { - PENDINGTYPE_TOPLEVEL=1, - PENDINGTYPE_NESTED -} PENDINGTYPE; -typedef enum tagPENDINGMSG { - PENDINGMSG_CANCELCALL=0, - PENDINGMSG_WAITNOPROCESS, - PENDINGMSG_WAITDEFPROCESS -} PENDINGMSG; -typedef OLECHAR **SNB; -typedef enum tagDATADIR { - DATADIR_GET=1, - DATADIR_SET -} DATADIR; -typedef WORD CLIPFORMAT,*LPCLIPFORMAT; -typedef struct tagDVTARGETDEVICE { - DWORD tdSize; - WORD tdDriverNameOffset; - WORD tdDeviceNameOffset; - WORD tdPortNameOffset; - WORD tdExtDevmodeOffset; - BYTE tdData[1]; -} DVTARGETDEVICE; -typedef struct tagFORMATETC { - CLIPFORMAT cfFormat; - DVTARGETDEVICE*ptd; - DWORD dwAspect; - LONG lindex; - DWORD tymed; -} FORMATETC,*LPFORMATETC; -typedef struct tagRemSTGMEDIUM { - DWORD tymed; - DWORD dwHandleType; - ULONG pData; - unsigned long pUnkForRelease; - unsigned long cbData; - BYTE data[1]; -} RemSTGMEDIUM; -typedef struct tagSTATDATA { - FORMATETC formatetc; - DWORD grfAdvf; - struct IAdviseSink *pAdvSink; - DWORD dwConnection; -} STATDATA; -typedef struct tagSTATPROPSETSTG { - FMTID fmtid; - CLSID clsid; - DWORD grfFlags; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; - DWORD dwOSVersion; -} STATPROPSETSTG; -typedef enum tagEXTCONN { - EXTCONN_STRONG=1, - EXTCONN_WEAK=2, - EXTCONN_CALLABLE=4 -} EXTCONN; -typedef struct tagMULTI_QI { - const IID *pIID; - IUnknown *pItf; - HRESULT hr; -} MULTI_QI; -typedef struct _AUTH_IDENTITY { - USHORT *User; - ULONG UserLength; - USHORT *Domain; - ULONG DomainLength; - USHORT *Password; - ULONG PasswordLength; - ULONG Flags; -} AUTH_IDENTITY; -typedef struct _COAUTHINFO{ - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - LPWSTR pwszServerPrincName; - DWORD dwAuthnLevel; - DWORD dwImpersonationLevel; - AUTH_IDENTITY *pAuthIdentityData; - DWORD dwCapabilities; -} COAUTHINFO; -typedef struct _COSERVERINFO { - DWORD dwReserved1; - LPWSTR pwszName; - COAUTHINFO *pAuthInfo; - DWORD dwReserved2; -} COSERVERINFO; -typedef struct tagBIND_OPTS { - DWORD cbStruct; - DWORD grfFlags; - DWORD grfMode; - DWORD dwTickCountDeadline; -} BIND_OPTS,*LPBIND_OPTS; -typedef struct tagBIND_OPTS2 { - DWORD cbStruct; - DWORD grfFlags; - DWORD grfMode; - DWORD dwTickCountDeadline; - DWORD dwTrackFlags; - DWORD dwClassContext; - LCID locale; - COSERVERINFO *pServerInfo; -} BIND_OPTS2,*LPBIND_OPTS2; -typedef enum tagBIND_FLAGS { - BIND_MAYBOTHERUSER=1, - BIND_JUSTTESTEXISTENCE -} BIND_FLAGS; -typedef struct tagSTGMEDIUM { - DWORD tymed; - _ANONYMOUS_UNION union { - HBITMAP hBitmap; - PVOID hMetaFilePict; - HENHMETAFILE hEnhMetaFile; - HGLOBAL hGlobal; - LPWSTR lpszFileName; - LPSTREAM pstm; - LPSTORAGE pstg; - } DUMMYUNIONNAME; - LPUNKNOWN pUnkForRelease; -} STGMEDIUM,*LPSTGMEDIUM; -typedef enum tagLOCKTYPE { - LOCK_WRITE=1, - LOCK_EXCLUSIVE=2, - LOCK_ONLYONCE=4 -} LOCKTYPE; -typedef unsigned long RPCOLEDATAREP; -typedef struct tagRPCOLEMESSAGE { - PVOID reserved1; - RPCOLEDATAREP dataRepresentation; - PVOID Buffer; - ULONG cbBuffer; - ULONG iMethod; - PVOID reserved2[5]; - ULONG rpcFlags; -} RPCOLEMESSAGE, *PRPCOLEMESSAGE; -typedef enum tagMKSYS { - MKSYS_NONE, - MKSYS_GENERICCOMPOSITE, - MKSYS_FILEMONIKER, - MKSYS_ANTIMONIKER, - MKSYS_ITEMMONIKER, - MKSYS_POINTERMONIKER -} MKSYS; -typedef enum tagMKREDUCE { - MKRREDUCE_ALL, - MKRREDUCE_ONE=196608, - MKRREDUCE_TOUSER=131072, - MKRREDUCE_THROUGHUSER=65536 -} MKRREDUCE; -typedef struct tagRemSNB { - unsigned long ulCntStr; - unsigned long ulCntChar; - OLECHAR rgString[1]; -} RemSNB; -typedef enum tagADVF { - ADVF_NODATA=1,ADVF_PRIMEFIRST=2,ADVF_ONLYONCE=4,ADVF_DATAONSTOP=64, - ADVFCACHE_NOHANDLER=8,ADVFCACHE_FORCEBUILTIN=16,ADVFCACHE_ONSAVE=32 -} ADVF; -typedef enum tagTYMED { - TYMED_HGLOBAL=1,TYMED_FILE=2,TYMED_ISTREAM=4,TYMED_ISTORAGE=8, - TYMED_GDI=16,TYMED_MFPICT=32,TYMED_ENHMF=64,TYMED_NULL=0 -} TYMED; -typedef enum tagSERVERCALL { - SERVERCALL_ISHANDLED,SERVERCALL_REJECTED,SERVERCALL_RETRYLATER -} SERVERCALL; -typedef struct tagCAUB { - ULONG cElems; - unsigned char *pElems; -}CAUB; -typedef struct tagCAI { - ULONG cElems; - short *pElems; -}CAI; -typedef struct tagCAUI { - ULONG cElems; - USHORT *pElems; -}CAUI; -typedef struct tagCAL { - ULONG cElems; - long *pElems; -}CAL; -typedef struct tagCAUL { - ULONG cElems; - ULONG *pElems; -}CAUL; -typedef struct tagCAFLT { - ULONG cElems; - float *pElems; -}CAFLT; -typedef struct tagCADBL { - ULONG cElems; - double *pElems; -}CADBL; -typedef struct tagCACY { - ULONG cElems; - CY *pElems; -}CACY; -typedef struct tagCADATE { - ULONG cElems; - DATE *pElems; -}CADATE; -typedef struct tagCABSTR { - ULONG cElems; - BSTR *pElems; -}CABSTR; -typedef struct tagCABSTRBLOB { - ULONG cElems; - BSTRBLOB *pElems; -}CABSTRBLOB; -typedef struct tagCABOOL { - ULONG cElems; - VARIANT_BOOL *pElems; -}CABOOL; -typedef struct tagCASCODE { - ULONG cElems; - SCODE *pElems; -}CASCODE; -typedef struct tagCAH { - ULONG cElems; - LARGE_INTEGER *pElems; -}CAH; -typedef struct tagCAUH { - ULONG cElems; - ULARGE_INTEGER *pElems; -}CAUH; -typedef struct tagCALPSTR { - ULONG cElems; - LPSTR *pElems; -}CALPSTR; -typedef struct tagCALPWSTR { - ULONG cElems; - LPWSTR *pElems; -}CALPWSTR; -typedef struct tagCAFILETIME { - ULONG cElems; - FILETIME *pElems; -}CAFILETIME; -typedef struct tagCACLIPDATA { - ULONG cElems; - CLIPDATA *pElems; -}CACLIPDATA; -typedef struct tagCACLSID { - ULONG cElems; - CLSID *pElems; -}CACLSID; -typedef struct tagPROPVARIANT *LPPROPVARIANT; -typedef struct tagCAPROPVARIANT { - ULONG cElems; - LPPROPVARIANT pElems; -}CAPROPVARIANT; -typedef struct tagPROPVARIANT { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - _ANONYMOUS_UNION union { - CHAR cVal; - UCHAR bVal; - short iVal; - USHORT uiVal; - VARIANT_BOOL boolVal; -#if 0 -/* bool is a standard type in C++, and a standard macro expanding - to the _Bool type in C99 (see stdbool.h) */ - _VARIANT_BOOL bool; -#endif - long lVal; - ULONG ulVal; - float fltVal; - SCODE scode; - LARGE_INTEGER hVal; - ULARGE_INTEGER uhVal; - double dblVal; - CY cyVal; - DATE date; - FILETIME filetime; - CLSID *puuid; - BLOB blob; - CLIPDATA *pclipdata; - LPSTREAM pStream; - LPSTORAGE pStorage; - BSTR bstrVal; - BSTRBLOB bstrblobVal; - LPSTR pszVal; - LPWSTR pwszVal; - CAUB caub; - CAI cai; - CAUI caui; - CABOOL cabool; - CAL cal; - CAUL caul; - CAFLT caflt; - CASCODE cascode; - CAH cah; - CAUH cauh; - CADBL cadbl; - CACY cacy; - CADATE cadate; - CAFILETIME cafiletime; - CACLSID cauuid; - CACLIPDATA caclipdata; - CABSTR cabstr; - CABSTRBLOB cabstrblob; - CALPSTR calpstr; - CALPWSTR calpwstr; - CAPROPVARIANT capropvar; - } DUMMYUNIONNAME; -} PROPVARIANT; -typedef struct tagPROPSPEC { - ULONG ulKind; - _ANONYMOUS_UNION union { - PROPID propid; - LPOLESTR lpwstr; - } DUMMYUNIONNAME; -}PROPSPEC; -typedef struct tagSTATPROPSTG { - LPOLESTR lpwstrName; - PROPID propid; - VARTYPE vt; -} STATPROPSTG; -typedef enum PROPSETFLAG { - PROPSETFLAG_DEFAULT,PROPSETFLAG_NONSIMPLE,PROPSETFLAG_ANSI, - PROPSETFLAG_UNBUFFERED=4 -} PROPSETFLAG; -typedef struct tagSTORAGELAYOUT { - DWORD LayoutType; - OLECHAR* pwcsElementName; - LARGE_INTEGER cOffset; - LARGE_INTEGER cBytes; -} STORAGELAYOUT; -typedef struct tagSOLE_AUTHENTICATION_SERVICE { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - OLECHAR *pPrincipalName; - HRESULT hr; -} SOLE_AUTHENTICATION_SERVICE; -#define COLE_DEFAULT_PRINCIPAL ( ( OLECHAR* )-1 ) -typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES { - EOAC_NONE = 0, - EOAC_MUTUAL_AUTH = 0x1, - EOAC_STATIC_CLOAKING = 0x20, - EOAC_DYNAMIC_CLOAKING = 0x40, - EOAC_ANY_AUTHORITY = 0x80, - EOAC_MAKE_FULLSIC = 0x100, - EOAC_DEFAULT = 0x800, - EOAC_SECURE_REFS = 0x2, - EOAC_ACCESS_CONTROL = 0x4, - EOAC_APPID = 0x8, - EOAC_DYNAMIC = 0x10, - EOAC_REQUIRE_FULLSIC = 0x200, - EOAC_AUTO_IMPERSONATE = 0x400, - EOAC_NO_CUSTOM_MARSHAL = 0x2000, - EOAC_DISABLE_AAA = 0x1000 -} EOLE_AUTHENTICATION_CAPABILITIES; -typedef struct tagSOLE_AUTHENTICATION_INFO { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - void* pAuthInfo; -} SOLE_AUTHENTICATION_INFO; -#define COLE_DEFAULT_AUTHINFO ( ( void* )-1 ) -typedef struct tagSOLE_AUTHENTICATION_LIST { - DWORD cAuthInfo; - SOLE_AUTHENTICATION_INFO* aAuthInfo; -} SOLE_AUTHENTICATION_LIST; - -EXTERN_C const FMTID FMTID_SummaryInformation; -EXTERN_C const FMTID FMTID_DocSummaryInformation; -EXTERN_C const FMTID FMTID_UserDefinedProperties; - -DECLARE_ENUMERATOR(FORMATETC); -DECLARE_ENUMERATOR(STATDATA); -DECLARE_ENUMERATOR(STATPROPSETSTG); -DECLARE_ENUMERATOR(STATPROPSTG); -DECLARE_ENUMERATOR(STATSTG); -DECLARE_ENUMERATOR_(IEnumString,LPOLESTR); -DECLARE_ENUMERATOR_(IEnumMoniker,interface IMoniker*); -DECLARE_ENUMERATOR_(IEnumUnknown,IUnknown*); - -EXTERN_C const IID IID_ISequentialStream; -#define INTERFACE ISequentialStream -DECLARE_INTERFACE_(ISequentialStream,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE; - STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IStream; -#define INTERFACE IStream -DECLARE_INTERFACE_(IStream,ISequentialStream) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE; - STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE; - STDMETHOD(Seek)(THIS_ LARGE_INTEGER,DWORD,ULARGE_INTEGER*) PURE; - STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE; - STDMETHOD(CopyTo)(THIS_ IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*) PURE; - STDMETHOD(Commit)(THIS_ DWORD) PURE; - STDMETHOD(Revert)(THIS) PURE; - STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; - STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; - STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE; - STDMETHOD(Clone)(THIS_ LPSTREAM*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMarshal; -#define INTERFACE IMarshal -DECLARE_INTERFACE_(IMarshal,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetUnmarshalClass) (THIS_ REFIID,PVOID,DWORD,PVOID,DWORD,CLSID*) PURE; - STDMETHOD(GetMarshalSizeMax) (THIS_ REFIID,PVOID,DWORD,PVOID,PDWORD,ULONG*) PURE; - STDMETHOD(MarshalInterface) (THIS_ IStream*,REFIID,PVOID,DWORD,PVOID,DWORD) PURE; - STDMETHOD(UnmarshalInterface) (THIS_ IStream*,REFIID,void**) PURE; - STDMETHOD(ReleaseMarshalData) (THIS_ IStream*) PURE; - STDMETHOD(DisconnectObject) (THIS_ DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IStdMarshalInfo; -#define INTERFACE IStdMarshalInfo -DECLARE_INTERFACE_(IStdMarshalInfo,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassForHandler)(THIS_ DWORD,PVOID,CLSID*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMalloc; -#define INTERFACE IMalloc -DECLARE_INTERFACE_(IMalloc,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(void*,Alloc)(THIS_ ULONG) PURE; - STDMETHOD_(void*,Realloc)(THIS_ void*,ULONG) PURE; - STDMETHOD_(void,Free)(THIS_ void*) PURE; - STDMETHOD_(ULONG,GetSize)(THIS_ void*) PURE; - STDMETHOD_(int,DidAlloc)(THIS_ void*) PURE; - STDMETHOD_(void,HeapMinimize)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMallocSpy; -#define INTERFACE IMallocSpy -DECLARE_INTERFACE_(IMallocSpy,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(ULONG,PreAlloc)(THIS_ ULONG) PURE; - STDMETHOD_(void*,PostAlloc)(THIS_ void*) PURE; - STDMETHOD_(void*,PreFree)(THIS_ void*,BOOL) PURE; - STDMETHOD_(void,PostFree)(THIS_ BOOL) PURE; - STDMETHOD_(ULONG,PreRealloc)(THIS_ void*,ULONG,void**,BOOL) PURE; - STDMETHOD_(void*,PostRealloc)(THIS_ void*,BOOL) PURE; - STDMETHOD_(void*,PreGetSize)(THIS_ void*,BOOL) PURE; - STDMETHOD_(ULONG,PostGetSize)(THIS_ ULONG,BOOL) PURE; - STDMETHOD_(void*,PreDidAlloc)(THIS_ void*,BOOL) PURE; - STDMETHOD_(int,PostDidAlloc)(THIS_ void*,BOOL,int) PURE; - STDMETHOD_(void,PreHeapMinimize)(THIS) PURE; - STDMETHOD_(void,PostHeapMinimize)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMessageFilter; -#define INTERFACE IMessageFilter -DECLARE_INTERFACE_(IMessageFilter,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(DWORD,HandleInComingCall)(THIS_ DWORD,HTASK,DWORD,LPINTERFACEINFO) PURE; - STDMETHOD_(DWORD,RetryRejectedCall)(THIS_ HTASK,DWORD,DWORD) PURE; - STDMETHOD_(DWORD,MessagePending)(THIS_ HTASK,DWORD,DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPersist; -#define INTERFACE IPersist -DECLARE_INTERFACE_(IPersist,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPersistStream; -#define INTERFACE IPersistStream -DECLARE_INTERFACE_(IPersistStream,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(Load)(THIS_ IStream*) PURE; - STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE; - STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRunningObjectTable; -#define INTERFACE IRunningObjectTable -DECLARE_INTERFACE_(IRunningObjectTable,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Register)(THIS_ DWORD,LPUNKNOWN,LPMONIKER,PDWORD) PURE; - STDMETHOD(Revoke)(THIS_ DWORD) PURE; - STDMETHOD(IsRunning)(THIS_ LPMONIKER) PURE; - STDMETHOD(GetObject)(THIS_ LPMONIKER,LPUNKNOWN*) PURE; - STDMETHOD(NoteChangeTime)(THIS_ DWORD,LPFILETIME) PURE; - STDMETHOD(GetTimeOfLastChange)(THIS_ LPMONIKER,LPFILETIME) PURE; - STDMETHOD(EnumRunning)(THIS_ IEnumMoniker**) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IBindCtx; -#define INTERFACE IBindCtx -DECLARE_INTERFACE_(IBindCtx,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(RegisterObjectBound)(THIS_ LPUNKNOWN) PURE; - STDMETHOD(RevokeObjectBound)(THIS_ LPUNKNOWN) PURE; - STDMETHOD(ReleaseBoundObjects)(THIS) PURE; - STDMETHOD(SetBindOptions)(THIS_ LPBIND_OPTS) PURE; - STDMETHOD(GetBindOptions)(THIS_ LPBIND_OPTS) PURE; - STDMETHOD(GetRunningObjectTable)(THIS_ IRunningObjectTable**) PURE; - STDMETHOD(RegisterObjectParam)(THIS_ LPOLESTR,IUnknown*) PURE; - STDMETHOD(GetObjectParam)(THIS_ LPOLESTR,IUnknown**) PURE; - STDMETHOD(EnumObjectParam)(THIS_ IEnumString**) PURE; - STDMETHOD(RevokeObjectParam)(THIS_ LPOLESTR) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMoniker; -#define INTERFACE IMoniker -DECLARE_INTERFACE_(IMoniker,IPersistStream) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(Load)(THIS_ IStream*) PURE; - STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE; - STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE; - STDMETHOD(BindToObject)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE; - STDMETHOD(BindToStorage)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE; - STDMETHOD(Reduce)(THIS_ IBindCtx*,DWORD,IMoniker**,IMoniker**) PURE; - STDMETHOD(ComposeWith)(THIS_ IMoniker*,BOOL,IMoniker**) PURE; - STDMETHOD(Enum)(THIS_ BOOL,IEnumMoniker**) PURE; - STDMETHOD(IsEqual)(THIS_ IMoniker*) PURE; - STDMETHOD(Hash)(THIS_ PDWORD) PURE; - STDMETHOD(IsRunning)(THIS_ IBindCtx*,IMoniker*,IMoniker*) PURE; - STDMETHOD(GetTimeOfLastChange)(THIS_ IBindCtx*,IMoniker*,LPFILETIME) PURE; - STDMETHOD(Inverse)(THIS_ IMoniker**) PURE; - STDMETHOD(CommonPrefixWith)(THIS_ IMoniker*,IMoniker**) PURE; - STDMETHOD(RelativePathTo)(THIS_ IMoniker*,IMoniker**) PURE; - STDMETHOD(GetDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR*) PURE; - STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR,ULONG*,IMoniker**) PURE; - STDMETHOD(IsSystemMoniker)(THIS_ PDWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPersistStorage; -#define INTERFACE IPersistStorage -DECLARE_INTERFACE_(IPersistStorage,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(InitNew)(THIS_ LPSTORAGE) PURE; - STDMETHOD(Load)(THIS_ LPSTORAGE) PURE; - STDMETHOD(Save)(THIS_ LPSTORAGE,BOOL) PURE; - STDMETHOD(SaveCompleted)(THIS_ LPSTORAGE) PURE; - STDMETHOD(HandsOffStorage)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPersistFile; -#define INTERFACE IPersistFile -DECLARE_INTERFACE_(IPersistFile,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(Load)(THIS_ LPCOLESTR,DWORD) PURE; - STDMETHOD(Save)(THIS_ LPCOLESTR,BOOL) PURE; - STDMETHOD(SaveCompleted)(THIS_ LPCOLESTR) PURE; - STDMETHOD(GetCurFile)(THIS_ LPOLESTR*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IAdviseSink; -#define INTERFACE IAdviseSink -DECLARE_INTERFACE_(IAdviseSink,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE; - STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE; - STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE; - STDMETHOD_(void,OnSave)(THIS) PURE; - STDMETHOD_(void,OnClose)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IAdviseSink2; -#define INTERFACE IAdviseSink2 -DECLARE_INTERFACE_(IAdviseSink2,IAdviseSink) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE; - STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE; - STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE; - STDMETHOD_(void,OnSave)(THIS) PURE; - STDMETHOD_(void,OnClose)(THIS) PURE; - STDMETHOD_(void,OnLinkSrcChange)(THIS_ IMoniker*); -}; -#undef INTERFACE - -EXTERN_C const IID IID_IDataObject; -#define INTERFACE IDataObject -DECLARE_INTERFACE_(IDataObject,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetData)(THIS_ FORMATETC*,STGMEDIUM*) PURE; - STDMETHOD(GetDataHere)(THIS_ FORMATETC*,STGMEDIUM*) PURE; - STDMETHOD(QueryGetData)(THIS_ FORMATETC*) PURE; - STDMETHOD(GetCanonicalFormatEtc)(THIS_ FORMATETC*,FORMATETC*) PURE; - STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE; - STDMETHOD(EnumFormatEtc)(THIS_ DWORD,IEnumFORMATETC**) PURE; - STDMETHOD(DAdvise)(THIS_ FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE; - STDMETHOD(DUnadvise)(THIS_ DWORD) PURE; - STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IDataAdviseHolder; -#define INTERFACE IDataAdviseHolder -DECLARE_INTERFACE_(IDataAdviseHolder,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Advise)(THIS_ IDataObject*,FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE; - STDMETHOD(Unadvise)(THIS_ DWORD) PURE; - STDMETHOD(EnumAdvise)(THIS_ IEnumSTATDATA**) PURE; - STDMETHOD(SendOnDataChange)(THIS_ IDataObject*,DWORD,DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IStorage; -#define INTERFACE IStorage -DECLARE_INTERFACE_(IStorage,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CreateStream)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStream**) PURE; - STDMETHOD(OpenStream)(THIS_ LPCWSTR,PVOID,DWORD,DWORD,IStream**) PURE; - STDMETHOD(CreateStorage)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStorage**) PURE; - STDMETHOD(OpenStorage)(THIS_ LPCWSTR,IStorage*,DWORD,SNB,DWORD,IStorage**) PURE; - STDMETHOD(CopyTo)(THIS_ DWORD,IID const*,SNB,IStorage*) PURE; - STDMETHOD(MoveElementTo)(THIS_ LPCWSTR,IStorage*,LPCWSTR,DWORD) PURE; - STDMETHOD(Commit)(THIS_ DWORD) PURE; - STDMETHOD(Revert)(THIS) PURE; - STDMETHOD(EnumElements)(THIS_ DWORD,PVOID,DWORD,IEnumSTATSTG**) PURE; - STDMETHOD(DestroyElement)(THIS_ LPCWSTR) PURE; - STDMETHOD(RenameElement)(THIS_ LPCWSTR,LPCWSTR) PURE; - STDMETHOD(SetElementTimes)(THIS_ LPCWSTR,FILETIME const*,FILETIME const*,FILETIME const*) PURE; - STDMETHOD(SetClass)(THIS_ REFCLSID) PURE; - STDMETHOD(SetStateBits)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRootStorage; -#define INTERFACE IRootStorage -DECLARE_INTERFACE_(IRootStorage,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SwitchToFile)(THIS_ LPOLESTR) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRpcChannelBuffer; -#define INTERFACE IRpcChannelBuffer -DECLARE_INTERFACE_(IRpcChannelBuffer,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetBuffer)(THIS_ RPCOLEMESSAGE*,REFIID) PURE; - STDMETHOD(SendReceive)(THIS_ RPCOLEMESSAGE*,PULONG) PURE; - STDMETHOD(FreeBuffer)(THIS_ RPCOLEMESSAGE*) PURE; - STDMETHOD(GetDestCtx)(THIS_ PDWORD,PVOID*) PURE; - STDMETHOD(IsConnected)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRpcProxyBuffer; -#define INTERFACE IRpcProxyBuffer -DECLARE_INTERFACE_(IRpcProxyBuffer,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Connect)(THIS_ IRpcChannelBuffer*) PURE; - STDMETHOD_(void,Disconnect)(THIS) PURE; - -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRpcStubBuffer; -#define INTERFACE IRpcStubBuffer -DECLARE_INTERFACE_(IRpcStubBuffer,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Connect)(THIS_ LPUNKNOWN) PURE; - STDMETHOD_(void,Disconnect)(THIS) PURE; - STDMETHOD(Invoke)(THIS_ RPCOLEMESSAGE*,LPRPCCHANNELBUFFER) PURE; - STDMETHOD_(LPRPCSTUBBUFFER,IsIIDSupported)(THIS_ REFIID) PURE; - STDMETHOD_(ULONG,CountRefs)(THIS) PURE; - STDMETHOD(DebugServerQueryInterface)(THIS_ PVOID*) PURE; - STDMETHOD_(VOID,DebugServerRelease)(THIS_ PVOID) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPSFactoryBuffer; -#define INTERFACE IPSFactoryBuffer -DECLARE_INTERFACE_(IPSFactoryBuffer,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CreateProxy)(THIS_ LPUNKNOWN,REFIID,LPRPCPROXYBUFFER*,PVOID*) PURE; - STDMETHOD(CreateStub)(THIS_ REFIID,LPUNKNOWN,LPRPCSTUBBUFFER*) PURE; -}; -#undef INTERFACE -typedef interface IPSFactoryBuffer *LPPSFACTORYBUFFER; - -EXTERN_C const IID IID_ILockBytes; -#define INTERFACE ILockBytes -DECLARE_INTERFACE_(ILockBytes,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ReadAt)(THIS_ ULARGE_INTEGER,PVOID,ULONG,ULONG*) PURE; - STDMETHOD(WriteAt)(THIS_ ULARGE_INTEGER,PCVOID,ULONG,ULONG*) PURE; - STDMETHOD(Flush)(THIS) PURE; - STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE; - STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; - STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; - STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IExternalConnection; -#define INTERFACE IExternalConnection -DECLARE_INTERFACE_(IExternalConnection,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(AddConnection)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(ReleaseConnection)(THIS_ DWORD,DWORD,BOOL) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRunnableObject; -#define INTERFACE IRunnableObject -DECLARE_INTERFACE_(IRunnableObject,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetRunningClass)(THIS_ LPCLSID) PURE; - STDMETHOD(Run)(THIS_ LPBC) PURE; - STDMETHOD_(BOOL,IsRunning)(THIS) PURE; - STDMETHOD(LockRunning)(THIS_ BOOL,BOOL) PURE; - STDMETHOD(SetContainedObject)(THIS_ BOOL) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IROTData; -#define INTERFACE IROTData -DECLARE_INTERFACE_(IROTData,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetComparisonData)(THIS_ PBYTE,ULONG,PULONG) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IChannelHook; -#define INTERFACE IChannelHook -DECLARE_INTERFACE_(IChannelHook,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(void,ClientGetSize)(THIS_ REFGUID,REFIID,PULONG) PURE; - STDMETHOD_(void,ClientFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID) PURE; - STDMETHOD_(void,ClientNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD,HRESULT) PURE; - STDMETHOD_(void,ServerNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD) PURE; - STDMETHOD_(void,ServerGetSize)(THIS_ REFGUID,REFIID,HRESULT,PULONG) PURE; - STDMETHOD_(void,ServerFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID,HRESULT) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPropertyStorage; -#define INTERFACE IPropertyStorage -DECLARE_INTERFACE_(IPropertyStorage,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ReadMultiple)(THIS_ ULONG,PROPSPEC const*,PROPVARIANT*) PURE; - STDMETHOD(WriteMultiple)(THIS_ ULONG,PROPSPEC const*,PROPVARIANT*,PROPID) PURE; - STDMETHOD(DeleteMultiple)(THIS_ ULONG,PROPSPEC const*) PURE; - STDMETHOD(ReadPropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR*) PURE; - STDMETHOD(WritePropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR const*) PURE; - STDMETHOD(DeletePropertyNames)(THIS_ ULONG,PROPID const*) PURE; - STDMETHOD(Commit)(THIS_ DWORD) PURE; - STDMETHOD(Revert)(THIS) PURE; - STDMETHOD(Enum)(THIS_ IEnumSTATPROPSTG**) PURE; - STDMETHOD(SetTimes)(THIS_ FILETIME const*,FILETIME const*,FILETIME const*) PURE; - STDMETHOD(SetClass)(THIS_ REFCLSID) PURE; - STDMETHOD(Stat)(THIS_ STATPROPSETSTG*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPropertySetStorage; -#define INTERFACE IPropertySetStorage -DECLARE_INTERFACE_(IPropertySetStorage,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Create)(THIS_ REFFMTID,CLSID*,DWORD,DWORD,LPPROPERTYSTORAGE*) PURE; - STDMETHOD(Open)(THIS_ REFFMTID,DWORD,LPPROPERTYSTORAGE*) PURE; - STDMETHOD(Delete)(THIS_ REFFMTID) PURE; - STDMETHOD(Enum)(THIS_ IEnumSTATPROPSETSTG**) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IClientSecurity; -#define INTERFACE IClientSecurity -DECLARE_INTERFACE_(IClientSecurity,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(QueryBlanket)(THIS_ PVOID,PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTH_IDENTITY_HANDLE**,PDWORD*) PURE; - STDMETHOD(SetBlanket)(THIS_ PVOID,DWORD,DWORD,LPWSTR,DWORD,DWORD,RPC_AUTH_IDENTITY_HANDLE*,DWORD) PURE; - STDMETHOD(CopyProxy)(THIS_ LPUNKNOWN,LPUNKNOWN*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IServerSecurity; -#define INTERFACE IServerSecurity -DECLARE_INTERFACE_(IServerSecurity,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(QueryBlanket)(THIS_ PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTHZ_HANDLE*,PDWORD*) PURE; - STDMETHOD(ImpersonateClient)(THIS) PURE; - STDMETHOD(RevertToSelf)(THIS) PURE; - STDMETHOD(IsImpersonating)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IClassActivator; -#define INTERFACE IClassActivator -DECLARE_INTERFACE_(IClassActivator,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassObject)(THIS_ REFCLSID,DWORD,LCID,REFIID,PVOID*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IFillLockBytes; -#define INTERFACE IFillLockBytes -DECLARE_INTERFACE_(IFillLockBytes,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(FillAppend)(THIS_ void const*,ULONG,PULONG) PURE; - STDMETHOD(FillAt)(THIS_ ULARGE_INTEGER,void const*,ULONG,PULONG) PURE; - STDMETHOD(SetFillSize)(THIS_ ULARGE_INTEGER) PURE; - STDMETHOD(Terminate)(THIS_ BOOL) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IProgressNotify; -#define INTERFACE IProgressNotify -DECLARE_INTERFACE_(IProgressNotify,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(OnProgress)(THIS_ DWORD,DWORD,BOOL,BOOL) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_ILayoutStorage; -#define INTERFACE ILayoutStorage -DECLARE_INTERFACE_(ILayoutStorage,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(LayoutScript)(THIS_ STORAGELAYOUT*,DWORD,DWORD) PURE; - STDMETHOD(BeginMonitor)(THIS) PURE; - STDMETHOD(EndMonitor)(THIS) PURE; - STDMETHOD(ReLayoutDocfile)(THIS_ OLECHAR*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IGlobalInterfaceTable; -#define INTERFACE IGlobalInterfaceTable -DECLARE_INTERFACE_(IGlobalInterfaceTable,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(RegisterInterfaceInGlobal)(THIS_ IUnknown*,REFIID,DWORD*) PURE; - STDMETHOD(RevokeInterfaceFromGlobal)(THIS_ DWORD) PURE; - STDMETHOD(GetInterfaceFromGlobal)(THIS_ DWORD,REFIID,void**) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IGlobalInterfaceTable_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IGlobalInterfaceTable_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IGlobalInterfaceTable_Release(T) (T)->lpVtbl->Release(T) -#define IGlobalInterfaceTable_RegisterInterfaceInGlobal(T,a,b,c) (T)->lpVtbl->RegisterInterfaceInGlobal(T,a,b,c) -#define IGlobalInterfaceTable_RevokeInterfaceFromGlobal(T,a) (T)->lpVtbl->RevokeInterfaceFromGlobal(T,a) -#define IGlobalInterfaceTable_GetInterfaceFromGlobal(T,a,b,c) (T)->lpVtbl->GetInterfaceFromGlobal(T,a,b,c) -#endif - -HRESULT STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,CLSID*); -void STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,DWORD*); -void STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_MarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void*,DWORD,void*,DWORD); -void STDMETHODCALLTYPE IMarshal_MarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void**); -void STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Proxy(IMarshal*,IStream*); -void STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_DisconnectObject_Proxy(IMarshal*,DWORD); -void STDMETHODCALLTYPE IMarshal_DisconnectObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMalloc_Alloc_Proxy(IMalloc*,ULONG); -void STDMETHODCALLTYPE IMalloc_Alloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMalloc_Realloc_Proxy(IMalloc*,void*,ULONG); -void STDMETHODCALLTYPE IMalloc_Realloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMalloc_Free_Proxy(IMalloc*,void*); -void STDMETHODCALLTYPE IMalloc_Free_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IMalloc_GetSize_Proxy(IMalloc*,void*); -void STDMETHODCALLTYPE IMalloc_GetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -int STDMETHODCALLTYPE IMalloc_DidAlloc_Proxy(IMalloc*,void*); -void STDMETHODCALLTYPE IMalloc_DidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMalloc_HeapMinimize_Proxy(IMalloc*); -void STDMETHODCALLTYPE IMalloc_HeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IMallocSpy_PreAlloc_Proxy(IMallocSpy*,ULONG cbRequest); -void STDMETHODCALLTYPE IMallocSpy_PreAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PostAlloc_Proxy(IMallocSpy*,void*); -void STDMETHODCALLTYPE IMallocSpy_PostAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PreFree_Proxy(IMallocSpy*,void*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PreFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMallocSpy_PostFree_Proxy(IMallocSpy*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PostFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IMallocSpy_PreRealloc_Proxy(IMallocSpy*,void*,ULONG,void**,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PreRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PostRealloc_Proxy(IMallocSpy*,void*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PostRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PreGetSize_Proxy(IMallocSpy*,void*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PreGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IMallocSpy_PostGetSize_Proxy(IMallocSpy*,ULONG,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PostGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Proxy(IMallocSpy*,void*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -int STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Proxy(IMallocSpy*,void*,BOOL,int); -void STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy* ); -void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy*); -void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo*,DWORD,void*,CLSID*); -void STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IExternalConnection_AddConnection_Proxy(IExternalConnection*,DWORD,DWORD); -void STDMETHODCALLTYPE IExternalConnection_AddConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Proxy(IExternalConnection*,DWORD,DWORD,BOOL); -void STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*); -void STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Skip_Proxy(IEnumUnknown*,ULONG); -void STDMETHODCALLTYPE IEnumUnknown_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Reset_Proxy(IEnumUnknown* ); -void STDMETHODCALLTYPE IEnumUnknown_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Clone_Proxy(IEnumUnknown*,IEnumUnknown**); -void STDMETHODCALLTYPE IEnumUnknown_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Proxy(IBindCtx*,IUnknown*punk); -void STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*_pRpcChannelBuffer,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Proxy(IBindCtx*,IUnknown*punk); -void STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx*); -void STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_SetBindOptions_Proxy(IBindCtx*,BIND_OPTS*); -void STDMETHODCALLTYPE IBindCtx_SetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_GetBindOptions_Proxy(IBindCtx*,BIND_OPTS*pbindopts); -void STDMETHODCALLTYPE IBindCtx_GetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Proxy(IBindCtx*,IRunningObjectTable**); -void STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown*); -void STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_GetObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown**); -void STDMETHODCALLTYPE IBindCtx_GetObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Proxy(IBindCtx*,IEnumString**); -void STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Proxy(IBindCtx*,LPCSTR); -void STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*); -void STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Skip_Proxy(IEnumMoniker*,ULONG); -void STDMETHODCALLTYPE IEnumMoniker_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Reset_Proxy(IEnumMoniker*); -void STDMETHODCALLTYPE IEnumMoniker_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Clone_Proxy(IEnumMoniker*,IEnumMoniker**); -void STDMETHODCALLTYPE IEnumMoniker_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Proxy(IRunnableObject*,LPCLSID); -void STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunnableObject_Run_Proxy(IRunnableObject*,LPBINDCTX); -void STDMETHODCALLTYPE IRunnableObject_Run_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -BOOL STDMETHODCALLTYPE IRunnableObject_IsRunning_Proxy(IRunnableObject*); -void STDMETHODCALLTYPE IRunnableObject_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunnableObject_LockRunning_Proxy(IRunnableObject*,BOOL,BOOL); -void STDMETHODCALLTYPE IRunnableObject_LockRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Proxy(IRunnableObject*,BOOL); -void STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_Register_Proxy(IRunningObjectTable*,DWORD,IUnknown*,IMoniker*,DWORD*); -void STDMETHODCALLTYPE IRunningObjectTable_Register_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_Revoke_Proxy(IRunningObjectTable*,DWORD); -void STDMETHODCALLTYPE IRunningObjectTable_Revoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable*,IMoniker*); -void STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetObject_Proxy(IRunningObjectTable*,IMoniker*,IUnknown**); -void STDMETHODCALLTYPE IRunningObjectTable_GetObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable*,DWORD,FILETIME*); -void STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable*,IMoniker*,FILETIME*); -void STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable*,IEnumMoniker**); -void STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersist_GetClassID_Proxy(IPersist*,CLSID*); -void STDMETHODCALLTYPE IPersist_GetClassID_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStream_IsDirty_Proxy(IPersistStream*); -void STDMETHODCALLTYPE IPersistStream_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStream_Load_Proxy(IPersistStream*,IStream*); -void STDMETHODCALLTYPE IPersistStream_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStream_Save_Proxy(IPersistStream*,IStream*,BOOL); -void STDMETHODCALLTYPE IPersistStream_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStream_GetSizeMax_Proxy(IPersistStream*,ULARGE_INTEGER*); -void STDMETHODCALLTYPE IPersistStream_GetSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); -void STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); -void STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_Reduce_Proxy(IMoniker*,IBindCtx*,DWORD,IMoniker**,IMoniker**); -void STDMETHODCALLTYPE IMoniker_Reduce_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_ComposeWith_Proxy(IMoniker*,IMoniker*,BOOL,IMoniker**); -void STDMETHODCALLTYPE IMoniker_ComposeWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_Enum_Proxy(IMoniker*,BOOL,IEnumMoniker**); -void STDMETHODCALLTYPE IMoniker_Enum_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_IsEqual_Proxy(IMoniker*,IMoniker*); -void STDMETHODCALLTYPE IMoniker_IsEqual_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_Hash_Proxy(IMoniker*,DWORD*); -void STDMETHODCALLTYPE IMoniker_Hash_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_IsRunning_Proxy(IMoniker*,IBindCtx*,IMoniker*,IMoniker*); -void STDMETHODCALLTYPE IMoniker_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Proxy(IMoniker*,IBindCtx*,IMoniker*,FILETIME*); -void STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_Inverse_Proxy(IMoniker*,IMoniker**); -void STDMETHODCALLTYPE IMoniker_Inverse_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Proxy(IMoniker*,IMoniker*,IMoniker**); -void STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_RelativePathTo_Proxy(IMoniker*,IMoniker*,IMoniker**); -void STDMETHODCALLTYPE IMoniker_RelativePathTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_GetDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR*); -void STDMETHODCALLTYPE IMoniker_GetDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_ParseDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR,ULONG*,IMoniker**); -void STDMETHODCALLTYPE IMoniker_ParseDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Proxy(IMoniker*,DWORD*); -void STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IROTData_GetComparisonData_Proxy(IROTData*,BYTE*,ULONG cbMax,ULONG*); -void STDMETHODCALLTYPE IROTData_GetComparisonData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumString_RemoteNext_Proxy(IEnumString*,ULONG,LPCSTR*rgelt,ULONG*); -void STDMETHODCALLTYPE IEnumString_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumString_Skip_Proxy(IEnumString*,ULONG); -void STDMETHODCALLTYPE IEnumString_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumString_Reset_Proxy(IEnumString*); -void STDMETHODCALLTYPE IEnumString_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumString_Clone_Proxy(IEnumString*,IEnumString**); -void STDMETHODCALLTYPE IEnumString_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_RemoteRead_Proxy(IStream*,BYTE*,ULONG,ULONG*); -void STDMETHODCALLTYPE IStream_RemoteRead_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_RemoteWrite_Proxy(IStream*,BYTE*pv,ULONG,ULONG*); -void STDMETHODCALLTYPE IStream_RemoteWrite_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_RemoteSeek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*); -void STDMETHODCALLTYPE IStream_RemoteSeek_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_SetSize_Proxy(IStream*,ULARGE_INTEGER); -void STDMETHODCALLTYPE IStream_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_RemoteCopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*); -void STDMETHODCALLTYPE IStream_RemoteCopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_Commit_Proxy(IStream*,DWORD); -void STDMETHODCALLTYPE IStream_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_Revert_Proxy(IStream*); -void STDMETHODCALLTYPE IStream_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_LockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); -void STDMETHODCALLTYPE IStream_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_UnlockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); -void STDMETHODCALLTYPE IStream_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_Stat_Proxy(IStream*,STATSTG*,DWORD); -void STDMETHODCALLTYPE IStream_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_Clone_Proxy(IStream*,IStream**); -void STDMETHODCALLTYPE IStream_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*); -void STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG*,ULONG celt); -void STDMETHODCALLTYPE IEnumSTATSTG_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG*); -void STDMETHODCALLTYPE IEnumSTATSTG_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG*,IEnumSTATSTG**); -void STDMETHODCALLTYPE IEnumSTATSTG_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_CreateStream_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStream**); -void STDMETHODCALLTYPE IStorage_CreateStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_RemoteOpenStream_Proxy(IStorage*,const OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream**); -void STDMETHODCALLTYPE IStorage_RemoteOpenStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_CreateStorage_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStorage**); -void STDMETHODCALLTYPE IStorage_CreateStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_OpenStorage_Proxy(IStorage*,OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**); -void STDMETHODCALLTYPE IStorage_OpenStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_CopyTo_Proxy(IStorage*,DWORD,const IID*,SNB,IStorage*); -void STDMETHODCALLTYPE IStorage_CopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_MoveElementTo_Proxy(IStorage*,const OLECHAR*,IStorage*,const OLECHAR*,DWORD); -void STDMETHODCALLTYPE IStorage_MoveElementTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_Commit_Proxy(IStorage*,DWORD); -void STDMETHODCALLTYPE IStorage_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_Revert_Proxy(IStorage*); -void STDMETHODCALLTYPE IStorage_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_RemoteEnumElements_Proxy(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**); -void STDMETHODCALLTYPE IStorage_RemoteEnumElements_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_DestroyElement_Proxy(IStorage*,OLECHAR*); -void STDMETHODCALLTYPE IStorage_DestroyElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_RenameElement_Proxy(IStorage*,const OLECHAR*,const OLECHAR*); -void STDMETHODCALLTYPE IStorage_RenameElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_SetElementTimes_Proxy(IStorage*,const OLECHAR*,const FILETIME*,const FILETIME*,const FILETIME*); -void STDMETHODCALLTYPE IStorage_SetElementTimes_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_SetClass_Proxy(IStorage*,REFCLSID); -void STDMETHODCALLTYPE IStorage_SetClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_SetStateBits_Proxy(IStorage*,DWORD,DWORD); -void STDMETHODCALLTYPE IStorage_SetStateBits_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_Stat_Proxy(IStorage*,STATSTG*,DWORD); -void STDMETHODCALLTYPE IStorage_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_IsDirty_Proxy(IPersistFile*); -void STDMETHODCALLTYPE IPersistFile_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_Load_Proxy(IPersistFile*,LPCOLESTR,DWORD); -void STDMETHODCALLTYPE IPersistFile_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_Save_Proxy(IPersistFile*,LPCOLESTR pszFileName,BOOL); -void STDMETHODCALLTYPE IPersistFile_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_SaveCompleted_Proxy(IPersistFile*,LPCOLESTR); -void STDMETHODCALLTYPE IPersistFile_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_GetCurFile_Proxy(IPersistFile*,LPCSTR*); -void STDMETHODCALLTYPE IPersistFile_GetCurFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_IsDirty_Proxy(IPersistStorage*); -void STDMETHODCALLTYPE IPersistStorage_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_InitNew_Proxy(IPersistStorage*,IStorage*); -void STDMETHODCALLTYPE IPersistStorage_InitNew_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_Load_Proxy(IPersistStorage*,IStorage*); -void STDMETHODCALLTYPE IPersistStorage_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_Save_Proxy(IPersistStorage*,IStorage*,BOOL); -void STDMETHODCALLTYPE IPersistStorage_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Proxy(IPersistStorage*,IStorage*); -void STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Proxy(IPersistStorage*); -void STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*); -void STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*pv,ULONG,ULONG*); -void STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_Flush_Proxy(ILockBytes*); -void STDMETHODCALLTYPE ILockBytes_Flush_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_SetSize_Proxy(ILockBytes*,ULARGE_INTEGER); -void STDMETHODCALLTYPE ILockBytes_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_LockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); -void STDMETHODCALLTYPE ILockBytes_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_UnlockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); -void STDMETHODCALLTYPE ILockBytes_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_Stat_Proxy(ILockBytes*,STATSTG*,DWORD); -void STDMETHODCALLTYPE ILockBytes_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*); -void STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC*,ULONG); -void STDMETHODCALLTYPE IEnumFORMATETC_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC*); -void STDMETHODCALLTYPE IEnumFORMATETC_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC*,IEnumFORMATETC**); -void STDMETHODCALLTYPE IEnumFORMATETC_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Stub(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*); -void STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA*,ULONG); -void STDMETHODCALLTYPE IEnumSTATDATA_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA*); -void STDMETHODCALLTYPE IEnumSTATDATA_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA*,IEnumSTATDATA**); -void STDMETHODCALLTYPE IEnumSTATDATA_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Stub(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*); -HRESULT STDMETHODCALLTYPE IRootStorage_SwitchToFile_Proxy(IRootStorage*,LPCSTR); -void STDMETHODCALLTYPE IRootStorage_SwitchToFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink*,DWORD,LONG); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Proxy(IAdviseSink*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Proxy(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Proxy(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Proxy(IAdviseSink*,FORMATETC*,STGMEDIUM*); -void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Stub(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*); -void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Proxy(IAdviseSink*,DWORD,LONG); -void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Stub(IAdviseSink*,DWORD,LONG); -void STDMETHODCALLTYPE IAdviseSink_OnRename_Proxy(IAdviseSink*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink_OnRename_Stub(IAdviseSink*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink_OnSave_Proxy(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink_OnSave_Stub(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink_OnClose_Proxy(IAdviseSink*); -HRESULT STDMETHODCALLTYPE IAdviseSink_OnClose_Stub(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2*,IMoniker*); -HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**); -void STDMETHODCALLTYPE IDataObject_RemoteGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**); -void STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_QueryGetData_Proxy(IDataObject*,FORMATETC*); -void STDMETHODCALLTYPE IDataObject_QueryGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject*,FORMATETC*,FORMATETC*); -void STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_RemoteSetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL); -void STDMETHODCALLTYPE IDataObject_RemoteSetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Proxy(IDataObject*,DWORD,IEnumFORMATETC**); -void STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_DAdvise_Proxy(IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*); -void STDMETHODCALLTYPE IDataObject_DAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_DUnadvise_Proxy(IDataObject*,DWORD); -void STDMETHODCALLTYPE IDataObject_DUnadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_EnumDAdvise_Proxy(IDataObject*,IEnumSTATDATA**); -void STDMETHODCALLTYPE IDataObject_EnumDAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_GetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*); -HRESULT STDMETHODCALLTYPE IDataObject_GetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**); -HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*); -HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**); -HRESULT STDMETHODCALLTYPE IDataObject_SetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*,BOOL); -HRESULT STDMETHODCALLTYPE IDataObject_SetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL); -HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder*,IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*); -void STDMETHODCALLTYPE IDataAdviseHolder_Advise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder*,DWORD); -void STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder*,IEnumSTATDATA**); -void STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder*,IDataObject*,DWORD,DWORD); -void STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Proxy(IMessageFilter*,DWORD,HTASK,DWORD,LPINTERFACEINFO); -void STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter*,HTASK,DWORD,DWORD); -void STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IMessageFilter_MessagePending_Proxy(IMessageFilter*,HTASK,DWORD,DWORD); -void STDMETHODCALLTYPE IMessageFilter_MessagePending_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,REFIID); -void STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,ULONG*); -void STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*); -void STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer*,DWORD*,void**); -void STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer*); -void STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer*,IRpcChannelBuffer*pRpcChannelBuffer); -void STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer*); -void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer*,IUnknown*); -void STDMETHODCALLTYPE IRpcStubBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer*); -void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer*,RPCOLEMESSAGE*,IRpcChannelBuffer*); -void STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -IRpcStubBuffer*STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer*,REFIID); -void STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer*); -void STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer*,void**); -void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer*,void*); -void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer*,IUnknown*,REFIID,IRpcProxyBuffer**,void**); -void STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer*,REFIID,IUnknown*,IRpcStubBuffer**); -void STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE SNB_to_xmit(SNB*,RemSNB**); -void STDMETHODCALLTYPE SNB_from_xmit(RemSNB*,SNB*); -void STDMETHODCALLTYPE SNB_free_inst(SNB*); -void STDMETHODCALLTYPE SNB_free_xmit(RemSNB*); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Stub(IEnumUnknown*,ULONG,IUnknown**,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Stub(IEnumMoniker*,ULONG,IMoniker**,ULONG*); -HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**); -HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); -HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**); -HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); -HRESULT STDMETHODCALLTYPE IEnumString_Next_Proxy(IEnumString*,ULONG,LPCSTR*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumString_Next_Stub(IEnumString*,ULONG,LPCSTR*,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Read_Proxy(IStream*,void*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Read_Stub(IStream*,BYTE*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Write_Proxy(IStream*,void*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Write_Stub(IStream*,BYTE*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Seek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*); -HRESULT STDMETHODCALLTYPE IStream_Seek_Stub(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*); -HRESULT STDMETHODCALLTYPE IStream_CopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*); -HRESULT STDMETHODCALLTYPE IStream_CopyTo_Stub(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Stub(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*); -HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Proxy(IStorage*,OLECHAR*,void*,DWORD,DWORD,IStream**); -HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Stub(IStorage*,OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream** ); -HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Proxy(IStorage*,DWORD,void*,DWORD,IEnumSTATSTG**); -HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Stub(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**); -HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,void*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,const void*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*); - -#if (!defined (__cplusplus) || defined (CINTERFACE)) \ - && defined (COBJMACROS) -#define IMarshal_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IMarshal_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMarshal_Release(This) (This)->lpVtbl->Release(This) -#define IMarshal_GetUnmarshalClass(T,r,pv,dw,pvD,m,pC) (T)->lpVtbl->GetUnmarshalClass(T,r,pv,dw,pvD,m,pC) -#define IMarshal_GetMarshalSizeMax(T,r,pv,dw,pD,m,p) (T)->lpVtbl->GetMarshalSizeMax(T,r,pv,dw,pD,m,p) -#define IMarshal_MarshalInterface(T,p,r,pv,dw,pvD,m) (T)->lpVtbl->MarshalInterface(T,p,r,pv,dw,pv,m) -#define IMarshal_UnmarshalInterface(T,p,r,pp) (T)->lpVtbl->UnmarshalInterface(T,p,r,pp) -#define IMarshal_ReleaseMarshalData(T,p) (T)->lpVtbl->ReleaseMarshalData(T,p) -#define IMarshal_DisconnectObject(T,d) (T)->lpVtbl->DisconnectObject(T,d) -#define IMalloc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IMalloc_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMalloc_Release(This) (This)->lpVtbl->Release(This) -#define IMalloc_Alloc(This,cb) (This)->lpVtbl->Alloc(This,cb) -#define IMalloc_Realloc(This,pv,cb) (This)->lpVtbl->Realloc(This,pv,cb) -#define IMalloc_Free(This,pv) (This)->lpVtbl->Free(This,pv) -#define IMalloc_GetSize(This,pv) (This)->lpVtbl->GetSize(This,pv) -#define IMalloc_DidAlloc(This,pv) (This)->lpVtbl->DidAlloc(This,pv) -#define IMalloc_HeapMinimize(This) (This)->lpVtbl->HeapMinimize(This) -#define IMallocSpy_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IMallocSpy_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMallocSpy_Release(This) (This)->lpVtbl->Release(This) -#define IMallocSpy_PreAlloc(T,c) (T)->lpVtbl->PreAlloc(T,c) -#define IMallocSpy_PostAlloc(This,p) (This)->lpVtbl->PostAlloc(This,p) -#define IMallocSpy_PreFree(This,p,f) (This)->lpVtbl->PreFree(This,p,f) -#define IMallocSpy_PostFree(This,fSpyed) (This)->lpVtbl->PostFree(This,fSpyed) -#define IMallocSpy_PreRealloc(T,p,c,pp,f) (T)->lpVtbl->PreRealloc(T,p,c,pp,f) -#define IMallocSpy_PostRealloc(T,p,f) (T)->lpVtbl->PostRealloc(T,p,f) -#define IMallocSpy_PreGetSize(This,p,f) (This)->lpVtbl->PreGetSize(This,p,f) -#define IMallocSpy_PostGetSize(This,cbActual,fSpyed) (This)->lpVtbl->PostGetSize(This,cbActual,fSpyed) -#define IMallocSpy_PreDidAlloc(This,pRequest,fSpyed) (This)->lpVtbl->PreDidAlloc(This,pRequest,fSpyed) -#define IMallocSpy_PostDidAlloc(This,pRequest,fSpyed,fActual) (This)->lpVtbl->PostDidAlloc(This,pRequest,fSpyed,fActual) -#define IMallocSpy_PreHeapMinimize(T) (T)->lpVtbl->PreHeapMinimize(T) -#define IMallocSpy_PostHeapMinimize(T) (T)->lpVtbl->PostHeapMinimize(T) -#define IStdMarshalInfo_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p) -#define IStdMarshalInfo_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IStdMarshalInfo_Release(This) (This)->lpVtbl->Release(This) -#define IStdMarshalInfo_GetClassForHandler(This,D,p,C) (This)->lpVtbl->GetClassForHandler(This,D,p,C) -#define IExternalConnection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IExternalConnection_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IExternalConnection_Release(This) (This)->lpVtbl->Release(This) -#define IExternalConnection_AddConnection(T,e,r) (T)->lpVtbl->AddConnection(T,e,r) -#define IExternalConnection_ReleaseConnection(This,e,r,f) (This)->lpVtbl->ReleaseConnection(This,e,r,f) -#define IEnumUnknown_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p) -#define IEnumUnknown_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumUnknown_Release(This) (This)->lpVtbl->Release(This) -#define IEnumUnknown_Next(This,celt,rgelt,p) (This)->lpVtbl->Next(This,celt,rgelt,p) -#define IEnumUnknown_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumUnknown_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumUnknown_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IBindCtx_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IBindCtx_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IBindCtx_Release(This) (This)->lpVtbl->Release(This) -#define IBindCtx_RegisterObjectBound(T,p) (T)->lpVtbl->RegisterObjectBound(T,p) -#define IBindCtx_RevokeObjectBound(T,p) (T)->lpVtbl->RevokeObjectBound(T,p) -#define IBindCtx_ReleaseBoundObjects(T) (T)->lpVtbl->ReleaseBoundObjects(T) -#define IBindCtx_SetBindOptions(T,p) (T)->lpVtbl->SetBindOptions(T,p) -#define IBindCtx_GetBindOptions(This,pbindopts) (This)->lpVtbl->GetBindOptions(This,pbindopts) -#define IBindCtx_GetRunningObjectTable(This,pprot) (This)->lpVtbl->GetRunningObjectTable(This,pprot) -#define IBindCtx_RegisterObjectParam(This,pszKey,punk) (This)->lpVtbl->RegisterObjectParam(This,pszKey,punk) -#define IBindCtx_GetObjectParam(This,pszKey,ppunk) (This)->lpVtbl->GetObjectParam(This,pszKey,ppunk) -#define IBindCtx_EnumObjectParam(This,ppenum) (This)->lpVtbl->EnumObjectParam(This,ppenum) -#define IBindCtx_RevokeObjectParam(This,pszKey) (This)->lpVtbl->RevokeObjectParam(This,pszKey) -#define IEnumMoniker_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IEnumMoniker_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumMoniker_Release(This) (This)->lpVtbl->Release(This) -#define IEnumMoniker_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) -#define IEnumMoniker_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumMoniker_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumMoniker_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IRunnableObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IRunnableObject_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRunnableObject_Release(This) (This)->lpVtbl->Release(This) -#define IRunnableObject_GetRunningClass(This,lpClsid) (This)->lpVtbl->GetRunningClass(This,lpClsid) -#define IRunnableObject_Run(This,pbc) (This)->lpVtbl->Run(This,pbc) -#define IRunnableObject_IsRunning(This) (This)->lpVtbl->IsRunning(This) -#define IRunnableObject_LockRunning(This,fLock,fLastUnlockCloses) (This)->lpVtbl->LockRunning(This,fLock,fLastUnlockCloses) -#define IRunnableObject_SetContainedObject(This,fContained) (This)->lpVtbl->SetContainedObject(This,fContained) -#define IRunningObjectTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IRunningObjectTable_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRunningObjectTable_Release(This) (This)->lpVtbl->Release(This) -#define IRunningObjectTable_Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) (This)->lpVtbl->Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) -#define IRunningObjectTable_Revoke(This,dwRegister) (This)->lpVtbl->Revoke(This,dwRegister) -#define IRunningObjectTable_IsRunning(This,pmkObjectName) (This)->lpVtbl->IsRunning(This,pmkObjectName) -#define IRunningObjectTable_GetObject(This,pmkObjectName,ppunkObject) (This)->lpVtbl->GetObject(This,pmkObjectName,ppunkObject) -#define IRunningObjectTable_NoteChangeTime(This,dwRegister,pfiletime) (This)->lpVtbl->NoteChangeTime(This,dwRegister,pfiletime) -#define IRunningObjectTable_GetTimeOfLastChange(This,pmkObjectName,pfiletime) (This)->lpVtbl->GetTimeOfLastChange(This,pmkObjectName,pfiletime) -#define IRunningObjectTable_EnumRunning(This,ppenumMoniker) (This)->lpVtbl->EnumRunning(This,ppenumMoniker) -#define IPersist_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IPersist_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPersist_Release(This) (This)->lpVtbl->Release(This) -#define IPersist_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) -#define IPersistStream_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IPersistStream_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPersistStream_Release(This) (This)->lpVtbl->Release(This) -#define IPersistStream_GetClassID(T,p) (T)->lpVtbl->GetClassID(T,p) -#define IPersistStream_IsDirty(This) (This)->lpVtbl->IsDirty(This) -#define IPersistStream_Load(This,pStm) (This)->lpVtbl->Load(This,pStm) -#define IPersistStream_Save(T,p,f) (T)->lpVtbl->Save(T,p,f) -#define IPersistStream_GetSizeMax(T,p) (T)->lpVtbl->GetSizeMax(T,p) -#define IMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IMoniker_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMoniker_Release(This) (This)->lpVtbl->Release(This) -#define IMoniker_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) -#define IMoniker_IsDirty(This) (This)->lpVtbl->IsDirty(This) -#define IMoniker_Load(This,pStm) (This)->lpVtbl->Load(This,pStm) -#define IMoniker_Save(This,pStm,fClearDirty) (This)->lpVtbl->Save(This,pStm,fClearDirty) -#define IMoniker_GetSizeMax(This,pcbSize) (This)->lpVtbl->GetSizeMax(This,pcbSize) -#define IMoniker_BindToObject(T,p,pm,r,pp) (T)->lpVtbl->BindToObject(T,p,pm,r,pp) -#define IMoniker_BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) (This)->lpVtbl->BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) -#define IMoniker_Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) (This)->lpVtbl->Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) -#define IMoniker_ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) (This)->lpVtbl->ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) -#define IMoniker_Enum(T,f,pp) (T)->lpVtbl->Enum(T,f,pp) -#define IMoniker_IsEqual(This,p) (This)->lpVtbl->IsEqual(This,p) -#define IMoniker_Hash(This,pdwHash) (This)->lpVtbl->Hash(This,pdwHash) -#define IMoniker_IsRunning(T,pbc,Left,N) (T)->lpVtbl->IsRunning(T,pbc,Left,N) -#define IMoniker_GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) (This)->lpVtbl->GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) -#define IMoniker_Inverse(This,ppmk) (This)->lpVtbl->Inverse(This,ppmk) -#define IMoniker_CommonPrefixWith(This,pmkOther,ppmkPrefix) (This)->lpVtbl->CommonPrefixWith(This,pmkOther,ppmkPrefix) -#define IMoniker_RelativePathTo(This,pmkOther,ppmkRelPath) (This)->lpVtbl->RelativePathTo(This,pmkOther,ppmkRelPath) -#define IMoniker_GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) (This)->lpVtbl->GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) -#define IMoniker_ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) (This)->lpVtbl->ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) -#define IMoniker_IsSystemMoniker(This,pdwMksys) (This)->lpVtbl->IsSystemMoniker(This,pdwMksys) -#define IROTData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IROTData_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IROTData_Release(This) (This)->lpVtbl->Release(This) -#define IROTData_GetComparisonData(This,pbData,cbMax,pcbData) (This)->lpVtbl->GetComparisonData(This,pbData,cbMax,pcbData) -#define IEnumString_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IEnumString_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumString_Release(This) (This)->lpVtbl->Release(This) -#define IEnumString_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) -#define IEnumString_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumString_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumString_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IStream_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IStream_Release(This) (This)->lpVtbl->Release(This) -#define IStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead) -#define IStream_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten) -#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition) -#define IStream_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize) -#define IStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten) -#define IStream_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags) -#define IStream_Revert(This) (This)->lpVtbl->Revert(This) -#define IStream_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType) -#define IStream_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType) -#define IStream_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag) -#define IStream_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm) -#define IEnumSTATSTG_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IEnumSTATSTG_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumSTATSTG_Release(This) (This)->lpVtbl->Release(This) -#define IEnumSTATSTG_Next(T,c,r,p) (T)->lpVtbl->Next(T,c,r,p) -#define IEnumSTATSTG_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumSTATSTG_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumSTATSTG_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IStorage_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IStorage_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IStorage_Release(This) (This)->lpVtbl->Release(This) -#define IStorage_CreateStream(T,p,g,r1,r2,pp) (T)->lpVtbl->CreateStream(T,p,g,r1,r2,pp) -#define IStorage_OpenStream(T,p,r1,g,r2,pp) (T)->lpVtbl->OpenStream(T,p,r1,g,r2,pp) -#define IStorage_CreateStorage(T,p,g,d,r2,pp) (T)->lpVtbl->CreateStorage(T,p,g,d,r2,pp) -#define IStorage_OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) (This)->lpVtbl->OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) -#define IStorage_CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) (This)->lpVtbl->CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) -#define IStorage_MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) (This)->lpVtbl->MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) -#define IStorage_Commit(This,g) (This)->lpVtbl->Commit(This,g) -#define IStorage_Revert(This) (This)->lpVtbl->Revert(This) -#define IStorage_EnumElements(This,reserved1,reserved2,reserved3,ppenum) (This)->lpVtbl->EnumElements(This,reserved1,reserved2,reserved3,ppenum) -#define IStorage_DestroyElement(This,pwcsName) (This)->lpVtbl->DestroyElement(This,pwcsName) -#define IStorage_RenameElement(This,pwcsOldName,pwcsNewName) (This)->lpVtbl->RenameElement(This,pwcsOldName,pwcsNewName) -#define IStorage_SetElementTimes(This,pwcsName,pctime,patime,pmtime) (This)->lpVtbl->SetElementTimes(This,pwcsName,pctime,patime,pmtime) -#define IStorage_SetClass(This,clsid) (This)->lpVtbl->SetClass(This,clsid) -#define IStorage_SetStateBits(This,grfStateBits,grfMask) (This)->lpVtbl->SetStateBits(This,grfStateBits,grfMask) -#define IStorage_Stat(This,p,g) (This)->lpVtbl->Stat(This,p,g) -#define IPersistFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IPersistFile_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPersistFile_Release(This) (This)->lpVtbl->Release(This) -#define IPersistFile_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) -#define IPersistFile_IsDirty(This) (This)->lpVtbl->IsDirty(This) -#define IPersistFile_Load(This,pszFileName,dwMode) (This)->lpVtbl->Load(This,pszFileName,dwMode) -#define IPersistFile_Save(This,pszFileName,fRemember) (This)->lpVtbl->Save(This,pszFileName,fRemember) -#define IPersistFile_SaveCompleted(This,pszFileName) (This)->lpVtbl->SaveCompleted(This,pszFileName) -#define IPersistFile_GetCurFile(This,ppszFileName) (This)->lpVtbl->GetCurFile(This,ppszFileName) -#define IPersistStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IPersistStorage_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPersistStorage_Release(This) (This)->lpVtbl->Release(This) -#define IPersistStorage_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) -#define IPersistStorage_IsDirty(This) (This)->lpVtbl->IsDirty(This) -#define IPersistStorage_InitNew(This,pStg) (This)->lpVtbl->InitNew(This,pStg) -#define IPersistStorage_Load(This,pStg) (This)->lpVtbl->Load(This,pStg) -#define IPersistStorage_Save(This,pStgSave,fSameAsLoad) (This)->lpVtbl->Save(This,pStgSave,fSameAsLoad) -#define IPersistStorage_SaveCompleted(This,pStgNew) (This)->lpVtbl->SaveCompleted(This,pStgNew) -#define IPersistStorage_HandsOffStorage(This) (This)->lpVtbl->HandsOffStorage(This) -#define ILockBytes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define ILockBytes_AddRef(This) (This)->lpVtbl->AddRef(This) -#define ILockBytes_Release(This) (This)->lpVtbl->Release(This) -#define ILockBytes_ReadAt(This,ulOffset,pv,cb,pcbRead) (This)->lpVtbl->ReadAt(This,ulOffset,pv,cb,pcbRead) -#define ILockBytes_WriteAt(This,ulOffset,pv,cb,pcbWritten) (This)->lpVtbl->WriteAt(This,ulOffset,pv,cb,pcbWritten) -#define ILockBytes_Flush(This) (This)->lpVtbl->Flush(This) -#define ILockBytes_SetSize(This,cb) (This)->lpVtbl->SetSize(This,cb) -#define ILockBytes_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType) -#define ILockBytes_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType) -#define ILockBytes_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag) -#define IEnumFORMATETC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IEnumFORMATETC_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumFORMATETC_Release(This) (This)->lpVtbl->Release(This) -#define IEnumFORMATETC_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) -#define IEnumFORMATETC_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumFORMATETC_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumFORMATETC_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IEnumSTATDATA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IEnumSTATDATA_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumSTATDATA_Release(This) (This)->lpVtbl->Release(This) -#define IEnumSTATDATA_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) -#define IEnumSTATDATA_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumSTATDATA_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumSTATDATA_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IRootStorage_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O) -#define IRootStorage_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRootStorage_Release(This) (This)->lpVtbl->Release(This) -#define IRootStorage_SwitchToFile(This,pszFile) (This)->lpVtbl->SwitchToFile(This,pszFile) -#define IAdviseSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IAdviseSink_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IAdviseSink_Release(This) (This)->lpVtbl->Release(This) -#define IAdviseSink_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed) -#define IAdviseSink_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex) -#define IAdviseSink_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk) -#define IAdviseSink_OnSave(This) (This)->lpVtbl->OnSave(This) -#define IAdviseSink_OnClose(This) (This)->lpVtbl->OnClose(This) -#define IAdviseSink2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IAdviseSink2_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IAdviseSink2_Release(This) (This)->lpVtbl->Release(This) -#define IAdviseSink2_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed) -#define IAdviseSink2_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex) -#define IAdviseSink2_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk) -#define IAdviseSink2_OnSave(This) (This)->lpVtbl->OnSave(This) -#define IAdviseSink2_OnClose(This) (This)->lpVtbl->OnClose(This) -#define IAdviseSink2_OnLinkSrcChange(This,pmk) (This)->lpVtbl->OnLinkSrcChange(This,pmk) -#define IDataObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IDataObject_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IDataObject_Release(This) (This)->lpVtbl->Release(This) -#define IDataObject_GetData(This,pformatetcIn,pmedium) (This)->lpVtbl->GetData(This,pformatetcIn,pmedium) -#define IDataObject_GetDataHere(This,pformatetc,pmedium) (This)->lpVtbl->GetDataHere(This,pformatetc,pmedium) -#define IDataObject_QueryGetData(This,pformatetc) (This)->lpVtbl->QueryGetData(This,pformatetc) -#define IDataObject_GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) (This)->lpVtbl->GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) -#define IDataObject_SetData(This,pformatetc,pmedium,fRelease) (This)->lpVtbl->SetData(This,pformatetc,pmedium,fRelease) -#define IDataObject_EnumFormatEtc(This,dwDirection,ppenumFormatEtc) (This)->lpVtbl->EnumFormatEtc(This,dwDirection,ppenumFormatEtc) -#define IDataObject_DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) (This)->lpVtbl->DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) -#define IDataObject_DUnadvise(This,dwConnection) (This)->lpVtbl->DUnadvise(This,dwConnection) -#define IDataObject_EnumDAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumDAdvise(This,ppenumAdvise) -#define IDataAdviseHolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IDataAdviseHolder_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IDataAdviseHolder_Release(This) (This)->lpVtbl->Release(This) -#define IDataAdviseHolder_Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) (This)->lpVtbl->Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) -#define IDataAdviseHolder_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection) -#define IDataAdviseHolder_EnumAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumAdvise(This,ppenumAdvise) -#define IDataAdviseHolder_SendOnDataChange(This,pDataObject,dwReserved,advf) (This)->lpVtbl->SendOnDataChange(This,pDataObject,dwReserved,advf) -#define IMessageFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IMessageFilter_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMessageFilter_Release(This) (This)->lpVtbl->Release(This) -#define IMessageFilter_HandleInComingCall(T,d,h,dw,lp) (T)->lpVtbl->HandleInComingCall(T,d,h,dw,lp) -#define IMessageFilter_RetryRejectedCall(s,C,T,R) (s)->lpVtbl->RetryRejectedCall(s,C,T,R) -#define IMessageFilter_MessagePending(s,C,T,P) (s)->lpVtbl->MessagePending(This,C,T,P) -#define IRpcChannelBuffer_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IRpcChannelBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRpcChannelBuffer_Release(This) (This)->lpVtbl->Release(This) -#define IRpcChannelBuffer_GetBuffer(This,pMessage,riid) (This)->lpVtbl->GetBuffer(This,pMessage,riid) -#define IRpcChannelBuffer_SendReceive(T,p,pS) (T)->lpVtbl->SendReceive(T,p,pS) -#define IRpcChannelBuffer_FreeBuffer(T,p) (T)->lpVtbl->FreeBuffer(T,p) -#define IRpcChannelBuffer_GetDestCtx(This,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtx(This,pdwDestContext,ppvDestContext) -#define IRpcChannelBuffer_IsConnected(This) (This)->lpVtbl->IsConnected(This) -#define IRpcProxyBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IRpcProxyBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRpcProxyBuffer_Release(This) (This)->lpVtbl->Release(This) -#define IRpcProxyBuffer_Connect(This,pRpcChannelBuffer) (This)->lpVtbl->Connect(This,pRpcChannelBuffer) -#define IRpcProxyBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This) -#define IRpcStubBuffer_QueryInterface(T,r,pp) (T)->lpVtbl->QueryInterface(T,r,pp) -#define IRpcStubBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRpcStubBuffer_Release(This) (This)->lpVtbl->Release(This) -#define IRpcStubBuffer_Connect(This,p) (This)->lpVtbl->Connect(This,p) -#define IRpcStubBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This) -#define IRpcStubBuffer_Invoke(T,_prpcmsg,_p) (T)->lpVtbl->Invoke(T,_prpcmsg,_p) -#define IRpcStubBuffer_IsIIDSupported(T,d) (T)->lpVtbl->IsIIDSupported(T,d) -#define IRpcStubBuffer_CountRefs(This) (This)->lpVtbl->CountRefs(This) -#define IRpcStubBuffer_DebugServerQueryInterface(T,p) (T)->lpVtbl->DebugServerQueryInterface(T,p) -#define IRpcStubBuffer_DebugServerRelease(T,p) (T)->lpVtbl->DebugServerRelease(T,p) -#define IPSFactoryBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IPSFactoryBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPSFactoryBuffer_Release(This) (This)->lpVtbl->Release(This) -#define IPSFactoryBuffer_CreateProxy(T,U,r,P,p) (T)->lpVtbl->CreateProxy(T,U,r,P,p) -#define IPSFactoryBuffer_CreateStub(T,r,U,p) (T)->lpVtbl->CreateStub(T,r,U,p) -#define IClassActivator_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IClassActivator_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IClassActivator_Release(T) (T)->lpVtbl->Release(T) -#define IClassActivator_GetClassObject(T,a,b,c,d,e) (T)->lpVtbl->GetClassObject(T,a,b,c,d,e) -#endif /* COBJMACROS */ - -#endif diff --git a/reactos/include/psdk/objidl.idl b/reactos/include/psdk/objidl.idl new file mode 100644 index 00000000000..f7a5b12ae94 --- /dev/null +++ b/reactos/include/psdk/objidl.idl @@ -0,0 +1,2456 @@ +/* + * Copyright 2002 Ove Kaaven + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; + +interface IStream; +interface IEnumString; +interface IRunningObjectTable; +interface IMoniker; +interface IAdviseSink; +interface IAsyncManager; +interface ISynchronize; + +typedef struct _COSERVERINFO { + DWORD dwReserved1; + LPWSTR pwszName; + COAUTHINFO *pAuthInfo; + DWORD dwReserved2; +} COSERVERINFO; + +/******************** Fundamentals ********************/ + +[ + local, + object, + uuid(00000003-0000-0000-C000-000000000046) +] +interface IMarshal : IUnknown +{ + typedef [unique] IMarshal *LPMARSHAL; + + HRESULT GetUnmarshalClass( + [in] REFIID riid, + [in, unique] void *pv, + [in] DWORD dwDestContext, + [in, unique] void *pvDestContext, + [in] DWORD mshlflags, + [out] CLSID *pCid); + + HRESULT GetMarshalSizeMax( + [in] REFIID riid, + [in, unique] void *pv, + [in] DWORD dwDestContext, + [in, unique] void *pvDestContext, + [in] DWORD mshlflags, + [out] DWORD *pSize); + + HRESULT MarshalInterface( + [in, unique] IStream *pStm, + [in] REFIID riid, + [in, unique] void *pv, + [in] DWORD dwDestContext, + [in, unique] void *pvDestContext, + [in] DWORD mshlflags); + + HRESULT UnmarshalInterface( + [in, unique] IStream *pStm, + [in] REFIID riid, + [out] void **ppv); + + HRESULT ReleaseMarshalData( + [in, unique] IStream *pStm); + + HRESULT DisconnectObject( + [in] DWORD dwReserved); +} + +[ + local, + object, + uuid(000001cf-0000-0000-C000-000000000046) +] +interface IMarshal2 : IMarshal +{ + typedef [unique] IMarshal2 *LPMARSHAL2; +} + +[ + local, + object, + uuid(00000018-0000-0000-C000-000000000046) +] +interface IStdMarshalInfo : IUnknown +{ + typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO; + + HRESULT GetClassForHandler( + [in] DWORD dwDestContext, + [in, unique] void *pvDestContext, + [out] CLSID *pClsid); +} + +[ + local, + object, + uuid(00000019-0000-0000-C000-000000000046) +] +interface IExternalConnection : IUnknown +{ + typedef [unique] IExternalConnection *LPEXTERNALCONNECTION; + + typedef enum tagEXTCONN { + EXTCONN_STRONG = 0x0001, + EXTCONN_WEAK = 0x0002, + EXTCONN_CALLABLE = 0x0004 + } EXTCONN; + + DWORD AddConnection( + [in] DWORD extconn, + [in] DWORD reserved); + + DWORD ReleaseConnection( + [in] DWORD extconn, + [in] DWORD reserved, + [in] BOOL fLastReleaseCloses); +} + +[ + local, + object, + uuid(00000020-0000-0000-C000-000000000046) +] +interface IMultiQI : IUnknown +{ + typedef [unique] IMultiQI *LPMULTIQI; + + typedef struct tagMULTI_QI { + const IID *pIID; + IUnknown *pItf; + HRESULT hr; + } MULTI_QI; + + HRESULT QueryMultipleInterfaces( + [in] ULONG cMQIs, + [in, out] MULTI_QI *pMQIs); +} + +[ + local, + object, + uuid(00000002-0000-0000-C000-000000000046) +] +interface IMalloc : IUnknown +{ + typedef [unique] IMalloc *LPMALLOC; + + LPVOID Alloc( + [in] ULONG cb); + + LPVOID Realloc( + [in] LPVOID pv, + [in] ULONG cb); + + void Free( + [in] LPVOID pv); + + ULONG GetSize( + [in] LPVOID pv); + + int DidAlloc(LPVOID pv); + + void HeapMinimize(); +} + +[ + local, + object, + uuid(0000001d-0000-0000-C000-000000000046) +] +interface IMallocSpy : IUnknown +{ + typedef [unique] IMallocSpy *LPMALLOCSPY; + + ULONG PreAlloc( + [in] ULONG cbRequest); + + LPVOID PostAlloc( + [in] LPVOID pActual); + + LPVOID PreFree( + [in] LPVOID pRequest, + [in] BOOL fSpyed); + + void PostFree( + [in] BOOL fSpyed); + + ULONG PreRealloc( + [in] LPVOID pRequest, + [in] ULONG cbRequest, + [out] LPVOID *ppNewRequest, + [in] BOOL fSpyed); + + LPVOID PostRealloc( + [in] LPVOID pActual, + [in] BOOL fSpyed); + + LPVOID PreGetSize( + [in] LPVOID pRequest, + [in] BOOL fSpyed); + + ULONG PostGetSize( + [in] ULONG cbActual, + [in] BOOL fSpyed); + + LPVOID PreDidAlloc( + [in] LPVOID pRequest, + [in] BOOL fSpyed); + + int PostDidAlloc( + [in] LPVOID pRequest, + [in] BOOL fSpyed, + [in] int fActual); + + void PreHeapMinimize(); + + void PostHeapMinimize(); +} + +[ + local, + object, + uuid(00000021-0000-0000-C000-000000000046) +] +interface IInternalUnknown : IUnknown +{ + HRESULT QueryInternalInterface( + [in] REFIID riid, + [out] void **ppv); +} + +[ + object, + uuid(00000100-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumUnknown : IUnknown +{ + typedef [unique] IEnumUnknown *LPENUMUNKNOWN; + + [local] + HRESULT Next( + [in] ULONG celt, + [out] IUnknown **rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + IUnknown **rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumUnknown **ppenum); +} + +[ + object, + uuid(00000022-0000-0000-C000-000000000046), + version(1.0), + pointer_default(unique) +] +interface ISurrogate : IUnknown +{ + typedef [unique] ISurrogate *LPSURROGATE; + + HRESULT LoadDllServer( + [in] REFCLSID Clsid); + HRESULT FreeSurrogate(); +} + +[ + local, + object, + uuid(00000146-0000-0000-C000-000000000046) +] +interface IGlobalInterfaceTable : IUnknown +{ + typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE; + + HRESULT RegisterInterfaceInGlobal( + [in] IUnknown *pUnk, + [in] REFIID riid, + [out] DWORD *pdwCookie); + + HRESULT RevokeInterfaceFromGlobal( + [in] DWORD dwCookie); + + HRESULT GetInterfaceFromGlobal( + [in] DWORD dwCookie, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); +} + +/******************** Monikers ********************/ + +[ + object, + uuid(0000000e-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IBindCtx : IUnknown +{ + typedef [unique] IBindCtx *LPBINDCTX; + typedef [unique] IBindCtx *LPBC; + + typedef struct tagBIND_OPTS { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; + } BIND_OPTS, *LPBIND_OPTS; + + /* FIXME: C++ crap */ + typedef struct tagBIND_OPTS2 { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; + DWORD dwTrackFlags; + DWORD dwClassContext; + LCID locale; + COSERVERINFO *pServerInfo; + } BIND_OPTS2, *LPBIND_OPTS2; + + typedef enum tagBIND_FLAGS { + BIND_MAYBOTHERUSER = 1, + BIND_JUSTTESTEXISTENCE = 2 + } BIND_FLAGS; + + HRESULT RegisterObjectBound( + [in, unique] IUnknown *punk); + + HRESULT RevokeObjectBound( + [in, unique] IUnknown *punk); + + HRESULT ReleaseBoundObjects(); + + [local] + HRESULT SetBindOptions( + [in] BIND_OPTS *pbindopts); + + [call_as(SetBindOptions)] + HRESULT RemoteSetBindOptions( + [in] BIND_OPTS2 *pbindopts); + + [local] + HRESULT GetBindOptions( + [in, out] BIND_OPTS *pbindopts); + + [call_as(GetBindOptions)] + HRESULT RemoteGetBindOptions( + [in, out] BIND_OPTS2 *pbindopts); + + HRESULT GetRunningObjectTable( + [out] IRunningObjectTable **pprot); + + HRESULT RegisterObjectParam( + [in] LPOLESTR pszKey, + [in, unique] IUnknown *punk); + + HRESULT GetObjectParam( + [in] LPOLESTR pszKey, + [out] IUnknown **ppunk); + + HRESULT EnumObjectParam( + [out] IEnumString **ppenum); + + HRESULT RevokeObjectParam( + [in] LPOLESTR pszKey); +} + +[ + object, + uuid(00000102-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumMoniker : IUnknown +{ + typedef [unique] IEnumMoniker *LPENUMMONIKER; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + IMoniker **rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + IMoniker **rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumMoniker **ppenum); +} + +[ + object, + uuid(00000126-0000-0000-C000-000000000046) +] +interface IRunnableObject : IUnknown +{ + typedef [unique] IRunnableObject *LPRUNNABLEOBJECT; + + HRESULT GetRunningClass( + [out] LPCLSID lpClsid); + + HRESULT Run( + [in] LPBINDCTX pbc); + + [local] + BOOL IsRunning(); + + [call_as(IsRunning)] + HRESULT RemoteIsRunning(); + + HRESULT LockRunning( + [in] BOOL fLock, + [in] BOOL fLastUnlockCloses); + + HRESULT SetContainedObject( + [in] BOOL fContained); +} + +/* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject), + * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined, + * but GetObject is used as a valid method name below, so we have + * to undefine it in that case */ +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef GetObject") +cpp_quote("#endif") + +[ + object, + uuid(00000010-0000-0000-C000-000000000046) +] +interface IRunningObjectTable : IUnknown +{ + typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE; + + HRESULT Register( + [in] DWORD grfFlags, + [in, unique] IUnknown *punkObject, + [in, unique] IMoniker *pmkObjectName, + [out] DWORD *pdwRegister); + + HRESULT Revoke( + [in] DWORD dwRegister); + + HRESULT IsRunning( + [in, unique] IMoniker *pmkObjectName); + + HRESULT GetObject( + [in, unique] IMoniker *pmkObjectName, + [out] IUnknown **ppunkObject); + + HRESULT NoteChangeTime( + [in] DWORD dwRegister, + [in] FILETIME *pfiletime); + + HRESULT GetTimeOfLastChange( + [in, unique] IMoniker *pmkObjectName, + [out] FILETIME *pfiletime); + + HRESULT EnumRunning( + [out] IEnumMoniker **ppenumMoniker); +} + +[ + object, + uuid(0000010c-0000-0000-C000-000000000046) +] +interface IPersist : IUnknown +{ + typedef [unique] IPersist *LPPERSIST; + + HRESULT GetClassID( + [out] CLSID *pClassID); +} + +[ + object, + uuid(00000109-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IPersistStream : IPersist +{ + typedef [unique] IPersistStream *LPPERSISTSTREAM; + + HRESULT IsDirty(); + + HRESULT Load( + [in, unique] IStream *pStm); + + HRESULT Save( + [in, unique] IStream *pStm, + [in] BOOL fClearDirty); + + HRESULT GetSizeMax( + [out] ULARGE_INTEGER *pcbSize); +} + +[ + object, + uuid(0000000f-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IMoniker : IPersistStream +{ + typedef [unique] IMoniker *LPMONIKER; + + typedef enum tagMKSYS { + MKSYS_NONE = 0, + MKSYS_GENERICCOMPOSITE = 1, + MKSYS_FILEMONIKER = 2, + MKSYS_ANTIMONIKER = 3, + MKSYS_ITEMMONIKER = 4, + MKSYS_POINTERMONIKER = 5, + /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */ + MKSYS_CLASSMONIKER = 7 + } MKSYS; + + typedef [v1_enum] enum tagMKREDUCE { + MKRREDUCE_ONE = 3 << 16, + MKRREDUCE_TOUSER = 2 << 16, + MKRREDUCE_THROUGHUSER = 1 << 16, + MKRREDUCE_ALL = 0 + } MKRREDUCE; + + [local] + HRESULT BindToObject( + [in, unique] IBindCtx *pbc, + [in, unique] IMoniker *pmkToLeft, + [in] REFIID riidResult, + [out, iid_is(riidResult)] void **ppvResult); + + [call_as(BindToObject)] + HRESULT RemoteBindToObject( + [in, unique] IBindCtx *pbc, + [in, unique] IMoniker *pmkToLeft, + [in] REFIID riidResult, + [out, iid_is(riidResult)] IUnknown **ppvResult); + + [local] + HRESULT BindToStorage( + [in, unique] IBindCtx *pbc, + [in, unique] IMoniker *pmkToLeft, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvObj); + + [call_as(BindToStorage)] + HRESULT RemoteBindToStorage( + [in, unique] IBindCtx *pbc, + [in, unique] IMoniker *pmkToLeft, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppvObj); + + HRESULT Reduce( + [in, unique] IBindCtx *pbc, + [in] DWORD dwReduceHowFar, + [in, out, unique] IMoniker **ppmkToLeft, + [out] IMoniker **ppmkReduced); + + HRESULT ComposeWith( + [in, unique] IMoniker *pmkRight, + [in] BOOL fOnlyIfNotGeneric, + [out] IMoniker **ppmkComposite); + + HRESULT Enum( + [in] BOOL fForward, + [out] IEnumMoniker **ppenumMoniker); + + HRESULT IsEqual( + [in, unique] IMoniker *pmkOtherMoniker); + + HRESULT Hash( + [out] DWORD *pdwHash); + + HRESULT IsRunning( + [in, unique] IBindCtx *pbc, + [in, unique] IMoniker *pmkToLeft, + [in, unique] IMoniker *pmkNewlyRunning); + + HRESULT GetTimeOfLastChange( + [in, unique] IBindCtx *pbc, + [in, unique] IMoniker *pmkToLeft, + [out] FILETIME *pFileTime); + + HRESULT Inverse( + [out] IMoniker **ppmk); + + HRESULT CommonPrefixWith( + [in, unique] IMoniker *pmkOther, + [out] IMoniker **ppmkPrefix); + + HRESULT RelativePathTo( + [in, unique] IMoniker *pmkOther, + [out] IMoniker **ppmkRelPath); + + HRESULT GetDisplayName( + [in, unique] IBindCtx *pbc, + [in, unique] IMoniker *pmkToLeft, + [out] LPOLESTR *ppszDisplayName); + + HRESULT ParseDisplayName( + [in, unique] IBindCtx *pbc, + [in, unique] IMoniker *pmkToLeft, + [in] LPOLESTR pszDisplayName, + [out] ULONG *pchEaten, + [out] IMoniker **ppmkOut); + + HRESULT IsSystemMoniker( + [out] DWORD *pdwMksys); +} + +[ + object, + uuid(f29f6bc0-5021-11ce-aa15-00006901293f), + pointer_default(unique) +] +interface IROTData : IUnknown +{ + HRESULT GetComparisonData( + [out, size_is(cbMax)] byte *pbData, + [in] ULONG cbMax, + [out] ULONG *pcbData); +} + +[ + object, + uuid(00000101-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumString : IUnknown +{ + typedef [unique] IEnumString *LPENUMSTRING; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + LPOLESTR *rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + LPOLESTR *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumString **ppenum); +} + +[ + object, + uuid(00000140-0000-0000-C000-000000000046) +] +interface IClassActivator : IUnknown +{ + HRESULT GetClassObject( + [in] REFCLSID rclsid, + [in] DWORD dwClassContext, + [in] LCID locale, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); +} + +/******************** Storage ********************/ + +[ + object, + uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d), + pointer_default(unique) +] +interface ISequentialStream : IUnknown +{ + [local] + HRESULT Read( + [out, size_is(cb), length_is(*pcbRead)] + void *pv, + [in] ULONG cb, + [out] ULONG *pcbRead); + + [call_as(Read)] + HRESULT RemoteRead( + [out, size_is(cb), length_is(*pcbRead)] + byte *pv, + [in] ULONG cb, + [out] ULONG *pcbRead); + + [local] + HRESULT Write( + [in, size_is(cb)] const void *pv, + [in] ULONG cb, + [out] ULONG *pcbWritten); + + [call_as(Write)] + HRESULT RemoteWrite( + [in, size_is(cb)] const byte *pv, + [in] ULONG cb, + [out] ULONG *pcbWritten); +} + +[ + object, + uuid(0000000c-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IStream : ISequentialStream +{ + typedef [unique] IStream *LPSTREAM; + + typedef struct tagSTATSTG { + LPOLESTR pwcsName; + DWORD type; + ULARGE_INTEGER cbSize; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD grfMode; + DWORD grfLocksSupported; + CLSID clsid; + DWORD grfStateBits; + DWORD reserved; + } STATSTG; + + typedef enum tagSTGTY { + STGTY_STORAGE = 1, + STGTY_STREAM = 2, + STGTY_LOCKBYTES = 3, + STGTY_PROPERTY = 4 + } STGTY; + + typedef enum tagSTREAM_SEEK { + STREAM_SEEK_SET = 0, + STREAM_SEEK_CUR = 1, + STREAM_SEEK_END = 2 + } STREAM_SEEK; + + /* these are defined in Linux's fcntl.h, + * undefine them to avoid conflicts */ + cpp_quote("#undef LOCK_MAND") + cpp_quote("#undef LOCK_READ") + cpp_quote("#undef LOCK_WRITE") + cpp_quote("#undef LOCK_RW") + + typedef enum tagLOCKTYPE { + LOCK_WRITE = 1, + LOCK_EXCLUSIVE = 2, + LOCK_ONLYONCE = 4 + } LOCKTYPE; + + [local] + HRESULT Seek( + [in] LARGE_INTEGER dlibMove, + [in] DWORD dwOrigin, + [out] ULARGE_INTEGER *plibNewPosition); + + [call_as(Seek)] + HRESULT RemoteSeek( + [in] LARGE_INTEGER dlibMove, + [in] DWORD dwOrigin, + [out] ULARGE_INTEGER *plibNewPosition); + + HRESULT SetSize( + [in] ULARGE_INTEGER libNewSize); + + [local] + HRESULT CopyTo( + [in, unique] IStream *pstm, + [in] ULARGE_INTEGER cb, + [out] ULARGE_INTEGER *pcbRead, + [out] ULARGE_INTEGER *pcbWritten); + + [call_as(CopyTo)] + HRESULT RemoteCopyTo( + [in, unique] IStream *pstm, + [in] ULARGE_INTEGER cb, + [out] ULARGE_INTEGER *pcbRead, + [out] ULARGE_INTEGER *pcbWritten); + + HRESULT Commit( + [in] DWORD grfCommitFlags); + + HRESULT Revert(); + + HRESULT LockRegion( + [in] ULARGE_INTEGER libOffset, + [in] ULARGE_INTEGER cb, + [in] DWORD dwLockType); + + HRESULT UnlockRegion( + [in] ULARGE_INTEGER libOffset, + [in] ULARGE_INTEGER cb, + [in] DWORD dwLockType); + + HRESULT Stat( + [out] STATSTG *pstatstg, + [in] DWORD grfStatFlag); + + HRESULT Clone( + [out] IStream **ppstm); +} + +[ + object, + uuid(0000000d-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumSTATSTG : IUnknown +{ + typedef [unique] IEnumSTATSTG *LPENUMSTATSTG; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATSTG *rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATSTG *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumSTATSTG **ppenum); +} + +[ + object, + uuid(0000000b-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IStorage : IUnknown +{ + typedef [unique] IStorage *LPSTORAGE; + + typedef struct tagRemSNB { + unsigned long ulCntStr; + unsigned long ulCntChar; + [size_is(ulCntChar)] OLECHAR rgString[]; + } RemSNB; + + typedef [unique] RemSNB *wireSNB; + typedef [wire_marshal(wireSNB)] OLECHAR **SNB; + + HRESULT CreateStream( + [in] LPCOLESTR pwcsName, + [in] DWORD grfMode, + [in] DWORD reserved1, + [in] DWORD reserved2, + [out] IStream **ppstm); + + [local] + HRESULT OpenStream( + [in] LPCOLESTR pwcsName, + [in, unique] void *reserved1, + [in] DWORD grfMode, + [in] DWORD reserved2, + [out] IStream **ppstm); + + [call_as(OpenStream)] + HRESULT RemoteOpenStream( + [in] LPCOLESTR pwcsName, + [in] unsigned long cbReserved1, + [in, unique, size_is(cbReserved1)] byte *reserved1, + [in] DWORD grfMode, + [in] DWORD reserved2, + [out] IStream **ppstm); + + HRESULT CreateStorage( + [in] LPCOLESTR pwcsName, + [in] DWORD grfMode, + [in] DWORD dwStgFmt, + [in] DWORD reserved2, + [out] IStorage **ppstg); + + HRESULT OpenStorage( + [in, unique] LPCOLESTR pwcsName, + [in, unique] IStorage *pstgPriority, + [in] DWORD grfMode, + [in, unique] SNB snbExclude, + [in] DWORD reserved, + [out] IStorage **ppstg); + + HRESULT CopyTo( + [in] DWORD ciidExclude, + [in, unique, size_is(ciidExclude)] const IID *rgiidExclude, + [in, unique] SNB snbExclude, + [in, unique] IStorage *pstgDest); + + HRESULT MoveElementTo( + [in] LPCOLESTR pwcsName, + [in, unique] IStorage *pstgDest, + [in] LPCOLESTR pwcsNewName, + [in] DWORD grfFlags); + + HRESULT Commit( + [in] DWORD grfCommitFlags); + + HRESULT Revert(); + + [local] + HRESULT EnumElements( + [in] DWORD reserved1, + [in, unique, size_is(1)] void *reserved2, + [in] DWORD reserved3, + [out] IEnumSTATSTG **ppenum); + + [call_as(EnumElements)] + HRESULT RemoteEnumElements( + [in] DWORD reserved1, + [in] unsigned long cbReserved2, + [in, unique, size_is(cbReserved2)] byte *reserved2, + [in] DWORD reserved3, + [out] IEnumSTATSTG **ppenum); + + HRESULT DestroyElement( + [in] LPCOLESTR pwcsName); + + HRESULT RenameElement( + [in] LPCOLESTR pwcsOldName, + [in] LPCOLESTR pwcsNewName); + + HRESULT SetElementTimes( + [in, unique] LPCOLESTR pwcsName, + [in, unique] const FILETIME *pctime, + [in, unique] const FILETIME *patime, + [in, unique] const FILETIME *pmtime); + + HRESULT SetClass( + [in] REFCLSID clsid); + + HRESULT SetStateBits( + [in] DWORD grfStateBits, + [in] DWORD grfMask); + + HRESULT Stat( + [out] STATSTG *pstatstg, + [in] DWORD grfStatFlag); +} + +[ + object, + uuid(0000010b-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IPersistFile : IPersist +{ + typedef [unique] IPersistFile *LPPERSISTFILE; + + HRESULT IsDirty(); + + HRESULT Load( + [in] LPCOLESTR pszFileName, + [in] DWORD dwMode); + + HRESULT Save( + [in, unique] LPCOLESTR pszFileName, + [in] BOOL fRemember); + + HRESULT SaveCompleted( + [in, unique] LPCOLESTR pszFileName); + + HRESULT GetCurFile( + [out] LPOLESTR *ppszFileName); +} + +[ + object, + uuid(0000010a-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IPersistStorage : IPersist +{ + typedef [unique] IPersistStorage *LPPERSISTSTORAGE; + + HRESULT IsDirty(); + + HRESULT InitNew( + [in, unique] IStorage *pStg); + + HRESULT Load( + [in, unique] IStorage *pStg); + + HRESULT Save( + [in, unique] IStorage *pStgSave, + [in] BOOL fSameAsLoad); + + HRESULT SaveCompleted( + [in, unique] IStorage *pStgNew); + + HRESULT HandsOffStorage(); +} + +[ + object, + uuid(00000012-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IRootStorage : IUnknown +{ + typedef [unique] IRootStorage *LPROOTSTORAGE; + + HRESULT SwitchToFile( + [in] LPOLESTR pszFile); +} + +[ + object, + uuid(0000000a-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface ILockBytes : IUnknown +{ + typedef [unique] ILockBytes *LPLOCKBYTES; + + [local] + HRESULT ReadAt( + [in] ULARGE_INTEGER ulOffset, + [out, size_is(cb), length_is(*pcbRead)] + void *pv, + [in] ULONG cb, + [out] ULONG *pcbRead); + + [call_as(ReadAt)] + HRESULT RemoteReadAt( + [in] ULARGE_INTEGER ulOffset, + [out, size_is(cb), length_is(*pcbRead)] + byte *pv, + [in] ULONG cb, + [out] ULONG *pcbRead); + + [local] + HRESULT WriteAt( + [in] ULARGE_INTEGER ulOffset, + [in, size_is(cb)] const void *pv, + [in] ULONG cb, + [out] ULONG *pcbWritten); + + [call_as(WriteAt)] + HRESULT RemoteWriteAt( + [in] ULARGE_INTEGER ulOffset, + [in, size_is(cb)] const byte *pv, + [in] ULONG cb, + [out] ULONG *pcbWritten); + + HRESULT Flush(); + + HRESULT SetSize( + [in] ULARGE_INTEGER cb); + + HRESULT LockRegion( + [in] ULARGE_INTEGER libOffset, + [in] ULARGE_INTEGER cb, + [in] DWORD dwLockType); + + HRESULT UnlockRegion( + [in] ULARGE_INTEGER libOffset, + [in] ULARGE_INTEGER cb, + [in] DWORD dwLockType); + + HRESULT Stat( + [out] STATSTG *pstatstg, + [in] DWORD grfStatFlag); +} + +[ + object, + uuid(99caf010-415e-11cf-8814-00aa00b569f5), + pointer_default(unique) +] +interface IFillLockBytes : IUnknown +{ + [local] + HRESULT FillAppend( + [in, size_is(cb)] const void *pv, + [in] ULONG cb, + [out] ULONG *pcbWritten); + + [call_as(FillAppend)] + HRESULT RemoteFillAppend( + [in, size_is(cb)] const byte *pv, + [in] ULONG cb, + [out] ULONG *pcbWritten); + + [local] + HRESULT FillAt( + [in] ULARGE_INTEGER ulOffset, + [in, size_is(cb)] const void *pv, + [in] ULONG cb, + [out] ULONG *pcbWritten); + + [call_as(FillAt)] + HRESULT RemoteFillAt( + [in] ULARGE_INTEGER ulOffset, + [in, size_is(cb)] const byte *pv, + [in] ULONG cb, + [out] ULONG *pcbWritten); + + HRESULT SetFillSize( + [in] ULARGE_INTEGER ulSize); + + HRESULT Terminate( + [in] BOOL bCanceled); +} + +[ + object, + uuid(a9d758a0-4617-11cf-95fc-00aa00680db4), + pointer_default(unique) +] +interface IProgressNotify : IUnknown +{ + HRESULT OnProgress( + [in] DWORD dwProgressCurrent, + [in] DWORD dwProgressMaximum, + [in] BOOL fAccurate, + [in] BOOL fOwner); +} + +[ + local, + object, + uuid(0e6d4d90-6738-11cf-9608-00aa00680db4), + pointer_default(unique) +] +interface ILayoutStorage : IUnknown +{ + typedef struct tagStorageLayout { + DWORD LayoutType; + OLECHAR *pwcsElementName; + LARGE_INTEGER cOffset; + LARGE_INTEGER cBytes; + } StorageLayout; + + HRESULT LayoutScript( + [in] StorageLayout *pStorageLayout, + [in] DWORD nEntries, + [in] DWORD glfInterleavedFlag); + + HRESULT BeginMonitor(); + + HRESULT EndMonitor(); + + HRESULT ReLayoutDocfile( + [in] OLECHAR *pwcsNewDfName); + + HRESULT ReLayoutDocfileOnILockBytes( + [in] ILockBytes *pILockBytes); +} + +[ + object, + uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d) +] +interface IBlockingLock : IUnknown +{ + HRESULT Lock( + [in] DWORD dwTimeout); + + HRESULT Unlock(); +} + + +[ + object, + uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4) +] +interface ITimeAndNoticeControl : IUnknown +{ + HRESULT SuppressChanges( + [in] DWORD res1, + [in] DWORD res2); + +} + + + +[ + object, + uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4) +] +interface IOplockStorage: IUnknown +{ + HRESULT CreateStorageEx( + [in] LPCWSTR pwcsName, + [in] DWORD grfMode, + [in] DWORD stgfmt, + [in] DWORD grfAttrs, + [in] REFIID riid, + [out, iid_is(riid)] void **ppstgOpen); + + HRESULT OpenStorageEx( + [in] LPCWSTR pwcsName, + [in] DWORD grfMode, + [in] DWORD stgfmt, + [in] DWORD grfAttrs, + [in] REFIID riid, + [out, iid_is(riid)] void **ppstgOpen); +} + +/******************** Data Object ********************/ + +[ + object, + uuid(00000103-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumFORMATETC : IUnknown +{ + typedef [unique] IEnumFORMATETC *LPENUMFORMATETC; + + typedef struct tagDVTARGETDEVICE { + DWORD tdSize; + WORD tdDriverNameOffset; + WORD tdDeviceNameOffset; + WORD tdPortNameOffset; + WORD tdExtDevmodeOffset; + [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))] + BYTE tdData[]; + } DVTARGETDEVICE; + + typedef CLIPFORMAT *LPCLIPFORMAT; + + typedef struct tagFORMATETC { + CLIPFORMAT cfFormat; + [unique] DVTARGETDEVICE *ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; + } FORMATETC, *LPFORMATETC; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + FORMATETC *rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + FORMATETC *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumFORMATETC **ppenum); +} + +[ + object, + uuid(00000105-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumSTATDATA : IUnknown +{ + typedef [unique] IEnumSTATDATA *LPENUMSTATDATA; + + typedef enum tagADVF { + ADVF_NODATA = 1, + ADVF_PRIMEFIRST = 2, + ADVF_ONLYONCE = 4, + ADVF_DATAONSTOP = 64, + ADVFCACHE_NOHANDLER = 8, + ADVFCACHE_FORCEBUILTIN = 16, + ADVFCACHE_ONSAVE = 32 + } ADVF; + + typedef struct tagSTATDATA + { + FORMATETC formatetc; + DWORD advf; + [unique] IAdviseSink *pAdvSink; + DWORD dwConnection; + } STATDATA, *LPSTATDATA; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATDATA *rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATDATA *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumSTATDATA **ppenum); +} + +[ + object, + uuid(0000010f-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IAdviseSink : IUnknown +{ + typedef IAdviseSink *LPADVISESINK; + + typedef [v1_enum] enum tagTYMED { + TYMED_HGLOBAL = 1, + TYMED_FILE = 2, + TYMED_ISTREAM = 4, + TYMED_ISTORAGE = 8, + TYMED_GDI = 16, + TYMED_MFPICT = 32, + TYMED_ENHMF = 64, + TYMED_NULL = 0 + } TYMED; + + typedef struct tagRemSTGMEDIUM { + DWORD tymed; + DWORD dwHandleType; + unsigned long pData; + unsigned long pUnkForRelease; + unsigned long cbData; + [size_is(cbData)] byte data[]; + } RemSTGMEDIUM; + + /* FIXME: C/C++ nameless union version */ + typedef struct tagSTGMEDIUM { + DWORD tymed; + [switch_is(tymed)] union { + [case(TYMED_GDI)] HBITMAP hBitmap; + [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict; + [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile; + [case(TYMED_HGLOBAL)] HGLOBAL hGlobal; + [case(TYMED_FILE)] LPOLESTR lpszFileName; + [case(TYMED_ISTREAM)] IStream *pstm; + [case(TYMED_ISTORAGE)] IStorage *pstg; + [default] ; + }; + [unique] IUnknown *pUnkForRelease; + } uSTGMEDIUM; + +/* copied from wingdi.h */ +#define OBJ_PEN 1 +#define OBJ_BRUSH 2 +#define OBJ_DC 3 +#define OBJ_METADC 4 +#define OBJ_PAL 5 +#define OBJ_FONT 6 +#define OBJ_BITMAP 7 +#define OBJ_REGION 8 +#define OBJ_METAFILE 9 +#define OBJ_MEMDC 10 +#define OBJ_EXTPEN 11 +#define OBJ_ENHMETADC 12 +#define OBJ_ENHMETAFILE 13 + + typedef union _GDI_OBJECT switch(DWORD ObjectType) u { + case OBJ_BITMAP: wireHBITMAP hBitmap; + case OBJ_PAL: wireHPALETTE hPalette; + default: wireHGLOBAL hGeneric; + } GDI_OBJECT; + + typedef struct _userSTGMEDIUM { + union switch(DWORD tymed) u { + case TYMED_NULL: ; + case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict; + case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile; + case TYMED_GDI: GDI_OBJECT *hGdiHandle; + case TYMED_HGLOBAL: wireHGLOBAL hGlobal; + case TYMED_FILE: LPOLESTR lpszFileName; + case TYMED_ISTREAM: BYTE_BLOB *pstm; + case TYMED_ISTORAGE: BYTE_BLOB *pstg; + }; + IUnknown *pUnkForRelease; + } userSTGMEDIUM; + + typedef [unique] userSTGMEDIUM *wireSTGMEDIUM; + typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM; + + typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM; + typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM; + + typedef STGMEDIUM *LPSTGMEDIUM; + + typedef struct _userFLAG_STGMEDIUM { + long ContextFlags; + long fPassOwnership; + userSTGMEDIUM Stgmed; + } userFLAG_STGMEDIUM; + + typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM; + + typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM { + long ContextFlags; + long fPassOwnership; + STGMEDIUM Stgmed; + } FLAG_STGMEDIUM; + + [local] + void OnDataChange( + [in, unique] FORMATETC *pFormatetc, + [in, unique] STGMEDIUM *pStgmed); + + [call_as(OnDataChange)] + HRESULT RemoteOnDataChange( + [in, unique] FORMATETC *pFormatetc, + [in, unique] ASYNC_STGMEDIUM *pStgmed); + + [local] + void OnViewChange( + [in] DWORD dwAspect, + [in] LONG lindex); + + [call_as(OnViewChange)] + HRESULT RemoteOnViewChange( + [in] DWORD dwAspect, + [in] LONG lindex); + + [local] + void OnRename( + [in] IMoniker *pmk); + + [call_as(OnRename)] + HRESULT RemoteOnRename( + [in] IMoniker *pmk); + + [local] + void OnSave(); + + [call_as(OnSave)] + HRESULT RemoteOnSave(); + + [local] + void OnClose(); + + [call_as(OnClose)] + HRESULT RemoteOnClose(); +} + +[ + object, + uuid(00000125-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IAdviseSink2 : IAdviseSink +{ + typedef [unique] IAdviseSink2 *LPADVISESINK2; + + [local] + void OnLinkSrcChange( + [in, unique] IMoniker *pmk); + + [call_as(OnLinkSrcChange)] + HRESULT RemoteOnLinkSrcChange( + [in, unique] IMoniker *pmk); +} + +[ + object, + uuid(0000010e-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IDataObject : IUnknown +{ + typedef [unique] IDataObject *LPDATAOBJECT; + + typedef enum tagDATADIR { + DATADIR_GET = 1, + DATADIR_SET = 2 + } DATADIR; + + [local] + HRESULT GetData( + [in, unique] FORMATETC *pformatetcIn, + [out] STGMEDIUM *pmedium); + + [call_as(GetData)] + HRESULT RemoteGetData( + [in, unique] FORMATETC *pformatetcIn, + [out] STGMEDIUM *pRemoteMedium); + + [local] + HRESULT GetDataHere( + [in, unique] FORMATETC *pformatetc, + [in, out] STGMEDIUM *pmedium); + + [call_as(GetDataHere)] + HRESULT RemoteGetDataHere( + [in, unique] FORMATETC *pformatetc, + [in, out] STGMEDIUM *pRemoteMedium); + + HRESULT QueryGetData( + [in, unique] FORMATETC *pformatetc); + + HRESULT GetCanonicalFormatEtc( + [in, unique] FORMATETC *pformatectIn, + [out] FORMATETC *pformatetcOut); + + [local] + HRESULT SetData( + [in, unique] FORMATETC *pformatetc, + [in, unique] STGMEDIUM *pmedium, + [in] BOOL fRelease); + + [call_as(SetData)] + HRESULT RemoteSetData( + [in, unique] FORMATETC *pformatetc, + [in, unique] FLAG_STGMEDIUM *pmedium, + [in] BOOL fRelease); + + HRESULT EnumFormatEtc( + [in] DWORD dwDirection, + [out] IEnumFORMATETC **ppenumFormatEtc); + + HRESULT DAdvise( + [in] FORMATETC *pformatetc, + [in] DWORD advf, + [in, unique] IAdviseSink *pAdvSink, + [out] DWORD *pdwConnection); + + HRESULT DUnadvise( + [in] DWORD dwConnection); + + HRESULT EnumDAdvise( + [out] IEnumSTATDATA **ppenumAdvise); +} + +[ + local, + object, + uuid(00000110-0000-0000-C000-000000000046) +] +interface IDataAdviseHolder : IUnknown +{ + typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER; + + HRESULT Advise( + [in, unique] IDataObject *pDataObject, + [in, unique] FORMATETC *pFetc, + [in] DWORD advf, + [in, unique] IAdviseSink *pAdvise, + [out] DWORD *pdwConnection); + + HRESULT Unadvise( + [in] DWORD dwConnection); + + HRESULT EnumAdvise( + [out] IEnumSTATDATA **ppenumAdvise); + + HRESULT SendOnDataChange( + [in, unique] IDataObject *pDataObject, + [in] DWORD dwReserved, + [in] DWORD advf); +} + +/******************** Remoting ********************/ + +[ + local, + object, + uuid(00000016-0000-0000-C000-000000000046) +] +interface IMessageFilter : IUnknown +{ + typedef [unique] IMessageFilter *LPMESSAGEFILTER; + + typedef enum tagCALLTYPE { + CALLTYPE_TOPLEVEL = 1, + CALLTYPE_NESTED = 2, + CALLTYPE_ASYNC = 3, + CALLTYPE_TOPLEVEL_CALLPENDING = 4, + CALLTYPE_ASYNC_CALLPENDING = 5 + } CALLTYPE; + + typedef enum tagSERVERCALL { + SERVERCALL_ISHANDLED = 0, + SERVERCALL_REJECTED = 1, + SERVERCALL_RETRYLATER = 2 + } SERVERCALL; + + typedef enum tagPENDINGTYPE { + PENDINGTYPE_TOPLEVEL = 1, + PENDINGTYPE_NESTED = 2 + } PENDINGTYPE; + + typedef enum tagPENDINGMSG { + PENDINGMSG_CANCELCALL = 0, + PENDINGMSG_WAITNOPROCESS = 1, + PENDINGMSG_WAITDEFPROCESS = 2 + } PENDINGMSG; + + typedef struct tagINTERFACEINFO { + IUnknown *pUnk; + IID iid; + WORD wMethod; + } INTERFACEINFO, *LPINTERFACEINFO; + + DWORD HandleInComingCall( + [in] DWORD dwCallType, + [in] HTASK htaskCaller, + [in] DWORD dwTickCount, + [in] LPINTERFACEINFO lpInterfaceInfo); + + DWORD RetryRejectedCall( + [in] HTASK htaskCallee, + [in] DWORD dwTickCount, + [in] DWORD dwRejectType); + + DWORD MessagePending( + [in] HTASK htaskCallee, + [in] DWORD dwTickCount, + [in] DWORD dwPendingType); +} + +[ + local, + object, + uuid(D5F56B60-593B-101A-B569-08002B2DBF7A) +] +interface IRpcChannelBuffer : IUnknown +{ + typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER; + + typedef unsigned long RPCOLEDATAREP; + + typedef struct tagRPCOLEMESSAGE { + void *reserved1; + RPCOLEDATAREP dataRepresentation; + void *Buffer; + ULONG cbBuffer; + ULONG iMethod; + void *reserved2[5]; + ULONG rpcFlags; + } RPCOLEMESSAGE; + + typedef RPCOLEMESSAGE *PRPCOLEMESSAGE; + + HRESULT GetBuffer( + [in] RPCOLEMESSAGE *pMessage, + [in] REFIID riid); + + HRESULT SendReceive( + [in,out] RPCOLEMESSAGE *pMessage, + [out] ULONG *pStatus); + + HRESULT FreeBuffer( + [in] RPCOLEMESSAGE *pMessage); + + HRESULT GetDestCtx( + [out] DWORD *pdwDestContext, + [out] void **ppvDestContext); + + HRESULT IsConnected(); +} + +[ + local, + object, + uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf) +] +interface IRpcChannelBuffer2 : IRpcChannelBuffer +{ + typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2; + + HRESULT GetProtocolVersion( + [in,out] DWORD *pdwVersion); +} + +[ + local, + object, + uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2) +] +interface IRpcChannelBuffer3 : IRpcChannelBuffer2 +{ + typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3; + + HRESULT Send( + [in,out] RPCOLEMESSAGE *pMsg, + [out] ULONG *pulStatus); + + HRESULT Receive( + [in,out] RPCOLEMESSAGE *pMsg, + [in] ULONG ulSize, + [out] ULONG *pulStatus); + + HRESULT Cancel( + [in] RPCOLEMESSAGE *pMsg); + + HRESULT GetCallContext( + [in] RPCOLEMESSAGE *pMsg, + [in] REFIID riid, + [out] void **pInterface); + + HRESULT GetDestCtxEx( + [in] RPCOLEMESSAGE *pMsg, + [out] DWORD *pdwDestContext, + [out] void **ppvDestContext); + + HRESULT GetState( + [in] RPCOLEMESSAGE *pMsg, + [out] DWORD *pState); + + HRESULT RegisterAsync( + [in] RPCOLEMESSAGE *pMsg, + [in] IAsyncManager *pAsyncMgr); +} + +[ + local, + object, + uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa), + pointer_default(unique) +] +interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2 +{ + HRESULT Send( + [in, out] RPCOLEMESSAGE *pMsg, + [in] ISynchronize *pSync, + [out] ULONG *pulStatus); + + HRESULT Receive( + [in, out] RPCOLEMESSAGE *pMsg, + [out] ULONG *pulStatus); + + HRESULT GetDestCtxEx( + [in] RPCOLEMESSAGE *pMsg, + [out] DWORD *pdwDestContext, + [out] void **ppvDestContext); +} + +[ + local, + object, + uuid(58a08519-24c8-4935-b482-3fd823333a4f) +] +interface IRpcSyntaxNegotiate : IUnknown +{ + HRESULT NegotiateSyntax( + [in, out] RPCOLEMESSAGE *pMsg); +} + +[ + local, + object, + uuid(D5F56A34-593B-101A-B569-08002B2DBF7A) +] +interface IRpcProxyBuffer : IUnknown +{ + typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER; + + HRESULT Connect( + [in, unique] IRpcChannelBuffer *pRpcChannelBuffer); + + void Disconnect(); +} + +[ + local, + object, + uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A) +] +interface IRpcStubBuffer : IUnknown +{ + typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER; + + HRESULT Connect( + [in] IUnknown *pUnkServer); + + void Disconnect(); + + HRESULT Invoke( + [in] RPCOLEMESSAGE *_prpcmsg, + [in] IRpcChannelBuffer *_pRpcChannelBuffer); + + IRpcStubBuffer *IsIIDSupported( + [in] REFIID riid); + + ULONG CountRefs(); + + HRESULT DebugServerQueryInterface( + void **ppv); + + void DebugServerRelease( + void *pv); +} + +[ + local, + object, + uuid(D5F569D0-593B-101A-B569-08002B2DBF7A) +] +interface IPSFactoryBuffer : IUnknown +{ + typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER; + + HRESULT CreateProxy( + [in] IUnknown *pUnkOuter, + [in] REFIID riid, + [out] IRpcProxyBuffer **ppProxy, + [out] void **ppv); + + HRESULT CreateStub( + [in] REFIID riid, + [in, unique] IUnknown *pUnkServer, + [out] IRpcStubBuffer **ppStub); +} + +[ + local, + object, + uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4) +] +interface IChannelHook : IUnknown +{ + typedef [unique] IChannelHook *LPCHANNELHOOK; + + typedef struct SChannelHookCallInfo { + IID iid; + DWORD cbSize; + GUID uCausality; + DWORD dwServerPid; + DWORD iMethod; + void *pObject; + } SChannelHookCallInfo; + + void ClientGetSize( + [in] REFGUID uExtent, + [in] REFIID riid, + [out] ULONG *pDataSize); + + void ClientFillBuffer( + [in] REFGUID uExtent, + [in] REFIID riid, + [in, out] ULONG *pDataSize, + [in] void *pDataBuffer); + + void ClientNotify( + [in] REFGUID uExtent, + [in] REFIID riid, + [in] ULONG cbDataSize, + [in] void *pDataBuffer, + [in] DWORD lDataRep, + [in] HRESULT hrFault); + + void ServerNotify( + [in] REFGUID uExtent, + [in] REFIID riid, + [in] ULONG cbDataSize, + [in] void *pDataBuffer, + [in] DWORD lDataRep); + + void ServerGetSize( + [in] REFGUID uExtent, + [in] REFIID riid, + [in] HRESULT hrFault, + [out] ULONG *pDataSize); + + void ServerFillBuffer( + [in] REFGUID uExtent, + [in] REFIID riid, + [in, out] ULONG *pDataSize, + [in] void *pDataBuffer, + [in] HRESULT hrFault ); +} + +extern const FMTID FMTID_SummaryInformation; +extern const FMTID FMTID_DocSummaryInformation; +extern const FMTID FMTID_UserDefinedProperties; + + +/******************** Connection Points ********************/ +/* FIXME */ + +/******************** DCOM ********************/ + +[ + local, + object, + uuid(0000013D-0000-0000-C000-000000000046) +] +interface IClientSecurity : IUnknown +{ + typedef struct tagSOLE_AUTHENTICATION_SERVICE { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + OLECHAR *pPrincipalName; + HRESULT hr; + } SOLE_AUTHENTICATION_SERVICE; + + typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE; + + typedef struct tagSOLE_AUTHENTICATION_INFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + void *pAuthInfo; + } SOLE_AUTHENTICATION_INFO; + + typedef struct tagSOLE_AUTHENTICATION_LIST { + DWORD cAuthInfo; + SOLE_AUTHENTICATION_INFO *aAuthInfo; + } SOLE_AUTHENTICATION_LIST; + + typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES { + EOAC_NONE = 0x0, + EOAC_MUTUAL_AUTH = 0x1, + EOAC_SECURE_REFS = 0x2, /* CoInitializeSecurity only */ + EOAC_ACCESS_CONTROL = 0x4, /* CoInitializeSecurity only */ + EOAC_APPID = 0x8, /* CoInitializeSecurity only */ + EOAC_DYNAMIC = 0x10, /* CoInitializeSecurity only */ + EOAC_STATIC_CLOAKING = 0x20, + EOAC_DYNAMIC_CLOAKING = 0x40, + EOAC_ANY_AUTHORITY = 0x80, + EOAC_MAKE_FULLSIC = 0x100, + EOAC_REQUIRE_FULLSIC = 0x200, /* CoInitializeSecurity only */ + EOAC_AUTO_IMPERSONATE = 0x400, /* CoInitializeSecurity only */ + EOAC_DEFAULT = 0x800, + EOAC_DISABLE_AAA = 0x1000, /* CoInitializeSecurity only */ + EOAC_NO_CUSTOM_MARSHAL = 0x2000, /* CoInitializeSecurity only */ + } EOLE_AUTHENTICATION_CAPABILITIES; + + HRESULT QueryBlanket( + [in] IUnknown *pProxy, + [out] DWORD *pAuthnSvc, + [out] DWORD *pAuthzSvc, + [out] OLECHAR **pServerPrincName, + [out] DWORD *pAuthnLevel, + [out] DWORD *pImpLevel, + [out] void **pAuthInfo, + [out] DWORD *pCapabilities); + + HRESULT SetBlanket( + [in] IUnknown *pProxy, + [in] DWORD AuthnSvc, + [in] DWORD AuthzSvc, + [in] OLECHAR *pServerPrincName, + [in] DWORD AuthnLevel, + [in] DWORD ImpLevel, + [in] void *pAuthInfo, + [in] DWORD Capabilities); + + HRESULT CopyProxy( + [in] IUnknown *pProxy, + [out] IUnknown **ppCopy); +} + +[ + local, + object, + uuid(0000013E-0000-0000-C000-000000000046) +] +interface IServerSecurity : IUnknown +{ + HRESULT QueryBlanket( + [out] DWORD *pAuthnSvc, + [out] DWORD *pAuthzSvc, + [out] OLECHAR **pServerPrincName, + [out] DWORD *pAuthnLevel, + [out] DWORD *pImpLevel, + [out] void **pPrivs, + [out] DWORD *pCapabilities); + + HRESULT ImpersonateClient(); + + HRESULT RevertToSelf(); + + BOOL IsImpersonating(); +} + +[ + local, + object, + uuid(00000024-0000-0000-C000-000000000046) +] +interface IAsyncSetup : IUnknown +{ + HRESULT GetAsyncManager( + [in] REFIID riid, + [in] IUnknown *pOuter, + [in] DWORD dwFlags, + [out] IUnknown **ppInner, + [out] IAsyncManager **ppAsyncMgr); +} + +[ + object, + uuid(0e6d4d92-6738-11cf-9608-00aa00680db4) +] +interface IDirectWriterLock : IUnknown +{ + HRESULT WaitForWriteAccess( + [in] DWORD dwTimeout); + + HRESULT ReleaseWriteAccess(); + + HRESULT HaveWriteAccess(); +} + +[ + object, + uuid(00000030-0000-0000-C000-000000000046) +] + +interface ISynchronize : IUnknown +{ + HRESULT Wait( + [in] DWORD dwFlags, + [in] DWORD dwMilliseconds); + + HRESULT Signal(); + + HRESULT Reset(); +} + + +[ + local, + object, + uuid(00000031-0000-0000-C000-000000000046) +] +interface ISynchronizeHandle : IUnknown +{ + HRESULT GetHandle( + [out] HANDLE *ph); +} + + +[ + local, + object, + uuid(00000032-0000-0000-C000-000000000046) +] +interface ISynchronizeEvent : ISynchronizeHandle +{ + HRESULT SetEventHandle( + [in] HANDLE *ph); +} + + +[ + local, + object, + uuid(00000033-0000-0000-C000-000000000046) +] +interface ISynchronizeContainer : IUnknown +{ + HRESULT AddSynchronize( + [in] ISynchronize *pSync); + + HRESULT WaitMultiple( + [in] DWORD dwFlags, + [in] DWORD dwTimeOut, + [out] ISynchronize **ppSync); +} + +[ + local, + object, + uuid(00000025-0000-0000-C000-000000000046) +] +interface ISynchronizeMutex : ISynchronize +{ + HRESULT ReleaseMutex(); +} + +[ + local, + object, + uuid(00000029-0000-0000-C000-000000000046) +] + +interface ICancelMethodCalls : IUnknown +{ + typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS; + + HRESULT Cancel( + [in] ULONG ulSeconds); + + HRESULT TestCancel(); +} + +[ + local, + object, + uuid(0000002A-0000-0000-C000-000000000046) +] +interface IAsyncManager : IUnknown +{ + typedef enum tagDCOM_CALL_STATE { + DCOM_NONE = 0, + DCOM_CALL_COMPLETE = 1, + DCOM_CALL_CANCELED = 2 + } DCOM_CALL_STATE; + + HRESULT CompleteCall( + [in] HRESULT Result); + + HRESULT GetCallContext( + [in] REFIID riid, + [out] void **pInterface); + + HRESULT GetState( + [out] ULONG *pulStateFlags); +} + +[ + local, + object, + uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d), + pointer_default(unique) +] +interface ICallFactory : IUnknown +{ + HRESULT CreateCall( + [in] REFIID riid, + [in] IUnknown *pCtrlUnk, + [in] REFIID riid2, + [out, iid_is(riid2)] IUnknown **ppv); +} + +[ + local, + object, + uuid(00000144-0000-0000-C000-000000000046) +] +interface IRpcOptions : IUnknown +{ + HRESULT Set( + [in] IUnknown *pPrx, + [in] DWORD dwProperty, + [in] ULONG_PTR dwValue); + + HRESULT Query( + [in] IUnknown *pPrx, + [in] DWORD dwProperty, + [out] ULONG_PTR *pdwValue); +} + +enum { + COMBND_RPCTIMEOUT = 1, + COMBND_SERVER_LOCALITY = 2 +}; + +enum { + SERVER_LOCALITY_PROCESS_LOCAL = 0, + SERVER_LOCALITY_MACHINE_LOCAL = 1, + SERVER_LOCALITY_REMOTE = 2 +}; + +[ + local, + object, + uuid(00000149-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IRpcHelper : IUnknown +{ + HRESULT GetDCOMProtocolVersion( + [out] DWORD *pComVersion); + + HRESULT GetIIDFromOBJREF( + [in] void *pObjRef, + [out] IID **piid); +} + +[ + local, + object, + uuid(eb0cb9e8-7996-11d2-872e-0000f8080859) +] +interface IReleaseMarshalBuffers : IUnknown +{ + HRESULT ReleaseMarshalBuffer( + [in] RPCOLEMESSAGE *pMsg, + [in] DWORD dwFlags, + [in, unique] IUnknown *pChnl); +} + +[ + local, + object, + uuid(0000002B-0000-0000-C000-000000000046) +] +interface IWaitMultiple : IUnknown +{ + HRESULT WaitMultiple( + [in] DWORD timeout, + [out] ISynchronize **pSync); + HRESULT AddSynchronize( + [in] ISynchronize *pSync); +} + + +[ + object, + uuid(00000026-0000-0000-C000-000000000046) +] +interface IUrlMon : IUnknown +{ + HRESULT AsyncGetClassBits( + [in] REFCLSID rclsid, + [in, unique] LPCWSTR pszTYPE, + [in, unique] LPCWSTR pszExt, + [in] DWORD dwFileVersionMS, + [in] DWORD dwFileVersionLS, + [in, unique] LPCWSTR pszCodeBase, + [in] IBindCtx *pbc, + [in] DWORD dwClassContext, + [in] REFIID riid, + [in] DWORD flags); +} + +[ + local, + object, + uuid(00000145-0000-0000-C000-000000000046) +] +interface IForegroundTransfer : IUnknown +{ + HRESULT AllowForegroundTransfer( + [in] void *lpvReserved); +} + +[ + local, + object, + uuid(00000147-0000-0000-C000-000000000046) +] +interface IAddrTrackingControl : IUnknown +{ + typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL; + + HRESULT EnableCOMDynamicAddrTracking(); + HRESULT DisableCOMDynamicAddrTracking(); +} + +[ + local, + object, + uuid(00000148-0000-0000-C000-000000000046) +] +interface IAddrExclusionControl : IUnknown +{ + typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL; + + HRESULT GetCurrentAddrExclusionList( + [in] REFIID riid, + [out, iid_is(riid)] void **ppEnumerator); + HRESULT UpdateAddrExclusionList( + [in] IUnknown *pEnumerator); +} + +typedef enum _APTTYPE { + APTTYPE_CURRENT = -1, + APTTYPE_STA = 0, + APTTYPE_MTA = 1, + APTTYPE_NA = 2, + APTTYPE_MAINSTA = 3 +} APTTYPE; + +typedef enum _THDTYPE { + THDTYPE_BLOCKMESSAGES = 0, + THDTYPE_PROCESSMESSAGES = 1 +} THDTYPE; + +[ + local, + object, + uuid(000001ce-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IComThreadingInfo : IUnknown +{ + HRESULT GetCurrentApartmentType( + [out] APTTYPE *pAptType); + HRESULT GetCurrentThreadType( + [out] THDTYPE *pThreadType); + HRESULT GetCurrentLogicalThreadId( + [out] GUID *pguidLogicalThreadId); + HRESULT SetCurrentLogicalThreadId( + [in] REFGUID rguid); +} + + +[ + object, + pointer_default(unique), + uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9) +] +interface IProcessInitControl : IUnknown +{ + HRESULT ResetInitializerTimeout( + [in] DWORD dwSecondsRemaining); +} + +[ + local, + object, + uuid(00000034-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IInitializeSpy : IUnknown +{ + typedef [unique] IInitializeSpy *LPINITIALIZESPY; + + HRESULT PreInitialize( + [in] DWORD dwCoInit, + [in] DWORD dwCurThreadAptRefs); + + HRESULT PostInitialize( + [in] HRESULT hrCoInit, + [in] DWORD dwCoInit, + [in] DWORD dwNewThreadAptRefs); + + HRESULT PreUninitialize( + [in] DWORD dwCurThreadAptRefs); + + HRESULT PostUninitialize( + [in] DWORD dwNewThreadAptRefs); +} + +[ + object, + uuid(969dc708-5c76-11d1-8d86-0000f804b057) +] +interface IThumbnailExtractor : IUnknown +{ + HRESULT ExtractThumbnail( + [in] IStorage *pStg, + [in] ULONG ulLength, + [in] ULONG ulHeight, + [out] ULONG *pulOutputLength, + [out] ULONG *pulOutputHeight, + [out] HBITMAP *phOutputBitmap); + + + HRESULT OnFileUpdated( + [in] IStorage *pStg); +} + + +cpp_quote("#ifdef USE_COM_CONTEXT_DEF") + +typedef DWORD CPFLAGS; + +typedef struct tagContextProperty +{ + GUID policyId; + CPFLAGS flags; + [unique] IUnknown *pUnk; +} ContextProperty; + +[ + local, + object, + uuid(000001c1-0000-0000-C000-000000000046) +] +interface IEnumContextProps : IUnknown +{ + typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS; + + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumContextProps **ppEnumContextProps); + + HRESULT Count( + [out] ULONG *pcelt); +} + +[ + local, + object, + uuid(000001c0-0000-0000-C000-000000000046) +] +interface IContext : IUnknown +{ + HRESULT SetProperty( + [in] REFGUID policyId, + [in] CPFLAGS flags, + [in] IUnknown *pUnk); + + HRESULT RemovePropert( + [in] REFGUID policyId); + + HRESULT GetProperty( + [in] REFGUID guid, + [out] CPFLAGS *pFlags, + [out] IUnknown **ppUnk); + + HRESULT EnumContextProps( + [out] IEnumContextProps **ppEnumContextProps); +} + +cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */") diff --git a/reactos/include/psdk/objsafe.idl b/reactos/include/psdk/objsafe.idl new file mode 100644 index 00000000000..312ee246470 --- /dev/null +++ b/reactos/include/psdk/objsafe.idl @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2005 CorVu Corporation + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; + +cpp_quote("#define INTERFACESAFE_FOR_UNTRUSTED_CALLER 1") +cpp_quote("#define INTERFACESAFE_FOR_UNTRUSTED_DATA 2") +cpp_quote("#define INTERFACE_USES_DISPEX 4") +cpp_quote("#define INTERFACE_USES_SECURITY_MANAGER 8") + +cpp_quote("DEFINE_GUID(CATID_SafeForScripting, 0x7dd95801,0x9882,0x11cf,0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4);") +cpp_quote("DEFINE_GUID(CATID_SafeForInitializing, 0x7dd95802,0x9882,0x11cf,0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4);") + +[ + object, + uuid(cb5bdc81-93c1-11cf-8f20-00805f2cd064), + pointer_default(unique) +] +interface IObjectSafety : IUnknown +{ + HRESULT GetInterfaceSafetyOptions([in] REFIID riid, + [out] DWORD *pdwSupportedOptions, + [out] DWORD *pdwEnabledOptions); + + HRESULT SetInterfaceSafetyOptions([in] REFIID riid, + [in] DWORD dwOptionSetMask, + [in] DWORD dwEnabledOptions); +} diff --git a/reactos/include/psdk/objsel.h b/reactos/include/psdk/objsel.h index 315227077b4..569a4895f65 100644 --- a/reactos/include/psdk/objsel.h +++ b/reactos/include/psdk/objsel.h @@ -14,22 +14,13 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ -#ifndef __OBJSEL_H -#define __OBJSEL_H +#ifndef __OBJSEL_H_ +#define __OBJSEL_H_ #ifdef __cplusplus extern "C" { #endif -#include -#include - -/* the PSDK headers defines it as EXTERN_C const GUID CLSID_DsObjectPicker = {...}, - * but that's not a good idea when EXTERN_C is extern... */ -#ifndef DEFINE_GUID -#include -#endif - DEFINE_GUID(CLSID_DsObjectPicker, 0x17d6ccd8, 0x3b7b, 0x11d2, 0x00b9, 0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7); DEFINE_GUID(IID_IDsObjectPicker, 0x0c87e64e, 0x3b7a, 0x11d2, 0x00b9, 0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7); @@ -166,8 +157,8 @@ DECLARE_INTERFACE_(IDsObjectPicker,IUnknown) STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; /*** IDsObjectPicker methods ***/ - STDMETHOD_(HRESULT,Initialize)(THIS_ PDSOP_INIT_INFO pInitInfo) PURE; - STDMETHOD_(HRESULT,InvokeDialog)(THIS_ HWND hwndParent, IDataObject ** ppdoSelections) PURE; + STDMETHOD(Initialize)(THIS_ PDSOP_INIT_INFO pInitInfo) PURE; + STDMETHOD(InvokeDialog)(THIS_ HWND hwndParent, IDataObject** ppdoSelections) PURE; }; #undef INTERFACE @@ -175,4 +166,4 @@ DECLARE_INTERFACE_(IDsObjectPicker,IUnknown) #ifdef __cplusplus } #endif -#endif /* __OBJSEL_H */ +#endif /* __OBJSEL_H_ */ diff --git a/reactos/include/psdk/ocidl.h b/reactos/include/psdk/ocidl.h index 21046681f31..4af82f22ad3 100644 --- a/reactos/include/psdk/ocidl.h +++ b/reactos/include/psdk/ocidl.h @@ -1,604 +1,266 @@ -#ifndef _OCIDL_H -#define _OCIDL_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif +/*** Autogenerated by WIDL 0.3.0 from include\psdk\ocidl.idl - Do not edit ***/ +#include +#include +#ifndef __WIDL_INCLUDE_PSDK_OCIDL_H +#define __WIDL_INCLUDE_PSDK_OCIDL_H #ifdef __cplusplus extern "C" { #endif - -#include +#include +#include +#include #include - -typedef interface IErrorLog *LPERRORLOG; -typedef interface IPropertyBag *LPPROPERTYBAG; -typedef interface IPropertyBag2 *LPPROPERTYBAG2; -typedef interface IEnumConnections *LPENUMCONNECTIONS; -typedef interface IConnectionPoint *LPCONNECTIONPOINT; -typedef interface IEnumConnectionPoints *LPENUMCONNECTIONPOINTS; -typedef interface IPropertyPageSite *LPPROPERTYPAGESITE; -typedef interface IFont *LPFONT; -typedef interface IFontDisp *LPFONTDISP; -typedef interface IFontEventsDisp *LPFONTEVENTS; -typedef interface IOleUndoManager *LPOLEUNDOMANAGER; -typedef interface IQuickActivate *LPQUICKACTIVATE; -typedef interface IObjectWithSite *LPOBJECTWITHSITE; - -#ifndef OLE2ANSI -typedef TEXTMETRICW TEXTMETRICOLE; -#else -typedef TEXTMETRIC TEXTMETRICOLE; -#endif -typedef TEXTMETRICOLE *LPTEXTMETRICOLE; -typedef DWORD OLE_COLOR; -typedef UINT OLE_HANDLE; -typedef long OLE_XPOS_HIMETRIC; -typedef long OLE_YPOS_HIMETRIC; -typedef long OLE_XSIZE_HIMETRIC; -typedef long OLE_YSIZE_HIMETRIC; - +typedef enum tagUASFLAGS { + UAS_NORMAL = 0x0, + UAS_BLOCKED = 0x1, + UAS_NOPARENTABLE = 0x2, + UAS_MASK = 0x3 +} UASFLAGS; typedef enum tagREADYSTATE { - READYSTATE_UNINITIALIZED = 0, - READYSTATE_LOADING = 1, - READYSTATE_LOADED = 2, - READYSTATE_INTERACTIVE = 3, - READYSTATE_COMPLETE = 4 + READYSTATE_UNINITIALIZED = 0, + READYSTATE_LOADING = 1, + READYSTATE_LOADED = 2, + READYSTATE_INTERACTIVE = 3, + READYSTATE_COMPLETE = 4 } READYSTATE; -typedef enum tagPROPBAG2_TYPE { - PROPBAG2_TYPE_UNDEFINED = 0, - PROPBAG2_TYPE_DATA = 1, - PROPBAG2_TYPE_URL = 2, - PROPBAG2_TYPE_OBJECT = 3, - PROPBAG2_TYPE_STREAM = 4, - PROPBAG2_TYPE_STORAGE = 5, - PROPBAG2_TYPE_MONIKER = 6 -} PROPBAG2_TYPE; -typedef struct tagPROPBAG2 -{ - DWORD dwType; - VARTYPE vt; - CLIPFORMAT cfType; - DWORD dwHint; - LPOLESTR pstrName; - CLSID clsid; -} PROPBAG2; -enum tagQACONTAINERFLAGS -{ - QACONTAINER_SHOWHATCHING = 1, - QACONTAINER_SHOWGRABHANDLES = 2, - QACONTAINER_USERMODE = 4, - QACONTAINER_DISPLAYASDEFAULT = 8, - QACONTAINER_UIDEAD = 16, - QACONTAINER_AUTOCLIP = 32, - QACONTAINER_MESSAGEREFLECT = 64, - QACONTAINER_SUPPORTSMNEMONICS = 128 -} QACONTAINERFLAGS; -typedef struct tagQACONTAINER -{ - ULONG cbSize; - interface IOleClientSite *pClientSite; - interface IAdviseSinkEx *pAdviseSink; - interface IPropertyNotifySink *pPropertyNotifySink; - IUnknown *pUnkEventSink; - DWORD dwAmbientFlags; - OLE_COLOR colorFore; - OLE_COLOR colorBack; - interface IFont *pFont; - interface IOleUndoManager *pUndoMgr; - DWORD dwAppearance; - LONG lcid; - HPALETTE hpal; - interface IBindHost *pBindHost; - interface IOleControlSite *pOleControlSite; - interface IServiceProvider *pServiceProvider; -} QACONTAINER; -typedef struct tagQACONTROL -{ - ULONG cbSize; - DWORD dwMiscStatus; - DWORD dwViewStatus; - DWORD dwEventCookie; - DWORD dwPropNotifyCookie; - DWORD dwPointerActivationPolicy; -} QACONTROL; -typedef struct tagPOINTF { - float x; - float y; -} POINTF,*LPPOINTF; -typedef struct tagCONTROLINFO { - ULONG cb; - HACCEL hAccel; - USHORT cAccel; - DWORD dwFlags; -} CONTROLINFO,*LPCONTROLINFO; -typedef struct tagCONNECTDATA { - LPUNKNOWN pUnk; - DWORD dwCookie; -} CONNECTDATA,*LPCONNECTDATA; -typedef struct tagLICINFO { - long cbLicInfo; - BOOL fRuntimeKeyAvail; - BOOL fLicVerified; -} LICINFO,*LPLICINFO; -typedef struct tagCAUUID { - ULONG cElems; - GUID *pElems; -} CAUUID,*LPCAUUID; -typedef struct tagCALPOLESTR { - ULONG cElems; - LPOLESTR *pElems; -} CALPOLESTR,*LPCALPOLESTR; -typedef struct tagCADWORD { - ULONG cElems; - DWORD *pElems; -} CADWORD,*LPCADWORD; -typedef struct tagPROPPAGEINFO { - ULONG cb; - LPOLESTR pszTitle; - SIZE size; - LPOLESTR pszDocString; - LPOLESTR pszHelpFile; - DWORD dwHelpContext; -} PROPPAGEINFO,*LPPROPPAGEINFO; +typedef struct tagVARIANT_BLOB { + DWORD clSize; + DWORD rpcReserved; + ULONGLONG ahData[1]; +} wireVARIANT_BLOB; +typedef struct tagUserVARIANT { + wireVARIANT_BLOB pVarBlob; +} UserVARIANT; +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free(void *); -EXTERN_C const IID IID_IOleControl; -#define INTERFACE IOleControl -DECLARE_INTERFACE_(IOleControl,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetControlInfo)(THIS_ LPCONTROLINFO) PURE; - STDMETHOD(OnMnemonic)(THIS_ LPMSG) PURE; - STDMETHOD(OnAmbientPropertyChange)(THIS_ DISPID) PURE; - STDMETHOD(FreezeEvents)(THIS_ BOOL) PURE; -}; -#undef INTERFACE +/***************************************************************************** + * IOleControlTypes interface (v0.0) + */ +#ifndef __IOleControlTypes_INTERFACE_DEFINED__ +#define __IOleControlTypes_INTERFACE_DEFINED__ -EXTERN_C const IID IID_IOleControlSite; -#define INTERFACE IOleControlSite -DECLARE_INTERFACE_(IOleControlSite,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(OnControlInfoChanged)(THIS) PURE; - STDMETHOD(LockInPlaceActive)(THIS_ BOOL) PURE; - STDMETHOD(GetExtendedControl)(THIS_ LPDISPATCH*) PURE; - STDMETHOD(TransformCoords)(THIS_ POINTL*,POINTF*,DWORD) PURE; - STDMETHOD(TranslateAccelerator)(THIS_ LPMSG,DWORD) PURE; - STDMETHOD(OnFocus)(THIS_ BOOL) PURE; - STDMETHOD(ShowPropertyFrame)(THIS) PURE; -}; -#undef INTERFACE -#ifdef COBJMACROS -#define IOleControlSite_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IOleControlSite_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IOleControlSite_Release(T) (T)->lpVtbl->Release(T) -#define IOleControlSite_OnControlInfoChanged(T) (T)->lpVtbl->OnControlInfoChanged(T) -#define IOleControlSite_LockInPlaceActive(T,a) (T)->lpVtbl->LockInPlaceActive(T,a) -#define IOleControlSite_GetExtendedControl(T,a) (T)->lpVtbl->GetExtendedControl(T,a) -#define IOleControlSite_TransformCoords(T,a,b,c) (T)->lpVtbl->TransformCoords(T,a,b,c) -#define IOleControlSite_TranslateAccelerator(T,a,b) (T)->lpVtbl->TranslateAccelerator(T,a,b) -#define IOleControlSite_OnFocus(T,a) (T)->lpVtbl->OnFocus(T,a) -#define IOleControlSite_ShowPropertyFrame(T) (T)->lpVtbl->ShowPropertyFrame(T) +#endif /* __IOleControlTypes_INTERFACE_DEFINED__ */ + +#ifndef __IFont_FWD_DEFINED__ +#define __IFont_FWD_DEFINED__ +typedef interface IFont IFont; #endif -EXTERN_C const IID IID_ISimpleFrameSite; -#define INTERFACE ISimpleFrameSite -DECLARE_INTERFACE_(ISimpleFrameSite,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(PreMessageFilter)(THIS_ HWND,UINT,WPARAM,LPARAM,LRESULT*,PDWORD) PURE; - STDMETHOD(PostMessageFilter)(THIS_ HWND,UINT,WPARAM,LPARAM,LRESULT*,DWORD) PURE; -}; -#undef INTERFACE +typedef IFont *LPFONT; +typedef TEXTMETRICW TEXTMETRICOLE, *LPTEXTMETRICOLE; +/***************************************************************************** + * IFont interface + */ +#ifndef __IFont_INTERFACE_DEFINED__ +#define __IFont_INTERFACE_DEFINED__ -EXTERN_C const IID IID_IErrorLog; -#define INTERFACE IErrorLog -DECLARE_INTERFACE_(IErrorLog,IUnknown) +DEFINE_GUID(IID_IFont, 0xbef6e002, 0xa874, 0x101a, 0x8b,0xba, 0x00,0xaa,0x00,0x30,0x0c,0xab); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IFont : public IUnknown { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(AddError)(THIS_ LPCOLESTR,LPEXCEPINFO) PURE; -}; -#undef INTERFACE + virtual HRESULT STDMETHODCALLTYPE get_Name( + BSTR* pname) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Name( + BSTR name) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Size( + CY* psize) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Size( + CY size) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Bold( + BOOL* pbold) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Bold( + BOOL bold) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Italic( + BOOL* pitalic) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Italic( + BOOL italic) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Underline( + BOOL* punderline) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Underline( + BOOL underline) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Strikethrough( + BOOL* pstrikethrough) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Strikethrough( + BOOL strikethrough) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Weight( + SHORT* pweight) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Weight( + SHORT weight) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Charset( + SHORT* pcharset) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_Charset( + SHORT charset) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_hFont( + HFONT* phfont) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IFont** ppfont) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsEqual( + IFont* pFontOther) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetRatio( + LONG cyLogical, + LONG cyHimetric) = 0; + + virtual HRESULT STDMETHODCALLTYPE QueryTextMetrics( + TEXTMETRICOLE* ptm) = 0; + + virtual HRESULT STDMETHODCALLTYPE AddRefHfont( + HFONT hfont) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseHfont( + HFONT hfont) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetHdc( + HDC hdc) = 0; -EXTERN_C const IID IID_IPropertyBag; -#define INTERFACE IPropertyBag -DECLARE_INTERFACE_(IPropertyBag,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Read)(THIS_ LPCOLESTR,LPVARIANT,LPERRORLOG) PURE; - STDMETHOD(Write)(THIS_ LPCOLESTR,LPVARIANT) PURE; }; -#undef INTERFACE - -#ifdef COBJMACROS -#define IPropertyBag_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPropertyBag_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPropertyBag_Release(p) (p)->lpVtbl->Release(p) -#define IPropertyBag_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c) -#define IPropertyBag_Write(p,a,b) (p)->lpVtbl->Write(p,a,b) -#endif - -EXTERN_C const IID IID_IPropertyBag2; -#define INTERFACE IPropertyBag2 -DECLARE_INTERFACE_(IPropertyBag2,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Read)(THIS_ ULONG,PROPBAG2*,LPERRORLOG,VARIANT*,HRESULT*) PURE; - STDMETHOD(Write)(THIS_ ULONG,PROPBAG2*,VARIANT*) PURE; - STDMETHOD(CountProperties)(THIS_ ULONG*) PURE; - STDMETHOD(GetPropertyInfo)(THIS_ ULONG,ULONG,PROPBAG2*,ULONG*) PURE; - STDMETHOD(LoadObject)(THIS_ LPCOLESTR,DWORD,IUnknown*,LPERRORLOG) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IPropertyBag2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPropertyBag2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPropertyBag2_Release(p) (p)->lpVtbl->Release(p) -#define IPropertyBag2_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c) -#define IPropertyBag2_Write(p,a,b) (p)->lpVtbl->Write(p,a,b) -#define IPropertyBag2_CountProperties(p,a) (p)->lpVtbl->CountProperties(p,a) -#define IPropertyBag2_GetPropertyInfo(p,a,b,c,d) (p)->lpVtbl->GetPropertyInfo(p,a,b,c,d) -#define IPropertyBag2_LoadObject(p,a,b,c,d) (p)->lpVtbl->LoadObject(p,a,b,c,d) -#endif - -EXTERN_C const IID IID_IPersistPropertyBag; -#define INTERFACE IPersistPropertyBag -DECLARE_INTERFACE_(IPersistPropertyBag,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; - STDMETHOD(InitNew)(THIS) PURE; - STDMETHOD(Load)(THIS_ LPPROPERTYBAG,LPERRORLOG) PURE; - STDMETHOD(Save)(THIS_ LPPROPERTYBAG,BOOL,BOOL) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IPersistPropertyBag_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IPersistPropertyBag_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IPersistPropertyBag_Release(T) (T)->lpVtbl->Release(T) -#define IPersistPropertyBag_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) -#define IPersistPropertyBag_InitNew(T) (T)->lpVtbl->InitNew(T) -#define IPersistPropertyBag_Load(T,a,b) (T)->lpVtbl->Load(T,a,b) -#define IPersistPropertyBag_Save(T,a,b,c) (T)->lpVtbl->Save(T,a,b,c) -#endif - -EXTERN_C const IID IID_IPersistPropertyBag2; -#define INTERFACE IPersistPropertyBag2 -DECLARE_INTERFACE_(IPersistPropertyBag2,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; - STDMETHOD(InitNew)(THIS) PURE; - STDMETHOD(Load)(THIS_ LPPROPERTYBAG2,LPERRORLOG) PURE; - STDMETHOD(Save)(THIS_ LPPROPERTYBAG2,BOOL,BOOL) PURE; - STDMETHOD(IsDirty)(THIS) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IPersistPropertyBag2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IPersistPropertyBag2_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IPersistPropertyBag2_Release(T) (T)->lpVtbl->Release(T) -#define IPersistPropertyBag2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) -#define IPersistPropertyBag2_InitNew(T) (T)->lpVtbl->InitNew(T) -#define IPersistPropertyBag2_Load(T,a,b) (T)->lpVtbl->Load(T,a,b) -#define IPersistPropertyBag2_Save(T,a,b,c) (T)->lpVtbl->Save(T,a,b,c) -#define IPersistPropertyBag2_IsDirty(T) (T)->lpVtbl->IsDirty(T) -#endif - -EXTERN_C const IID IID_IPersistStreamInit; -#define INTERFACE IPersistStreamInit -DECLARE_INTERFACE_(IPersistStreamInit,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(Load)(THIS_ LPSTREAM) PURE; - STDMETHOD(Save)(THIS_ LPSTREAM,BOOL) PURE; - STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE; - STDMETHOD(InitNew)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPersistMemory; -#define INTERFACE IPersistMemory -DECLARE_INTERFACE_(IPersistMemory,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(Load)(THIS_ PVOID,ULONG) PURE; - STDMETHOD(Save)(THIS_ PVOID,BOOL,ULONG) PURE; - STDMETHOD(GetSizeMax)(THIS_ PULONG) PURE; - STDMETHOD(InitNew)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPropertyNotifySink; -#define INTERFACE IPropertyNotifySink -DECLARE_INTERFACE_(IPropertyNotifySink,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(OnChanged)(THIS_ DISPID) PURE; - STDMETHOD(OnRequestEdit)(THIS_ DISPID) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IPropertyNotifySink_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IPropertyNotifySink_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IPropertyNotifySink_Release(T) (T)->lpVtbl->Release(T) -#define IPropertyNotifySink_OnChanged(T,a) (T)->lpVtbl->OnChanged(T,a) -#define IPropertyNotifySink_OnRequestEdit(T,a) (T)->lpVtbl->OnRequestEdit(T,a) -#endif - -EXTERN_C const IID IID_IProvideClassInfo; -#define INTERFACE IProvideClassInfo -DECLARE_INTERFACE_(IProvideClassInfo,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassInfo)(THIS_ LPTYPEINFO*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IProvideClassInfo2; -#define INTERFACE IProvideClassInfo2 -DECLARE_INTERFACE_(IProvideClassInfo2,IProvideClassInfo) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassInfo)(THIS_ LPTYPEINFO*) PURE; - STDMETHOD(GetGUID)(THIS_ DWORD,GUID*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IConnectionPointContainer; -#define INTERFACE IConnectionPointContainer -DECLARE_INTERFACE_(IConnectionPointContainer,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(EnumConnectionPoints)(THIS_ LPENUMCONNECTIONPOINTS*) PURE; - STDMETHOD(FindConnectionPoint)(THIS_ REFIID,LPCONNECTIONPOINT*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IConnectionPointContainer_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IConnectionPointContainer_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IConnectionPointContainer_Release(T) (T)->lpVtbl->Release(T) -#define IConnectionPointContainer_EnumConnectionPoints(T,a) (T)->lpVtbl->EnumConnectionPoints(T,a) -#define IConnectionPointContainer_FindConnectionPoint(T,a,b) (T)->lpVtbl->FindConnectionPoint(T,a,b) -#endif - -EXTERN_C const IID IID_IEnumConnectionPoints; -#define INTERFACE IEnumConnectionPoints -DECLARE_INTERFACE_(IEnumConnectionPoints,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Next)(THIS_ ULONG,LPCONNECTIONPOINT*,ULONG*) PURE; - STDMETHOD(Skip)(THIS_ ULONG) PURE; - STDMETHOD(Reset)(THIS) PURE; - STDMETHOD(Clone)(THIS_ LPENUMCONNECTIONPOINTS*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IConnectionPoint; -#define INTERFACE IConnectionPoint -DECLARE_INTERFACE_(IConnectionPoint,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetConnectionInterface)(THIS_ IID*) PURE; - STDMETHOD(GetConnectionPointContainer)(THIS_ IConnectionPointContainer**) PURE; - STDMETHOD(Advise)(THIS_ LPUNKNOWN,PDWORD) PURE; - STDMETHOD(Unadvise)(THIS_ DWORD) PURE; - STDMETHOD(EnumConnections)(THIS_ LPENUMCONNECTIONS*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IConnectionPoint_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IConnectionPoint_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IConnectionPoint_Release(T) (T)->lpVtbl->Release(T) -#define IConnectionPoint_GetConnectionInterface(T,a) (T)->lpVtbl->GetConnectionInterface(T,a) -#define IConnectionPoint_GetConnectionPointContainer(T,a) (T)->lpVtbl->GetConnectionPointContainer(T,a) -#define IConnectionPoint_Advise(T,a,b) (T)->lpVtbl->Advise(T,a,b) -#define IConnectionPoint_Unadvise(T,a) (T)->lpVtbl->Unadvise(T,a) -#define IConnectionPoint_EnumConnections(T,a) (T)->lpVtbl->EnumConnections(T,a) -#endif - -EXTERN_C const IID IID_IEnumConnections; -#define INTERFACE IEnumConnections -DECLARE_INTERFACE_(IEnumConnections,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Next)(THIS_ ULONG,LPCONNECTDATA,PULONG) PURE; - STDMETHOD(Skip)(THIS_ ULONG) PURE; - STDMETHOD(Reset)(THIS) PURE; - STDMETHOD(Clone)(THIS_ LPENUMCONNECTIONS*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IEnumConnections_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IEnumConnections_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IEnumConnections_Release(T) (T)->lpVtbl->Release(T) -#define IEnumConnections_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c) -#define IEnumConnections_Skip(T,a) (T)->lpVtbl->Skip(T,a) -#define IEnumConnections_Reset(T) (T)->lpVtbl->Reset(T) -#define IEnumConnections_Clone(T,a) (T)->lpVtbl->Clone(T,a) -#endif - -EXTERN_C const IID IID_IClassFactory2; -#define INTERFACE IClassFactory2 -DECLARE_INTERFACE_(IClassFactory2,IClassFactory) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE; - STDMETHOD(LockServer)(THIS_ BOOL) PURE; - STDMETHOD(GetLicInfo)(THIS_ LPLICINFO) PURE; - STDMETHOD(RequestLicKey)(THIS_ DWORD,BSTR*) PURE; - STDMETHOD(CreateInstanceLic)(THIS_ LPUNKNOWN,LPUNKNOWN,REFIID,BSTR,PVOID*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_ISpecifyPropertyPages; -#define INTERFACE ISpecifyPropertyPages -DECLARE_INTERFACE_(ISpecifyPropertyPages,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetPages)(THIS_ CAUUID*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPerPropertyBrowsing; -#define INTERFACE IPerPropertyBrowsing -DECLARE_INTERFACE_(IPerPropertyBrowsing,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetDisplayString)(THIS_ DISPID,BSTR*) PURE; - STDMETHOD(MapPropertyToPage)(THIS_ DISPID,LPCLSID) PURE; - STDMETHOD(GetPredefinedStrings)(THIS_ DISPID,CALPOLESTR*,CADWORD*) PURE; - STDMETHOD(GetPredefinedValue)(THIS_ DISPID,DWORD,VARIANT*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPropertyPageSite; -#define INTERFACE IPropertyPageSite -DECLARE_INTERFACE_(IPropertyPageSite,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(OnStatusChange)(THIS_ DWORD) PURE; - STDMETHOD(GetLocaleID)(THIS_ LCID*) PURE; - STDMETHOD(GetPageContainer)(THIS_ LPUNKNOWN*) PURE; - STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPropertyPage; -#define INTERFACE IPropertyPage -DECLARE_INTERFACE_(IPropertyPage,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SetPageSite)(THIS_ LPPROPERTYPAGESITE) PURE; - STDMETHOD(Activate)(THIS_ HWND,LPCRECT,BOOL) PURE; - STDMETHOD(Deactivate)(THIS) PURE; - STDMETHOD(GetPageInfo)(THIS_ LPPROPPAGEINFO) PURE; - STDMETHOD(SetObjects)(THIS_ ULONG,LPUNKNOWN*) PURE; - STDMETHOD(Show)(THIS_ UINT) PURE; - STDMETHOD(Move)(THIS_ LPCRECT) PURE; - STDMETHOD(IsPageDirty)(THIS) PURE; - STDMETHOD(Apply)(THIS) PURE; - STDMETHOD(Help)(THIS_ LPCOLESTR) PURE; - STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPropertyPage2; -#define INTERFACE IPropertyPage2 -DECLARE_INTERFACE_(IPropertyPage2,IPropertyPage) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SetPageSite)(THIS_ LPPROPERTYPAGESITE) PURE; - STDMETHOD(Activate)(THIS_ HWND,LPCRECT,BOOL) PURE; - STDMETHOD(Deactivate)(THIS) PURE; - STDMETHOD(GetPageInfo)(THIS_ LPPROPPAGEINFO) PURE; - STDMETHOD(SetObjects)(THIS_ ULONG,LPUNKNOWN*) PURE; - STDMETHOD(Show)(THIS_ UINT) PURE; - STDMETHOD(Move)(THIS_ LPCRECT) PURE; - STDMETHOD(IsPageDirty)(THIS) PURE; - STDMETHOD(Apply)(THIS) PURE; - STDMETHOD(Help)(THIS_ LPCOLESTR) PURE; - STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE; - STDMETHOD(EditProperty)(THIS_ DISPID) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IFont; -#define INTERFACE IFont -DECLARE_INTERFACE_(IFont,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(get_Name)(THIS_ BSTR*) PURE; - STDMETHOD(put_Name)(THIS_ BSTR) PURE; - STDMETHOD(get_Size)(THIS_ CY*) PURE; - STDMETHOD(put_Size)(THIS_ CY) PURE; - STDMETHOD(get_Bold)(THIS_ BOOL*) PURE; - STDMETHOD(put_Bold)(THIS_ BOOL) PURE; - STDMETHOD(get_Italic)(THIS_ BOOL*) PURE; - STDMETHOD(put_Italic)(THIS_ BOOL) PURE; - STDMETHOD(get_Underline)(THIS_ BOOL*) PURE; - STDMETHOD(put_Underline)(THIS_ BOOL) PURE; - STDMETHOD(get_Strikethrough)(THIS_ BOOL*) PURE; - STDMETHOD(put_Strikethrough)(THIS_ BOOL) PURE; - STDMETHOD(get_Weight)(THIS_ short*) PURE; - STDMETHOD(put_Weight)(THIS_ short) PURE; - STDMETHOD(get_Charset)(THIS_ short*) PURE; - STDMETHOD(put_Charset)(THIS_ short) PURE; - STDMETHOD(get_hFont)(THIS_ HFONT*) PURE; - STDMETHOD(Clone)(THIS_ IFont**) PURE; - STDMETHOD(IsEqual)(THIS_ IFont*) PURE; - STDMETHOD(SetRatio)(THIS_ long,long) PURE; - STDMETHOD(QueryTextMetrics)(THIS_ LPTEXTMETRICOLE) PURE; - STDMETHOD(AddRefHfont)(THIS_ HFONT) PURE; - STDMETHOD(ReleaseHfont)(THIS_ HFONT) PURE; - STDMETHOD(SetHdc)(THIS_ HDC) PURE; -}; -#undef INTERFACE +#else +typedef struct IFontVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IFont* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IFont* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IFont* This); + + /*** IFont methods ***/ + HRESULT (STDMETHODCALLTYPE *get_Name)( + IFont* This, + BSTR* pname); + + HRESULT (STDMETHODCALLTYPE *put_Name)( + IFont* This, + BSTR name); + + HRESULT (STDMETHODCALLTYPE *get_Size)( + IFont* This, + CY* psize); + + HRESULT (STDMETHODCALLTYPE *put_Size)( + IFont* This, + CY size); + + HRESULT (STDMETHODCALLTYPE *get_Bold)( + IFont* This, + BOOL* pbold); + + HRESULT (STDMETHODCALLTYPE *put_Bold)( + IFont* This, + BOOL bold); + + HRESULT (STDMETHODCALLTYPE *get_Italic)( + IFont* This, + BOOL* pitalic); + + HRESULT (STDMETHODCALLTYPE *put_Italic)( + IFont* This, + BOOL italic); + + HRESULT (STDMETHODCALLTYPE *get_Underline)( + IFont* This, + BOOL* punderline); + + HRESULT (STDMETHODCALLTYPE *put_Underline)( + IFont* This, + BOOL underline); + + HRESULT (STDMETHODCALLTYPE *get_Strikethrough)( + IFont* This, + BOOL* pstrikethrough); + + HRESULT (STDMETHODCALLTYPE *put_Strikethrough)( + IFont* This, + BOOL strikethrough); + + HRESULT (STDMETHODCALLTYPE *get_Weight)( + IFont* This, + SHORT* pweight); + + HRESULT (STDMETHODCALLTYPE *put_Weight)( + IFont* This, + SHORT weight); + + HRESULT (STDMETHODCALLTYPE *get_Charset)( + IFont* This, + SHORT* pcharset); + + HRESULT (STDMETHODCALLTYPE *put_Charset)( + IFont* This, + SHORT charset); + + HRESULT (STDMETHODCALLTYPE *get_hFont)( + IFont* This, + HFONT* phfont); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IFont* This, + IFont** ppfont); + + HRESULT (STDMETHODCALLTYPE *IsEqual)( + IFont* This, + IFont* pFontOther); + + HRESULT (STDMETHODCALLTYPE *SetRatio)( + IFont* This, + LONG cyLogical, + LONG cyHimetric); + + HRESULT (STDMETHODCALLTYPE *QueryTextMetrics)( + IFont* This, + TEXTMETRICOLE* ptm); + + HRESULT (STDMETHODCALLTYPE *AddRefHfont)( + IFont* This, + HFONT hfont); + + HRESULT (STDMETHODCALLTYPE *ReleaseHfont)( + IFont* This, + HFONT hfont); + + HRESULT (STDMETHODCALLTYPE *SetHdc)( + IFont* This, + HDC hdc); + + END_INTERFACE +} IFontVtbl; +interface IFont { + const IFontVtbl* lpVtbl; +}; #ifdef COBJMACROS +/*** IUnknown methods ***/ #define IFont_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) #define IFont_AddRef(p) (p)->lpVtbl->AddRef(p) #define IFont_Release(p) (p)->lpVtbl->Release(p) +/*** IFont methods ***/ #define IFont_get_Name(p,a) (p)->lpVtbl->get_Name(p,a) #define IFont_put_Name(p,a) (p)->lpVtbl->put_Name(p,a) #define IFont_get_Size(p,a) (p)->lpVtbl->get_Size(p,a) @@ -625,63 +287,554 @@ DECLARE_INTERFACE_(IFont,IUnknown) #define IFont_SetHdc(p,a) (p)->lpVtbl->SetHdc(p,a) #endif -EXTERN_C const IID IID_IFontDisp; -#define INTERFACE IFontDisp -DECLARE_INTERFACE_(IFontDisp,IDispatch) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; - STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; -}; -#undef INTERFACE +#endif -EXTERN_C const IID IID_IFontEventsDisp; -#define INTERFACE IFontEventsDisp -DECLARE_INTERFACE_(IFontEventsDisp,IDispatch) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; - STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; - /*[id(0x9)]*/STDMETHOD(FontChanged)(THIS_ BSTR) PURE; -}; -#undef INTERFACE +HRESULT CALLBACK IFont_get_Name_Proxy( + IFont* This, + BSTR* pname); +void __RPC_STUB IFont_get_Name_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_put_Name_Proxy( + IFont* This, + BSTR name); +void __RPC_STUB IFont_put_Name_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_get_Size_Proxy( + IFont* This, + CY* psize); +void __RPC_STUB IFont_get_Size_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_put_Size_Proxy( + IFont* This, + CY size); +void __RPC_STUB IFont_put_Size_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_get_Bold_Proxy( + IFont* This, + BOOL* pbold); +void __RPC_STUB IFont_get_Bold_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_put_Bold_Proxy( + IFont* This, + BOOL bold); +void __RPC_STUB IFont_put_Bold_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_get_Italic_Proxy( + IFont* This, + BOOL* pitalic); +void __RPC_STUB IFont_get_Italic_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_put_Italic_Proxy( + IFont* This, + BOOL italic); +void __RPC_STUB IFont_put_Italic_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_get_Underline_Proxy( + IFont* This, + BOOL* punderline); +void __RPC_STUB IFont_get_Underline_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_put_Underline_Proxy( + IFont* This, + BOOL underline); +void __RPC_STUB IFont_put_Underline_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_get_Strikethrough_Proxy( + IFont* This, + BOOL* pstrikethrough); +void __RPC_STUB IFont_get_Strikethrough_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_put_Strikethrough_Proxy( + IFont* This, + BOOL strikethrough); +void __RPC_STUB IFont_put_Strikethrough_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_get_Weight_Proxy( + IFont* This, + SHORT* pweight); +void __RPC_STUB IFont_get_Weight_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_put_Weight_Proxy( + IFont* This, + SHORT weight); +void __RPC_STUB IFont_put_Weight_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_get_Charset_Proxy( + IFont* This, + SHORT* pcharset); +void __RPC_STUB IFont_get_Charset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_put_Charset_Proxy( + IFont* This, + SHORT charset); +void __RPC_STUB IFont_put_Charset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_get_hFont_Proxy( + IFont* This, + HFONT* phfont); +void __RPC_STUB IFont_get_hFont_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_Clone_Proxy( + IFont* This, + IFont** ppfont); +void __RPC_STUB IFont_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_IsEqual_Proxy( + IFont* This, + IFont* pFontOther); +void __RPC_STUB IFont_IsEqual_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_SetRatio_Proxy( + IFont* This, + LONG cyLogical, + LONG cyHimetric); +void __RPC_STUB IFont_SetRatio_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_QueryTextMetrics_Proxy( + IFont* This, + TEXTMETRICOLE* ptm); +void __RPC_STUB IFont_QueryTextMetrics_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_AddRefHfont_Proxy( + IFont* This, + HFONT hfont); +void __RPC_STUB IFont_AddRefHfont_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_ReleaseHfont_Proxy( + IFont* This, + HFONT hfont); +void __RPC_STUB IFont_ReleaseHfont_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IFont_SetHdc_Proxy( + IFont* This, + HDC hdc); +void __RPC_STUB IFont_SetHdc_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); -EXTERN_C const IID IID_IPicture; -#define INTERFACE IPicture -DECLARE_INTERFACE_(IPicture,IUnknown) +#endif /* __IFont_INTERFACE_DEFINED__ */ + +#ifndef __IFontDisp_FWD_DEFINED__ +#define __IFontDisp_FWD_DEFINED__ +typedef interface IFontDisp IFontDisp; +#endif + +typedef IFontDisp *LPFONTDISP; +/***************************************************************************** + * IFontDisp interface + */ +#ifndef __IFontDisp_INTERFACE_DEFINED__ +#define __IFontDisp_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IFontDisp, 0xbef6e003, 0xa874, 0x101a, 0x8b,0xba, 0x00,0xaa,0x00,0x30,0x0c,0xab); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IFontDisp : public IDispatch { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(get_Handle)(THIS_ OLE_HANDLE*) PURE; - STDMETHOD(get_hPal)(THIS_ OLE_HANDLE*) PURE; - STDMETHOD(get_Type)(THIS_ short*) PURE; - STDMETHOD(get_Width)(THIS_ OLE_XSIZE_HIMETRIC*) PURE; - STDMETHOD(get_Height)(THIS_ OLE_YSIZE_HIMETRIC*) PURE; - STDMETHOD(Render)(THIS_ HDC,long,long,long,long,OLE_XPOS_HIMETRIC,OLE_YPOS_HIMETRIC,OLE_XSIZE_HIMETRIC,OLE_YSIZE_HIMETRIC,LPCRECT) PURE; - STDMETHOD(set_hPal)(THIS_ OLE_HANDLE) PURE; - STDMETHOD(get_CurDC)(THIS_ HDC*) PURE; - STDMETHOD(SelectPicture)(THIS_ HDC,HDC*,OLE_HANDLE*) PURE; - STDMETHOD(get_KeepOriginalFormat)(THIS_ BOOL*) PURE; - STDMETHOD(put_KeepOriginalFormat)(THIS_ BOOL) PURE; - STDMETHOD(PictureChanged)(THIS) PURE; - STDMETHOD(SaveAsFile)(THIS_ LPSTREAM,BOOL,LONG*) PURE; - STDMETHOD(get_Attributes)(THIS_ PDWORD) PURE; }; -#undef INTERFACE +#else +typedef struct IFontDispVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IFontDisp* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IFontDisp* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IFontDisp* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IFontDisp* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IFontDisp* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IFontDisp* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IFontDisp* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + END_INTERFACE +} IFontDispVtbl; +interface IFontDisp { + const IFontDispVtbl* lpVtbl; +}; #ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IFontDisp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IFontDisp_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IFontDisp_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IFontDisp_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IFontDisp_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IFontDisp_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IFontDisp_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +#endif + +#endif + + +#endif /* __IFontDisp_INTERFACE_DEFINED__ */ + +#ifndef __IFontEventsDisp_FWD_DEFINED__ +#define __IFontEventsDisp_FWD_DEFINED__ +typedef interface IFontEventsDisp IFontEventsDisp; +#endif + +typedef IFontEventsDisp *LPFONTEVENTS; +/***************************************************************************** + * IFontEventsDisp interface + */ +#ifndef __IFontEventsDisp_INTERFACE_DEFINED__ +#define __IFontEventsDisp_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IFontEventsDisp, 0x4ef6100a, 0xaf88, 0x11d0, 0x98,0x46, 0x00,0xc0,0x4f,0xc2,0x99,0x93); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IFontEventsDisp : public IDispatch +{ +}; +#else +typedef struct IFontEventsDispVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IFontEventsDisp* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IFontEventsDisp* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IFontEventsDisp* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IFontEventsDisp* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IFontEventsDisp* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IFontEventsDisp* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IFontEventsDisp* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + END_INTERFACE +} IFontEventsDispVtbl; +interface IFontEventsDisp { + const IFontEventsDispVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IFontEventsDisp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IFontEventsDisp_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IFontEventsDisp_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IFontEventsDisp_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IFontEventsDisp_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IFontEventsDisp_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IFontEventsDisp_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +#endif + +#endif + + +#endif /* __IFontEventsDisp_INTERFACE_DEFINED__ */ + +#ifndef __IPicture_FWD_DEFINED__ +#define __IPicture_FWD_DEFINED__ +typedef interface IPicture IPicture; +#endif + +typedef IPicture *LPPICTURE; +typedef enum tagPicture { + PICTURE_SCALABLE = 0x1, + PICTURE_TRANSPARENT = 0x2 +} PICTUREATTRIBUTES; +typedef UINT OLE_HANDLE; +typedef LONG OLE_XPOS_HIMETRIC; +typedef LONG OLE_YPOS_HIMETRIC; +typedef LONG OLE_XSIZE_HIMETRIC; +typedef LONG OLE_YSIZE_HIMETRIC; +/***************************************************************************** + * IPicture interface + */ +#ifndef __IPicture_INTERFACE_DEFINED__ +#define __IPicture_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPicture, 0x7bf80980, 0xbf32, 0x101a, 0x8b,0xbb, 0x00,0xaa,0x00,0x30,0x0c,0xab); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPicture : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE get_Handle( + OLE_HANDLE* pHandle) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_hPal( + OLE_HANDLE* phPal) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Type( + SHORT* pType) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Width( + OLE_XSIZE_HIMETRIC* pWidth) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Height( + OLE_YSIZE_HIMETRIC* pHeight) = 0; + + virtual HRESULT STDMETHODCALLTYPE Render( + HDC hdc, + LONG x, + LONG y, + LONG cx, + LONG cy, + OLE_XPOS_HIMETRIC xSrc, + OLE_YPOS_HIMETRIC ySrc, + OLE_XSIZE_HIMETRIC cxSrc, + OLE_YSIZE_HIMETRIC cySrc, + LPCRECT pRcWBounds) = 0; + + virtual HRESULT STDMETHODCALLTYPE set_hPal( + OLE_HANDLE hPal) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_CurDC( + HDC* phDC) = 0; + + virtual HRESULT STDMETHODCALLTYPE SelectPicture( + HDC hDCIn, + HDC* phDCOut, + OLE_HANDLE* phBmpOut) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_KeepOriginalFormat( + BOOL* pKeep) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_KeepOriginalFormat( + BOOL keep) = 0; + + virtual HRESULT STDMETHODCALLTYPE PictureChanged( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SaveAsFile( + LPSTREAM pStream, + BOOL fSaveMemCopy, + LONG* pCbSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_Attributes( + DWORD* pDwAttr) = 0; + +}; +#else +typedef struct IPictureVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPicture* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPicture* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPicture* This); + + /*** IPicture methods ***/ + HRESULT (STDMETHODCALLTYPE *get_Handle)( + IPicture* This, + OLE_HANDLE* pHandle); + + HRESULT (STDMETHODCALLTYPE *get_hPal)( + IPicture* This, + OLE_HANDLE* phPal); + + HRESULT (STDMETHODCALLTYPE *get_Type)( + IPicture* This, + SHORT* pType); + + HRESULT (STDMETHODCALLTYPE *get_Width)( + IPicture* This, + OLE_XSIZE_HIMETRIC* pWidth); + + HRESULT (STDMETHODCALLTYPE *get_Height)( + IPicture* This, + OLE_YSIZE_HIMETRIC* pHeight); + + HRESULT (STDMETHODCALLTYPE *Render)( + IPicture* This, + HDC hdc, + LONG x, + LONG y, + LONG cx, + LONG cy, + OLE_XPOS_HIMETRIC xSrc, + OLE_YPOS_HIMETRIC ySrc, + OLE_XSIZE_HIMETRIC cxSrc, + OLE_YSIZE_HIMETRIC cySrc, + LPCRECT pRcWBounds); + + HRESULT (STDMETHODCALLTYPE *set_hPal)( + IPicture* This, + OLE_HANDLE hPal); + + HRESULT (STDMETHODCALLTYPE *get_CurDC)( + IPicture* This, + HDC* phDC); + + HRESULT (STDMETHODCALLTYPE *SelectPicture)( + IPicture* This, + HDC hDCIn, + HDC* phDCOut, + OLE_HANDLE* phBmpOut); + + HRESULT (STDMETHODCALLTYPE *get_KeepOriginalFormat)( + IPicture* This, + BOOL* pKeep); + + HRESULT (STDMETHODCALLTYPE *put_KeepOriginalFormat)( + IPicture* This, + BOOL keep); + + HRESULT (STDMETHODCALLTYPE *PictureChanged)( + IPicture* This); + + HRESULT (STDMETHODCALLTYPE *SaveAsFile)( + IPicture* This, + LPSTREAM pStream, + BOOL fSaveMemCopy, + LONG* pCbSize); + + HRESULT (STDMETHODCALLTYPE *get_Attributes)( + IPicture* This, + DWORD* pDwAttr); + + END_INTERFACE +} IPictureVtbl; +interface IPicture { + const IPictureVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ #define IPicture_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) #define IPicture_AddRef(p) (p)->lpVtbl->AddRef(p) #define IPicture_Release(p) (p)->lpVtbl->Release(p) +/*** IPicture methods ***/ #define IPicture_get_Handle(p,a) (p)->lpVtbl->get_Handle(p,a) #define IPicture_get_hPal(p,a) (p)->lpVtbl->get_hPal(p,a) #define IPicture_get_Type(p,a) (p)->lpVtbl->get_Type(p,a) @@ -698,56 +851,4270 @@ DECLARE_INTERFACE_(IPicture,IUnknown) #define IPicture_get_Attributes(p,a) (p)->lpVtbl->get_Attributes(p,a) #endif -EXTERN_C const IID IID_IPictureDisp; -#define INTERFACE IPictureDisp -DECLARE_INTERFACE_(IPictureDisp,IDispatch) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; - STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; - STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; - STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; -}; -#undef INTERFACE +#endif -EXTERN_C const IID IID_IOleInPlaceSiteEx; -#define INTERFACE IOleInPlaceSiteEx -DECLARE_INTERFACE_(IOleInPlaceSiteEx,IOleInPlaceSite) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(CanInPlaceActivate)(THIS) PURE; - STDMETHOD(OnInPlaceActivate)(THIS) PURE; - STDMETHOD(OnUIActivate)(THIS) PURE; - STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame**,IOleInPlaceUIWindow**,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO) PURE; - STDMETHOD(Scroll)(THIS_ SIZE) PURE; - STDMETHOD(OnUIDeactivate)(THIS_ BOOL) PURE; - STDMETHOD(OnInPlaceDeactivate)(THIS) PURE; - STDMETHOD(DiscardUndoState)(THIS) PURE; - STDMETHOD(DeactivateAndUndo)(THIS) PURE; - STDMETHOD(OnPosRectChange)(THIS_ LPCRECT) PURE; - STDMETHOD(OnInPlaceActivateEx)(THIS_ BOOL*,DWORD) PURE; - STDMETHOD(OnInPlaceDeactivateEx)(THIS_ BOOL) PURE; - STDMETHOD(RequestUIActivate)(THIS) PURE; -}; -#undef INTERFACE +HRESULT CALLBACK IPicture_get_Handle_Proxy( + IPicture* This, + OLE_HANDLE* pHandle); +void __RPC_STUB IPicture_get_Handle_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_get_hPal_Proxy( + IPicture* This, + OLE_HANDLE* phPal); +void __RPC_STUB IPicture_get_hPal_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_get_Type_Proxy( + IPicture* This, + SHORT* pType); +void __RPC_STUB IPicture_get_Type_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_get_Width_Proxy( + IPicture* This, + OLE_XSIZE_HIMETRIC* pWidth); +void __RPC_STUB IPicture_get_Width_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_get_Height_Proxy( + IPicture* This, + OLE_YSIZE_HIMETRIC* pHeight); +void __RPC_STUB IPicture_get_Height_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_Render_Proxy( + IPicture* This, + HDC hdc, + LONG x, + LONG y, + LONG cx, + LONG cy, + OLE_XPOS_HIMETRIC xSrc, + OLE_YPOS_HIMETRIC ySrc, + OLE_XSIZE_HIMETRIC cxSrc, + OLE_YSIZE_HIMETRIC cySrc, + LPCRECT pRcWBounds); +void __RPC_STUB IPicture_Render_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_set_hPal_Proxy( + IPicture* This, + OLE_HANDLE hPal); +void __RPC_STUB IPicture_set_hPal_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_get_CurDC_Proxy( + IPicture* This, + HDC* phDC); +void __RPC_STUB IPicture_get_CurDC_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_SelectPicture_Proxy( + IPicture* This, + HDC hDCIn, + HDC* phDCOut, + OLE_HANDLE* phBmpOut); +void __RPC_STUB IPicture_SelectPicture_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_get_KeepOriginalFormat_Proxy( + IPicture* This, + BOOL* pKeep); +void __RPC_STUB IPicture_get_KeepOriginalFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_put_KeepOriginalFormat_Proxy( + IPicture* This, + BOOL keep); +void __RPC_STUB IPicture_put_KeepOriginalFormat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_PictureChanged_Proxy( + IPicture* This); +void __RPC_STUB IPicture_PictureChanged_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_SaveAsFile_Proxy( + IPicture* This, + LPSTREAM pStream, + BOOL fSaveMemCopy, + LONG* pCbSize); +void __RPC_STUB IPicture_SaveAsFile_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPicture_get_Attributes_Proxy( + IPicture* This, + DWORD* pDwAttr); +void __RPC_STUB IPicture_get_Attributes_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); -EXTERN_C const IID IID_IObjectWithSite; -#define INTERFACE IObjectWithSite -DECLARE_INTERFACE_(IObjectWithSite,IUnknown) +#endif /* __IPicture_INTERFACE_DEFINED__ */ + +#ifndef __IPictureDisp_FWD_DEFINED__ +#define __IPictureDisp_FWD_DEFINED__ +typedef interface IPictureDisp IPictureDisp; +#endif + +typedef IPictureDisp *LPPICTUREDISP; +/***************************************************************************** + * IPictureDisp interface + */ +#ifndef __IPictureDisp_INTERFACE_DEFINED__ +#define __IPictureDisp_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPictureDisp, 0x7bf80981, 0xbf32, 0x101a, 0x8b,0xbb, 0x00,0xaa,0x00,0x30,0x0c,0xab); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPictureDisp : public IDispatch { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SetSite)(THIS_ IUnknown*) PURE; - STDMETHOD(GetSite)(THIS_ REFIID, void**) PURE; }; -#undef INTERFACE +#else +typedef struct IPictureDispVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPictureDisp* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPictureDisp* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPictureDisp* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IPictureDisp* This, + UINT* pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IPictureDisp* This, + UINT iTInfo, + LCID lcid, + ITypeInfo** ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IPictureDisp* This, + REFIID riid, + LPOLESTR* rgszNames, + UINT cNames, + LCID lcid, + DISPID* rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IPictureDisp* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS* pDispParams, + VARIANT* pVarResult, + EXCEPINFO* pExcepInfo, + UINT* puArgErr); + + END_INTERFACE +} IPictureDispVtbl; +interface IPictureDisp { + const IPictureDispVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPictureDisp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPictureDisp_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPictureDisp_Release(p) (p)->lpVtbl->Release(p) +/*** IDispatch methods ***/ +#define IPictureDisp_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) +#define IPictureDisp_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) +#define IPictureDisp_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) +#define IPictureDisp_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) +#endif + +#endif + + +#endif /* __IPictureDisp_INTERFACE_DEFINED__ */ + +#ifndef __IOleControl_FWD_DEFINED__ +#define __IOleControl_FWD_DEFINED__ +typedef interface IOleControl IOleControl; +#endif + +typedef IOleControl *LPOLECONTROL; +typedef struct tagCONTROLINFO { + ULONG cb; + HACCEL hAccel; + USHORT cAccel; + DWORD dwFlags; +} CONTROLINFO, *LPCONTROLINFO; +typedef enum tagCTRLINFO { + CTRLINFO_EATS_RETURN = 1, + CTRLINFO_EATS_ESCAPE = 2 +} CTRLINFO; +/***************************************************************************** + * IOleControl interface + */ +#ifndef __IOleControl_INTERFACE_DEFINED__ +#define __IOleControl_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IOleControl, 0xb196b288, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IOleControl : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetControlInfo( + CONTROLINFO* pCI) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnMnemonic( + MSG* pMsg) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnAmbientPropertyChange( + DISPID dispID) = 0; + + virtual HRESULT STDMETHODCALLTYPE FreezeEvents( + BOOL bFreeze) = 0; + +}; +#else +typedef struct IOleControlVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IOleControl* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IOleControl* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IOleControl* This); + + /*** IOleControl methods ***/ + HRESULT (STDMETHODCALLTYPE *GetControlInfo)( + IOleControl* This, + CONTROLINFO* pCI); + + HRESULT (STDMETHODCALLTYPE *OnMnemonic)( + IOleControl* This, + MSG* pMsg); + + HRESULT (STDMETHODCALLTYPE *OnAmbientPropertyChange)( + IOleControl* This, + DISPID dispID); + + HRESULT (STDMETHODCALLTYPE *FreezeEvents)( + IOleControl* This, + BOOL bFreeze); + + END_INTERFACE +} IOleControlVtbl; +interface IOleControl { + const IOleControlVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IOleControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleControl_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleControl_Release(p) (p)->lpVtbl->Release(p) +/*** IOleControl methods ***/ +#define IOleControl_GetControlInfo(p,a) (p)->lpVtbl->GetControlInfo(p,a) +#define IOleControl_OnMnemonic(p,a) (p)->lpVtbl->OnMnemonic(p,a) +#define IOleControl_OnAmbientPropertyChange(p,a) (p)->lpVtbl->OnAmbientPropertyChange(p,a) +#define IOleControl_FreezeEvents(p,a) (p)->lpVtbl->FreezeEvents(p,a) +#endif + +#endif + +HRESULT CALLBACK IOleControl_GetControlInfo_Proxy( + IOleControl* This, + CONTROLINFO* pCI); +void __RPC_STUB IOleControl_GetControlInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleControl_OnMnemonic_Proxy( + IOleControl* This, + MSG* pMsg); +void __RPC_STUB IOleControl_OnMnemonic_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleControl_OnAmbientPropertyChange_Proxy( + IOleControl* This, + DISPID dispID); +void __RPC_STUB IOleControl_OnAmbientPropertyChange_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleControl_FreezeEvents_Proxy( + IOleControl* This, + BOOL bFreeze); +void __RPC_STUB IOleControl_FreezeEvents_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IOleControl_INTERFACE_DEFINED__ */ + +#ifndef __IOleControlSite_FWD_DEFINED__ +#define __IOleControlSite_FWD_DEFINED__ +typedef interface IOleControlSite IOleControlSite; +#endif + +typedef IOleControlSite *LPOLECONTROLSITE; +typedef struct tagPOINTF { + FLOAT x; + FLOAT y; +} POINTF, *LPPOINTF; +typedef enum tagXFORMCOORDS { + XFORMCOORDS_POSITION = 0x1, + XFORMCOORDS_SIZE = 0x2, + XFORMCOORDS_HIMETRICTOCONTAINER = 0x4, + XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8, + XFORMCOORDS_EVENTCOMPAT = 0x10 +} XFORMCOORDS; +/***************************************************************************** + * IOleControlSite interface + */ +#ifndef __IOleControlSite_INTERFACE_DEFINED__ +#define __IOleControlSite_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IOleControlSite, 0xb196b289, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IOleControlSite : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE OnControlInfoChanged( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE LockInPlaceActive( + BOOL fLock) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetExtendedControl( + IDispatch** ppDisp) = 0; + + virtual HRESULT STDMETHODCALLTYPE TransformCoords( + POINTL* pPtlHimetric, + POINTF* pPtfContainer, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator( + MSG* pMsg, + DWORD grfModifiers) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnFocus( + BOOL fGotFocus) = 0; + + virtual HRESULT STDMETHODCALLTYPE ShowPropertyFrame( + ) = 0; + +}; +#else +typedef struct IOleControlSiteVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IOleControlSite* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IOleControlSite* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IOleControlSite* This); + + /*** IOleControlSite methods ***/ + HRESULT (STDMETHODCALLTYPE *OnControlInfoChanged)( + IOleControlSite* This); + + HRESULT (STDMETHODCALLTYPE *LockInPlaceActive)( + IOleControlSite* This, + BOOL fLock); + + HRESULT (STDMETHODCALLTYPE *GetExtendedControl)( + IOleControlSite* This, + IDispatch** ppDisp); + + HRESULT (STDMETHODCALLTYPE *TransformCoords)( + IOleControlSite* This, + POINTL* pPtlHimetric, + POINTF* pPtfContainer, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)( + IOleControlSite* This, + MSG* pMsg, + DWORD grfModifiers); + + HRESULT (STDMETHODCALLTYPE *OnFocus)( + IOleControlSite* This, + BOOL fGotFocus); + + HRESULT (STDMETHODCALLTYPE *ShowPropertyFrame)( + IOleControlSite* This); + + END_INTERFACE +} IOleControlSiteVtbl; +interface IOleControlSite { + const IOleControlSiteVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IOleControlSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleControlSite_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleControlSite_Release(p) (p)->lpVtbl->Release(p) +/*** IOleControlSite methods ***/ +#define IOleControlSite_OnControlInfoChanged(p) (p)->lpVtbl->OnControlInfoChanged(p) +#define IOleControlSite_LockInPlaceActive(p,a) (p)->lpVtbl->LockInPlaceActive(p,a) +#define IOleControlSite_GetExtendedControl(p,a) (p)->lpVtbl->GetExtendedControl(p,a) +#define IOleControlSite_TransformCoords(p,a,b,c) (p)->lpVtbl->TransformCoords(p,a,b,c) +#define IOleControlSite_TranslateAccelerator(p,a,b) (p)->lpVtbl->TranslateAccelerator(p,a,b) +#define IOleControlSite_OnFocus(p,a) (p)->lpVtbl->OnFocus(p,a) +#define IOleControlSite_ShowPropertyFrame(p) (p)->lpVtbl->ShowPropertyFrame(p) +#endif + +#endif + +HRESULT CALLBACK IOleControlSite_OnControlInfoChanged_Proxy( + IOleControlSite* This); +void __RPC_STUB IOleControlSite_OnControlInfoChanged_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleControlSite_LockInPlaceActive_Proxy( + IOleControlSite* This, + BOOL fLock); +void __RPC_STUB IOleControlSite_LockInPlaceActive_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleControlSite_GetExtendedControl_Proxy( + IOleControlSite* This, + IDispatch** ppDisp); +void __RPC_STUB IOleControlSite_GetExtendedControl_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleControlSite_TransformCoords_Proxy( + IOleControlSite* This, + POINTL* pPtlHimetric, + POINTF* pPtfContainer, + DWORD dwFlags); +void __RPC_STUB IOleControlSite_TransformCoords_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleControlSite_TranslateAccelerator_Proxy( + IOleControlSite* This, + MSG* pMsg, + DWORD grfModifiers); +void __RPC_STUB IOleControlSite_TranslateAccelerator_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleControlSite_OnFocus_Proxy( + IOleControlSite* This, + BOOL fGotFocus); +void __RPC_STUB IOleControlSite_OnFocus_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleControlSite_ShowPropertyFrame_Proxy( + IOleControlSite* This); +void __RPC_STUB IOleControlSite_ShowPropertyFrame_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IOleControlSite_INTERFACE_DEFINED__ */ + +#ifndef __IOleInPlaceSiteEx_FWD_DEFINED__ +#define __IOleInPlaceSiteEx_FWD_DEFINED__ +typedef interface IOleInPlaceSiteEx IOleInPlaceSiteEx; +#endif + +typedef IOleInPlaceSiteEx *LPOLEINPLACESITEEX; +typedef enum tagACTIVATEFLAGS { + ACTIVATE_WINDOWLESS = 1 +} ACTIVATE_FLAGS; +/***************************************************************************** + * IOleInPlaceSiteEx interface + */ +#ifndef __IOleInPlaceSiteEx_INTERFACE_DEFINED__ +#define __IOleInPlaceSiteEx_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IOleInPlaceSiteEx, 0x9c2cad80, 0x3424, 0x11cf, 0xb6,0x70, 0x00,0xaa,0x00,0x4c,0xd6,0xd8); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IOleInPlaceSiteEx : public IOleInPlaceSite +{ + virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivateEx( + BOOL* pfNoRedraw, + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivateEx( + BOOL fNoRedraw) = 0; + + virtual HRESULT STDMETHODCALLTYPE RequestUIActivate( + ) = 0; + +}; +#else +typedef struct IOleInPlaceSiteExVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IOleInPlaceSiteEx* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IOleInPlaceSiteEx* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IOleInPlaceSiteEx* This); + + /*** IOleWindow methods ***/ + HRESULT (STDMETHODCALLTYPE *GetWindow)( + IOleInPlaceSiteEx* This, + HWND* phwnd); + + HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)( + IOleInPlaceSiteEx* This, + BOOL fEnterMode); + + /*** IOleInPlaceSite methods ***/ + HRESULT (STDMETHODCALLTYPE *CanInPlaceActivate)( + IOleInPlaceSiteEx* This); + + HRESULT (STDMETHODCALLTYPE *OnInPlaceActivate)( + IOleInPlaceSiteEx* This); + + HRESULT (STDMETHODCALLTYPE *OnUIActivate)( + IOleInPlaceSiteEx* This); + + HRESULT (STDMETHODCALLTYPE *GetWindowContext)( + IOleInPlaceSiteEx* This, + IOleInPlaceFrame** ppFrame, + IOleInPlaceUIWindow** ppDoc, + LPRECT lprcPosRect, + LPRECT lprcClipRect, + LPOLEINPLACEFRAMEINFO lpFrameInfo); + + HRESULT (STDMETHODCALLTYPE *Scroll)( + IOleInPlaceSiteEx* This, + SIZE scrollExtent); + + HRESULT (STDMETHODCALLTYPE *OnUIDeactivate)( + IOleInPlaceSiteEx* This, + BOOL fUndoable); + + HRESULT (STDMETHODCALLTYPE *OnInPlaceDeactivate)( + IOleInPlaceSiteEx* This); + + HRESULT (STDMETHODCALLTYPE *DiscardUndoState)( + IOleInPlaceSiteEx* This); + + HRESULT (STDMETHODCALLTYPE *DeactivateAndUndo)( + IOleInPlaceSiteEx* This); + + HRESULT (STDMETHODCALLTYPE *OnPosRectChange)( + IOleInPlaceSiteEx* This, + LPCRECT lprcPosRect); + + /*** IOleInPlaceSiteEx methods ***/ + HRESULT (STDMETHODCALLTYPE *OnInPlaceActivateEx)( + IOleInPlaceSiteEx* This, + BOOL* pfNoRedraw, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *OnInPlaceDeactivateEx)( + IOleInPlaceSiteEx* This, + BOOL fNoRedraw); + + HRESULT (STDMETHODCALLTYPE *RequestUIActivate)( + IOleInPlaceSiteEx* This); + + END_INTERFACE +} IOleInPlaceSiteExVtbl; +interface IOleInPlaceSiteEx { + const IOleInPlaceSiteExVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IOleInPlaceSiteEx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleInPlaceSiteEx_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleInPlaceSiteEx_Release(p) (p)->lpVtbl->Release(p) +/*** IOleWindow methods ***/ +#define IOleInPlaceSiteEx_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) +#define IOleInPlaceSiteEx_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) +/*** IOleInPlaceSite methods ***/ +#define IOleInPlaceSiteEx_CanInPlaceActivate(p) (p)->lpVtbl->CanInPlaceActivate(p) +#define IOleInPlaceSiteEx_OnInPlaceActivate(p) (p)->lpVtbl->OnInPlaceActivate(p) +#define IOleInPlaceSiteEx_OnUIActivate(p) (p)->lpVtbl->OnUIActivate(p) +#define IOleInPlaceSiteEx_GetWindowContext(p,a,b,c,d,e) (p)->lpVtbl->GetWindowContext(p,a,b,c,d,e) +#define IOleInPlaceSiteEx_Scroll(p,a) (p)->lpVtbl->Scroll(p,a) +#define IOleInPlaceSiteEx_OnUIDeactivate(p,a) (p)->lpVtbl->OnUIDeactivate(p,a) +#define IOleInPlaceSiteEx_OnInPlaceDeactivate(p) (p)->lpVtbl->OnInPlaceDeactivate(p) +#define IOleInPlaceSiteEx_DiscardUndoState(p) (p)->lpVtbl->DiscardUndoState(p) +#define IOleInPlaceSiteEx_DeactivateAndUndo(p) (p)->lpVtbl->DeactivateAndUndo(p) +#define IOleInPlaceSiteEx_OnPosRectChange(p,a) (p)->lpVtbl->OnPosRectChange(p,a) +/*** IOleInPlaceSiteEx methods ***/ +#define IOleInPlaceSiteEx_OnInPlaceActivateEx(p,a,b) (p)->lpVtbl->OnInPlaceActivateEx(p,a,b) +#define IOleInPlaceSiteEx_OnInPlaceDeactivateEx(p,a) (p)->lpVtbl->OnInPlaceDeactivateEx(p,a) +#define IOleInPlaceSiteEx_RequestUIActivate(p) (p)->lpVtbl->RequestUIActivate(p) +#endif + +#endif + +HRESULT CALLBACK IOleInPlaceSiteEx_OnInPlaceActivateEx_Proxy( + IOleInPlaceSiteEx* This, + BOOL* pfNoRedraw, + DWORD dwFlags); +void __RPC_STUB IOleInPlaceSiteEx_OnInPlaceActivateEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteEx_OnInPlaceDeactivateEx_Proxy( + IOleInPlaceSiteEx* This, + BOOL fNoRedraw); +void __RPC_STUB IOleInPlaceSiteEx_OnInPlaceDeactivateEx_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteEx_RequestUIActivate_Proxy( + IOleInPlaceSiteEx* This); +void __RPC_STUB IOleInPlaceSiteEx_RequestUIActivate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IOleInPlaceSiteEx_INTERFACE_DEFINED__ */ + +#ifndef __IOleInPlaceSiteWindowless_FWD_DEFINED__ +#define __IOleInPlaceSiteWindowless_FWD_DEFINED__ +typedef interface IOleInPlaceSiteWindowless IOleInPlaceSiteWindowless; +#endif + +typedef IOleInPlaceSiteWindowless *LPOLEINPLACESITEWINDOWLESS; +typedef enum tagOLEDCFLAGS { + OLEDC_NODRAW = 0x1, + OLEDC_PAINTBKGND = 0x2, + OLEDC_OFFSCREEN = 0x4 +} OLEDCFLAGS; +/***************************************************************************** + * IOleInPlaceSiteWindowless interface + */ +#ifndef __IOleInPlaceSiteWindowless_INTERFACE_DEFINED__ +#define __IOleInPlaceSiteWindowless_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IOleInPlaceSiteWindowless, 0x922eada0, 0x3424, 0x11cf, 0xb6,0x70, 0x00,0xaa,0x00,0x4c,0xd6,0xd8); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IOleInPlaceSiteWindowless : public IOleInPlaceSiteEx +{ + virtual HRESULT STDMETHODCALLTYPE CanWindowlessActivate( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCapture( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCapture( + BOOL fCapture) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFocus( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFocus( + BOOL fFocus) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDC( + LPCRECT pRect, + DWORD grfFlags, + HDC* phDC) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseDC( + HDC hDC) = 0; + + virtual HRESULT STDMETHODCALLTYPE InvalidateRect( + LPCRECT pRect, + BOOL fErase) = 0; + + virtual HRESULT STDMETHODCALLTYPE InvalidateRgn( + HRGN hRGN, + BOOL fErase) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScrollRect( + INT dx, + INT dy, + LPCRECT pRectScroll, + LPCRECT pRectClip) = 0; + + virtual HRESULT STDMETHODCALLTYPE AdjustRect( + LPRECT prc) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnDefWindowMessage( + UINT msg, + WPARAM wParam, + LPARAM lParam, + LRESULT* plResult) = 0; + +}; +#else +typedef struct IOleInPlaceSiteWindowlessVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IOleInPlaceSiteWindowless* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IOleInPlaceSiteWindowless* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IOleInPlaceSiteWindowless* This); + + /*** IOleWindow methods ***/ + HRESULT (STDMETHODCALLTYPE *GetWindow)( + IOleInPlaceSiteWindowless* This, + HWND* phwnd); + + HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)( + IOleInPlaceSiteWindowless* This, + BOOL fEnterMode); + + /*** IOleInPlaceSite methods ***/ + HRESULT (STDMETHODCALLTYPE *CanInPlaceActivate)( + IOleInPlaceSiteWindowless* This); + + HRESULT (STDMETHODCALLTYPE *OnInPlaceActivate)( + IOleInPlaceSiteWindowless* This); + + HRESULT (STDMETHODCALLTYPE *OnUIActivate)( + IOleInPlaceSiteWindowless* This); + + HRESULT (STDMETHODCALLTYPE *GetWindowContext)( + IOleInPlaceSiteWindowless* This, + IOleInPlaceFrame** ppFrame, + IOleInPlaceUIWindow** ppDoc, + LPRECT lprcPosRect, + LPRECT lprcClipRect, + LPOLEINPLACEFRAMEINFO lpFrameInfo); + + HRESULT (STDMETHODCALLTYPE *Scroll)( + IOleInPlaceSiteWindowless* This, + SIZE scrollExtent); + + HRESULT (STDMETHODCALLTYPE *OnUIDeactivate)( + IOleInPlaceSiteWindowless* This, + BOOL fUndoable); + + HRESULT (STDMETHODCALLTYPE *OnInPlaceDeactivate)( + IOleInPlaceSiteWindowless* This); + + HRESULT (STDMETHODCALLTYPE *DiscardUndoState)( + IOleInPlaceSiteWindowless* This); + + HRESULT (STDMETHODCALLTYPE *DeactivateAndUndo)( + IOleInPlaceSiteWindowless* This); + + HRESULT (STDMETHODCALLTYPE *OnPosRectChange)( + IOleInPlaceSiteWindowless* This, + LPCRECT lprcPosRect); + + /*** IOleInPlaceSiteEx methods ***/ + HRESULT (STDMETHODCALLTYPE *OnInPlaceActivateEx)( + IOleInPlaceSiteWindowless* This, + BOOL* pfNoRedraw, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *OnInPlaceDeactivateEx)( + IOleInPlaceSiteWindowless* This, + BOOL fNoRedraw); + + HRESULT (STDMETHODCALLTYPE *RequestUIActivate)( + IOleInPlaceSiteWindowless* This); + + /*** IOleInPlaceSiteWindowless methods ***/ + HRESULT (STDMETHODCALLTYPE *CanWindowlessActivate)( + IOleInPlaceSiteWindowless* This); + + HRESULT (STDMETHODCALLTYPE *GetCapture)( + IOleInPlaceSiteWindowless* This); + + HRESULT (STDMETHODCALLTYPE *SetCapture)( + IOleInPlaceSiteWindowless* This, + BOOL fCapture); + + HRESULT (STDMETHODCALLTYPE *GetFocus)( + IOleInPlaceSiteWindowless* This); + + HRESULT (STDMETHODCALLTYPE *SetFocus)( + IOleInPlaceSiteWindowless* This, + BOOL fFocus); + + HRESULT (STDMETHODCALLTYPE *GetDC)( + IOleInPlaceSiteWindowless* This, + LPCRECT pRect, + DWORD grfFlags, + HDC* phDC); + + HRESULT (STDMETHODCALLTYPE *ReleaseDC)( + IOleInPlaceSiteWindowless* This, + HDC hDC); + + HRESULT (STDMETHODCALLTYPE *InvalidateRect)( + IOleInPlaceSiteWindowless* This, + LPCRECT pRect, + BOOL fErase); + + HRESULT (STDMETHODCALLTYPE *InvalidateRgn)( + IOleInPlaceSiteWindowless* This, + HRGN hRGN, + BOOL fErase); + + HRESULT (STDMETHODCALLTYPE *ScrollRect)( + IOleInPlaceSiteWindowless* This, + INT dx, + INT dy, + LPCRECT pRectScroll, + LPCRECT pRectClip); + + HRESULT (STDMETHODCALLTYPE *AdjustRect)( + IOleInPlaceSiteWindowless* This, + LPRECT prc); + + HRESULT (STDMETHODCALLTYPE *OnDefWindowMessage)( + IOleInPlaceSiteWindowless* This, + UINT msg, + WPARAM wParam, + LPARAM lParam, + LRESULT* plResult); + + END_INTERFACE +} IOleInPlaceSiteWindowlessVtbl; +interface IOleInPlaceSiteWindowless { + const IOleInPlaceSiteWindowlessVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IOleInPlaceSiteWindowless_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleInPlaceSiteWindowless_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleInPlaceSiteWindowless_Release(p) (p)->lpVtbl->Release(p) +/*** IOleWindow methods ***/ +#define IOleInPlaceSiteWindowless_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) +#define IOleInPlaceSiteWindowless_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) +/*** IOleInPlaceSite methods ***/ +#define IOleInPlaceSiteWindowless_CanInPlaceActivate(p) (p)->lpVtbl->CanInPlaceActivate(p) +#define IOleInPlaceSiteWindowless_OnInPlaceActivate(p) (p)->lpVtbl->OnInPlaceActivate(p) +#define IOleInPlaceSiteWindowless_OnUIActivate(p) (p)->lpVtbl->OnUIActivate(p) +#define IOleInPlaceSiteWindowless_GetWindowContext(p,a,b,c,d,e) (p)->lpVtbl->GetWindowContext(p,a,b,c,d,e) +#define IOleInPlaceSiteWindowless_Scroll(p,a) (p)->lpVtbl->Scroll(p,a) +#define IOleInPlaceSiteWindowless_OnUIDeactivate(p,a) (p)->lpVtbl->OnUIDeactivate(p,a) +#define IOleInPlaceSiteWindowless_OnInPlaceDeactivate(p) (p)->lpVtbl->OnInPlaceDeactivate(p) +#define IOleInPlaceSiteWindowless_DiscardUndoState(p) (p)->lpVtbl->DiscardUndoState(p) +#define IOleInPlaceSiteWindowless_DeactivateAndUndo(p) (p)->lpVtbl->DeactivateAndUndo(p) +#define IOleInPlaceSiteWindowless_OnPosRectChange(p,a) (p)->lpVtbl->OnPosRectChange(p,a) +/*** IOleInPlaceSiteEx methods ***/ +#define IOleInPlaceSiteWindowless_OnInPlaceActivateEx(p,a,b) (p)->lpVtbl->OnInPlaceActivateEx(p,a,b) +#define IOleInPlaceSiteWindowless_OnInPlaceDeactivateEx(p,a) (p)->lpVtbl->OnInPlaceDeactivateEx(p,a) +#define IOleInPlaceSiteWindowless_RequestUIActivate(p) (p)->lpVtbl->RequestUIActivate(p) +/*** IOleInPlaceSiteWindowless methods ***/ +#define IOleInPlaceSiteWindowless_CanWindowlessActivate(p) (p)->lpVtbl->CanWindowlessActivate(p) +#define IOleInPlaceSiteWindowless_GetCapture(p) (p)->lpVtbl->GetCapture(p) +#define IOleInPlaceSiteWindowless_SetCapture(p,a) (p)->lpVtbl->SetCapture(p,a) +#define IOleInPlaceSiteWindowless_GetFocus(p) (p)->lpVtbl->GetFocus(p) +#define IOleInPlaceSiteWindowless_SetFocus(p,a) (p)->lpVtbl->SetFocus(p,a) +#define IOleInPlaceSiteWindowless_GetDC(p,a,b,c) (p)->lpVtbl->GetDC(p,a,b,c) +#define IOleInPlaceSiteWindowless_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a) +#define IOleInPlaceSiteWindowless_InvalidateRect(p,a,b) (p)->lpVtbl->InvalidateRect(p,a,b) +#define IOleInPlaceSiteWindowless_InvalidateRgn(p,a,b) (p)->lpVtbl->InvalidateRgn(p,a,b) +#define IOleInPlaceSiteWindowless_ScrollRect(p,a,b,c,d) (p)->lpVtbl->ScrollRect(p,a,b,c,d) +#define IOleInPlaceSiteWindowless_AdjustRect(p,a) (p)->lpVtbl->AdjustRect(p,a) +#define IOleInPlaceSiteWindowless_OnDefWindowMessage(p,a,b,c,d) (p)->lpVtbl->OnDefWindowMessage(p,a,b,c,d) +#endif + +#endif + +HRESULT CALLBACK IOleInPlaceSiteWindowless_CanWindowlessActivate_Proxy( + IOleInPlaceSiteWindowless* This); +void __RPC_STUB IOleInPlaceSiteWindowless_CanWindowlessActivate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_GetCapture_Proxy( + IOleInPlaceSiteWindowless* This); +void __RPC_STUB IOleInPlaceSiteWindowless_GetCapture_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_SetCapture_Proxy( + IOleInPlaceSiteWindowless* This, + BOOL fCapture); +void __RPC_STUB IOleInPlaceSiteWindowless_SetCapture_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_GetFocus_Proxy( + IOleInPlaceSiteWindowless* This); +void __RPC_STUB IOleInPlaceSiteWindowless_GetFocus_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_SetFocus_Proxy( + IOleInPlaceSiteWindowless* This, + BOOL fFocus); +void __RPC_STUB IOleInPlaceSiteWindowless_SetFocus_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_GetDC_Proxy( + IOleInPlaceSiteWindowless* This, + LPCRECT pRect, + DWORD grfFlags, + HDC* phDC); +void __RPC_STUB IOleInPlaceSiteWindowless_GetDC_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_ReleaseDC_Proxy( + IOleInPlaceSiteWindowless* This, + HDC hDC); +void __RPC_STUB IOleInPlaceSiteWindowless_ReleaseDC_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_InvalidateRect_Proxy( + IOleInPlaceSiteWindowless* This, + LPCRECT pRect, + BOOL fErase); +void __RPC_STUB IOleInPlaceSiteWindowless_InvalidateRect_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_InvalidateRgn_Proxy( + IOleInPlaceSiteWindowless* This, + HRGN hRGN, + BOOL fErase); +void __RPC_STUB IOleInPlaceSiteWindowless_InvalidateRgn_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_ScrollRect_Proxy( + IOleInPlaceSiteWindowless* This, + INT dx, + INT dy, + LPCRECT pRectScroll, + LPCRECT pRectClip); +void __RPC_STUB IOleInPlaceSiteWindowless_ScrollRect_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_AdjustRect_Proxy( + IOleInPlaceSiteWindowless* This, + LPRECT prc); +void __RPC_STUB IOleInPlaceSiteWindowless_AdjustRect_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceSiteWindowless_OnDefWindowMessage_Proxy( + IOleInPlaceSiteWindowless* This, + UINT msg, + WPARAM wParam, + LPARAM lParam, + LRESULT* plResult); +void __RPC_STUB IOleInPlaceSiteWindowless_OnDefWindowMessage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IOleInPlaceSiteWindowless_INTERFACE_DEFINED__ */ + +#ifndef __IOleInPlaceObjectWindowless_FWD_DEFINED__ +#define __IOleInPlaceObjectWindowless_FWD_DEFINED__ +typedef interface IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless; +#endif + +typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS; +/***************************************************************************** + * IOleInPlaceObjectWindowless interface + */ +#ifndef __IOleInPlaceObjectWindowless_INTERFACE_DEFINED__ +#define __IOleInPlaceObjectWindowless_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IOleInPlaceObjectWindowless, 0x1c2056cc, 0x5ef4, 0x101b, 0x8b,0xc8, 0x00,0xaa,0x00,0x3e,0x3b,0x29); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IOleInPlaceObjectWindowless : public IOleInPlaceObject +{ + virtual HRESULT STDMETHODCALLTYPE OnWindowMessage( + UINT msg, + WPARAM wParam, + LPARAM lParam, + LRESULT* plResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDropTarget( + IDropTarget** ppDropTarget) = 0; + +}; +#else +typedef struct IOleInPlaceObjectWindowlessVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IOleInPlaceObjectWindowless* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IOleInPlaceObjectWindowless* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IOleInPlaceObjectWindowless* This); + + /*** IOleWindow methods ***/ + HRESULT (STDMETHODCALLTYPE *GetWindow)( + IOleInPlaceObjectWindowless* This, + HWND* phwnd); + + HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)( + IOleInPlaceObjectWindowless* This, + BOOL fEnterMode); + + /*** IOleInPlaceObject methods ***/ + HRESULT (STDMETHODCALLTYPE *InPlaceDeactivate)( + IOleInPlaceObjectWindowless* This); + + HRESULT (STDMETHODCALLTYPE *UIDeactivate)( + IOleInPlaceObjectWindowless* This); + + HRESULT (STDMETHODCALLTYPE *SetObjectRects)( + IOleInPlaceObjectWindowless* This, + LPCRECT lprcPosRect, + LPCRECT lprcClipRect); + + HRESULT (STDMETHODCALLTYPE *ReactivateAndUndo)( + IOleInPlaceObjectWindowless* This); + + /*** IOleInPlaceObjectWindowless methods ***/ + HRESULT (STDMETHODCALLTYPE *OnWindowMessage)( + IOleInPlaceObjectWindowless* This, + UINT msg, + WPARAM wParam, + LPARAM lParam, + LRESULT* plResult); + + HRESULT (STDMETHODCALLTYPE *GetDropTarget)( + IOleInPlaceObjectWindowless* This, + IDropTarget** ppDropTarget); + + END_INTERFACE +} IOleInPlaceObjectWindowlessVtbl; +interface IOleInPlaceObjectWindowless { + const IOleInPlaceObjectWindowlessVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IOleInPlaceObjectWindowless_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleInPlaceObjectWindowless_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleInPlaceObjectWindowless_Release(p) (p)->lpVtbl->Release(p) +/*** IOleWindow methods ***/ +#define IOleInPlaceObjectWindowless_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) +#define IOleInPlaceObjectWindowless_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) +/*** IOleInPlaceObject methods ***/ +#define IOleInPlaceObjectWindowless_InPlaceDeactivate(p) (p)->lpVtbl->InPlaceDeactivate(p) +#define IOleInPlaceObjectWindowless_UIDeactivate(p) (p)->lpVtbl->UIDeactivate(p) +#define IOleInPlaceObjectWindowless_SetObjectRects(p,a,b) (p)->lpVtbl->SetObjectRects(p,a,b) +#define IOleInPlaceObjectWindowless_ReactivateAndUndo(p) (p)->lpVtbl->ReactivateAndUndo(p) +/*** IOleInPlaceObjectWindowless methods ***/ +#define IOleInPlaceObjectWindowless_OnWindowMessage(p,a,b,c,d) (p)->lpVtbl->OnWindowMessage(p,a,b,c,d) +#define IOleInPlaceObjectWindowless_GetDropTarget(p,a) (p)->lpVtbl->GetDropTarget(p,a) +#endif + +#endif + +HRESULT CALLBACK IOleInPlaceObjectWindowless_OnWindowMessage_Proxy( + IOleInPlaceObjectWindowless* This, + UINT msg, + WPARAM wParam, + LPARAM lParam, + LRESULT* plResult); +void __RPC_STUB IOleInPlaceObjectWindowless_OnWindowMessage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleInPlaceObjectWindowless_GetDropTarget_Proxy( + IOleInPlaceObjectWindowless* This, + IDropTarget** ppDropTarget); +void __RPC_STUB IOleInPlaceObjectWindowless_GetDropTarget_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IOleInPlaceObjectWindowless_INTERFACE_DEFINED__ */ + +#ifndef __IClassFactory2_FWD_DEFINED__ +#define __IClassFactory2_FWD_DEFINED__ +typedef interface IClassFactory2 IClassFactory2; +#endif + +typedef IClassFactory2 *LPCLASSFACTORY2; +typedef struct tagLICINFO { + LONG cbLicInfo; + BOOL fRuntimeKeyAvail; + BOOL fLicVerified; +} LICINFO, *LPLICINFO; +/***************************************************************************** + * IClassFactory2 interface + */ +#ifndef __IClassFactory2_INTERFACE_DEFINED__ +#define __IClassFactory2_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IClassFactory2, 0xb196b28f, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IClassFactory2 : public IClassFactory +{ + virtual HRESULT STDMETHODCALLTYPE GetLicInfo( + LICINFO* pLicInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE RequestLicKey( + DWORD dwReserved, + BSTR* pBstrKey) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateInstanceLic( + IUnknown* pUnkOuter, + IUnknown* pUnkReserved, + REFIID riid, + BSTR bstrKey, + PVOID* ppvObj) = 0; + +}; +#else +typedef struct IClassFactory2Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IClassFactory2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IClassFactory2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IClassFactory2* This); + + /*** IClassFactory methods ***/ + HRESULT (STDMETHODCALLTYPE *CreateInstance)( + IClassFactory2* This, + IUnknown* pUnkOuter, + REFIID riid, + void** ppvObject); + + HRESULT (STDMETHODCALLTYPE *LockServer)( + IClassFactory2* This, + BOOL fLock); + + /*** IClassFactory2 methods ***/ + HRESULT (STDMETHODCALLTYPE *GetLicInfo)( + IClassFactory2* This, + LICINFO* pLicInfo); + + HRESULT (STDMETHODCALLTYPE *RequestLicKey)( + IClassFactory2* This, + DWORD dwReserved, + BSTR* pBstrKey); + + HRESULT (STDMETHODCALLTYPE *CreateInstanceLic)( + IClassFactory2* This, + IUnknown* pUnkOuter, + IUnknown* pUnkReserved, + REFIID riid, + BSTR bstrKey, + PVOID* ppvObj); + + END_INTERFACE +} IClassFactory2Vtbl; +interface IClassFactory2 { + const IClassFactory2Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IClassFactory2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IClassFactory2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IClassFactory2_Release(p) (p)->lpVtbl->Release(p) +/*** IClassFactory methods ***/ +#define IClassFactory2_CreateInstance(p,a,b,c) (p)->lpVtbl->CreateInstance(p,a,b,c) +#define IClassFactory2_LockServer(p,a) (p)->lpVtbl->LockServer(p,a) +/*** IClassFactory2 methods ***/ +#define IClassFactory2_GetLicInfo(p,a) (p)->lpVtbl->GetLicInfo(p,a) +#define IClassFactory2_RequestLicKey(p,a,b) (p)->lpVtbl->RequestLicKey(p,a,b) +#define IClassFactory2_CreateInstanceLic(p,a,b,c,d,e) (p)->lpVtbl->CreateInstanceLic(p,a,b,c,d,e) +#endif + +#endif + +HRESULT CALLBACK IClassFactory2_GetLicInfo_Proxy( + IClassFactory2* This, + LICINFO* pLicInfo); +void __RPC_STUB IClassFactory2_GetLicInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IClassFactory2_RequestLicKey_Proxy( + IClassFactory2* This, + DWORD dwReserved, + BSTR* pBstrKey); +void __RPC_STUB IClassFactory2_RequestLicKey_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IClassFactory2_RemoteCreateInstanceLic_Proxy( + IClassFactory2* This, + REFIID riid, + BSTR bstrKey, + IUnknown** ppvObj); +void __RPC_STUB IClassFactory2_RemoteCreateInstanceLic_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IClassFactory2_CreateInstanceLic_Proxy( + IClassFactory2* This, + IUnknown* pUnkOuter, + IUnknown* pUnkReserved, + REFIID riid, + BSTR bstrKey, + PVOID* ppvObj); +HRESULT __RPC_STUB IClassFactory2_CreateInstanceLic_Stub( + IClassFactory2* This, + REFIID riid, + BSTR bstrKey, + IUnknown** ppvObj); + +#endif /* __IClassFactory2_INTERFACE_DEFINED__ */ + +#ifndef __IViewObjectEx_FWD_DEFINED__ +#define __IViewObjectEx_FWD_DEFINED__ +typedef interface IViewObjectEx IViewObjectEx; +#endif + +typedef IViewObjectEx *LPVIEWOBJECTEX; +typedef enum tagVIEWSTATUS { + VIEWSTATUS_OPAQUE = 1, + VIEWSTATUS_SOLIDBKGND = 2, + VIEWSTATUS_DVASPECTOPAQUE = 4, + VIEWSTATUS_DVASPECTTRANSPARENT = 8, + VIEWSTATUS_SURFACE = 16, + VIEWSTATUS_3DSURFACE = 32 +} VIEWSTATUS; +typedef enum tagHITRESULT { + HITRESULT_OUTSIDE = 0, + HITRESULT_TRANSPARENT = 1, + HITRESULT_CLOSE = 2, + HITRESULT_HIT = 3 +} HITRESULT; +typedef enum tagDVASPECT2 { + DVASPECT_OPAQUE = 16, + DVASPECT_TRANSPARENT = 32 +} DVASPECT2; +typedef struct tagExtentInfo { + ULONG cb; + DWORD dwExtentMode; + SIZEL sizelProposed; +} DVEXTENTINFO; +typedef enum tagAspectInfoFlag { + DVASPECTINFOFLAG_CANOPTIMIZE = 1 +} DVASPECTINFOFLAG; +typedef struct tagAspectInfo { + ULONG cb; + DWORD dwFlags; +} DVASPECTINFO; +/***************************************************************************** + * IViewObjectEx interface + */ +#ifndef __IViewObjectEx_INTERFACE_DEFINED__ +#define __IViewObjectEx_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IViewObjectEx, 0x3af24292, 0x0c96, 0x11ce, 0xa0,0xcf, 0x00,0xaa,0x00,0x60,0x0a,0xb8); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IViewObjectEx : public IViewObject2 +{ + virtual HRESULT STDMETHODCALLTYPE GetRect( + DWORD dwAspect, + LPRECTL pRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetViewStatus( + DWORD* pdwStatus) = 0; + + virtual HRESULT STDMETHODCALLTYPE QueryHitPoint( + DWORD dwAspect, + LPCRECT pRectBounds, + POINT ptlLoc, + LONG lCloseHint, + DWORD* pHitResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE QueryHitRect( + DWORD dwAspect, + LPCRECT pRectBounds, + LPCRECT pRectLoc, + LONG lCloseHint, + DWORD* pHitResult) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetNaturalExtent( + DWORD dwAspect, + LONG lindex, + DVTARGETDEVICE* ptd, + HDC hicTargetDev, + DVEXTENTINFO* pExtentInfo, + LPSIZEL pSizel) = 0; + +}; +#else +typedef struct IViewObjectExVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IViewObjectEx* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IViewObjectEx* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IViewObjectEx* This); + + /*** IViewObject methods ***/ + HRESULT (STDMETHODCALLTYPE *Draw)( + IViewObjectEx* This, + DWORD dwDrawAspect, + LONG lindex, + void* pvAspect, + DVTARGETDEVICE* ptd, + HDC hdcTargetDev, + HDC hdcDraw, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), + ULONG_PTR dwContinue); + + HRESULT (STDMETHODCALLTYPE *GetColorSet)( + IViewObjectEx* This, + DWORD dwDrawAspect, + LONG lindex, + void* pvAspect, + DVTARGETDEVICE* ptd, + HDC hicTargetDev, + LOGPALETTE** ppColorSet); + + HRESULT (STDMETHODCALLTYPE *Freeze)( + IViewObjectEx* This, + DWORD dwDrawAspect, + LONG lindex, + void* pvAspect, + DWORD* pdwFreeze); + + HRESULT (STDMETHODCALLTYPE *Unfreeze)( + IViewObjectEx* This, + DWORD dwFreeze); + + HRESULT (STDMETHODCALLTYPE *SetAdvise)( + IViewObjectEx* This, + DWORD aspects, + DWORD advf, + IAdviseSink* pAdvSink); + + HRESULT (STDMETHODCALLTYPE *GetAdvise)( + IViewObjectEx* This, + DWORD* pAspects, + DWORD* pAdvf, + IAdviseSink** ppAdvSink); + + /*** IViewObject2 methods ***/ + HRESULT (STDMETHODCALLTYPE *GetExtent)( + IViewObjectEx* This, + DWORD dwDrawAspect, + LONG lindex, + DVTARGETDEVICE* ptd, + LPSIZEL lpsizel); + + /*** IViewObjectEx methods ***/ + HRESULT (STDMETHODCALLTYPE *GetRect)( + IViewObjectEx* This, + DWORD dwAspect, + LPRECTL pRect); + + HRESULT (STDMETHODCALLTYPE *GetViewStatus)( + IViewObjectEx* This, + DWORD* pdwStatus); + + HRESULT (STDMETHODCALLTYPE *QueryHitPoint)( + IViewObjectEx* This, + DWORD dwAspect, + LPCRECT pRectBounds, + POINT ptlLoc, + LONG lCloseHint, + DWORD* pHitResult); + + HRESULT (STDMETHODCALLTYPE *QueryHitRect)( + IViewObjectEx* This, + DWORD dwAspect, + LPCRECT pRectBounds, + LPCRECT pRectLoc, + LONG lCloseHint, + DWORD* pHitResult); + + HRESULT (STDMETHODCALLTYPE *GetNaturalExtent)( + IViewObjectEx* This, + DWORD dwAspect, + LONG lindex, + DVTARGETDEVICE* ptd, + HDC hicTargetDev, + DVEXTENTINFO* pExtentInfo, + LPSIZEL pSizel); + + END_INTERFACE +} IViewObjectExVtbl; +interface IViewObjectEx { + const IViewObjectExVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IViewObjectEx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IViewObjectEx_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IViewObjectEx_Release(p) (p)->lpVtbl->Release(p) +/*** IViewObject methods ***/ +#define IViewObjectEx_Draw(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->Draw(p,a,b,c,d,e,f,g,h,i,j) +#define IViewObjectEx_GetColorSet(p,a,b,c,d,e,f) (p)->lpVtbl->GetColorSet(p,a,b,c,d,e,f) +#define IViewObjectEx_Freeze(p,a,b,c,d) (p)->lpVtbl->Freeze(p,a,b,c,d) +#define IViewObjectEx_Unfreeze(p,a) (p)->lpVtbl->Unfreeze(p,a) +#define IViewObjectEx_SetAdvise(p,a,b,c) (p)->lpVtbl->SetAdvise(p,a,b,c) +#define IViewObjectEx_GetAdvise(p,a,b,c) (p)->lpVtbl->GetAdvise(p,a,b,c) +/*** IViewObject2 methods ***/ +#define IViewObjectEx_GetExtent(p,a,b,c,d) (p)->lpVtbl->GetExtent(p,a,b,c,d) +/*** IViewObjectEx methods ***/ +#define IViewObjectEx_GetRect(p,a,b) (p)->lpVtbl->GetRect(p,a,b) +#define IViewObjectEx_GetViewStatus(p,a) (p)->lpVtbl->GetViewStatus(p,a) +#define IViewObjectEx_QueryHitPoint(p,a,b,c,d,e) (p)->lpVtbl->QueryHitPoint(p,a,b,c,d,e) +#define IViewObjectEx_QueryHitRect(p,a,b,c,d,e) (p)->lpVtbl->QueryHitRect(p,a,b,c,d,e) +#define IViewObjectEx_GetNaturalExtent(p,a,b,c,d,e,f) (p)->lpVtbl->GetNaturalExtent(p,a,b,c,d,e,f) +#endif + +#endif + +HRESULT CALLBACK IViewObjectEx_GetRect_Proxy( + IViewObjectEx* This, + DWORD dwAspect, + LPRECTL pRect); +void __RPC_STUB IViewObjectEx_GetRect_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IViewObjectEx_GetViewStatus_Proxy( + IViewObjectEx* This, + DWORD* pdwStatus); +void __RPC_STUB IViewObjectEx_GetViewStatus_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IViewObjectEx_QueryHitPoint_Proxy( + IViewObjectEx* This, + DWORD dwAspect, + LPCRECT pRectBounds, + POINT ptlLoc, + LONG lCloseHint, + DWORD* pHitResult); +void __RPC_STUB IViewObjectEx_QueryHitPoint_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IViewObjectEx_QueryHitRect_Proxy( + IViewObjectEx* This, + DWORD dwAspect, + LPCRECT pRectBounds, + LPCRECT pRectLoc, + LONG lCloseHint, + DWORD* pHitResult); +void __RPC_STUB IViewObjectEx_QueryHitRect_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IViewObjectEx_GetNaturalExtent_Proxy( + IViewObjectEx* This, + DWORD dwAspect, + LONG lindex, + DVTARGETDEVICE* ptd, + HDC hicTargetDev, + DVEXTENTINFO* pExtentInfo, + LPSIZEL pSizel); +void __RPC_STUB IViewObjectEx_GetNaturalExtent_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IViewObjectEx_INTERFACE_DEFINED__ */ + +#ifndef __IProvideClassInfo_FWD_DEFINED__ +#define __IProvideClassInfo_FWD_DEFINED__ +typedef interface IProvideClassInfo IProvideClassInfo; +#endif + +typedef IProvideClassInfo *LPPROVIDECLASSINFO; +#ifdef WINE_NO_UNICODE_MACROS +#undef GetClassInfo +#endif +/***************************************************************************** + * IProvideClassInfo interface + */ +#ifndef __IProvideClassInfo_INTERFACE_DEFINED__ +#define __IProvideClassInfo_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IProvideClassInfo, 0xb196b283, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IProvideClassInfo : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetClassInfo( + ITypeInfo** ppTI) = 0; + +}; +#else +typedef struct IProvideClassInfoVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IProvideClassInfo* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IProvideClassInfo* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IProvideClassInfo* This); + + /*** IProvideClassInfo methods ***/ + HRESULT (STDMETHODCALLTYPE *GetClassInfo)( + IProvideClassInfo* This, + ITypeInfo** ppTI); + + END_INTERFACE +} IProvideClassInfoVtbl; +interface IProvideClassInfo { + const IProvideClassInfoVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IProvideClassInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IProvideClassInfo_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IProvideClassInfo_Release(p) (p)->lpVtbl->Release(p) +/*** IProvideClassInfo methods ***/ +#define IProvideClassInfo_GetClassInfo(p,a) (p)->lpVtbl->GetClassInfo(p,a) +#endif + +#endif + +HRESULT CALLBACK IProvideClassInfo_GetClassInfo_Proxy( + IProvideClassInfo* This, + ITypeInfo** ppTI); +void __RPC_STUB IProvideClassInfo_GetClassInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IProvideClassInfo_INTERFACE_DEFINED__ */ + +#ifndef __IProvideClassInfo2_FWD_DEFINED__ +#define __IProvideClassInfo2_FWD_DEFINED__ +typedef interface IProvideClassInfo2 IProvideClassInfo2; +#endif + +typedef IProvideClassInfo2 *LPPROVIDECLASSINFO2; +typedef enum tagGUIDKIND { + GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1 +} GUIDKIND; +/***************************************************************************** + * IProvideClassInfo2 interface + */ +#ifndef __IProvideClassInfo2_INTERFACE_DEFINED__ +#define __IProvideClassInfo2_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IProvideClassInfo2, 0xa6bc3ac0, 0xdbaa, 0x11ce, 0x9d,0xe3, 0x00,0xaa,0x00,0x4b,0xb8,0x51); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IProvideClassInfo2 : public IProvideClassInfo +{ + virtual HRESULT STDMETHODCALLTYPE GetGUID( + DWORD dwGuidKind, + GUID* pGUID) = 0; + +}; +#else +typedef struct IProvideClassInfo2Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IProvideClassInfo2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IProvideClassInfo2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IProvideClassInfo2* This); + + /*** IProvideClassInfo methods ***/ + HRESULT (STDMETHODCALLTYPE *GetClassInfo)( + IProvideClassInfo2* This, + ITypeInfo** ppTI); + + /*** IProvideClassInfo2 methods ***/ + HRESULT (STDMETHODCALLTYPE *GetGUID)( + IProvideClassInfo2* This, + DWORD dwGuidKind, + GUID* pGUID); + + END_INTERFACE +} IProvideClassInfo2Vtbl; +interface IProvideClassInfo2 { + const IProvideClassInfo2Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IProvideClassInfo2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IProvideClassInfo2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IProvideClassInfo2_Release(p) (p)->lpVtbl->Release(p) +/*** IProvideClassInfo methods ***/ +#define IProvideClassInfo2_GetClassInfo(p,a) (p)->lpVtbl->GetClassInfo(p,a) +/*** IProvideClassInfo2 methods ***/ +#define IProvideClassInfo2_GetGUID(p,a,b) (p)->lpVtbl->GetGUID(p,a,b) +#endif + +#endif + +HRESULT CALLBACK IProvideClassInfo2_GetGUID_Proxy( + IProvideClassInfo2* This, + DWORD dwGuidKind, + GUID* pGUID); +void __RPC_STUB IProvideClassInfo2_GetGUID_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IProvideClassInfo2_INTERFACE_DEFINED__ */ + +#ifndef __IProvideMultipleClassInfo_FWD_DEFINED__ +#define __IProvideMultipleClassInfo_FWD_DEFINED__ +typedef interface IProvideMultipleClassInfo IProvideMultipleClassInfo; +#endif + +#define MULTICLASSINFO_GETTYPEINFO 0x00000001 +#define MULTICLASSINFO_GETNUMRESERVEDDISPIDS 0x00000002 +#define MULTICLASSINFO_GETIIDPRIMARY 0x00000004 +#define MULTICLASSINFO_GETIIDSOURCE 0x00000008 +#define TIFLAGS_EXTENDDISPATCHONLY 0x00000001 +typedef IProvideMultipleClassInfo *LPPROVIDEMULTIPLECLASSINFO; +/***************************************************************************** + * IProvideMultipleClassInfo interface + */ +#ifndef __IProvideMultipleClassInfo_INTERFACE_DEFINED__ +#define __IProvideMultipleClassInfo_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IProvideMultipleClassInfo, 0xa7aba9c1, 0x8983, 0x11cf, 0x8f,0x20, 0x00,0x80,0x5f,0x2c,0xd0,0x64); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IProvideMultipleClassInfo : public IProvideClassInfo2 +{ + virtual HRESULT STDMETHODCALLTYPE GetMultiTypeInfoCount( + ULONG* pcti) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInfoOfIndex( + ULONG iti, + DWORD dwFlags, + ITypeInfo** pptiCoClass, + DWORD* pdwTIFlags, + ULONG* pcdispidReserved, + IID* piidPrimary, + IID* piidSource) = 0; + +}; +#else +typedef struct IProvideMultipleClassInfoVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IProvideMultipleClassInfo* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IProvideMultipleClassInfo* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IProvideMultipleClassInfo* This); + + /*** IProvideClassInfo methods ***/ + HRESULT (STDMETHODCALLTYPE *GetClassInfo)( + IProvideMultipleClassInfo* This, + ITypeInfo** ppTI); + + /*** IProvideClassInfo2 methods ***/ + HRESULT (STDMETHODCALLTYPE *GetGUID)( + IProvideMultipleClassInfo* This, + DWORD dwGuidKind, + GUID* pGUID); + + /*** IProvideMultipleClassInfo methods ***/ + HRESULT (STDMETHODCALLTYPE *GetMultiTypeInfoCount)( + IProvideMultipleClassInfo* This, + ULONG* pcti); + + HRESULT (STDMETHODCALLTYPE *GetInfoOfIndex)( + IProvideMultipleClassInfo* This, + ULONG iti, + DWORD dwFlags, + ITypeInfo** pptiCoClass, + DWORD* pdwTIFlags, + ULONG* pcdispidReserved, + IID* piidPrimary, + IID* piidSource); + + END_INTERFACE +} IProvideMultipleClassInfoVtbl; +interface IProvideMultipleClassInfo { + const IProvideMultipleClassInfoVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IProvideMultipleClassInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IProvideMultipleClassInfo_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IProvideMultipleClassInfo_Release(p) (p)->lpVtbl->Release(p) +/*** IProvideClassInfo methods ***/ +#define IProvideMultipleClassInfo_GetClassInfo(p,a) (p)->lpVtbl->GetClassInfo(p,a) +/*** IProvideClassInfo2 methods ***/ +#define IProvideMultipleClassInfo_GetGUID(p,a,b) (p)->lpVtbl->GetGUID(p,a,b) +/*** IProvideMultipleClassInfo methods ***/ +#define IProvideMultipleClassInfo_GetMultiTypeInfoCount(p,a) (p)->lpVtbl->GetMultiTypeInfoCount(p,a) +#define IProvideMultipleClassInfo_GetInfoOfIndex(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetInfoOfIndex(p,a,b,c,d,e,f,g) +#endif + +#endif + +HRESULT CALLBACK IProvideMultipleClassInfo_GetMultiTypeInfoCount_Proxy( + IProvideMultipleClassInfo* This, + ULONG* pcti); +void __RPC_STUB IProvideMultipleClassInfo_GetMultiTypeInfoCount_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IProvideMultipleClassInfo_GetInfoOfIndex_Proxy( + IProvideMultipleClassInfo* This, + ULONG iti, + DWORD dwFlags, + ITypeInfo** pptiCoClass, + DWORD* pdwTIFlags, + ULONG* pcdispidReserved, + IID* piidPrimary, + IID* piidSource); +void __RPC_STUB IProvideMultipleClassInfo_GetInfoOfIndex_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IProvideMultipleClassInfo_INTERFACE_DEFINED__ */ + +#ifndef __IConnectionPointContainer_FWD_DEFINED__ +#define __IConnectionPointContainer_FWD_DEFINED__ +typedef interface IConnectionPointContainer IConnectionPointContainer; +#endif + +#ifndef __IEnumConnections_FWD_DEFINED__ +#define __IEnumConnections_FWD_DEFINED__ +typedef interface IEnumConnections IEnumConnections; +#endif + +#ifndef __IConnectionPoint_FWD_DEFINED__ +#define __IConnectionPoint_FWD_DEFINED__ +typedef interface IConnectionPoint IConnectionPoint; +#endif + +typedef IConnectionPoint *PCONNECTIONPOINT, *LPCONNECTIONPOINT; +/***************************************************************************** + * IConnectionPoint interface + */ +#ifndef __IConnectionPoint_INTERFACE_DEFINED__ +#define __IConnectionPoint_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IConnectionPoint, 0xb196b286, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IConnectionPoint : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetConnectionInterface( + IID* pIID) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetConnectionPointContainer( + IConnectionPointContainer** ppCPC) = 0; + + virtual HRESULT STDMETHODCALLTYPE Advise( + IUnknown* pUnkSink, + DWORD* pdwCookie) = 0; + + virtual HRESULT STDMETHODCALLTYPE Unadvise( + DWORD dwCookie) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumConnections( + IEnumConnections** ppEnum) = 0; + +}; +#else +typedef struct IConnectionPointVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IConnectionPoint* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IConnectionPoint* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IConnectionPoint* This); + + /*** IConnectionPoint methods ***/ + HRESULT (STDMETHODCALLTYPE *GetConnectionInterface)( + IConnectionPoint* This, + IID* pIID); + + HRESULT (STDMETHODCALLTYPE *GetConnectionPointContainer)( + IConnectionPoint* This, + IConnectionPointContainer** ppCPC); + + HRESULT (STDMETHODCALLTYPE *Advise)( + IConnectionPoint* This, + IUnknown* pUnkSink, + DWORD* pdwCookie); + + HRESULT (STDMETHODCALLTYPE *Unadvise)( + IConnectionPoint* This, + DWORD dwCookie); + + HRESULT (STDMETHODCALLTYPE *EnumConnections)( + IConnectionPoint* This, + IEnumConnections** ppEnum); + + END_INTERFACE +} IConnectionPointVtbl; +interface IConnectionPoint { + const IConnectionPointVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IConnectionPoint_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IConnectionPoint_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IConnectionPoint_Release(p) (p)->lpVtbl->Release(p) +/*** IConnectionPoint methods ***/ +#define IConnectionPoint_GetConnectionInterface(p,a) (p)->lpVtbl->GetConnectionInterface(p,a) +#define IConnectionPoint_GetConnectionPointContainer(p,a) (p)->lpVtbl->GetConnectionPointContainer(p,a) +#define IConnectionPoint_Advise(p,a,b) (p)->lpVtbl->Advise(p,a,b) +#define IConnectionPoint_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) +#define IConnectionPoint_EnumConnections(p,a) (p)->lpVtbl->EnumConnections(p,a) +#endif + +#endif + +HRESULT CALLBACK IConnectionPoint_GetConnectionInterface_Proxy( + IConnectionPoint* This, + IID* pIID); +void __RPC_STUB IConnectionPoint_GetConnectionInterface_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IConnectionPoint_GetConnectionPointContainer_Proxy( + IConnectionPoint* This, + IConnectionPointContainer** ppCPC); +void __RPC_STUB IConnectionPoint_GetConnectionPointContainer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IConnectionPoint_Advise_Proxy( + IConnectionPoint* This, + IUnknown* pUnkSink, + DWORD* pdwCookie); +void __RPC_STUB IConnectionPoint_Advise_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IConnectionPoint_Unadvise_Proxy( + IConnectionPoint* This, + DWORD dwCookie); +void __RPC_STUB IConnectionPoint_Unadvise_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IConnectionPoint_EnumConnections_Proxy( + IConnectionPoint* This, + IEnumConnections** ppEnum); +void __RPC_STUB IConnectionPoint_EnumConnections_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IConnectionPoint_INTERFACE_DEFINED__ */ + +#ifndef __IEnumConnectionPoints_FWD_DEFINED__ +#define __IEnumConnectionPoints_FWD_DEFINED__ +typedef interface IEnumConnectionPoints IEnumConnectionPoints; +#endif + +typedef IConnectionPointContainer *PCONNECTIONPOINTCONTAINER, *LPCONNECTIONPOINTCONTAINER; +/***************************************************************************** + * IConnectionPointContainer interface + */ +#ifndef __IConnectionPointContainer_INTERFACE_DEFINED__ +#define __IConnectionPointContainer_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IConnectionPointContainer, 0xb196b284, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IConnectionPointContainer : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE EnumConnectionPoints( + IEnumConnectionPoints** ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE FindConnectionPoint( + REFIID riid, + IConnectionPoint** ppCP) = 0; + +}; +#else +typedef struct IConnectionPointContainerVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IConnectionPointContainer* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IConnectionPointContainer* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IConnectionPointContainer* This); + + /*** IConnectionPointContainer methods ***/ + HRESULT (STDMETHODCALLTYPE *EnumConnectionPoints)( + IConnectionPointContainer* This, + IEnumConnectionPoints** ppEnum); + + HRESULT (STDMETHODCALLTYPE *FindConnectionPoint)( + IConnectionPointContainer* This, + REFIID riid, + IConnectionPoint** ppCP); + + END_INTERFACE +} IConnectionPointContainerVtbl; +interface IConnectionPointContainer { + const IConnectionPointContainerVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IConnectionPointContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IConnectionPointContainer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IConnectionPointContainer_Release(p) (p)->lpVtbl->Release(p) +/*** IConnectionPointContainer methods ***/ +#define IConnectionPointContainer_EnumConnectionPoints(p,a) (p)->lpVtbl->EnumConnectionPoints(p,a) +#define IConnectionPointContainer_FindConnectionPoint(p,a,b) (p)->lpVtbl->FindConnectionPoint(p,a,b) +#endif + +#endif + +HRESULT CALLBACK IConnectionPointContainer_EnumConnectionPoints_Proxy( + IConnectionPointContainer* This, + IEnumConnectionPoints** ppEnum); +void __RPC_STUB IConnectionPointContainer_EnumConnectionPoints_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IConnectionPointContainer_FindConnectionPoint_Proxy( + IConnectionPointContainer* This, + REFIID riid, + IConnectionPoint** ppCP); +void __RPC_STUB IConnectionPointContainer_FindConnectionPoint_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IConnectionPointContainer_INTERFACE_DEFINED__ */ + +typedef IEnumConnections *PENUMCONNECTIONS, *LPENUMCONNECTIONS; +typedef struct tagCONNECTDATA { + IUnknown *pUnk; + DWORD dwCookie; +} CONNECTDATA, *PCONNECTDATA, *LPCONNECTDATA; +/***************************************************************************** + * IEnumConnections interface + */ +#ifndef __IEnumConnections_INTERFACE_DEFINED__ +#define __IEnumConnections_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumConnections, 0xb196b287, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IEnumConnections : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG* pcFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG cConnections) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumConnections** ppEnum) = 0; + +}; +#else +typedef struct IEnumConnectionsVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumConnections* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumConnections* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumConnections* This); + + /*** IEnumConnections methods ***/ + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumConnections* This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG* pcFetched); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumConnections* This, + ULONG cConnections); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumConnections* This); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumConnections* This, + IEnumConnections** ppEnum); + + END_INTERFACE +} IEnumConnectionsVtbl; +interface IEnumConnections { + const IEnumConnectionsVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumConnections_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumConnections_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumConnections_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumConnections methods ***/ +#define IEnumConnections_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumConnections_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumConnections_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumConnections_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#endif + +HRESULT CALLBACK IEnumConnections_RemoteNext_Proxy( + IEnumConnections* This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG* pcFetched); +void __RPC_STUB IEnumConnections_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumConnections_Next_Proxy( + IEnumConnections* This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG* pcFetched); +HRESULT __RPC_STUB IEnumConnections_Next_Stub( + IEnumConnections* This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG* pcFetched); +HRESULT CALLBACK IEnumConnections_Skip_Proxy( + IEnumConnections* This, + ULONG cConnections); +void __RPC_STUB IEnumConnections_Skip_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumConnections_Reset_Proxy( + IEnumConnections* This); +void __RPC_STUB IEnumConnections_Reset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumConnections_Clone_Proxy( + IEnumConnections* This, + IEnumConnections** ppEnum); +void __RPC_STUB IEnumConnections_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumConnections_INTERFACE_DEFINED__ */ + +typedef IEnumConnectionPoints *PENUMCONNECTIONPOINTS, *LPENUMCONNECTIONPOINTS; +/***************************************************************************** + * IEnumConnectionPoints interface + */ +#ifndef __IEnumConnectionPoints_INTERFACE_DEFINED__ +#define __IEnumConnectionPoints_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumConnectionPoints, 0xb196b285, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IEnumConnectionPoints : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG cConnections, + LPCONNECTIONPOINT* ppCP, + ULONG* pcFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG cConnections) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumConnectionPoints** ppEnum) = 0; + +}; +#else +typedef struct IEnumConnectionPointsVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumConnectionPoints* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumConnectionPoints* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumConnectionPoints* This); + + /*** IEnumConnectionPoints methods ***/ + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumConnectionPoints* This, + ULONG cConnections, + LPCONNECTIONPOINT* ppCP, + ULONG* pcFetched); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumConnectionPoints* This, + ULONG cConnections); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumConnectionPoints* This); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumConnectionPoints* This, + IEnumConnectionPoints** ppEnum); + + END_INTERFACE +} IEnumConnectionPointsVtbl; +interface IEnumConnectionPoints { + const IEnumConnectionPointsVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumConnectionPoints_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumConnectionPoints_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumConnectionPoints_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumConnectionPoints methods ***/ +#define IEnumConnectionPoints_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumConnectionPoints_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumConnectionPoints_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumConnectionPoints_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#endif + +HRESULT CALLBACK IEnumConnectionPoints_RemoteNext_Proxy( + IEnumConnectionPoints* This, + ULONG cConnections, + LPCONNECTIONPOINT* ppCP, + ULONG* pcFetched); +void __RPC_STUB IEnumConnectionPoints_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumConnectionPoints_Next_Proxy( + IEnumConnectionPoints* This, + ULONG cConnections, + LPCONNECTIONPOINT* ppCP, + ULONG* pcFetched); +HRESULT __RPC_STUB IEnumConnectionPoints_Next_Stub( + IEnumConnectionPoints* This, + ULONG cConnections, + LPCONNECTIONPOINT* ppCP, + ULONG* pcFetched); +HRESULT CALLBACK IEnumConnectionPoints_Skip_Proxy( + IEnumConnectionPoints* This, + ULONG cConnections); +void __RPC_STUB IEnumConnectionPoints_Skip_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumConnectionPoints_Reset_Proxy( + IEnumConnectionPoints* This); +void __RPC_STUB IEnumConnectionPoints_Reset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumConnectionPoints_Clone_Proxy( + IEnumConnectionPoints* This, + IEnumConnectionPoints** ppEnum); +void __RPC_STUB IEnumConnectionPoints_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumConnectionPoints_INTERFACE_DEFINED__ */ + +#ifndef __IPropertyPageSite_FWD_DEFINED__ +#define __IPropertyPageSite_FWD_DEFINED__ +typedef interface IPropertyPageSite IPropertyPageSite; +#endif + +#ifndef __IPropertyPage_FWD_DEFINED__ +#define __IPropertyPage_FWD_DEFINED__ +typedef interface IPropertyPage IPropertyPage; +#endif + +typedef IPropertyPage *LPPROPERTYPAGE; +typedef struct tagPROPPAGEINFO { + ULONG cb; + LPOLESTR pszTitle; + SIZE size; + LPOLESTR pszDocString; + LPOLESTR pszHelpFile; + DWORD dwHelpContext; +} PROPPAGEINFO, *LPPROPPAGEINFO; +/***************************************************************************** + * IPropertyPage interface + */ +#ifndef __IPropertyPage_INTERFACE_DEFINED__ +#define __IPropertyPage_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPropertyPage, 0xb196b28d, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPropertyPage : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE SetPageSite( + IPropertyPageSite* pPageSite) = 0; + + virtual HRESULT STDMETHODCALLTYPE Activate( + HWND hWndParent, + LPCRECT pRect, + BOOL bModal) = 0; + + virtual HRESULT STDMETHODCALLTYPE Deactivate( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPageInfo( + PROPPAGEINFO* pPageInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetObjects( + ULONG cObjects, + IUnknown** ppUnk) = 0; + + virtual HRESULT STDMETHODCALLTYPE Show( + UINT nCmdShow) = 0; + + virtual HRESULT STDMETHODCALLTYPE Move( + LPCRECT pRect) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsPageDirty( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Apply( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Help( + LPCOLESTR pszHelpDir) = 0; + + virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator( + MSG* pMsg) = 0; + +}; +#else +typedef struct IPropertyPageVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPropertyPage* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPropertyPage* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPropertyPage* This); + + /*** IPropertyPage methods ***/ + HRESULT (STDMETHODCALLTYPE *SetPageSite)( + IPropertyPage* This, + IPropertyPageSite* pPageSite); + + HRESULT (STDMETHODCALLTYPE *Activate)( + IPropertyPage* This, + HWND hWndParent, + LPCRECT pRect, + BOOL bModal); + + HRESULT (STDMETHODCALLTYPE *Deactivate)( + IPropertyPage* This); + + HRESULT (STDMETHODCALLTYPE *GetPageInfo)( + IPropertyPage* This, + PROPPAGEINFO* pPageInfo); + + HRESULT (STDMETHODCALLTYPE *SetObjects)( + IPropertyPage* This, + ULONG cObjects, + IUnknown** ppUnk); + + HRESULT (STDMETHODCALLTYPE *Show)( + IPropertyPage* This, + UINT nCmdShow); + + HRESULT (STDMETHODCALLTYPE *Move)( + IPropertyPage* This, + LPCRECT pRect); + + HRESULT (STDMETHODCALLTYPE *IsPageDirty)( + IPropertyPage* This); + + HRESULT (STDMETHODCALLTYPE *Apply)( + IPropertyPage* This); + + HRESULT (STDMETHODCALLTYPE *Help)( + IPropertyPage* This, + LPCOLESTR pszHelpDir); + + HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)( + IPropertyPage* This, + MSG* pMsg); + + END_INTERFACE +} IPropertyPageVtbl; +interface IPropertyPage { + const IPropertyPageVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPropertyPage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPropertyPage_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPropertyPage_Release(p) (p)->lpVtbl->Release(p) +/*** IPropertyPage methods ***/ +#define IPropertyPage_SetPageSite(p,a) (p)->lpVtbl->SetPageSite(p,a) +#define IPropertyPage_Activate(p,a,b,c) (p)->lpVtbl->Activate(p,a,b,c) +#define IPropertyPage_Deactivate(p) (p)->lpVtbl->Deactivate(p) +#define IPropertyPage_GetPageInfo(p,a) (p)->lpVtbl->GetPageInfo(p,a) +#define IPropertyPage_SetObjects(p,a,b) (p)->lpVtbl->SetObjects(p,a,b) +#define IPropertyPage_Show(p,a) (p)->lpVtbl->Show(p,a) +#define IPropertyPage_Move(p,a) (p)->lpVtbl->Move(p,a) +#define IPropertyPage_IsPageDirty(p) (p)->lpVtbl->IsPageDirty(p) +#define IPropertyPage_Apply(p) (p)->lpVtbl->Apply(p) +#define IPropertyPage_Help(p,a) (p)->lpVtbl->Help(p,a) +#define IPropertyPage_TranslateAccelerator(p,a) (p)->lpVtbl->TranslateAccelerator(p,a) +#endif + +#endif + +HRESULT CALLBACK IPropertyPage_SetPageSite_Proxy( + IPropertyPage* This, + IPropertyPageSite* pPageSite); +void __RPC_STUB IPropertyPage_SetPageSite_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_Activate_Proxy( + IPropertyPage* This, + HWND hWndParent, + LPCRECT pRect, + BOOL bModal); +void __RPC_STUB IPropertyPage_Activate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_Deactivate_Proxy( + IPropertyPage* This); +void __RPC_STUB IPropertyPage_Deactivate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_GetPageInfo_Proxy( + IPropertyPage* This, + PROPPAGEINFO* pPageInfo); +void __RPC_STUB IPropertyPage_GetPageInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_SetObjects_Proxy( + IPropertyPage* This, + ULONG cObjects, + IUnknown** ppUnk); +void __RPC_STUB IPropertyPage_SetObjects_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_Show_Proxy( + IPropertyPage* This, + UINT nCmdShow); +void __RPC_STUB IPropertyPage_Show_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_Move_Proxy( + IPropertyPage* This, + LPCRECT pRect); +void __RPC_STUB IPropertyPage_Move_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_IsPageDirty_Proxy( + IPropertyPage* This); +void __RPC_STUB IPropertyPage_IsPageDirty_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_Apply_Proxy( + IPropertyPage* This); +void __RPC_STUB IPropertyPage_Apply_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_Help_Proxy( + IPropertyPage* This, + LPCOLESTR pszHelpDir); +void __RPC_STUB IPropertyPage_Help_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPage_TranslateAccelerator_Proxy( + IPropertyPage* This, + MSG* pMsg); +void __RPC_STUB IPropertyPage_TranslateAccelerator_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPropertyPage_INTERFACE_DEFINED__ */ + +#ifndef __IPropertyPage2_FWD_DEFINED__ +#define __IPropertyPage2_FWD_DEFINED__ +typedef interface IPropertyPage2 IPropertyPage2; +#endif + +typedef IPropertyPage2 *LPPROPERTYPAGE2; +/***************************************************************************** + * IPropertyPage2 interface + */ +#ifndef __IPropertyPage2_INTERFACE_DEFINED__ +#define __IPropertyPage2_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPropertyPage2, 0x01e44665, 0x24ac, 0x101b, 0x84,0xed, 0x08,0x00,0x2b,0x2e,0xc7,0x13); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPropertyPage2 : public IPropertyPage +{ + virtual HRESULT STDMETHODCALLTYPE EditProperty( + DISPID dispID) = 0; + +}; +#else +typedef struct IPropertyPage2Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPropertyPage2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPropertyPage2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPropertyPage2* This); + + /*** IPropertyPage methods ***/ + HRESULT (STDMETHODCALLTYPE *SetPageSite)( + IPropertyPage2* This, + IPropertyPageSite* pPageSite); + + HRESULT (STDMETHODCALLTYPE *Activate)( + IPropertyPage2* This, + HWND hWndParent, + LPCRECT pRect, + BOOL bModal); + + HRESULT (STDMETHODCALLTYPE *Deactivate)( + IPropertyPage2* This); + + HRESULT (STDMETHODCALLTYPE *GetPageInfo)( + IPropertyPage2* This, + PROPPAGEINFO* pPageInfo); + + HRESULT (STDMETHODCALLTYPE *SetObjects)( + IPropertyPage2* This, + ULONG cObjects, + IUnknown** ppUnk); + + HRESULT (STDMETHODCALLTYPE *Show)( + IPropertyPage2* This, + UINT nCmdShow); + + HRESULT (STDMETHODCALLTYPE *Move)( + IPropertyPage2* This, + LPCRECT pRect); + + HRESULT (STDMETHODCALLTYPE *IsPageDirty)( + IPropertyPage2* This); + + HRESULT (STDMETHODCALLTYPE *Apply)( + IPropertyPage2* This); + + HRESULT (STDMETHODCALLTYPE *Help)( + IPropertyPage2* This, + LPCOLESTR pszHelpDir); + + HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)( + IPropertyPage2* This, + MSG* pMsg); + + /*** IPropertyPage2 methods ***/ + HRESULT (STDMETHODCALLTYPE *EditProperty)( + IPropertyPage2* This, + DISPID dispID); + + END_INTERFACE +} IPropertyPage2Vtbl; +interface IPropertyPage2 { + const IPropertyPage2Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPropertyPage2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPropertyPage2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPropertyPage2_Release(p) (p)->lpVtbl->Release(p) +/*** IPropertyPage methods ***/ +#define IPropertyPage2_SetPageSite(p,a) (p)->lpVtbl->SetPageSite(p,a) +#define IPropertyPage2_Activate(p,a,b,c) (p)->lpVtbl->Activate(p,a,b,c) +#define IPropertyPage2_Deactivate(p) (p)->lpVtbl->Deactivate(p) +#define IPropertyPage2_GetPageInfo(p,a) (p)->lpVtbl->GetPageInfo(p,a) +#define IPropertyPage2_SetObjects(p,a,b) (p)->lpVtbl->SetObjects(p,a,b) +#define IPropertyPage2_Show(p,a) (p)->lpVtbl->Show(p,a) +#define IPropertyPage2_Move(p,a) (p)->lpVtbl->Move(p,a) +#define IPropertyPage2_IsPageDirty(p) (p)->lpVtbl->IsPageDirty(p) +#define IPropertyPage2_Apply(p) (p)->lpVtbl->Apply(p) +#define IPropertyPage2_Help(p,a) (p)->lpVtbl->Help(p,a) +#define IPropertyPage2_TranslateAccelerator(p,a) (p)->lpVtbl->TranslateAccelerator(p,a) +/*** IPropertyPage2 methods ***/ +#define IPropertyPage2_EditProperty(p,a) (p)->lpVtbl->EditProperty(p,a) +#endif + +#endif + +HRESULT CALLBACK IPropertyPage2_EditProperty_Proxy( + IPropertyPage2* This, + DISPID dispID); +void __RPC_STUB IPropertyPage2_EditProperty_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPropertyPage2_INTERFACE_DEFINED__ */ + +typedef IPropertyPageSite *LPPROPERTYPAGESITE; +typedef enum tagPROPPAGESTATUS { + PROPPAGESTATUS_DIRTY = 0x1, + PROPPAGESTATUS_VALIDATE = 0x2, + PROPPAGESTATUS_CLEAN = 0x4 +} PROPPAGESTATUS; +/***************************************************************************** + * IPropertyPageSite interface + */ +#ifndef __IPropertyPageSite_INTERFACE_DEFINED__ +#define __IPropertyPageSite_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPropertyPageSite, 0xb196b28c, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPropertyPageSite : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE OnStatusChange( + DWORD dwFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLocaleID( + LCID* pLocaleID) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPageContainer( + IUnknown** ppUnk) = 0; + + virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator( + MSG* pMsg) = 0; + +}; +#else +typedef struct IPropertyPageSiteVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPropertyPageSite* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPropertyPageSite* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPropertyPageSite* This); + + /*** IPropertyPageSite methods ***/ + HRESULT (STDMETHODCALLTYPE *OnStatusChange)( + IPropertyPageSite* This, + DWORD dwFlags); + + HRESULT (STDMETHODCALLTYPE *GetLocaleID)( + IPropertyPageSite* This, + LCID* pLocaleID); + + HRESULT (STDMETHODCALLTYPE *GetPageContainer)( + IPropertyPageSite* This, + IUnknown** ppUnk); + + HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)( + IPropertyPageSite* This, + MSG* pMsg); + + END_INTERFACE +} IPropertyPageSiteVtbl; +interface IPropertyPageSite { + const IPropertyPageSiteVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPropertyPageSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPropertyPageSite_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPropertyPageSite_Release(p) (p)->lpVtbl->Release(p) +/*** IPropertyPageSite methods ***/ +#define IPropertyPageSite_OnStatusChange(p,a) (p)->lpVtbl->OnStatusChange(p,a) +#define IPropertyPageSite_GetLocaleID(p,a) (p)->lpVtbl->GetLocaleID(p,a) +#define IPropertyPageSite_GetPageContainer(p,a) (p)->lpVtbl->GetPageContainer(p,a) +#define IPropertyPageSite_TranslateAccelerator(p,a) (p)->lpVtbl->TranslateAccelerator(p,a) +#endif + +#endif + +HRESULT CALLBACK IPropertyPageSite_OnStatusChange_Proxy( + IPropertyPageSite* This, + DWORD dwFlags); +void __RPC_STUB IPropertyPageSite_OnStatusChange_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPageSite_GetLocaleID_Proxy( + IPropertyPageSite* This, + LCID* pLocaleID); +void __RPC_STUB IPropertyPageSite_GetLocaleID_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPageSite_GetPageContainer_Proxy( + IPropertyPageSite* This, + IUnknown** ppUnk); +void __RPC_STUB IPropertyPageSite_GetPageContainer_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyPageSite_TranslateAccelerator_Proxy( + IPropertyPageSite* This, + MSG* pMsg); +void __RPC_STUB IPropertyPageSite_TranslateAccelerator_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPropertyPageSite_INTERFACE_DEFINED__ */ + +#ifndef __IPropertyNotifySink_FWD_DEFINED__ +#define __IPropertyNotifySink_FWD_DEFINED__ +typedef interface IPropertyNotifySink IPropertyNotifySink; +#endif + +typedef IPropertyNotifySink *LPPROPERTYNOTIFYSINK; +/***************************************************************************** + * IPropertyNotifySink interface + */ +#ifndef __IPropertyNotifySink_INTERFACE_DEFINED__ +#define __IPropertyNotifySink_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPropertyNotifySink, 0x9bfbbc02, 0xeff1, 0x101a, 0x84,0xed, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPropertyNotifySink : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE OnChanged( + DISPID dispID) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnRequestEdit( + DISPID dispID) = 0; + +}; +#else +typedef struct IPropertyNotifySinkVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPropertyNotifySink* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPropertyNotifySink* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPropertyNotifySink* This); + + /*** IPropertyNotifySink methods ***/ + HRESULT (STDMETHODCALLTYPE *OnChanged)( + IPropertyNotifySink* This, + DISPID dispID); + + HRESULT (STDMETHODCALLTYPE *OnRequestEdit)( + IPropertyNotifySink* This, + DISPID dispID); + + END_INTERFACE +} IPropertyNotifySinkVtbl; +interface IPropertyNotifySink { + const IPropertyNotifySinkVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPropertyNotifySink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPropertyNotifySink_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPropertyNotifySink_Release(p) (p)->lpVtbl->Release(p) +/*** IPropertyNotifySink methods ***/ +#define IPropertyNotifySink_OnChanged(p,a) (p)->lpVtbl->OnChanged(p,a) +#define IPropertyNotifySink_OnRequestEdit(p,a) (p)->lpVtbl->OnRequestEdit(p,a) +#endif + +#endif + +HRESULT CALLBACK IPropertyNotifySink_OnChanged_Proxy( + IPropertyNotifySink* This, + DISPID dispID); +void __RPC_STUB IPropertyNotifySink_OnChanged_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyNotifySink_OnRequestEdit_Proxy( + IPropertyNotifySink* This, + DISPID dispID); +void __RPC_STUB IPropertyNotifySink_OnRequestEdit_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPropertyNotifySink_INTERFACE_DEFINED__ */ + +#ifndef __ISimpleFrameSite_FWD_DEFINED__ +#define __ISimpleFrameSite_FWD_DEFINED__ +typedef interface ISimpleFrameSite ISimpleFrameSite; +#endif + +typedef ISimpleFrameSite *LPSIMPLEFRAMESITE; +/***************************************************************************** + * ISimpleFrameSite interface + */ +#ifndef __ISimpleFrameSite_INTERFACE_DEFINED__ +#define __ISimpleFrameSite_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_ISimpleFrameSite, 0x742b0e01, 0x14e6, 0x101b, 0x91,0x4e, 0x00,0xaa,0x00,0x30,0x0c,0xab); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface ISimpleFrameSite : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE PreMessageFilter( + HWND hWnd, + UINT msg, + WPARAM wp, + LPARAM lp, + LRESULT* plResult, + DWORD* pdwCookie) = 0; + + virtual HRESULT STDMETHODCALLTYPE PostMessageFilter( + HWND hWnd, + UINT msg, + WPARAM wp, + LPARAM lp, + LRESULT* plResult, + DWORD dwCookie) = 0; + +}; +#else +typedef struct ISimpleFrameSiteVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + ISimpleFrameSite* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + ISimpleFrameSite* This); + + ULONG (STDMETHODCALLTYPE *Release)( + ISimpleFrameSite* This); + + /*** ISimpleFrameSite methods ***/ + HRESULT (STDMETHODCALLTYPE *PreMessageFilter)( + ISimpleFrameSite* This, + HWND hWnd, + UINT msg, + WPARAM wp, + LPARAM lp, + LRESULT* plResult, + DWORD* pdwCookie); + + HRESULT (STDMETHODCALLTYPE *PostMessageFilter)( + ISimpleFrameSite* This, + HWND hWnd, + UINT msg, + WPARAM wp, + LPARAM lp, + LRESULT* plResult, + DWORD dwCookie); + + END_INTERFACE +} ISimpleFrameSiteVtbl; +interface ISimpleFrameSite { + const ISimpleFrameSiteVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define ISimpleFrameSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ISimpleFrameSite_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ISimpleFrameSite_Release(p) (p)->lpVtbl->Release(p) +/*** ISimpleFrameSite methods ***/ +#define ISimpleFrameSite_PreMessageFilter(p,a,b,c,d,e,f) (p)->lpVtbl->PreMessageFilter(p,a,b,c,d,e,f) +#define ISimpleFrameSite_PostMessageFilter(p,a,b,c,d,e,f) (p)->lpVtbl->PostMessageFilter(p,a,b,c,d,e,f) +#endif + +#endif + +HRESULT CALLBACK ISimpleFrameSite_PreMessageFilter_Proxy( + ISimpleFrameSite* This, + HWND hWnd, + UINT msg, + WPARAM wp, + LPARAM lp, + LRESULT* plResult, + DWORD* pdwCookie); +void __RPC_STUB ISimpleFrameSite_PreMessageFilter_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK ISimpleFrameSite_PostMessageFilter_Proxy( + ISimpleFrameSite* This, + HWND hWnd, + UINT msg, + WPARAM wp, + LPARAM lp, + LRESULT* plResult, + DWORD dwCookie); +void __RPC_STUB ISimpleFrameSite_PostMessageFilter_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __ISimpleFrameSite_INTERFACE_DEFINED__ */ + +#ifndef __IPersistStreamInit_FWD_DEFINED__ +#define __IPersistStreamInit_FWD_DEFINED__ +typedef interface IPersistStreamInit IPersistStreamInit; +#endif + +typedef IPersistStreamInit *LPPERSISTSTREAMINIT; +/***************************************************************************** + * IPersistStreamInit interface + */ +#ifndef __IPersistStreamInit_INTERFACE_DEFINED__ +#define __IPersistStreamInit_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPersistStreamInit, 0x7fd52380, 0x4e07, 0x101b, 0xae,0x2d, 0x08,0x00,0x2b,0x2e,0xc7,0x13); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPersistStreamInit : public IPersist +{ + virtual HRESULT STDMETHODCALLTYPE IsDirty( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Load( + LPSTREAM pStm) = 0; + + virtual HRESULT STDMETHODCALLTYPE Save( + LPSTREAM pStm, + BOOL fClearDirty) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSizeMax( + ULARGE_INTEGER* pcbSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE InitNew( + ) = 0; + +}; +#else +typedef struct IPersistStreamInitVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPersistStreamInit* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPersistStreamInit* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPersistStreamInit* This); + + /*** IPersist methods ***/ + HRESULT (STDMETHODCALLTYPE *GetClassID)( + IPersistStreamInit* This, + CLSID* pClassID); + + /*** IPersistStreamInit methods ***/ + HRESULT (STDMETHODCALLTYPE *IsDirty)( + IPersistStreamInit* This); + + HRESULT (STDMETHODCALLTYPE *Load)( + IPersistStreamInit* This, + LPSTREAM pStm); + + HRESULT (STDMETHODCALLTYPE *Save)( + IPersistStreamInit* This, + LPSTREAM pStm, + BOOL fClearDirty); + + HRESULT (STDMETHODCALLTYPE *GetSizeMax)( + IPersistStreamInit* This, + ULARGE_INTEGER* pcbSize); + + HRESULT (STDMETHODCALLTYPE *InitNew)( + IPersistStreamInit* This); + + END_INTERFACE +} IPersistStreamInitVtbl; +interface IPersistStreamInit { + const IPersistStreamInitVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPersistStreamInit_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPersistStreamInit_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPersistStreamInit_Release(p) (p)->lpVtbl->Release(p) +/*** IPersist methods ***/ +#define IPersistStreamInit_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) +/*** IPersistStreamInit methods ***/ +#define IPersistStreamInit_IsDirty(p) (p)->lpVtbl->IsDirty(p) +#define IPersistStreamInit_Load(p,a) (p)->lpVtbl->Load(p,a) +#define IPersistStreamInit_Save(p,a,b) (p)->lpVtbl->Save(p,a,b) +#define IPersistStreamInit_GetSizeMax(p,a) (p)->lpVtbl->GetSizeMax(p,a) +#define IPersistStreamInit_InitNew(p) (p)->lpVtbl->InitNew(p) +#endif + +#endif + +HRESULT CALLBACK IPersistStreamInit_IsDirty_Proxy( + IPersistStreamInit* This); +void __RPC_STUB IPersistStreamInit_IsDirty_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistStreamInit_Load_Proxy( + IPersistStreamInit* This, + LPSTREAM pStm); +void __RPC_STUB IPersistStreamInit_Load_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistStreamInit_Save_Proxy( + IPersistStreamInit* This, + LPSTREAM pStm, + BOOL fClearDirty); +void __RPC_STUB IPersistStreamInit_Save_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistStreamInit_GetSizeMax_Proxy( + IPersistStreamInit* This, + ULARGE_INTEGER* pcbSize); +void __RPC_STUB IPersistStreamInit_GetSizeMax_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistStreamInit_InitNew_Proxy( + IPersistStreamInit* This); +void __RPC_STUB IPersistStreamInit_InitNew_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPersistStreamInit_INTERFACE_DEFINED__ */ + +#ifndef __IPersistMemory_FWD_DEFINED__ +#define __IPersistMemory_FWD_DEFINED__ +typedef interface IPersistMemory IPersistMemory; +#endif + +typedef IPersistMemory *LPPERSISTMEMORY; +/***************************************************************************** + * IPersistMemory interface + */ +#ifndef __IPersistMemory_INTERFACE_DEFINED__ +#define __IPersistMemory_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPersistMemory, 0xbd1ae5e0, 0xa6ae, 0x11ce, 0xbd,0x37, 0x50,0x42,0x00,0xc1,0x00,0x00); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPersistMemory : public IPersist +{ + virtual HRESULT STDMETHODCALLTYPE IsDirty( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Load( + LPVOID pMem, + ULONG cbSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE Save( + LPVOID pMem, + BOOL fClearDirty, + ULONG cbSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSizeMax( + ULONG* pCbSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE InitNew( + ) = 0; + +}; +#else +typedef struct IPersistMemoryVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPersistMemory* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPersistMemory* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPersistMemory* This); + + /*** IPersist methods ***/ + HRESULT (STDMETHODCALLTYPE *GetClassID)( + IPersistMemory* This, + CLSID* pClassID); + + /*** IPersistMemory methods ***/ + HRESULT (STDMETHODCALLTYPE *IsDirty)( + IPersistMemory* This); + + HRESULT (STDMETHODCALLTYPE *Load)( + IPersistMemory* This, + LPVOID pMem, + ULONG cbSize); + + HRESULT (STDMETHODCALLTYPE *Save)( + IPersistMemory* This, + LPVOID pMem, + BOOL fClearDirty, + ULONG cbSize); + + HRESULT (STDMETHODCALLTYPE *GetSizeMax)( + IPersistMemory* This, + ULONG* pCbSize); + + HRESULT (STDMETHODCALLTYPE *InitNew)( + IPersistMemory* This); + + END_INTERFACE +} IPersistMemoryVtbl; +interface IPersistMemory { + const IPersistMemoryVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPersistMemory_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPersistMemory_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPersistMemory_Release(p) (p)->lpVtbl->Release(p) +/*** IPersist methods ***/ +#define IPersistMemory_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) +/*** IPersistMemory methods ***/ +#define IPersistMemory_IsDirty(p) (p)->lpVtbl->IsDirty(p) +#define IPersistMemory_Load(p,a,b) (p)->lpVtbl->Load(p,a,b) +#define IPersistMemory_Save(p,a,b,c) (p)->lpVtbl->Save(p,a,b,c) +#define IPersistMemory_GetSizeMax(p,a) (p)->lpVtbl->GetSizeMax(p,a) +#define IPersistMemory_InitNew(p) (p)->lpVtbl->InitNew(p) +#endif + +#endif + +HRESULT CALLBACK IPersistMemory_IsDirty_Proxy( + IPersistMemory* This); +void __RPC_STUB IPersistMemory_IsDirty_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistMemory_RemoteLoad_Proxy( + IPersistMemory* This, + BYTE* pMem, + ULONG cbSize); +void __RPC_STUB IPersistMemory_RemoteLoad_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistMemory_Load_Proxy( + IPersistMemory* This, + LPVOID pMem, + ULONG cbSize); +HRESULT __RPC_STUB IPersistMemory_Load_Stub( + IPersistMemory* This, + BYTE* pMem, + ULONG cbSize); +HRESULT CALLBACK IPersistMemory_RemoteSave_Proxy( + IPersistMemory* This, + BYTE* pMem, + BOOL fClearDirty, + ULONG cbSize); +void __RPC_STUB IPersistMemory_RemoteSave_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistMemory_Save_Proxy( + IPersistMemory* This, + LPVOID pMem, + BOOL fClearDirty, + ULONG cbSize); +HRESULT __RPC_STUB IPersistMemory_Save_Stub( + IPersistMemory* This, + BYTE* pMem, + BOOL fClearDirty, + ULONG cbSize); +HRESULT CALLBACK IPersistMemory_GetSizeMax_Proxy( + IPersistMemory* This, + ULONG* pCbSize); +void __RPC_STUB IPersistMemory_GetSizeMax_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistMemory_InitNew_Proxy( + IPersistMemory* This); +void __RPC_STUB IPersistMemory_InitNew_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPersistMemory_INTERFACE_DEFINED__ */ + +#ifndef __IPersistPropertyBag_FWD_DEFINED__ +#define __IPersistPropertyBag_FWD_DEFINED__ +typedef interface IPersistPropertyBag IPersistPropertyBag; +#endif + +typedef IPersistPropertyBag *LPPERSISTPROPERTYBAG; +/***************************************************************************** + * IPersistPropertyBag interface + */ +#ifndef __IPersistPropertyBag_INTERFACE_DEFINED__ +#define __IPersistPropertyBag_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPersistPropertyBag, 0x37d84f60, 0x42cb, 0x11ce, 0x81,0x35, 0x00,0xaa,0x00,0x4b,0xb8,0x51); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPersistPropertyBag : public IPersist +{ + virtual HRESULT STDMETHODCALLTYPE InitNew( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Load( + IPropertyBag* pPropBag, + IErrorLog* pErrorLog) = 0; + + virtual HRESULT STDMETHODCALLTYPE Save( + IPropertyBag* pPropBag, + BOOL fClearDirty, + BOOL fSaveAllProperties) = 0; + +}; +#else +typedef struct IPersistPropertyBagVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPersistPropertyBag* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPersistPropertyBag* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPersistPropertyBag* This); + + /*** IPersist methods ***/ + HRESULT (STDMETHODCALLTYPE *GetClassID)( + IPersistPropertyBag* This, + CLSID* pClassID); + + /*** IPersistPropertyBag methods ***/ + HRESULT (STDMETHODCALLTYPE *InitNew)( + IPersistPropertyBag* This); + + HRESULT (STDMETHODCALLTYPE *Load)( + IPersistPropertyBag* This, + IPropertyBag* pPropBag, + IErrorLog* pErrorLog); + + HRESULT (STDMETHODCALLTYPE *Save)( + IPersistPropertyBag* This, + IPropertyBag* pPropBag, + BOOL fClearDirty, + BOOL fSaveAllProperties); + + END_INTERFACE +} IPersistPropertyBagVtbl; +interface IPersistPropertyBag { + const IPersistPropertyBagVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPersistPropertyBag_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPersistPropertyBag_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPersistPropertyBag_Release(p) (p)->lpVtbl->Release(p) +/*** IPersist methods ***/ +#define IPersistPropertyBag_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) +/*** IPersistPropertyBag methods ***/ +#define IPersistPropertyBag_InitNew(p) (p)->lpVtbl->InitNew(p) +#define IPersistPropertyBag_Load(p,a,b) (p)->lpVtbl->Load(p,a,b) +#define IPersistPropertyBag_Save(p,a,b,c) (p)->lpVtbl->Save(p,a,b,c) +#endif + +#endif + +HRESULT CALLBACK IPersistPropertyBag_InitNew_Proxy( + IPersistPropertyBag* This); +void __RPC_STUB IPersistPropertyBag_InitNew_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistPropertyBag_Load_Proxy( + IPersistPropertyBag* This, + IPropertyBag* pPropBag, + IErrorLog* pErrorLog); +void __RPC_STUB IPersistPropertyBag_Load_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistPropertyBag_Save_Proxy( + IPersistPropertyBag* This, + IPropertyBag* pPropBag, + BOOL fClearDirty, + BOOL fSaveAllProperties); +void __RPC_STUB IPersistPropertyBag_Save_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPersistPropertyBag_INTERFACE_DEFINED__ */ + +#ifndef __IPropertyBag2_FWD_DEFINED__ +#define __IPropertyBag2_FWD_DEFINED__ +typedef interface IPropertyBag2 IPropertyBag2; +#endif + +typedef IPropertyBag2 *LPPROPERTYBAG2; +typedef enum tagPROPBAG2_TYPE { + PROPBAG2_TYPE_UNDEFINED = 0, + PROPBAG2_TYPE_DATA = 1, + PROPBAG2_TYPE_URL = 2, + PROPBAG2_TYPE_OBJECT = 3, + PROPBAG2_TYPE_STREAM = 4, + PROPBAG2_TYPE_STORAGE = 5, + PROPBAG2_TYPE_MONIKER = 6 +} PROPBAG2_TYPE; +typedef struct tagPROPBAG2 { + DWORD dwType; + VARTYPE vt; + CLIPFORMAT cfType; + DWORD dwHint; + LPOLESTR pstrName; + CLSID clsid; +} PROPBAG2; +/***************************************************************************** + * IPropertyBag2 interface + */ +#ifndef __IPropertyBag2_INTERFACE_DEFINED__ +#define __IPropertyBag2_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPropertyBag2, 0x22f55882, 0x280b, 0x11d0, 0xa8,0xa9, 0x00,0xa0,0xc9,0x0c,0x20,0x04); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPropertyBag2 : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Read( + ULONG cProperties, + PROPBAG2* pPropBag, + IErrorLog* pErrLog, + VARIANT* pvarValue, + HRESULT* phrError) = 0; + + virtual HRESULT STDMETHODCALLTYPE Write( + ULONG cProperties, + PROPBAG2* pPropBag, + VARIANT* pvarValue) = 0; + + virtual HRESULT STDMETHODCALLTYPE CountProperties( + ULONG* pcProperties) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPropertyInfo( + ULONG iProperty, + ULONG cProperties, + PROPBAG2* pPropBag, + ULONG* pcProperties) = 0; + + virtual HRESULT STDMETHODCALLTYPE LoadObject( + LPCOLESTR pstrName, + DWORD dwHint, + IUnknown* pUnkObject, + IErrorLog* pErrLog) = 0; + +}; +#else +typedef struct IPropertyBag2Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPropertyBag2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPropertyBag2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPropertyBag2* This); + + /*** IPropertyBag2 methods ***/ + HRESULT (STDMETHODCALLTYPE *Read)( + IPropertyBag2* This, + ULONG cProperties, + PROPBAG2* pPropBag, + IErrorLog* pErrLog, + VARIANT* pvarValue, + HRESULT* phrError); + + HRESULT (STDMETHODCALLTYPE *Write)( + IPropertyBag2* This, + ULONG cProperties, + PROPBAG2* pPropBag, + VARIANT* pvarValue); + + HRESULT (STDMETHODCALLTYPE *CountProperties)( + IPropertyBag2* This, + ULONG* pcProperties); + + HRESULT (STDMETHODCALLTYPE *GetPropertyInfo)( + IPropertyBag2* This, + ULONG iProperty, + ULONG cProperties, + PROPBAG2* pPropBag, + ULONG* pcProperties); + + HRESULT (STDMETHODCALLTYPE *LoadObject)( + IPropertyBag2* This, + LPCOLESTR pstrName, + DWORD dwHint, + IUnknown* pUnkObject, + IErrorLog* pErrLog); + + END_INTERFACE +} IPropertyBag2Vtbl; +interface IPropertyBag2 { + const IPropertyBag2Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPropertyBag2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPropertyBag2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPropertyBag2_Release(p) (p)->lpVtbl->Release(p) +/*** IPropertyBag2 methods ***/ +#define IPropertyBag2_Read(p,a,b,c,d,e) (p)->lpVtbl->Read(p,a,b,c,d,e) +#define IPropertyBag2_Write(p,a,b,c) (p)->lpVtbl->Write(p,a,b,c) +#define IPropertyBag2_CountProperties(p,a) (p)->lpVtbl->CountProperties(p,a) +#define IPropertyBag2_GetPropertyInfo(p,a,b,c,d) (p)->lpVtbl->GetPropertyInfo(p,a,b,c,d) +#define IPropertyBag2_LoadObject(p,a,b,c,d) (p)->lpVtbl->LoadObject(p,a,b,c,d) +#endif + +#endif + +HRESULT CALLBACK IPropertyBag2_Read_Proxy( + IPropertyBag2* This, + ULONG cProperties, + PROPBAG2* pPropBag, + IErrorLog* pErrLog, + VARIANT* pvarValue, + HRESULT* phrError); +void __RPC_STUB IPropertyBag2_Read_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyBag2_Write_Proxy( + IPropertyBag2* This, + ULONG cProperties, + PROPBAG2* pPropBag, + VARIANT* pvarValue); +void __RPC_STUB IPropertyBag2_Write_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyBag2_CountProperties_Proxy( + IPropertyBag2* This, + ULONG* pcProperties); +void __RPC_STUB IPropertyBag2_CountProperties_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyBag2_GetPropertyInfo_Proxy( + IPropertyBag2* This, + ULONG iProperty, + ULONG cProperties, + PROPBAG2* pPropBag, + ULONG* pcProperties); +void __RPC_STUB IPropertyBag2_GetPropertyInfo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPropertyBag2_LoadObject_Proxy( + IPropertyBag2* This, + LPCOLESTR pstrName, + DWORD dwHint, + IUnknown* pUnkObject, + IErrorLog* pErrLog); +void __RPC_STUB IPropertyBag2_LoadObject_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPropertyBag2_INTERFACE_DEFINED__ */ + +#ifndef __IPersistPropertyBag2_FWD_DEFINED__ +#define __IPersistPropertyBag2_FWD_DEFINED__ +typedef interface IPersistPropertyBag2 IPersistPropertyBag2; +#endif + +typedef IPersistPropertyBag2 *LPPERSISTPROPERTYBAG2; +/***************************************************************************** + * IPersistPropertyBag2 interface + */ +#ifndef __IPersistPropertyBag2_INTERFACE_DEFINED__ +#define __IPersistPropertyBag2_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPersistPropertyBag2, 0x22f55881, 0x280b, 0x11d0, 0xa8,0xa9, 0x00,0xa0,0xc9,0x0c,0x20,0x04); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPersistPropertyBag2 : public IPersist +{ + virtual HRESULT STDMETHODCALLTYPE InitNew( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Load( + IPropertyBag2* pPropBag, + IErrorLog* pErrorLog) = 0; + + virtual HRESULT STDMETHODCALLTYPE Save( + IPropertyBag2* pPropBag, + BOOL fClearDirty, + BOOL fSaveAllProperties) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsDirty( + ) = 0; + +}; +#else +typedef struct IPersistPropertyBag2Vtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPersistPropertyBag2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPersistPropertyBag2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPersistPropertyBag2* This); + + /*** IPersist methods ***/ + HRESULT (STDMETHODCALLTYPE *GetClassID)( + IPersistPropertyBag2* This, + CLSID* pClassID); + + /*** IPersistPropertyBag2 methods ***/ + HRESULT (STDMETHODCALLTYPE *InitNew)( + IPersistPropertyBag2* This); + + HRESULT (STDMETHODCALLTYPE *Load)( + IPersistPropertyBag2* This, + IPropertyBag2* pPropBag, + IErrorLog* pErrorLog); + + HRESULT (STDMETHODCALLTYPE *Save)( + IPersistPropertyBag2* This, + IPropertyBag2* pPropBag, + BOOL fClearDirty, + BOOL fSaveAllProperties); + + HRESULT (STDMETHODCALLTYPE *IsDirty)( + IPersistPropertyBag2* This); + + END_INTERFACE +} IPersistPropertyBag2Vtbl; +interface IPersistPropertyBag2 { + const IPersistPropertyBag2Vtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPersistPropertyBag2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPersistPropertyBag2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPersistPropertyBag2_Release(p) (p)->lpVtbl->Release(p) +/*** IPersist methods ***/ +#define IPersistPropertyBag2_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) +/*** IPersistPropertyBag2 methods ***/ +#define IPersistPropertyBag2_InitNew(p) (p)->lpVtbl->InitNew(p) +#define IPersistPropertyBag2_Load(p,a,b) (p)->lpVtbl->Load(p,a,b) +#define IPersistPropertyBag2_Save(p,a,b,c) (p)->lpVtbl->Save(p,a,b,c) +#define IPersistPropertyBag2_IsDirty(p) (p)->lpVtbl->IsDirty(p) +#endif + +#endif + +HRESULT CALLBACK IPersistPropertyBag2_InitNew_Proxy( + IPersistPropertyBag2* This); +void __RPC_STUB IPersistPropertyBag2_InitNew_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistPropertyBag2_Load_Proxy( + IPersistPropertyBag2* This, + IPropertyBag2* pPropBag, + IErrorLog* pErrorLog); +void __RPC_STUB IPersistPropertyBag2_Load_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistPropertyBag2_Save_Proxy( + IPersistPropertyBag2* This, + IPropertyBag2* pPropBag, + BOOL fClearDirty, + BOOL fSaveAllProperties); +void __RPC_STUB IPersistPropertyBag2_Save_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPersistPropertyBag2_IsDirty_Proxy( + IPersistPropertyBag2* This); +void __RPC_STUB IPersistPropertyBag2_IsDirty_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPersistPropertyBag2_INTERFACE_DEFINED__ */ + +#ifndef __ISpecifyPropertyPages_FWD_DEFINED__ +#define __ISpecifyPropertyPages_FWD_DEFINED__ +typedef interface ISpecifyPropertyPages ISpecifyPropertyPages; +#endif + +typedef ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES; +typedef struct tagCAUUID { + ULONG cElems; + GUID *pElems; +} CAUUID, *LPCAUUID; +/***************************************************************************** + * ISpecifyPropertyPages interface + */ +#ifndef __ISpecifyPropertyPages_INTERFACE_DEFINED__ +#define __ISpecifyPropertyPages_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_ISpecifyPropertyPages, 0xb196b28b, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface ISpecifyPropertyPages : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetPages( + CAUUID* pPages) = 0; + +}; +#else +typedef struct ISpecifyPropertyPagesVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + ISpecifyPropertyPages* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + ISpecifyPropertyPages* This); + + ULONG (STDMETHODCALLTYPE *Release)( + ISpecifyPropertyPages* This); + + /*** ISpecifyPropertyPages methods ***/ + HRESULT (STDMETHODCALLTYPE *GetPages)( + ISpecifyPropertyPages* This, + CAUUID* pPages); + + END_INTERFACE +} ISpecifyPropertyPagesVtbl; +interface ISpecifyPropertyPages { + const ISpecifyPropertyPagesVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define ISpecifyPropertyPages_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ISpecifyPropertyPages_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ISpecifyPropertyPages_Release(p) (p)->lpVtbl->Release(p) +/*** ISpecifyPropertyPages methods ***/ +#define ISpecifyPropertyPages_GetPages(p,a) (p)->lpVtbl->GetPages(p,a) +#endif + +#endif + +HRESULT CALLBACK ISpecifyPropertyPages_GetPages_Proxy( + ISpecifyPropertyPages* This, + CAUUID* pPages); +void __RPC_STUB ISpecifyPropertyPages_GetPages_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __ISpecifyPropertyPages_INTERFACE_DEFINED__ */ + +#ifndef __IPerPropertyBrowsing_FWD_DEFINED__ +#define __IPerPropertyBrowsing_FWD_DEFINED__ +typedef interface IPerPropertyBrowsing IPerPropertyBrowsing; +#endif + +typedef IPerPropertyBrowsing *LPPERPROPERTYBROWSING; +typedef struct tagCALPOLESTR { + ULONG cElems; + LPOLESTR *pElems; +} CALPOLESTR, *LPCALPOLESTR; +typedef struct tagCADWORD { + ULONG cElems; + DWORD *pElems; +} CADWORD, *LPCADWORD; +/***************************************************************************** + * IPerPropertyBrowsing interface + */ +#ifndef __IPerPropertyBrowsing_INTERFACE_DEFINED__ +#define __IPerPropertyBrowsing_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPerPropertyBrowsing, 0x376bd3aa, 0x3845, 0x101b, 0x84,0xed, 0x08,0x00,0x2b,0x2e,0xc7,0x13); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPerPropertyBrowsing : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetDisplayString( + DISPID dispID, + BSTR* pBstr) = 0; + + virtual HRESULT STDMETHODCALLTYPE MapPropertyToPage( + DISPID dispID, + CLSID* pClsid) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPredefinedStrings( + DISPID dispID, + CALPOLESTR* pCaStringsOut, + CADWORD* pCaCookiesOut) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPredefinedValue( + DISPID dispID, + DWORD dwCookie, + VARIANT* pVarOut) = 0; + +}; +#else +typedef struct IPerPropertyBrowsingVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPerPropertyBrowsing* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPerPropertyBrowsing* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPerPropertyBrowsing* This); + + /*** IPerPropertyBrowsing methods ***/ + HRESULT (STDMETHODCALLTYPE *GetDisplayString)( + IPerPropertyBrowsing* This, + DISPID dispID, + BSTR* pBstr); + + HRESULT (STDMETHODCALLTYPE *MapPropertyToPage)( + IPerPropertyBrowsing* This, + DISPID dispID, + CLSID* pClsid); + + HRESULT (STDMETHODCALLTYPE *GetPredefinedStrings)( + IPerPropertyBrowsing* This, + DISPID dispID, + CALPOLESTR* pCaStringsOut, + CADWORD* pCaCookiesOut); + + HRESULT (STDMETHODCALLTYPE *GetPredefinedValue)( + IPerPropertyBrowsing* This, + DISPID dispID, + DWORD dwCookie, + VARIANT* pVarOut); + + END_INTERFACE +} IPerPropertyBrowsingVtbl; +interface IPerPropertyBrowsing { + const IPerPropertyBrowsingVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPerPropertyBrowsing_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPerPropertyBrowsing_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPerPropertyBrowsing_Release(p) (p)->lpVtbl->Release(p) +/*** IPerPropertyBrowsing methods ***/ +#define IPerPropertyBrowsing_GetDisplayString(p,a,b) (p)->lpVtbl->GetDisplayString(p,a,b) +#define IPerPropertyBrowsing_MapPropertyToPage(p,a,b) (p)->lpVtbl->MapPropertyToPage(p,a,b) +#define IPerPropertyBrowsing_GetPredefinedStrings(p,a,b,c) (p)->lpVtbl->GetPredefinedStrings(p,a,b,c) +#define IPerPropertyBrowsing_GetPredefinedValue(p,a,b,c) (p)->lpVtbl->GetPredefinedValue(p,a,b,c) +#endif + +#endif + +HRESULT CALLBACK IPerPropertyBrowsing_GetDisplayString_Proxy( + IPerPropertyBrowsing* This, + DISPID dispID, + BSTR* pBstr); +void __RPC_STUB IPerPropertyBrowsing_GetDisplayString_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPerPropertyBrowsing_MapPropertyToPage_Proxy( + IPerPropertyBrowsing* This, + DISPID dispID, + CLSID* pClsid); +void __RPC_STUB IPerPropertyBrowsing_MapPropertyToPage_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPerPropertyBrowsing_GetPredefinedStrings_Proxy( + IPerPropertyBrowsing* This, + DISPID dispID, + CALPOLESTR* pCaStringsOut, + CADWORD* pCaCookiesOut); +void __RPC_STUB IPerPropertyBrowsing_GetPredefinedStrings_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPerPropertyBrowsing_GetPredefinedValue_Proxy( + IPerPropertyBrowsing* This, + DISPID dispID, + DWORD dwCookie, + VARIANT* pVarOut); +void __RPC_STUB IPerPropertyBrowsing_GetPredefinedValue_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPerPropertyBrowsing_INTERFACE_DEFINED__ */ + +#ifndef __IAdviseSinkEx_FWD_DEFINED__ +#define __IAdviseSinkEx_FWD_DEFINED__ +typedef interface IAdviseSinkEx IAdviseSinkEx; +#endif + +typedef IAdviseSinkEx *LPADVISESINKEX; +/***************************************************************************** + * IAdviseSinkEx interface + */ +#ifndef __IAdviseSinkEx_INTERFACE_DEFINED__ +#define __IAdviseSinkEx_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAdviseSinkEx, 0x3af24290, 0x0c96, 0x11ce, 0xa0,0xcf, 0x00,0xaa,0x00,0x60,0x0a,0xb8); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IAdviseSinkEx : public IAdviseSink +{ + virtual void STDMETHODCALLTYPE OnViewStatusChange( + DWORD dwViewStatus) = 0; + +}; +#else +typedef struct IAdviseSinkExVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAdviseSinkEx* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAdviseSinkEx* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAdviseSinkEx* This); + + /*** IAdviseSink methods ***/ + void (STDMETHODCALLTYPE *OnDataChange)( + IAdviseSinkEx* This, + FORMATETC* pFormatetc, + STGMEDIUM* pStgmed); + + void (STDMETHODCALLTYPE *OnViewChange)( + IAdviseSinkEx* This, + DWORD dwAspect, + LONG lindex); + + void (STDMETHODCALLTYPE *OnRename)( + IAdviseSinkEx* This, + IMoniker* pmk); + + void (STDMETHODCALLTYPE *OnSave)( + IAdviseSinkEx* This); + + void (STDMETHODCALLTYPE *OnClose)( + IAdviseSinkEx* This); + + /*** IAdviseSinkEx methods ***/ + void (STDMETHODCALLTYPE *OnViewStatusChange)( + IAdviseSinkEx* This, + DWORD dwViewStatus); + + END_INTERFACE +} IAdviseSinkExVtbl; +interface IAdviseSinkEx { + const IAdviseSinkExVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IAdviseSinkEx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAdviseSinkEx_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAdviseSinkEx_Release(p) (p)->lpVtbl->Release(p) +/*** IAdviseSink methods ***/ +#define IAdviseSinkEx_OnDataChange(p,a,b) (p)->lpVtbl->OnDataChange(p,a,b) +#define IAdviseSinkEx_OnViewChange(p,a,b) (p)->lpVtbl->OnViewChange(p,a,b) +#define IAdviseSinkEx_OnRename(p,a) (p)->lpVtbl->OnRename(p,a) +#define IAdviseSinkEx_OnSave(p) (p)->lpVtbl->OnSave(p) +#define IAdviseSinkEx_OnClose(p) (p)->lpVtbl->OnClose(p) +/*** IAdviseSinkEx methods ***/ +#define IAdviseSinkEx_OnViewStatusChange(p,a) (p)->lpVtbl->OnViewStatusChange(p,a) +#endif + +#endif + +HRESULT CALLBACK IAdviseSinkEx_RemoteOnViewStatusChange_Proxy( + IAdviseSinkEx* This, + DWORD dwViewStatus); +void __RPC_STUB IAdviseSinkEx_RemoteOnViewStatusChange_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +void CALLBACK IAdviseSinkEx_OnViewStatusChange_Proxy( + IAdviseSinkEx* This, + DWORD dwViewStatus); +HRESULT __RPC_STUB IAdviseSinkEx_OnViewStatusChange_Stub( + IAdviseSinkEx* This, + DWORD dwViewStatus); + +#endif /* __IAdviseSinkEx_INTERFACE_DEFINED__ */ + +#ifndef __IPointerInactive_FWD_DEFINED__ +#define __IPointerInactive_FWD_DEFINED__ +typedef interface IPointerInactive IPointerInactive; +#endif + +typedef IPointerInactive *LPPOINTERINACTIVE; +/***************************************************************************** + * IPointerInactive interface + */ +#ifndef __IPointerInactive_INTERFACE_DEFINED__ +#define __IPointerInactive_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IPointerInactive, 0x55980ba0, 0x35aa, 0x11cf, 0xb6,0x71, 0x00,0xaa,0x00,0x4c,0xd6,0xd8); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IPointerInactive : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetActivationPolicy( + DWORD* pdwPolicy) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnInactiveMouseMove( + LPCRECT pRectBounds, + LONG x, + LONG y, + DWORD grfKeyState) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnInactiveSetCursor( + LPCRECT pRectBounds, + LONG x, + LONG y, + DWORD dwMouseMsg, + BOOL fSetAlways) = 0; + +}; +#else +typedef struct IPointerInactiveVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IPointerInactive* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IPointerInactive* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IPointerInactive* This); + + /*** IPointerInactive methods ***/ + HRESULT (STDMETHODCALLTYPE *GetActivationPolicy)( + IPointerInactive* This, + DWORD* pdwPolicy); + + HRESULT (STDMETHODCALLTYPE *OnInactiveMouseMove)( + IPointerInactive* This, + LPCRECT pRectBounds, + LONG x, + LONG y, + DWORD grfKeyState); + + HRESULT (STDMETHODCALLTYPE *OnInactiveSetCursor)( + IPointerInactive* This, + LPCRECT pRectBounds, + LONG x, + LONG y, + DWORD dwMouseMsg, + BOOL fSetAlways); + + END_INTERFACE +} IPointerInactiveVtbl; +interface IPointerInactive { + const IPointerInactiveVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IPointerInactive_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IPointerInactive_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IPointerInactive_Release(p) (p)->lpVtbl->Release(p) +/*** IPointerInactive methods ***/ +#define IPointerInactive_GetActivationPolicy(p,a) (p)->lpVtbl->GetActivationPolicy(p,a) +#define IPointerInactive_OnInactiveMouseMove(p,a,b,c,d) (p)->lpVtbl->OnInactiveMouseMove(p,a,b,c,d) +#define IPointerInactive_OnInactiveSetCursor(p,a,b,c,d,e) (p)->lpVtbl->OnInactiveSetCursor(p,a,b,c,d,e) +#endif + +#endif + +HRESULT CALLBACK IPointerInactive_GetActivationPolicy_Proxy( + IPointerInactive* This, + DWORD* pdwPolicy); +void __RPC_STUB IPointerInactive_GetActivationPolicy_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPointerInactive_OnInactiveMouseMove_Proxy( + IPointerInactive* This, + LPCRECT pRectBounds, + LONG x, + LONG y, + DWORD grfKeyState); +void __RPC_STUB IPointerInactive_OnInactiveMouseMove_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IPointerInactive_OnInactiveSetCursor_Proxy( + IPointerInactive* This, + LPCRECT pRectBounds, + LONG x, + LONG y, + DWORD dwMouseMsg, + BOOL fSetAlways); +void __RPC_STUB IPointerInactive_OnInactiveSetCursor_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IPointerInactive_INTERFACE_DEFINED__ */ + +#ifndef __IObjectWithSite_FWD_DEFINED__ +#define __IObjectWithSite_FWD_DEFINED__ +typedef interface IObjectWithSite IObjectWithSite; +#endif + +typedef IObjectWithSite *LPOBJECTWITHSITE; +/***************************************************************************** + * IObjectWithSite interface + */ +#ifndef __IObjectWithSite_INTERFACE_DEFINED__ +#define __IObjectWithSite_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IObjectWithSite, 0xfc4801a3, 0x2ba9, 0x11cf, 0xa2,0x29, 0x00,0xaa,0x00,0x3d,0x73,0x52); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IObjectWithSite : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE SetSite( + IUnknown* pUnkSite) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSite( + REFIID riid, + PVOID* ppvSite) = 0; + +}; +#else +typedef struct IObjectWithSiteVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IObjectWithSite* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IObjectWithSite* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IObjectWithSite* This); + + /*** IObjectWithSite methods ***/ + HRESULT (STDMETHODCALLTYPE *SetSite)( + IObjectWithSite* This, + IUnknown* pUnkSite); + + HRESULT (STDMETHODCALLTYPE *GetSite)( + IObjectWithSite* This, + REFIID riid, + PVOID* ppvSite); + + END_INTERFACE +} IObjectWithSiteVtbl; +interface IObjectWithSite { + const IObjectWithSiteVtbl* lpVtbl; +}; #ifdef COBJMACROS /*** IUnknown methods ***/ @@ -759,157 +5126,870 @@ DECLARE_INTERFACE_(IObjectWithSite,IUnknown) #define IObjectWithSite_GetSite(p,a,b) (p)->lpVtbl->GetSite(p,a,b) #endif -EXTERN_C const IID IID_IOleInPlaceSiteWindowless; -#define INTERFACE IOleInPlaceSiteWindowless -DECLARE_INTERFACE_(IOleInPlaceSiteWindowless,IOleInPlaceSiteEx) +#endif + +HRESULT CALLBACK IObjectWithSite_SetSite_Proxy( + IObjectWithSite* This, + IUnknown* pUnkSite); +void __RPC_STUB IObjectWithSite_SetSite_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IObjectWithSite_GetSite_Proxy( + IObjectWithSite* This, + REFIID riid, + PVOID* ppvSite); +void __RPC_STUB IObjectWithSite_GetSite_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IObjectWithSite_INTERFACE_DEFINED__ */ + +#ifndef __IOleUndoManager_FWD_DEFINED__ +#define __IOleUndoManager_FWD_DEFINED__ +typedef interface IOleUndoManager IOleUndoManager; +#endif + +#ifndef __IOleUndoUnit_FWD_DEFINED__ +#define __IOleUndoUnit_FWD_DEFINED__ +typedef interface IOleUndoUnit IOleUndoUnit; +#endif + +typedef IOleUndoUnit *LPOLEUNDOUNIT; +/***************************************************************************** + * IOleUndoUnit interface + */ +#ifndef __IOleUndoUnit_INTERFACE_DEFINED__ +#define __IOleUndoUnit_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IOleUndoUnit, 0x894ad3b0, 0xef97, 0x11ce, 0x9b,0xc9, 0x00,0xaa,0x00,0x60,0x8e,0x01); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IOleUndoUnit : public IUnknown { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(CanInPlaceActivate)(THIS) PURE; - STDMETHOD(OnInPlaceActivate)(THIS) PURE; - STDMETHOD(OnUIActivate)(THIS) PURE; - STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame**,IOleInPlaceUIWindow**,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO) PURE; - STDMETHOD(Scroll)(THIS_ SIZE) PURE; - STDMETHOD(OnUIDeactivate)(THIS_ BOOL) PURE; - STDMETHOD(OnInPlaceDeactivate)(THIS) PURE; - STDMETHOD(DiscardUndoState)(THIS) PURE; - STDMETHOD(DeactivateAndUndo)(THIS) PURE; - STDMETHOD(OnPosRectChange)(THIS_ LPCRECT) PURE; + virtual HRESULT STDMETHODCALLTYPE Do( + IOleUndoManager* pUndoManager) = 0; - STDMETHOD(OnInPlaceActivateEx)(THIS_ BOOL*,DWORD) PURE; - STDMETHOD(OnInPlaceDeactivateEx)(THIS_ BOOL) PURE; - STDMETHOD(RequestUIActivate)(THIS) PURE; + virtual HRESULT STDMETHODCALLTYPE GetDescription( + BSTR* pBstr) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetUnitType( + CLSID* pClsid, + LONG* plID) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnNextAdd( + ) = 0; - STDMETHOD(CanWindowlessActivate)(THIS) PURE; - STDMETHOD(GetCapture)(THIS) PURE; - STDMETHOD(SetCapture)(THIS_ BOOL) PURE; - STDMETHOD(GetFocus)(THIS) PURE; - STDMETHOD(SetFocus)(THIS_ BOOL) PURE; - STDMETHOD(GetDC)(THIS_ LPCRECT,DWORD,HDC*) PURE; - STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; - STDMETHOD(InvalidateRect)(THIS_ LPCRECT,BOOL) PURE; - STDMETHOD(InvalidateRgn)(THIS_ HRGN,BOOL) PURE; - STDMETHOD(ScrollRect)(THIS_ INT,INT,LPCRECT,LPCRECT) PURE; - STDMETHOD(AdjustRect)(THIS_ LPCRECT) PURE; - STDMETHOD(OnDefWindowMessage)(THIS_ UINT,WPARAM,LPARAM,LRESULT*) PURE; }; -#undef INTERFACE +#else +typedef struct IOleUndoUnitVtbl { + BEGIN_INTERFACE -EXTERN_C const IID IID_IAdviseSinkEx; -#define INTERFACE IAdviseSinkEx -DECLARE_INTERFACE_(IAdviseSinkEx,IUnknown) + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IOleUndoUnit* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IOleUndoUnit* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IOleUndoUnit* This); + + /*** IOleUndoUnit methods ***/ + HRESULT (STDMETHODCALLTYPE *Do)( + IOleUndoUnit* This, + IOleUndoManager* pUndoManager); + + HRESULT (STDMETHODCALLTYPE *GetDescription)( + IOleUndoUnit* This, + BSTR* pBstr); + + HRESULT (STDMETHODCALLTYPE *GetUnitType)( + IOleUndoUnit* This, + CLSID* pClsid, + LONG* plID); + + HRESULT (STDMETHODCALLTYPE *OnNextAdd)( + IOleUndoUnit* This); + + END_INTERFACE +} IOleUndoUnitVtbl; +interface IOleUndoUnit { + const IOleUndoUnitVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IOleUndoUnit_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleUndoUnit_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleUndoUnit_Release(p) (p)->lpVtbl->Release(p) +/*** IOleUndoUnit methods ***/ +#define IOleUndoUnit_Do(p,a) (p)->lpVtbl->Do(p,a) +#define IOleUndoUnit_GetDescription(p,a) (p)->lpVtbl->GetDescription(p,a) +#define IOleUndoUnit_GetUnitType(p,a,b) (p)->lpVtbl->GetUnitType(p,a,b) +#define IOleUndoUnit_OnNextAdd(p) (p)->lpVtbl->OnNextAdd(p) +#endif + +#endif + +HRESULT CALLBACK IOleUndoUnit_Do_Proxy( + IOleUndoUnit* This, + IOleUndoManager* pUndoManager); +void __RPC_STUB IOleUndoUnit_Do_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoUnit_GetDescription_Proxy( + IOleUndoUnit* This, + BSTR* pBstr); +void __RPC_STUB IOleUndoUnit_GetDescription_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoUnit_GetUnitType_Proxy( + IOleUndoUnit* This, + CLSID* pClsid, + LONG* plID); +void __RPC_STUB IOleUndoUnit_GetUnitType_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoUnit_OnNextAdd_Proxy( + IOleUndoUnit* This); +void __RPC_STUB IOleUndoUnit_OnNextAdd_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IOleUndoUnit_INTERFACE_DEFINED__ */ + +#ifndef __IOleParentUndoUnit_FWD_DEFINED__ +#define __IOleParentUndoUnit_FWD_DEFINED__ +typedef interface IOleParentUndoUnit IOleParentUndoUnit; +#endif + +typedef IOleParentUndoUnit *LPOLEPARENTUNDOUNIT; +/***************************************************************************** + * IOleParentUndoUnit interface + */ +#ifndef __IOleParentUndoUnit_INTERFACE_DEFINED__ +#define __IOleParentUndoUnit_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IOleParentUndoUnit, 0xa1faf330, 0xef97, 0x11ce, 0x9b,0xc9, 0x00,0xaa,0x00,0x60,0x8e,0x01); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IOleParentUndoUnit : public IOleUndoUnit { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE; - STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE; - STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE; - STDMETHOD_(void,OnSave)(THIS) PURE; - STDMETHOD_(void,OnClose)(THIS) PURE; - STDMETHOD(OnViewStatusChange)(THIS_ DWORD) PURE; -}; -#undef INTERFACE + virtual HRESULT STDMETHODCALLTYPE Open( + IOleParentUndoUnit* pPUU) = 0; -EXTERN_C const IID IID_IPointerInactive; -#define INTERFACE IPointerInactive -DECLARE_INTERFACE_(IPointerInactive,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetActivationPolicy)(THIS_ DWORD*) PURE; - STDMETHOD(OnInactiveMouseMove)(THIS_ LPCRECT,LONG,LONG,DWORD) PURE; - STDMETHOD(OnInactiveSetCursor)(THIS_ LPCRECT,LONG,LONG,DWORD,BOOL) PURE; -}; -#undef INTERFACE + virtual HRESULT STDMETHODCALLTYPE Close( + IOleParentUndoUnit* pPUU, + BOOL fCommit) = 0; -EXTERN_C const IID IID_IOleUndoUnit; -#define INTERFACE IOleUndoUnit -DECLARE_INTERFACE_(IOleUndoUnit,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Do)(THIS_ LPOLEUNDOMANAGER) PURE; - STDMETHOD(GetDescription)(THIS_ BSTR*) PURE; - STDMETHOD(GetUnitType)(THIS_ CLSID*,LONG*) PURE; - STDMETHOD(OnNextAdd)(THIS) PURE; -}; -#undef INTERFACE + virtual HRESULT STDMETHODCALLTYPE Add( + IOleUndoUnit* pUU) = 0; -EXTERN_C const IID IID_IOleParentUndoUnit; -#define INTERFACE IOleParentUndoUnit -DECLARE_INTERFACE_(IOleParentUndoUnit,IOleUndoUnit) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Do)(THIS_ LPOLEUNDOMANAGER) PURE; - STDMETHOD(GetDescription)(THIS_ BSTR*) PURE; - STDMETHOD(GetUnitType)(THIS_ CLSID*,LONG*) PURE; - STDMETHOD(OnNextAdd)(THIS) PURE; - STDMETHOD(Open)(THIS_ IOleParentUndoUnit*) PURE; - STDMETHOD(Close)(THIS_ IOleParentUndoUnit*,BOOL) PURE; - STDMETHOD(Add)(THIS_ IOleUndoUnit*) PURE; - STDMETHOD(FindUnit)(THIS_ IOleUndoUnit*) PURE; - STDMETHOD(GetParentState)(THIS_ DWORD*) PURE; -}; -#undef INTERFACE + virtual HRESULT STDMETHODCALLTYPE FindUnit( + IOleUndoUnit* pUU) = 0; -EXTERN_C const IID IID_IEnumOleUndoUnits; -#define INTERFACE IEnumOleUndoUnits -DECLARE_INTERFACE_(IEnumOleUndoUnits,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Next)(THIS_ ULONG,IOleUndoUnit**,ULONG*) PURE; - STDMETHOD(Skip)(THIS_ ULONG) PURE; - STDMETHOD(Reset)(THIS) PURE; - STDMETHOD(Clone)(THIS_ IEnumOleUndoUnits**) PURE; -}; -#undef INTERFACE + virtual HRESULT STDMETHODCALLTYPE GetParentState( + DWORD* pdwState) = 0; -EXTERN_C const IID IID_IOleUndoManager; -#define INTERFACE IOleUndoManager -DECLARE_INTERFACE_(IOleUndoManager,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Open)(THIS_ IOleParentUndoUnit*) PURE; - STDMETHOD(Close)(THIS_ IOleParentUndoUnit*,BOOL) PURE; - STDMETHOD(Add)(THIS_ IOleUndoUnit*) PURE; - STDMETHOD(GetOpenParentState)(THIS_ DWORD*) PURE; - STDMETHOD(DiscardFrom)(THIS_ IOleUndoUnit*) PURE; - STDMETHOD(UndoTo)(THIS_ IOleUndoUnit*) PURE; - STDMETHOD(RedoTo)(THIS_ IOleUndoUnit*) PURE; - STDMETHOD(EnumUndoable)(THIS_ IEnumOleUndoUnits**) PURE; - STDMETHOD(EnumRedoable)(THIS_ IEnumOleUndoUnits**) PURE; - STDMETHOD(GetLastUndoDescription)(THIS_ BSTR*) PURE; - STDMETHOD(GetLastRedoDescription)(THIS_ BSTR*) PURE; - STDMETHOD(Enable)(THIS_ BOOL) PURE; }; -#undef INTERFACE +#else +typedef struct IOleParentUndoUnitVtbl { + BEGIN_INTERFACE -EXTERN_C const IID IID_IQuickActivate; -#define INTERFACE IQuickActivate -DECLARE_INTERFACE_(IQuickActivate,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(QuickActivate)(THIS_ QACONTAINER*,QACONTROL*) PURE; - STDMETHOD(SetContentExtent)(THIS_ LPSIZEL) PURE; - STDMETHOD(GetContentExtent)(THIS_ LPSIZEL) PURE; + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IOleParentUndoUnit* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IOleParentUndoUnit* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IOleParentUndoUnit* This); + + /*** IOleUndoUnit methods ***/ + HRESULT (STDMETHODCALLTYPE *Do)( + IOleParentUndoUnit* This, + IOleUndoManager* pUndoManager); + + HRESULT (STDMETHODCALLTYPE *GetDescription)( + IOleParentUndoUnit* This, + BSTR* pBstr); + + HRESULT (STDMETHODCALLTYPE *GetUnitType)( + IOleParentUndoUnit* This, + CLSID* pClsid, + LONG* plID); + + HRESULT (STDMETHODCALLTYPE *OnNextAdd)( + IOleParentUndoUnit* This); + + /*** IOleParentUndoUnit methods ***/ + HRESULT (STDMETHODCALLTYPE *Open)( + IOleParentUndoUnit* This, + IOleParentUndoUnit* pPUU); + + HRESULT (STDMETHODCALLTYPE *Close)( + IOleParentUndoUnit* This, + IOleParentUndoUnit* pPUU, + BOOL fCommit); + + HRESULT (STDMETHODCALLTYPE *Add)( + IOleParentUndoUnit* This, + IOleUndoUnit* pUU); + + HRESULT (STDMETHODCALLTYPE *FindUnit)( + IOleParentUndoUnit* This, + IOleUndoUnit* pUU); + + HRESULT (STDMETHODCALLTYPE *GetParentState)( + IOleParentUndoUnit* This, + DWORD* pdwState); + + END_INTERFACE +} IOleParentUndoUnitVtbl; +interface IOleParentUndoUnit { + const IOleParentUndoUnitVtbl* lpVtbl; }; -#undef INTERFACE + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IOleParentUndoUnit_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleParentUndoUnit_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleParentUndoUnit_Release(p) (p)->lpVtbl->Release(p) +/*** IOleUndoUnit methods ***/ +#define IOleParentUndoUnit_Do(p,a) (p)->lpVtbl->Do(p,a) +#define IOleParentUndoUnit_GetDescription(p,a) (p)->lpVtbl->GetDescription(p,a) +#define IOleParentUndoUnit_GetUnitType(p,a,b) (p)->lpVtbl->GetUnitType(p,a,b) +#define IOleParentUndoUnit_OnNextAdd(p) (p)->lpVtbl->OnNextAdd(p) +/*** IOleParentUndoUnit methods ***/ +#define IOleParentUndoUnit_Open(p,a) (p)->lpVtbl->Open(p,a) +#define IOleParentUndoUnit_Close(p,a,b) (p)->lpVtbl->Close(p,a,b) +#define IOleParentUndoUnit_Add(p,a) (p)->lpVtbl->Add(p,a) +#define IOleParentUndoUnit_FindUnit(p,a) (p)->lpVtbl->FindUnit(p,a) +#define IOleParentUndoUnit_GetParentState(p,a) (p)->lpVtbl->GetParentState(p,a) +#endif + +#endif + +HRESULT CALLBACK IOleParentUndoUnit_Open_Proxy( + IOleParentUndoUnit* This, + IOleParentUndoUnit* pPUU); +void __RPC_STUB IOleParentUndoUnit_Open_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleParentUndoUnit_Close_Proxy( + IOleParentUndoUnit* This, + IOleParentUndoUnit* pPUU, + BOOL fCommit); +void __RPC_STUB IOleParentUndoUnit_Close_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleParentUndoUnit_Add_Proxy( + IOleParentUndoUnit* This, + IOleUndoUnit* pUU); +void __RPC_STUB IOleParentUndoUnit_Add_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleParentUndoUnit_FindUnit_Proxy( + IOleParentUndoUnit* This, + IOleUndoUnit* pUU); +void __RPC_STUB IOleParentUndoUnit_FindUnit_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleParentUndoUnit_GetParentState_Proxy( + IOleParentUndoUnit* This, + DWORD* pdwState); +void __RPC_STUB IOleParentUndoUnit_GetParentState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IOleParentUndoUnit_INTERFACE_DEFINED__ */ + +#ifndef __IEnumOleUndoUnits_FWD_DEFINED__ +#define __IEnumOleUndoUnits_FWD_DEFINED__ +typedef interface IEnumOleUndoUnits IEnumOleUndoUnits; +#endif + +typedef IEnumOleUndoUnits *LPENUMOLEUNDOUNITS; +/***************************************************************************** + * IEnumOleUndoUnits interface + */ +#ifndef __IEnumOleUndoUnits_INTERFACE_DEFINED__ +#define __IEnumOleUndoUnits_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IEnumOleUndoUnits, 0xb3e7c340, 0xef97, 0x11ce, 0x9b,0xc9, 0x00,0xaa,0x00,0x60,0x8e,0x01); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IEnumOleUndoUnits : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Next( + ULONG cElt, + IOleUndoUnit** rgElt, + ULONG* pcEltFetched) = 0; + + virtual HRESULT STDMETHODCALLTYPE Skip( + ULONG cElt) = 0; + + virtual HRESULT STDMETHODCALLTYPE Reset( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE Clone( + IEnumOleUndoUnits** ppEnum) = 0; + +}; +#else +typedef struct IEnumOleUndoUnitsVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IEnumOleUndoUnits* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IEnumOleUndoUnits* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IEnumOleUndoUnits* This); + + /*** IEnumOleUndoUnits methods ***/ + HRESULT (STDMETHODCALLTYPE *Next)( + IEnumOleUndoUnits* This, + ULONG cElt, + IOleUndoUnit** rgElt, + ULONG* pcEltFetched); + + HRESULT (STDMETHODCALLTYPE *Skip)( + IEnumOleUndoUnits* This, + ULONG cElt); + + HRESULT (STDMETHODCALLTYPE *Reset)( + IEnumOleUndoUnits* This); + + HRESULT (STDMETHODCALLTYPE *Clone)( + IEnumOleUndoUnits* This, + IEnumOleUndoUnits** ppEnum); + + END_INTERFACE +} IEnumOleUndoUnitsVtbl; +interface IEnumOleUndoUnits { + const IEnumOleUndoUnitsVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IEnumOleUndoUnits_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumOleUndoUnits_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumOleUndoUnits_Release(p) (p)->lpVtbl->Release(p) +/*** IEnumOleUndoUnits methods ***/ +#define IEnumOleUndoUnits_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumOleUndoUnits_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumOleUndoUnits_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumOleUndoUnits_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#endif + +HRESULT CALLBACK IEnumOleUndoUnits_RemoteNext_Proxy( + IEnumOleUndoUnits* This, + ULONG cElt, + IOleUndoUnit** rgElt, + ULONG* pcEltFetched); +void __RPC_STUB IEnumOleUndoUnits_RemoteNext_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumOleUndoUnits_Next_Proxy( + IEnumOleUndoUnits* This, + ULONG cElt, + IOleUndoUnit** rgElt, + ULONG* pcEltFetched); +HRESULT __RPC_STUB IEnumOleUndoUnits_Next_Stub( + IEnumOleUndoUnits* This, + ULONG cElt, + IOleUndoUnit** rgElt, + ULONG* pcEltFetched); +HRESULT CALLBACK IEnumOleUndoUnits_Skip_Proxy( + IEnumOleUndoUnits* This, + ULONG cElt); +void __RPC_STUB IEnumOleUndoUnits_Skip_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumOleUndoUnits_Reset_Proxy( + IEnumOleUndoUnits* This); +void __RPC_STUB IEnumOleUndoUnits_Reset_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IEnumOleUndoUnits_Clone_Proxy( + IEnumOleUndoUnits* This, + IEnumOleUndoUnits** ppEnum); +void __RPC_STUB IEnumOleUndoUnits_Clone_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IEnumOleUndoUnits_INTERFACE_DEFINED__ */ + +typedef IOleUndoManager *LPOLEUNDOMANAGER; +/***************************************************************************** + * IOleUndoManager interface + */ +#ifndef __IOleUndoManager_INTERFACE_DEFINED__ +#define __IOleUndoManager_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IOleUndoManager, 0xd001f200, 0xef97, 0x11ce, 0x9b,0xc9, 0x00,0xaa,0x00,0x60,0x8e,0x01); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IOleUndoManager : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Open( + IOleParentUndoUnit* pPUU) = 0; + + virtual HRESULT STDMETHODCALLTYPE Close( + IOleParentUndoUnit* pPUU, + BOOL fCommit) = 0; + + virtual HRESULT STDMETHODCALLTYPE Add( + IOleUndoUnit* pUU) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOpenParentState( + DWORD* pdwState) = 0; + + virtual HRESULT STDMETHODCALLTYPE DiscardFrom( + IOleUndoUnit* pUU) = 0; + + virtual HRESULT STDMETHODCALLTYPE UndoTo( + IOleUndoUnit* pUU) = 0; + + virtual HRESULT STDMETHODCALLTYPE RedoTo( + IOleUndoUnit* pUU) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumUndoable( + IEnumOleUndoUnits** ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnumRedoable( + IEnumOleUndoUnits** ppEnum) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLastUndoDescription( + BSTR* pBstr) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetLastRedoDescription( + BSTR* pBstr) = 0; + + virtual HRESULT STDMETHODCALLTYPE Enable( + BOOL fEnable) = 0; + +}; +#else +typedef struct IOleUndoManagerVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IOleUndoManager* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IOleUndoManager* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IOleUndoManager* This); + + /*** IOleUndoManager methods ***/ + HRESULT (STDMETHODCALLTYPE *Open)( + IOleUndoManager* This, + IOleParentUndoUnit* pPUU); + + HRESULT (STDMETHODCALLTYPE *Close)( + IOleUndoManager* This, + IOleParentUndoUnit* pPUU, + BOOL fCommit); + + HRESULT (STDMETHODCALLTYPE *Add)( + IOleUndoManager* This, + IOleUndoUnit* pUU); + + HRESULT (STDMETHODCALLTYPE *GetOpenParentState)( + IOleUndoManager* This, + DWORD* pdwState); + + HRESULT (STDMETHODCALLTYPE *DiscardFrom)( + IOleUndoManager* This, + IOleUndoUnit* pUU); + + HRESULT (STDMETHODCALLTYPE *UndoTo)( + IOleUndoManager* This, + IOleUndoUnit* pUU); + + HRESULT (STDMETHODCALLTYPE *RedoTo)( + IOleUndoManager* This, + IOleUndoUnit* pUU); + + HRESULT (STDMETHODCALLTYPE *EnumUndoable)( + IOleUndoManager* This, + IEnumOleUndoUnits** ppEnum); + + HRESULT (STDMETHODCALLTYPE *EnumRedoable)( + IOleUndoManager* This, + IEnumOleUndoUnits** ppEnum); + + HRESULT (STDMETHODCALLTYPE *GetLastUndoDescription)( + IOleUndoManager* This, + BSTR* pBstr); + + HRESULT (STDMETHODCALLTYPE *GetLastRedoDescription)( + IOleUndoManager* This, + BSTR* pBstr); + + HRESULT (STDMETHODCALLTYPE *Enable)( + IOleUndoManager* This, + BOOL fEnable); + + END_INTERFACE +} IOleUndoManagerVtbl; +interface IOleUndoManager { + const IOleUndoManagerVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IOleUndoManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleUndoManager_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleUndoManager_Release(p) (p)->lpVtbl->Release(p) +/*** IOleUndoManager methods ***/ +#define IOleUndoManager_Open(p,a) (p)->lpVtbl->Open(p,a) +#define IOleUndoManager_Close(p,a,b) (p)->lpVtbl->Close(p,a,b) +#define IOleUndoManager_Add(p,a) (p)->lpVtbl->Add(p,a) +#define IOleUndoManager_GetOpenParentState(p,a) (p)->lpVtbl->GetOpenParentState(p,a) +#define IOleUndoManager_DiscardFrom(p,a) (p)->lpVtbl->DiscardFrom(p,a) +#define IOleUndoManager_UndoTo(p,a) (p)->lpVtbl->UndoTo(p,a) +#define IOleUndoManager_RedoTo(p,a) (p)->lpVtbl->RedoTo(p,a) +#define IOleUndoManager_EnumUndoable(p,a) (p)->lpVtbl->EnumUndoable(p,a) +#define IOleUndoManager_EnumRedoable(p,a) (p)->lpVtbl->EnumRedoable(p,a) +#define IOleUndoManager_GetLastUndoDescription(p,a) (p)->lpVtbl->GetLastUndoDescription(p,a) +#define IOleUndoManager_GetLastRedoDescription(p,a) (p)->lpVtbl->GetLastRedoDescription(p,a) +#define IOleUndoManager_Enable(p,a) (p)->lpVtbl->Enable(p,a) +#endif + +#endif + +HRESULT CALLBACK IOleUndoManager_Open_Proxy( + IOleUndoManager* This, + IOleParentUndoUnit* pPUU); +void __RPC_STUB IOleUndoManager_Open_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_Close_Proxy( + IOleUndoManager* This, + IOleParentUndoUnit* pPUU, + BOOL fCommit); +void __RPC_STUB IOleUndoManager_Close_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_Add_Proxy( + IOleUndoManager* This, + IOleUndoUnit* pUU); +void __RPC_STUB IOleUndoManager_Add_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_GetOpenParentState_Proxy( + IOleUndoManager* This, + DWORD* pdwState); +void __RPC_STUB IOleUndoManager_GetOpenParentState_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_DiscardFrom_Proxy( + IOleUndoManager* This, + IOleUndoUnit* pUU); +void __RPC_STUB IOleUndoManager_DiscardFrom_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_UndoTo_Proxy( + IOleUndoManager* This, + IOleUndoUnit* pUU); +void __RPC_STUB IOleUndoManager_UndoTo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_RedoTo_Proxy( + IOleUndoManager* This, + IOleUndoUnit* pUU); +void __RPC_STUB IOleUndoManager_RedoTo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_EnumUndoable_Proxy( + IOleUndoManager* This, + IEnumOleUndoUnits** ppEnum); +void __RPC_STUB IOleUndoManager_EnumUndoable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_EnumRedoable_Proxy( + IOleUndoManager* This, + IEnumOleUndoUnits** ppEnum); +void __RPC_STUB IOleUndoManager_EnumRedoable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_GetLastUndoDescription_Proxy( + IOleUndoManager* This, + BSTR* pBstr); +void __RPC_STUB IOleUndoManager_GetLastUndoDescription_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_GetLastRedoDescription_Proxy( + IOleUndoManager* This, + BSTR* pBstr); +void __RPC_STUB IOleUndoManager_GetLastRedoDescription_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IOleUndoManager_Enable_Proxy( + IOleUndoManager* This, + BOOL fEnable); +void __RPC_STUB IOleUndoManager_Enable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IOleUndoManager_INTERFACE_DEFINED__ */ + +#ifndef __IQuickActivate_FWD_DEFINED__ +#define __IQuickActivate_FWD_DEFINED__ +typedef interface IQuickActivate IQuickActivate; +#endif + +typedef IQuickActivate *LPQUICKACTIVATE; +typedef enum tagQACONTAINERFLAGS { + QACONTAINER_SHOWHATCHING = 0x1, + QACONTAINER_SHOWGRABHANDLES = 0x2, + QACONTAINER_USERMODE = 0x4, + QACONTAINER_DISPLAYASDEFAULT = 0x8, + QACONTAINER_UIDEAD = 0x10, + QACONTAINER_AUTOCLIP = 0x20, + QACONTAINER_MESSAGEREFLECT = 0x40, + QACONTAINER_SUPPORTSMNEMONICS = 0x80 +} QACONTAINERFLAGS; +typedef DWORD OLE_COLOR; +typedef struct tagQACONTAINER { + ULONG cbSize; + IOleClientSite *pClientSite; + IAdviseSinkEx *pAdviseSink; + IPropertyNotifySink *pPropertyNotifySink; + IUnknown *pUnkEventSink; + DWORD dwAmbientFlags; + OLE_COLOR colorFore; + OLE_COLOR colorBack; + IFont *pFont; + IOleUndoManager *pUndoMgr; + DWORD dwAppearance; + LONG lcid; + HPALETTE hpal; + IBindHost *pBindHost; + IOleControlSite *pOleControlSite; + IServiceProvider *pServiceProvider; +} QACONTAINER; +typedef struct tagQACONTROL { + ULONG cbSize; + DWORD dwMiscStatus; + DWORD dwViewStatus; + DWORD dwEventCookie; + DWORD dwPropNotifyCookie; + DWORD dwPointerActivationPolicy; +} QACONTROL; +/***************************************************************************** + * IQuickActivate interface + */ +#ifndef __IQuickActivate_INTERFACE_DEFINED__ +#define __IQuickActivate_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IQuickActivate, 0xcf51ed10, 0x62fe, 0x11cf, 0xbf,0x86, 0x00,0xa0,0xc9,0x03,0x48,0x36); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IQuickActivate : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE QuickActivate( + QACONTAINER* pQaContainer, + QACONTROL* pQaControl) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetContentExtent( + LPSIZEL pSizel) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetContentExtent( + LPSIZEL pSizel) = 0; + +}; +#else +typedef struct IQuickActivateVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IQuickActivate* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IQuickActivate* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IQuickActivate* This); + + /*** IQuickActivate methods ***/ + HRESULT (STDMETHODCALLTYPE *QuickActivate)( + IQuickActivate* This, + QACONTAINER* pQaContainer, + QACONTROL* pQaControl); + + HRESULT (STDMETHODCALLTYPE *SetContentExtent)( + IQuickActivate* This, + LPSIZEL pSizel); + + HRESULT (STDMETHODCALLTYPE *GetContentExtent)( + IQuickActivate* This, + LPSIZEL pSizel); + + END_INTERFACE +} IQuickActivateVtbl; +interface IQuickActivate { + const IQuickActivateVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IQuickActivate_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IQuickActivate_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IQuickActivate_Release(p) (p)->lpVtbl->Release(p) +/*** IQuickActivate methods ***/ +#define IQuickActivate_QuickActivate(p,a,b) (p)->lpVtbl->QuickActivate(p,a,b) +#define IQuickActivate_SetContentExtent(p,a) (p)->lpVtbl->SetContentExtent(p,a) +#define IQuickActivate_GetContentExtent(p,a) (p)->lpVtbl->GetContentExtent(p,a) +#endif + +#endif + +HRESULT CALLBACK IQuickActivate_RemoteQuickActivate_Proxy( + IQuickActivate* This, + QACONTAINER* pQaContainer, + QACONTROL* pQaControl); +void __RPC_STUB IQuickActivate_RemoteQuickActivate_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IQuickActivate_QuickActivate_Proxy( + IQuickActivate* This, + QACONTAINER* pQaContainer, + QACONTROL* pQaControl); +HRESULT __RPC_STUB IQuickActivate_QuickActivate_Stub( + IQuickActivate* This, + QACONTAINER* pQaContainer, + QACONTROL* pQaControl); +HRESULT CALLBACK IQuickActivate_SetContentExtent_Proxy( + IQuickActivate* This, + LPSIZEL pSizel); +void __RPC_STUB IQuickActivate_SetContentExtent_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IQuickActivate_GetContentExtent_Proxy( + IQuickActivate* This, + LPSIZEL pSizel); +void __RPC_STUB IQuickActivate_GetContentExtent_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IQuickActivate_INTERFACE_DEFINED__ */ + +/* Begin additional prototypes for all interfaces */ + +unsigned long __RPC_USER HPALETTE_UserSize (unsigned long *, unsigned long, HPALETTE *); +unsigned char * __RPC_USER HPALETTE_UserMarshal (unsigned long *, unsigned char *, HPALETTE *); +unsigned char * __RPC_USER HPALETTE_UserUnmarshal(unsigned long *, unsigned char *, HPALETTE *); +void __RPC_USER HPALETTE_UserFree (unsigned long *, HPALETTE *); +unsigned long __RPC_USER VARIANT_UserSize (unsigned long *, unsigned long, VARIANT *); +unsigned char * __RPC_USER VARIANT_UserMarshal (unsigned long *, unsigned char *, VARIANT *); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT *); +void __RPC_USER VARIANT_UserFree (unsigned long *, VARIANT *); +unsigned long __RPC_USER CLIPFORMAT_UserSize (unsigned long *, unsigned long, CLIPFORMAT *); +unsigned char * __RPC_USER CLIPFORMAT_UserMarshal (unsigned long *, unsigned char *, CLIPFORMAT *); +unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(unsigned long *, unsigned char *, CLIPFORMAT *); +void __RPC_USER CLIPFORMAT_UserFree (unsigned long *, CLIPFORMAT *); +unsigned long __RPC_USER HWND_UserSize (unsigned long *, unsigned long, HWND *); +unsigned char * __RPC_USER HWND_UserMarshal (unsigned long *, unsigned char *, HWND *); +unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND *); +void __RPC_USER HWND_UserFree (unsigned long *, HWND *); +unsigned long __RPC_USER HACCEL_UserSize (unsigned long *, unsigned long, HACCEL *); +unsigned char * __RPC_USER HACCEL_UserMarshal (unsigned long *, unsigned char *, HACCEL *); +unsigned char * __RPC_USER HACCEL_UserUnmarshal(unsigned long *, unsigned char *, HACCEL *); +void __RPC_USER HACCEL_UserFree (unsigned long *, HACCEL *); +unsigned long __RPC_USER HDC_UserSize (unsigned long *, unsigned long, HDC *); +unsigned char * __RPC_USER HDC_UserMarshal (unsigned long *, unsigned char *, HDC *); +unsigned char * __RPC_USER HDC_UserUnmarshal(unsigned long *, unsigned char *, HDC *); +void __RPC_USER HDC_UserFree (unsigned long *, HDC *); +unsigned long __RPC_USER HFONT_UserSize (unsigned long *, unsigned long, HFONT *); +unsigned char * __RPC_USER HFONT_UserMarshal (unsigned long *, unsigned char *, HFONT *); +unsigned char * __RPC_USER HFONT_UserUnmarshal(unsigned long *, unsigned char *, HFONT *); +void __RPC_USER HFONT_UserFree (unsigned long *, HFONT *); +unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); +unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); +void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); + +/* End additional prototypes */ #ifdef __cplusplus } #endif -#endif +#endif /* __WIDL_INCLUDE_PSDK_OCIDL_H */ diff --git a/reactos/include/psdk/ocidl.idl b/reactos/include/psdk/ocidl.idl new file mode 100644 index 00000000000..9fe9517e66e --- /dev/null +++ b/reactos/include/psdk/ocidl.idl @@ -0,0 +1,1332 @@ +/* + * Copyright (C) 1999 Paul Quinn + * Copyright (C) 1999 Francis Beaudet + * Copyright (C) 2003 Alexandre Julliard + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "oleidl.idl"; +import "oaidl.idl"; +import "servprov.idl"; +import "urlmon.idl"; + + +/***************************************************************************** + * IOleControlTypes interface + */ +[ + pointer_default(unique) +] +interface IOleControlTypes +{ + typedef [v1_enum] enum tagUASFLAGS + { + UAS_NORMAL = 0x0, + UAS_BLOCKED = 0x1, + UAS_NOPARENTABLE = 0x2, + UAS_MASK = 0x3 + } UASFLAGS; + + typedef enum tagREADYSTATE + { + READYSTATE_UNINITIALIZED = 0, + READYSTATE_LOADING = 1, + READYSTATE_LOADED = 2, + READYSTATE_INTERACTIVE = 3, + READYSTATE_COMPLETE = 4 + } READYSTATE; + + typedef struct tagVARIANT_BLOB + { + DWORD clSize; + DWORD rpcReserved; + [size_is(clSize-1)] ULONGLONG ahData[]; + } wireVARIANT_BLOB; + + typedef struct tagUserVARIANT + { + wireVARIANT_BLOB pVarBlob; + } UserVARIANT; +} + + +/***************************************************************************** + * IFont interface + */ +[ + object, + uuid(bef6e002-a874-101a-8bba-00aa00300cab), + pointer_default(unique) +] +interface IFont : IUnknown +{ + typedef IFont *LPFONT; + typedef TEXTMETRICW TEXTMETRICOLE, *LPTEXTMETRICOLE; + + [propget] HRESULT Name( [out] BSTR *pname); + [propput] HRESULT Name( [in] BSTR name ); + [propget] HRESULT Size( [out] CY *psize ); + [propput] HRESULT Size( [in] CY size ); + [propget] HRESULT Bold( [out] BOOL *pbold ); + [propput] HRESULT Bold( [in] BOOL bold ); + [propget] HRESULT Italic( [out] BOOL *pitalic ); + [propput] HRESULT Italic( [in] BOOL italic ); + [propget] HRESULT Underline( [out] BOOL *punderline ); + [propput] HRESULT Underline( [in] BOOL underline ); + [propget] HRESULT Strikethrough( [out] BOOL *pstrikethrough ); + [propput] HRESULT Strikethrough( [in] BOOL strikethrough ); + [propget] HRESULT Weight( [out] SHORT *pweight ); + [propput] HRESULT Weight( [in] SHORT weight ); + [propget] HRESULT Charset( [out] SHORT *pcharset ); + [propput] HRESULT Charset( [in] SHORT charset ); + [propget] HRESULT hFont( [out] HFONT *phfont ); + HRESULT Clone( [out] IFont **ppfont ); + HRESULT IsEqual( [in] IFont *pFontOther ); + HRESULT SetRatio( [in] LONG cyLogical, [in] LONG cyHimetric ); + HRESULT QueryTextMetrics( [out] TEXTMETRICOLE * ptm ); + HRESULT AddRefHfont( [in] HFONT hfont ); + HRESULT ReleaseHfont( [in] HFONT hfont ); + HRESULT SetHdc( [in] HDC hdc ); +} + + +/***************************************************************************** + * IFontDisp interface + */ +[ + object, + uuid(bef6e003-a874-101a-8bba-00aa00300cab), + pointer_default(unique) +] +interface IFontDisp : IDispatch +{ + typedef IFontDisp *LPFONTDISP; +} + + +/***************************************************************************** + * IFontEventsDisp interface + */ +[ + object, + uuid(4ef6100a-af88-11d0-9846-00c04fc29993), + pointer_default(unique) +] +interface IFontEventsDisp : IDispatch +{ + typedef IFontEventsDisp *LPFONTEVENTS; +} + + +/***************************************************************************** + * IPicture interface + */ +[ + object, + uuid(7bf80980-bf32-101a-8bbb-00aa00300cab), + pointer_default(unique) +] +interface IPicture : IUnknown +{ + typedef IPicture *LPPICTURE; + + typedef enum tagPicture + { + PICTURE_SCALABLE = 0x1, + PICTURE_TRANSPARENT = 0x2 + } PICTUREATTRIBUTES; + + typedef UINT OLE_HANDLE; + typedef LONG OLE_XPOS_HIMETRIC; + typedef LONG OLE_YPOS_HIMETRIC; + typedef LONG OLE_XSIZE_HIMETRIC; + typedef LONG OLE_YSIZE_HIMETRIC; + + [propget] HRESULT Handle( [out] OLE_HANDLE *pHandle ); + [propget] HRESULT hPal( [out] OLE_HANDLE *phPal ); + [propget] HRESULT Type( [out] SHORT *pType ); + [propget] HRESULT Width( [out] OLE_XSIZE_HIMETRIC *pWidth ); + [propget] HRESULT Height( [out] OLE_YSIZE_HIMETRIC *pHeight ); + + HRESULT Render( + [in] HDC hdc, + [in] LONG x, + [in] LONG y, + [in] LONG cx, + [in] LONG cy, + [in] OLE_XPOS_HIMETRIC xSrc, + [in] OLE_YPOS_HIMETRIC ySrc, + [in] OLE_XSIZE_HIMETRIC cxSrc, + [in] OLE_YSIZE_HIMETRIC cySrc, + [in] LPCRECT pRcWBounds); + + HRESULT set_hPal( [in] OLE_HANDLE hPal ); + + [propget] HRESULT CurDC( [out] HDC *phDC ); + + HRESULT SelectPicture( + [in] HDC hDCIn, + [out] HDC * phDCOut, + [out] OLE_HANDLE * phBmpOut); + + [propget] HRESULT KeepOriginalFormat( [out] BOOL *pKeep ); + + [propput] HRESULT KeepOriginalFormat( [in] BOOL keep ); + + HRESULT PictureChanged(); + + HRESULT SaveAsFile( + [in] LPSTREAM pStream, + [in] BOOL fSaveMemCopy, + [out] LONG *pCbSize); + + [propget] HRESULT Attributes( [out] DWORD *pDwAttr ); +} + + +/***************************************************************************** + * IPictureDisp interface + */ +[ + object, + uuid(7bf80981-bf32-101a-8bbb-00aa00300cab), + pointer_default(unique) +] +interface IPictureDisp : IDispatch +{ + typedef IPictureDisp *LPPICTUREDISP; +} + + +/***************************************************************************** + * IOleControl interface + */ +[ + object, + uuid(b196b288-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] + +interface IOleControl : IUnknown +{ + typedef IOleControl *LPOLECONTROL; + + typedef struct tagCONTROLINFO + { + ULONG cb; + HACCEL hAccel; + USHORT cAccel; + DWORD dwFlags; + } CONTROLINFO, *LPCONTROLINFO; + + typedef enum tagCTRLINFO + { + CTRLINFO_EATS_RETURN = 1, + CTRLINFO_EATS_ESCAPE = 2 + } CTRLINFO; + + HRESULT GetControlInfo( [out] CONTROLINFO *pCI ); + HRESULT OnMnemonic( [in] MSG *pMsg ); + HRESULT OnAmbientPropertyChange( [in] DISPID dispID ); + HRESULT FreezeEvents( [in] BOOL bFreeze ); +} + + +/***************************************************************************** + * IOleControlSite interface + */ +[ + object, + uuid(b196b289-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface IOleControlSite : IUnknown +{ + typedef IOleControlSite *LPOLECONTROLSITE; + + typedef struct tagPOINTF + { + FLOAT x; + FLOAT y; + } POINTF, *LPPOINTF; + + typedef enum tagXFORMCOORDS + { + XFORMCOORDS_POSITION = 0x1, + XFORMCOORDS_SIZE = 0x2, + XFORMCOORDS_HIMETRICTOCONTAINER = 0x4, + XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8, + XFORMCOORDS_EVENTCOMPAT = 0x10 + } XFORMCOORDS; + + HRESULT OnControlInfoChanged(); + + HRESULT LockInPlaceActive( [in] BOOL fLock ); + + HRESULT GetExtendedControl( [out] IDispatch ** ppDisp ); + + HRESULT TransformCoords( + [in, out] POINTL *pPtlHimetric, + [in, out] POINTF *pPtfContainer, + [in] DWORD dwFlags); + + HRESULT TranslateAccelerator( [in] MSG *pMsg, [in] DWORD grfModifiers ); + + HRESULT OnFocus( [in] BOOL fGotFocus ); + + HRESULT ShowPropertyFrame(); +} + + +/***************************************************************************** + * IOleInPlaceSiteEx interface + */ +[ + object, + uuid(9c2cad80-3424-11cf-b670-00aa004cd6d8), + pointer_default(unique) +] +interface IOleInPlaceSiteEx : IOleInPlaceSite +{ + typedef IOleInPlaceSiteEx *LPOLEINPLACESITEEX; + + typedef enum tagACTIVATEFLAGS + { + ACTIVATE_WINDOWLESS = 1 + } ACTIVATE_FLAGS; + + HRESULT OnInPlaceActivateEx( [out] BOOL * pfNoRedraw, [in] DWORD dwFlags ); + HRESULT OnInPlaceDeactivateEx( [in] BOOL fNoRedraw ); + HRESULT RequestUIActivate(); +} + + +/***************************************************************************** + * IOleInPlaceSiteWindowless interface + */ +[ + local, + object, + uuid(922eada0-3424-11cf-b670-00aa004cd6d8), + pointer_default(unique) +] +interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx +{ + typedef IOleInPlaceSiteWindowless *LPOLEINPLACESITEWINDOWLESS; + + typedef enum tagOLEDCFLAGS + { + OLEDC_NODRAW = 0x1, + OLEDC_PAINTBKGND = 0x2, + OLEDC_OFFSCREEN = 0x4 + } OLEDCFLAGS; + + HRESULT CanWindowlessActivate(); + + HRESULT GetCapture(); + + HRESULT SetCapture( [in] BOOL fCapture ); + + HRESULT GetFocus(); + + HRESULT SetFocus( [in] BOOL fFocus ); + + HRESULT GetDC( + [in] LPCRECT pRect, + [in] DWORD grfFlags, + [out] HDC *phDC); + + HRESULT ReleaseDC( [in] HDC hDC ); + + HRESULT InvalidateRect( + [in] LPCRECT pRect, + [in] BOOL fErase); + + HRESULT InvalidateRgn( + [in] HRGN hRGN, + [in] BOOL fErase); + + HRESULT ScrollRect( + [in] INT dx, + [in] INT dy, + [in] LPCRECT pRectScroll, + [in] LPCRECT pRectClip); + + HRESULT AdjustRect( [in, out] LPRECT prc ); + + HRESULT OnDefWindowMessage( + [in] UINT msg, + [in] WPARAM wParam, + [in] LPARAM lParam, + [out] LRESULT *plResult); +} + + +/***************************************************************************** + * IOleInPlaceObjectWindowless interface + */ +[ + local, + object, + uuid(1c2056cc-5ef4-101b-8bc8-00aa003e3b29), + pointer_default(unique) +] +interface IOleInPlaceObjectWindowless : IOleInPlaceObject +{ + typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS; + + HRESULT OnWindowMessage( + [in] UINT msg, + [in] WPARAM wParam, + [in] LPARAM lParam, + [out] LRESULT *plResult); + + HRESULT GetDropTarget( [out] IDropTarget **ppDropTarget ); +} + + +/***************************************************************************** + * IClassFactory2 interface + */ +[ + object, + uuid(b196b28f-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface IClassFactory2 : IClassFactory +{ + typedef IClassFactory2 *LPCLASSFACTORY2; + + typedef struct tagLICINFO + { + LONG cbLicInfo; + BOOL fRuntimeKeyAvail; + BOOL fLicVerified; + } LICINFO, *LPLICINFO; + + HRESULT GetLicInfo( [out] LICINFO *pLicInfo ); + + HRESULT RequestLicKey( + [in] DWORD dwReserved, + [out] BSTR *pBstrKey); + + [local] + HRESULT CreateInstanceLic( + [in] IUnknown *pUnkOuter, + [in] IUnknown *pUnkReserved, + [in] REFIID riid, + [in] BSTR bstrKey, + [out, iid_is(riid)] PVOID *ppvObj); + + [call_as(CreateInstanceLic)] + HRESULT RemoteCreateInstanceLic( + [in] REFIID riid, + [in] BSTR bstrKey, + [out, iid_is(riid)] IUnknown **ppvObj); +} + + +/***************************************************************************** + * IViewObject interface + */ +[ + local, + object, + uuid(3af24292-0c96-11ce-a0cf-00aa00600ab8), + pointer_default(unique) +] +interface IViewObjectEx : IViewObject2 +{ + typedef IViewObjectEx *LPVIEWOBJECTEX; + + typedef enum tagVIEWSTATUS + { + VIEWSTATUS_OPAQUE = 1, + VIEWSTATUS_SOLIDBKGND = 2, + VIEWSTATUS_DVASPECTOPAQUE = 4, + VIEWSTATUS_DVASPECTTRANSPARENT = 8, + VIEWSTATUS_SURFACE = 16, + VIEWSTATUS_3DSURFACE = 32 + } VIEWSTATUS; + + typedef enum tagHITRESULT + { + HITRESULT_OUTSIDE = 0, + HITRESULT_TRANSPARENT = 1, + HITRESULT_CLOSE = 2, + HITRESULT_HIT = 3 + } HITRESULT; + + typedef enum tagDVASPECT2 + { + DVASPECT_OPAQUE = 16, + DVASPECT_TRANSPARENT = 32 + } DVASPECT2; + + typedef struct tagExtentInfo + { + ULONG cb; + DWORD dwExtentMode; + SIZEL sizelProposed; + } DVEXTENTINFO; + + typedef enum tagAspectInfoFlag + { + DVASPECTINFOFLAG_CANOPTIMIZE = 1 + } DVASPECTINFOFLAG; + + typedef struct tagAspectInfo + { + ULONG cb; + DWORD dwFlags; + } DVASPECTINFO; + + HRESULT GetRect( + [in] DWORD dwAspect, + [out] LPRECTL pRect); + + HRESULT GetViewStatus( [out] DWORD *pdwStatus ); + + HRESULT QueryHitPoint( + [in] DWORD dwAspect, + [in] LPCRECT pRectBounds, + [in] POINT ptlLoc, + [in] LONG lCloseHint, + [out] DWORD *pHitResult); + + HRESULT QueryHitRect( + [in] DWORD dwAspect, + [in] LPCRECT pRectBounds, + [in] LPCRECT pRectLoc, + [in] LONG lCloseHint, + [out] DWORD *pHitResult); + + HRESULT GetNaturalExtent ( + [in] DWORD dwAspect, + [in] LONG lindex, + [in] DVTARGETDEVICE *ptd, + [in] HDC hicTargetDev, + [in] DVEXTENTINFO *pExtentInfo, + [out] LPSIZEL pSizel); +} + + +/***************************************************************************** + * IProvideClassInfo interface + */ +[ + object, + uuid(b196b283-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface IProvideClassInfo : IUnknown +{ + typedef IProvideClassInfo *LPPROVIDECLASSINFO; + +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef GetClassInfo") +cpp_quote("#endif") + + HRESULT GetClassInfo( [out] ITypeInfo ** ppTI ); +} + + +/***************************************************************************** + * IProvideClassInfo2 interface + */ +[ + object, + uuid(a6bc3ac0-dbaa-11ce-9de3-00aa004bb851), + pointer_default(unique) +] +interface IProvideClassInfo2 : IProvideClassInfo +{ + typedef IProvideClassInfo2 *LPPROVIDECLASSINFO2; + + typedef enum tagGUIDKIND + { + GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1 + } GUIDKIND; + + HRESULT GetGUID( + [in] DWORD dwGuidKind, + [out] GUID *pGUID ); +} + + +[ + object, + uuid(a7aba9c1-8983-11cf-8f20-00805f2cd064), + pointer_default(unique) +] +interface IProvideMultipleClassInfo : IProvideClassInfo2 +{ + cpp_quote("#define MULTICLASSINFO_GETTYPEINFO 0x00000001") + cpp_quote("#define MULTICLASSINFO_GETNUMRESERVEDDISPIDS 0x00000002") + cpp_quote("#define MULTICLASSINFO_GETIIDPRIMARY 0x00000004") + cpp_quote("#define MULTICLASSINFO_GETIIDSOURCE 0x00000008") + + cpp_quote("#define TIFLAGS_EXTENDDISPATCHONLY 0x00000001") + + typedef IProvideMultipleClassInfo *LPPROVIDEMULTIPLECLASSINFO; + + HRESULT GetMultiTypeInfoCount( + [out] ULONG *pcti); + + HRESULT GetInfoOfIndex( + [in] ULONG iti, + [in] DWORD dwFlags, + [out] ITypeInfo **pptiCoClass, + [out] DWORD *pdwTIFlags, + [out] ULONG *pcdispidReserved, + [out] IID *piidPrimary, + [out] IID *piidSource); +} + + +/***************************************************************************** + * IConnectionPoint interface + */ +interface IConnectionPointContainer; /* forward declarations */ +interface IEnumConnections; + +[ + object, + uuid(b196b286-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface IConnectionPoint : IUnknown +{ + typedef IConnectionPoint *PCONNECTIONPOINT, *LPCONNECTIONPOINT; + + HRESULT GetConnectionInterface( [out] IID *pIID ); + HRESULT GetConnectionPointContainer( [out] IConnectionPointContainer **ppCPC ); + HRESULT Advise( [in] IUnknown *pUnkSink, [out] DWORD *pdwCookie ); + HRESULT Unadvise( [in] DWORD dwCookie ); + HRESULT EnumConnections( [out] IEnumConnections **ppEnum ); +} + + +/***************************************************************************** + * IConnectionPointContainer interface + */ +interface IEnumConnectionPoints; /* forward declaration */ +[ + object, + uuid(b196b284-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface IConnectionPointContainer : IUnknown +{ + typedef IConnectionPointContainer *PCONNECTIONPOINTCONTAINER, *LPCONNECTIONPOINTCONTAINER; + + HRESULT EnumConnectionPoints( [out] IEnumConnectionPoints **ppEnum ); + HRESULT FindConnectionPoint( [in] REFIID riid, [out] IConnectionPoint **ppCP ); +} + + +/***************************************************************************** + * IEnumConnections interface + */ +[ + object, + uuid(b196b287-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface IEnumConnections : IUnknown +{ + typedef IEnumConnections *PENUMCONNECTIONS, *LPENUMCONNECTIONS; + + typedef struct tagCONNECTDATA + { + IUnknown *pUnk; + DWORD dwCookie; + } CONNECTDATA, *PCONNECTDATA, *LPCONNECTDATA; + + [local] + HRESULT Next( + [in] ULONG cConnections, + [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd, + [out] ULONG *pcFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG cConnections, + [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd, + [out] ULONG *pcFetched); + + HRESULT Skip( [in] ULONG cConnections ); + + HRESULT Reset(); + + HRESULT Clone( [out] IEnumConnections **ppEnum ); +} + + +/***************************************************************************** + * IEnumConnectionPoints interface + */ +[ + object, + uuid(b196b285-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface IEnumConnectionPoints : IUnknown +{ + typedef IEnumConnectionPoints *PENUMCONNECTIONPOINTS, *LPENUMCONNECTIONPOINTS; + + [local] + HRESULT Next( + [in] ULONG cConnections, + [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTIONPOINT *ppCP, + [out] ULONG *pcFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG cConnections, + [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTIONPOINT *ppCP, + [out] ULONG *pcFetched); + + HRESULT Skip( [in] ULONG cConnections ); + + HRESULT Reset(); + + HRESULT Clone( [out] IEnumConnectionPoints **ppEnum ); +} + + +/***************************************************************************** + * IPropertyPage interface + */ +interface IPropertyPageSite; /* forward declaration */ +[ + object, + uuid(b196b28d-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface IPropertyPage : IUnknown +{ + typedef IPropertyPage *LPPROPERTYPAGE; + + typedef struct tagPROPPAGEINFO + { + ULONG cb; + LPOLESTR pszTitle; + SIZE size; + LPOLESTR pszDocString; + LPOLESTR pszHelpFile; + DWORD dwHelpContext; + } PROPPAGEINFO, *LPPROPPAGEINFO; + + HRESULT SetPageSite( [in] IPropertyPageSite *pPageSite ); + + HRESULT Activate( + [in] HWND hWndParent, + [in] LPCRECT pRect, + [in] BOOL bModal); + + HRESULT Deactivate(); + + HRESULT GetPageInfo( [out] PROPPAGEINFO *pPageInfo ); + + HRESULT SetObjects( + [in] ULONG cObjects, + [in, size_is(cObjects)] IUnknown **ppUnk); + + HRESULT Show( [in] UINT nCmdShow ); + + HRESULT Move( [in] LPCRECT pRect ); + + HRESULT IsPageDirty(); + + HRESULT Apply(); + + HRESULT Help( [in] LPCOLESTR pszHelpDir ); + + HRESULT TranslateAccelerator( [in] MSG *pMsg ); +} + + +/***************************************************************************** + * IPropertyPage2 interface + */ +[ + object, + uuid(01e44665-24ac-101b-84ed-08002b2ec713), + pointer_default(unique) +] +interface IPropertyPage2 : IPropertyPage +{ + typedef IPropertyPage2 *LPPROPERTYPAGE2; + + HRESULT EditProperty( [in] DISPID dispID ); +} + + +/***************************************************************************** + * IPropertyPageSite interface + */ +[ + object, + uuid(b196b28c-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface IPropertyPageSite : IUnknown +{ + typedef IPropertyPageSite *LPPROPERTYPAGESITE; + + typedef enum tagPROPPAGESTATUS + { + PROPPAGESTATUS_DIRTY = 0x1, + PROPPAGESTATUS_VALIDATE = 0x2, + PROPPAGESTATUS_CLEAN = 0x4 + } PROPPAGESTATUS; + + HRESULT OnStatusChange( [in] DWORD dwFlags ); + HRESULT GetLocaleID( [out] LCID *pLocaleID ); + HRESULT GetPageContainer( [out] IUnknown **ppUnk ); + HRESULT TranslateAccelerator( [in] MSG *pMsg ); +} + + +/***************************************************************************** + * IPropertyNotifySink interface + */ +[ + object, + uuid(9bfbbc02-eff1-101a-84ed-00aa00341d07), + pointer_default(unique) +] +interface IPropertyNotifySink : IUnknown +{ + typedef IPropertyNotifySink *LPPROPERTYNOTIFYSINK; + + HRESULT OnChanged( [in] DISPID dispID ); + HRESULT OnRequestEdit( [in] DISPID dispID ); +} + + +/***************************************************************************** + * ISimpleFrameSite interface + */ +[ + object, + uuid(742b0e01-14e6-101b-914e-00aa00300cab), + pointer_default(unique) +] +interface ISimpleFrameSite : IUnknown +{ + typedef ISimpleFrameSite *LPSIMPLEFRAMESITE; + + HRESULT PreMessageFilter( + [in] HWND hWnd, + [in] UINT msg, + [in] WPARAM wp, + [in] LPARAM lp, + [out] LRESULT *plResult, + [out] DWORD *pdwCookie); + + HRESULT PostMessageFilter( + [in] HWND hWnd, + [in] UINT msg, + [in] WPARAM wp, + [in] LPARAM lp, + [out] LRESULT *plResult, + [in] DWORD dwCookie); +} + + +/***************************************************************************** + * IPersistStreamInit interface + */ +[ + object, + uuid(7fd52380-4e07-101b-ae2d-08002b2ec713), + pointer_default(unique) +] +interface IPersistStreamInit : IPersist +{ + typedef IPersistStreamInit *LPPERSISTSTREAMINIT; + + HRESULT IsDirty(); + HRESULT Load( [in] LPSTREAM pStm ); + HRESULT Save( [in] LPSTREAM pStm, [in] BOOL fClearDirty ); + HRESULT GetSizeMax( [out] ULARGE_INTEGER *pcbSize ); + HRESULT InitNew(); +} + + +/***************************************************************************** + * IPersistMemory interface + */ +[ + object, + uuid(bd1ae5e0-a6ae-11ce-bd37-504200c10000), + pointer_default(unique) +] +interface IPersistMemory : IPersist +{ + typedef IPersistMemory *LPPERSISTMEMORY; + + HRESULT IsDirty(); + + [local] + HRESULT Load( + [in, size_is(cbSize)] LPVOID pMem, + [in] ULONG cbSize); + + [call_as(Load)] + HRESULT RemoteLoad( + [in, size_is(cbSize)] BYTE *pMem, + [in] ULONG cbSize); + + [local] + HRESULT Save( + [out, size_is(cbSize)] LPVOID pMem, + [in] BOOL fClearDirty, + [in] ULONG cbSize); + + [call_as(Save)] + HRESULT RemoteSave( + [out, size_is(cbSize)] BYTE *pMem, + [in] BOOL fClearDirty, + [in] ULONG cbSize); + + HRESULT GetSizeMax( [out] ULONG *pCbSize ); + HRESULT InitNew(); +} + + +/***************************************************************************** + * IPersistPropertyBag interface + */ +[ + object, + uuid(37d84f60-42cb-11ce-8135-00aa004bb851), + pointer_default(unique) +] +interface IPersistPropertyBag : IPersist +{ + typedef IPersistPropertyBag *LPPERSISTPROPERTYBAG; + + HRESULT InitNew(); + + HRESULT Load( + [in] IPropertyBag *pPropBag, + [in] IErrorLog *pErrorLog); + + HRESULT Save( + [in] IPropertyBag *pPropBag, + [in] BOOL fClearDirty, + [in] BOOL fSaveAllProperties); +} + + +/***************************************************************************** + * IPropertyBag2 interface + */ +[ + object, + uuid(22f55882-280b-11d0-a8a9-00a0c90c2004), + pointer_default(unique) +] +interface IPropertyBag2 : IUnknown +{ + typedef IPropertyBag2 *LPPROPERTYBAG2; + + typedef enum tagPROPBAG2_TYPE + { + PROPBAG2_TYPE_UNDEFINED = 0, + PROPBAG2_TYPE_DATA = 1, + PROPBAG2_TYPE_URL = 2, + PROPBAG2_TYPE_OBJECT = 3, + PROPBAG2_TYPE_STREAM = 4, + PROPBAG2_TYPE_STORAGE = 5, + PROPBAG2_TYPE_MONIKER = 6 + } PROPBAG2_TYPE; + + typedef struct tagPROPBAG2 + { + DWORD dwType; + VARTYPE vt; + CLIPFORMAT cfType; + DWORD dwHint; + LPOLESTR pstrName; + CLSID clsid; + } PROPBAG2; + + HRESULT Read( + [in] ULONG cProperties, + [in] PROPBAG2 *pPropBag, + [in] IErrorLog *pErrLog, + [out] VARIANT *pvarValue, + [out] HRESULT *phrError); + + HRESULT Write( + [in] ULONG cProperties, + [in] PROPBAG2 *pPropBag, + [in] VARIANT *pvarValue); + + HRESULT CountProperties( + [out] ULONG *pcProperties ); + + HRESULT GetPropertyInfo( + [in] ULONG iProperty, + [in] ULONG cProperties, + [out] PROPBAG2 *pPropBag, + [out] ULONG *pcProperties); + + HRESULT LoadObject( + [in] LPCOLESTR pstrName, + [in] DWORD dwHint, + [in] IUnknown *pUnkObject, + [in] IErrorLog *pErrLog); +} + + +/***************************************************************************** + * IPersistPropertyBag2 interface + */ +[ + object, + uuid(22f55881-280b-11d0-a8a9-00a0c90c2004), + pointer_default(unique) +] +interface IPersistPropertyBag2 : IPersist +{ + typedef IPersistPropertyBag2 *LPPERSISTPROPERTYBAG2; + + HRESULT InitNew(); + + HRESULT Load( + [in] IPropertyBag2 *pPropBag, + [in] IErrorLog *pErrorLog); + + HRESULT Save( + [in] IPropertyBag2 *pPropBag, + [in] BOOL fClearDirty, + [in] BOOL fSaveAllProperties); + + HRESULT IsDirty(); +} + + +/***************************************************************************** + * ISpecifyPropertyPages interface + */ +[ + object, + uuid(b196b28b-bab4-101a-b69c-00aa00341d07), + pointer_default(unique) +] +interface ISpecifyPropertyPages : IUnknown +{ + typedef ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES; + + typedef struct tagCAUUID + { + ULONG cElems; + [size_is(cElems)] GUID *pElems; + } CAUUID, *LPCAUUID; + + HRESULT GetPages( [out] CAUUID *pPages ); +} + + +/***************************************************************************** + * IPerPropertyBrowsing interface + */ +[ + object, + uuid(376bd3aa-3845-101b-84ed-08002b2ec713), + pointer_default(unique) +] +interface IPerPropertyBrowsing : IUnknown +{ + typedef IPerPropertyBrowsing *LPPERPROPERTYBROWSING; + + typedef struct tagCALPOLESTR + { + ULONG cElems; + [size_is(cElems)] LPOLESTR *pElems; + } CALPOLESTR, *LPCALPOLESTR; + + typedef struct tagCADWORD + { + ULONG cElems; + [size_is(cElems)] DWORD *pElems; + } CADWORD, *LPCADWORD; + + HRESULT GetDisplayString( + [in] DISPID dispID, + [out] BSTR *pBstr); + + HRESULT MapPropertyToPage( + [in] DISPID dispID, + [out] CLSID *pClsid); + + HRESULT GetPredefinedStrings( + [in] DISPID dispID, + [out] CALPOLESTR *pCaStringsOut, + [out] CADWORD *pCaCookiesOut); + + HRESULT GetPredefinedValue( + [in] DISPID dispID, + [in] DWORD dwCookie, + [out] VARIANT *pVarOut); +} + + +/***************************************************************************** + * IAdviseSinkEx interface + */ +[ + object, + uuid(3af24290-0c96-11ce-a0cf-00aa00600ab8), + pointer_default(unique) +] +interface IAdviseSinkEx : IAdviseSink +{ + typedef IAdviseSinkEx *LPADVISESINKEX; + + [local] + void OnViewStatusChange( [in] DWORD dwViewStatus ); + + [call_as(OnViewStatusChange)] + HRESULT RemoteOnViewStatusChange( [in] DWORD dwViewStatus ); +} + + +/***************************************************************************** + * IPointerInactive interface + */ +[ + object, + uuid(55980ba0-35aa-11cf-b671-00aa004cd6d8), + pointer_default(unique) +] +interface IPointerInactive : IUnknown +{ + typedef IPointerInactive *LPPOINTERINACTIVE; + + HRESULT GetActivationPolicy( + [out] DWORD *pdwPolicy); + + HRESULT OnInactiveMouseMove( + [in] LPCRECT pRectBounds, + [in] LONG x, + [in] LONG y, + [in] DWORD grfKeyState); + + HRESULT OnInactiveSetCursor( + [in] LPCRECT pRectBounds, + [in] LONG x, + [in] LONG y, + [in] DWORD dwMouseMsg, + [in] BOOL fSetAlways); +} + + +/***************************************************************************** + * IObjectWithSite interface + */ +[ + object, + uuid(fc4801a3-2ba9-11cf-a229-00aa003d7352), + pointer_default(unique) +] +interface IObjectWithSite : IUnknown +{ + typedef IObjectWithSite *LPOBJECTWITHSITE; + + HRESULT SetSite( + [in] IUnknown * pUnkSite); + + HRESULT GetSite( + [in] REFIID riid, + [out, iid_is(riid)] PVOID *ppvSite); +} + + +/***************************************************************************** + * IOleUndoUnit interface + */ +interface IOleUndoManager; /* forward declaration */ +[ + object, + uuid(894ad3b0-ef97-11ce-9bc9-00aa00608e01), + pointer_default(unique) +] +interface IOleUndoUnit : IUnknown +{ + typedef IOleUndoUnit *LPOLEUNDOUNIT; + + HRESULT Do( [in] IOleUndoManager *pUndoManager ); + HRESULT GetDescription( [out] BSTR *pBstr ); + HRESULT GetUnitType( [out] CLSID *pClsid, [out] LONG *plID ); + HRESULT OnNextAdd(); +} + + +/***************************************************************************** + * IOleParentUndoUnit interface + */ +[ + object, + uuid(a1faf330-ef97-11ce-9bc9-00aa00608e01), + pointer_default(unique) +] +interface IOleParentUndoUnit : IOleUndoUnit +{ + typedef IOleParentUndoUnit *LPOLEPARENTUNDOUNIT; + + HRESULT Open( [in] IOleParentUndoUnit *pPUU ); + HRESULT Close( [in] IOleParentUndoUnit *pPUU, [in] BOOL fCommit ); + HRESULT Add( [in] IOleUndoUnit *pUU ); + HRESULT FindUnit( [in] IOleUndoUnit *pUU ); + HRESULT GetParentState( [out] DWORD *pdwState ); +} + + +/***************************************************************************** + * IEnumOleUndoUnits interface + */ +[ + object, + uuid(b3e7c340-ef97-11ce-9bc9-00aa00608e01), + pointer_default(unique) +] +interface IEnumOleUndoUnits : IUnknown +{ + typedef IEnumOleUndoUnits *LPENUMOLEUNDOUNITS; + + [local] + HRESULT Next( + [in] ULONG cElt, + [out, size_is(cElt), length_is(*pcEltFetched)] IOleUndoUnit **rgElt, + [out] ULONG *pcEltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG cElt, + [out, size_is(cElt), length_is(*pcEltFetched)] IOleUndoUnit **rgElt, + [out] ULONG *pcEltFetched); + + HRESULT Skip( [in] ULONG cElt ); + + HRESULT Reset(); + + HRESULT Clone( [out] IEnumOleUndoUnits **ppEnum ); +} + + +/***************************************************************************** + * IOleUndoManager interface + */ +[ + object, + uuid(d001f200-ef97-11ce-9bc9-00aa00608e01), + pointer_default(unique) +] +interface IOleUndoManager : IUnknown +{ + typedef IOleUndoManager *LPOLEUNDOMANAGER; + + HRESULT Open( [in] IOleParentUndoUnit *pPUU ); + HRESULT Close( [in] IOleParentUndoUnit *pPUU, [in] BOOL fCommit ); + HRESULT Add( [in] IOleUndoUnit *pUU ); + HRESULT GetOpenParentState( [out] DWORD *pdwState ); + HRESULT DiscardFrom( [in] IOleUndoUnit *pUU ); + HRESULT UndoTo( [in] IOleUndoUnit *pUU ); + HRESULT RedoTo( [in] IOleUndoUnit *pUU ); + HRESULT EnumUndoable( [out] IEnumOleUndoUnits **ppEnum ); + HRESULT EnumRedoable( [out] IEnumOleUndoUnits **ppEnum ); + HRESULT GetLastUndoDescription( [out] BSTR *pBstr ); + HRESULT GetLastRedoDescription( [out] BSTR *pBstr ); + HRESULT Enable( [in] BOOL fEnable ); +} + + +/***************************************************************************** + * IQuickActivate interface + */ +[ + object, + uuid(cf51ed10-62fe-11cf-bf86-00a0c9034836), + pointer_default(unique) +] +interface IQuickActivate : IUnknown +{ + typedef IQuickActivate *LPQUICKACTIVATE; + + typedef enum tagQACONTAINERFLAGS + { + QACONTAINER_SHOWHATCHING = 0x1, + QACONTAINER_SHOWGRABHANDLES = 0x2, + QACONTAINER_USERMODE = 0x4, + QACONTAINER_DISPLAYASDEFAULT = 0x8, + QACONTAINER_UIDEAD = 0x10, + QACONTAINER_AUTOCLIP = 0x20, + QACONTAINER_MESSAGEREFLECT = 0x40, + QACONTAINER_SUPPORTSMNEMONICS = 0x80 + } QACONTAINERFLAGS; + + typedef DWORD OLE_COLOR; + + typedef struct tagQACONTAINER + { + ULONG cbSize; + IOleClientSite *pClientSite; + IAdviseSinkEx *pAdviseSink; + IPropertyNotifySink *pPropertyNotifySink; + IUnknown *pUnkEventSink; + DWORD dwAmbientFlags; + OLE_COLOR colorFore; + OLE_COLOR colorBack; + IFont *pFont; + IOleUndoManager *pUndoMgr; + DWORD dwAppearance; + LONG lcid; + HPALETTE hpal; + IBindHost *pBindHost; + IOleControlSite *pOleControlSite; + IServiceProvider *pServiceProvider; + } QACONTAINER; + + typedef struct tagQACONTROL + { + ULONG cbSize; + DWORD dwMiscStatus; + DWORD dwViewStatus; + DWORD dwEventCookie; + DWORD dwPropNotifyCookie; + DWORD dwPointerActivationPolicy; + } QACONTROL; + + [local] + HRESULT QuickActivate( + [in] QACONTAINER *pQaContainer, + [in,out] QACONTROL *pQaControl); + + [call_as(QuickActivate)] + HRESULT RemoteQuickActivate( + [in] QACONTAINER *pQaContainer, + [out] QACONTROL *pQaControl); + + HRESULT SetContentExtent( [in] LPSIZEL pSizel ); + + HRESULT GetContentExtent( [out] LPSIZEL pSizel ); +} diff --git a/reactos/include/psdk/ocmm.idl b/reactos/include/psdk/ocmm.idl new file mode 100644 index 00000000000..57adf341fff --- /dev/null +++ b/reactos/include/psdk/ocmm.idl @@ -0,0 +1,74 @@ +/* + * Copyright 2006 Matthew Kehrer + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "oaidl.idl"; +import "ocidl.idl"; + +cpp_quote("EXTERN_C const GUID NAMEDTIMER_DRAW;") + +[ + object, + uuid(3050F361-98B5-11CF-BB82-00AA00BDCE0B), + pointer_default(unique) +] +interface ITimerSink : IUnknown +{ + HRESULT OnTimer([in] VARIANT vtimeAdvise); +} + + +[ + object, + uuid(3050F360-98B5-11CF-BB82-00AA00BDCE0B), + pointer_default(unique) +] +interface ITimer : IUnknown +{ + HRESULT Advise([in] VARIANT vtimeMin, + [in] VARIANT vtimeMax, + [in] VARIANT vtimeInterval, + [in] DWORD dwFlags, + [in] ITimerSink *pTimerSink, + [out] DWORD *pdwCookie); + + HRESULT Unadvise([in] DWORD dwCookie); + + HRESULT Freeze([in] BOOL fFreeze); + + HRESULT GetTime([out] VARIANT *pvtime); +} + + +[ + object, + uuid(3050F35F-98B5-11CF-BB82-00AA00BDCE0B), + pointer_default(unique) +] +interface ITimerService : IUnknown +{ + HRESULT CreateTimer([in] ITimer *pReferenceTimer, + [out] ITimer **ppNewTimer); + + HRESULT GetNamedTimer([in] REFGUID rguidName, + [out] ITimer **ppTimer); + + HRESULT SetNamedTimerReference([in] REFGUID rguidName, + [in] ITimer *pReferenceTimer); +} + +cpp_quote("#define SID_STimerService IID_ITimerService") diff --git a/reactos/include/psdk/ole2.h b/reactos/include/psdk/ole2.h index 2cda4177422..5617c835faf 100644 --- a/reactos/include/psdk/ole2.h +++ b/reactos/include/psdk/ole2.h @@ -1,111 +1,164 @@ -#ifndef _OLE2_H -#define _OLE2_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif +/* + * Declarations for OLE2 + * + * Copyright (C) the Wine project + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_OLE2_H +#define __WINE_OLE2_H #include #include -#include #include +#include -#pragma pack(push,8) +struct tagMSG; #ifdef __cplusplus extern "C" { -#endif -#define E_DRAW VIEW_E_DRAW -#define DATA_E_FORMATETC DV_E_FORMATETC -#define OLEIVERB_PRIMARY (0L) -#define OLEIVERB_SHOW (-1L) -#define OLEIVERB_OPEN (-2L) -#define OLEIVERB_HIDE (-3L) -#define OLEIVERB_UIACTIVATE (-4L) -#define OLEIVERB_INPLACEACTIVATE (-5L) -#define OLEIVERB_DISCARDUNDOSTATE (-6L) -#define EMBDHLP_INPROC_HANDLER 0x0000L -#define EMBDHLP_INPROC_SERVER 0x0001L -#define EMBDHLP_CREATENOW 0x00000000L -#define EMBDHLP_DELAYCREATE 0x00010000L -#include +#endif /* defined(__cplusplus) */ -typedef struct _OLESTREAMVTBL *LPOLESTREAMVTBL; -typedef struct _OLESTREAM { - LPOLESTREAMVTBL lpstbl; -} OLESTREAM,*LPOLESTREAM; +#define E_DRAW VIEW_E_DRAW +#define DATA_E_FORMATETC DV_E_FORMATETC + +#define OLEIVERB_PRIMARY (0L) +#define OLEIVERB_SHOW (-1L) +#define OLEIVERB_OPEN (-2L) +#define OLEIVERB_HIDE (-3L) +#define OLEIVERB_UIACTIVATE (-4L) +#define OLEIVERB_INPLACEACTIVATE (-5L) +#define OLEIVERB_DISCARDUNDOSTATE (-6L) +#define OLEIVERB_PROPERTIES (-7L) + +#define EMBDHLP_INPROC_HANDLER 0x00000000 +#define EMBDHLP_INPROC_SERVER 0x00000001 +#define EMBDHLP_CREATENOW 0x00000000 +#define EMBDHLP_DELAYCREATE 0x00010000 + +/* + * API declarations + */ +HRESULT WINAPI RegisterDragDrop(HWND,LPDROPTARGET); +HRESULT WINAPI RevokeDragDrop(HWND); +HRESULT WINAPI DoDragDrop(LPDATAOBJECT,LPDROPSOURCE,DWORD,DWORD*); +HRESULT WINAPI OleLoadFromStream(IStream *pStm,REFIID iidInterface,void** ppvObj); +HRESULT WINAPI OleSaveToStream(IPersistStream *pPStm,IStream *pStm); +HOLEMENU WINAPI OleCreateMenuDescriptor(HMENU hmenuCombined,LPOLEMENUGROUPWIDTHS lpMenuWidths); +HRESULT WINAPI OleDestroyMenuDescriptor(HOLEMENU hmenuDescriptor); +HRESULT WINAPI OleSetMenuDescriptor(HOLEMENU hmenuDescriptor,HWND hwndFrame,HWND hwndActiveObject,LPOLEINPLACEFRAME lpFrame,LPOLEINPLACEACTIVEOBJECT lpActiveObject); + +HRESULT WINAPI WriteClassStg(IStorage *pstg, REFCLSID rclsid); +HRESULT WINAPI ReadClassStg(IStorage *pstg,CLSID *pclsid); +HRESULT WINAPI WriteClassStm(IStream *pStm,REFCLSID rclsid); +HRESULT WINAPI ReadClassStm(IStream *pStm,CLSID *pclsid); + + +HRESULT WINAPI OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad); +HRESULT WINAPI OleRegGetUserType(REFCLSID clsid, + DWORD dwFormOfType, + LPOLESTR* pszUserType); +HRESULT WINAPI OleRegGetMiscStatus (REFCLSID clsid, DWORD dwAspect, DWORD* pdwStatus); +HRESULT WINAPI OleRegEnumFormatEtc (REFCLSID clsid, + DWORD dwDirection, + LPENUMFORMATETC* ppenumFormatetc); +HRESULT WINAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM* ppstm); +HRESULT WINAPI GetHGlobalFromStream(LPSTREAM pstm, HGLOBAL* phglobal); +HRESULT WINAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB* ppenum); +BOOL WINAPI OleIsRunning(LPOLEOBJECT pObject); +HRESULT WINAPI OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, + DWORD renderopt, LPFORMATETC pFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, + LPVOID* ppvObj); +HRESULT WINAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained); +HRESULT WINAPI OleQueryLinkFromData(IDataObject* pSrcDataObject); +HRESULT WINAPI OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject); +HRESULT WINAPI OleRun(LPUNKNOWN pUnknown); +HRESULT WINAPI OleDraw(LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw, LPCRECT lprcBounds); +VOID WINAPI ReleaseStgMedium(LPSTGMEDIUM); +HRESULT WINAPI OleGetClipboard(IDataObject** ppDataObj); +HRESULT WINAPI OleIsCurrentClipboard(LPDATAOBJECT); +HRESULT WINAPI OleSetClipboard(LPDATAOBJECT); +HRESULT WINAPI OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid, + DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, + LPSTORAGE pStg, LPVOID* ppvObj); +HRESULT WINAPI ReadFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT* pcf, LPOLESTR* lplpszUserType); +HRESULT WINAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID* ppvObj); +HRESULT WINAPI GetHGlobalFromILockBytes(LPLOCKBYTES plkbyt, HGLOBAL* phglobal); +HRESULT WINAPI CreateILockBytesOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPLOCKBYTES* pplkbyt); +HRESULT WINAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER* ppDAHolder); +HGLOBAL WINAPI OleGetIconOfClass(REFCLSID rclsid, LPOLESTR lpszLabel, BOOL fUseTypeAsLabel); +HGLOBAL WINAPI OleGetIconOfFile(LPOLESTR lpszPath, BOOL fUseFileAsLabel); +HGLOBAL WINAPI OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel, LPOLESTR lpszSourceFile, UINT iIconIndex); +HRESULT WINAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses); +HRESULT WINAPI OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid, + DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj); +HRESULT WINAPI OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj); +HRESULT WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, + LPSTORAGE pStg, LPVOID* ppvObj); +HRESULT WINAPI OleFlushClipboard(void); +HRESULT WINAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert); +BOOL WINAPI IsAccelerator(HACCEL hAccel, int cAccelEntries, struct tagMSG* lpMsg, WORD* lpwCmd); +HRESULT WINAPI OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj); +HANDLE WINAPI OleDuplicateData(HANDLE hSrc, CLIPFORMAT cfFormat, UINT uiFlags); +HRESULT WINAPI WriteFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType); +HRESULT WINAPI OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo, struct tagMSG* lpmsg); +HRESULT WINAPI OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, + LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj); +HRESULT WINAPI OleCreateDefaultHandler(REFCLSID clsid, + LPUNKNOWN pUnkOuter, + REFIID riid, + LPVOID* ppvObj); +HRESULT WINAPI OleCreateEmbeddingHelper(REFCLSID clsid, + LPUNKNOWN pUnkOuter, + DWORD flags, + IClassFactory *pCF, + REFIID riid, + LPVOID* ppvObj); +HRESULT WINAPI CreateOleAdviseHolder (LPOLEADVISEHOLDER *ppOAHolder); +HRESULT WINAPI OleInitialize(LPVOID pvReserved); +void WINAPI OleUninitialize(void); +BOOL WINAPI IsValidInterface(LPUNKNOWN punk); +DWORD WINAPI OleBuildVersion(VOID); + +/* + * OLE version conversion declarations + */ + + +typedef struct _OLESTREAM* LPOLESTREAM; typedef struct _OLESTREAMVTBL { - DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD); - DWORD (CALLBACK* Put)(LPOLESTREAM,const void*,DWORD); + DWORD (CALLBACK *Get)(LPOLESTREAM,LPSTR,DWORD); + DWORD (CALLBACK *Put)(LPOLESTREAM,LPSTR,DWORD); } OLESTREAMVTBL; +typedef OLESTREAMVTBL* LPOLESTREAMVTBL; +typedef struct _OLESTREAM { + LPOLESTREAMVTBL lpstbl; +} OLESTREAM; + +HRESULT WINAPI OleConvertOLESTREAMToIStorage( LPOLESTREAM lpolestream, LPSTORAGE pstg, const DVTARGETDEVICE* ptd); +HRESULT WINAPI OleConvertIStorageToOLESTREAM( LPSTORAGE pstg, LPOLESTREAM lpolestream); + +HRESULT WINAPI OleGetAutoConvert( REFCLSID clsidOld, LPCLSID pClsidNew ); +HRESULT WINAPI OleSetAutoConvert( REFCLSID clsidOld, REFCLSID clsidNew ); -WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*); -WINOLEAPI_(DWORD) OleBuildVersion(void); -WINOLEAPI ReadClassStg(LPSTORAGE,CLSID*); -WINOLEAPI WriteClassStg(LPSTORAGE,REFCLSID); -WINOLEAPI ReadClassStm(LPSTREAM,CLSID*); -WINOLEAPI WriteClassStm(LPSTREAM,REFCLSID); -WINOLEAPI WriteFmtUserTypeStg(LPSTORAGE,CLIPFORMAT,LPOLESTR); -WINOLEAPI ReadFmtUserTypeStg(LPSTORAGE,CLIPFORMAT*,LPOLESTR*); -WINOLEAPI OleInitialize(PVOID); -WINOLEAPI_(void) OleUninitialize(void); -WINOLEAPI OleQueryLinkFromData(LPDATAOBJECT); -WINOLEAPI OleQueryCreateFromData(LPDATAOBJECT); -WINOLEAPI OleCreate(REFCLSID,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); -WINOLEAPI OleCreateFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); -WINOLEAPI OleCreateLinkFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); -WINOLEAPI OleCreateStaticFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); -WINOLEAPI OleCreateLink(LPMONIKER,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); -WINOLEAPI OleCreateLinkToFile(LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); -WINOLEAPI OleCreateFromFile(REFCLSID,LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); -WINOLEAPI OleLoad(LPSTORAGE,REFIID,LPOLECLIENTSITE,PVOID*); -WINOLEAPI OleSave(LPPERSISTSTORAGE,LPSTORAGE,BOOL); -WINOLEAPI OleLoadFromStream(LPSTREAM,REFIID,PVOID*); -WINOLEAPI OleSaveToStream(LPPERSISTSTREAM,LPSTREAM); -WINOLEAPI OleSetContainedObject(LPUNKNOWN,BOOL); -WINOLEAPI OleNoteObjectVisible(LPUNKNOWN,BOOL); -WINOLEAPI RegisterDragDrop(HWND,LPDROPTARGET); -WINOLEAPI RevokeDragDrop(HWND); -WINOLEAPI DoDragDrop(LPDATAOBJECT,LPDROPSOURCE,DWORD,PDWORD); -WINOLEAPI OleSetClipboard(LPDATAOBJECT); -WINOLEAPI OleGetClipboard(LPDATAOBJECT*); -WINOLEAPI OleFlushClipboard(void); -WINOLEAPI OleIsCurrentClipboard(LPDATAOBJECT); -WINOLEAPI_(HOLEMENU) OleCreateMenuDescriptor(HMENU,LPOLEMENUGROUPWIDTHS); -WINOLEAPI OleSetMenuDescriptor(HOLEMENU,HWND,HWND,LPOLEINPLACEFRAME,LPOLEINPLACEACTIVEOBJECT); -WINOLEAPI OleDestroyMenuDescriptor(HOLEMENU); -WINOLEAPI OleTranslateAccelerator(LPOLEINPLACEFRAME,LPOLEINPLACEFRAMEINFO,LPMSG); -WINOLEAPI_(HANDLE) OleDuplicateData(HANDLE,CLIPFORMAT,UINT); -WINOLEAPI OleDraw(LPUNKNOWN,DWORD,HDC,LPCRECT); -WINOLEAPI OleRun(LPUNKNOWN); -WINOLEAPI_(BOOL) OleIsRunning(LPOLEOBJECT); -WINOLEAPI OleLockRunning(LPUNKNOWN,BOOL,BOOL); -WINOLEAPI_(void) ReleaseStgMedium(LPSTGMEDIUM); -WINOLEAPI CreateOleAdviseHolder(LPOLEADVISEHOLDER*); -WINOLEAPI OleCreateDefaultHandler(REFCLSID,LPUNKNOWN,REFIID,PVOID*); -WINOLEAPI OleCreateEmbeddingHelper(REFCLSID,LPUNKNOWN,DWORD,LPCLASSFACTORY,REFIID,PVOID*); -WINOLEAPI_(BOOL) IsAccelerator(HACCEL,int,LPMSG,WORD*); -WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR,BOOL); -WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID,LPOLESTR,BOOL); -WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON,LPOLESTR,LPOLESTR,UINT); -WINOLEAPI OleRegGetUserType(REFCLSID,DWORD,LPOLESTR*); -WINOLEAPI OleRegGetMiscStatus(REFCLSID,DWORD,DWORD*); -WINOLEAPI OleRegEnumFormatEtc (REFCLSID,DWORD,LPENUMFORMATETC*); -WINOLEAPI OleRegEnumVerbs (REFCLSID,LPENUMOLEVERB*); -WINOLEAPI OleConvertOLESTREAMToIStorage(LPOLESTREAM,LPSTORAGE,const DVTARGETDEVICE*); -WINOLEAPI OleConvertIStorageToOLESTREAM(LPSTORAGE,LPOLESTREAM); -WINOLEAPI GetHGlobalFromILockBytes(LPLOCKBYTES,HGLOBAL*); -WINOLEAPI CreateILockBytesOnHGlobal(HGLOBAL,BOOL,LPLOCKBYTES*); -WINOLEAPI GetHGlobalFromStream(LPSTREAM,HGLOBAL*); -WINOLEAPI CreateStreamOnHGlobal(HGLOBAL,BOOL,LPSTREAM*); -WINOLEAPI OleDoAutoConvert(LPSTORAGE,LPCLSID); -WINOLEAPI OleGetAutoConvert(REFCLSID,LPCLSID); -WINOLEAPI OleSetAutoConvert(REFCLSID,REFCLSID); -WINOLEAPI GetConvertStg(LPSTORAGE); -WINOLEAPI SetConvertStg(LPSTORAGE,BOOL); -WINOLEAPI OleConvertIStorageToOLESTREAMEx(LPSTORAGE,CLIPFORMAT,LONG,LONG,DWORD,LPSTGMEDIUM,LPOLESTREAM); -WINOLEAPI OleConvertOLESTREAMToIStorageEx(LPOLESTREAM,LPSTORAGE,CLIPFORMAT*,LONG*,LONG*,DWORD*,LPSTGMEDIUM); #ifdef __cplusplus -} -#endif -#pragma pack(pop) -#endif +} /* extern "C" */ +#endif /* defined(__cplusplus) */ + +#endif /* __WINE_OLE2_H */ diff --git a/reactos/include/psdk/ole2ver.h b/reactos/include/psdk/ole2ver.h index 667003a8253..b40db257a11 100644 --- a/reactos/include/psdk/ole2ver.h +++ b/reactos/include/psdk/ole2ver.h @@ -1,8 +1,44 @@ -#ifndef _OLE2VER_H -#define _OLE2VER_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif -#define rmm 23 -#define rup 639 -#endif +/* + * Version number info + * + * Copyright (C) 1999 Paul Quinn + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_OLE2VER_H +#define __WINE_OLE2VER_H + +/* + * other versions rmm/rup: + * 23/639 + * 23/700 + * 23/730 + * 23/824 + * + * Win98 SE original files: + * COMPOBJ: CoBuildVersion 23/700 + * OLE2: OleBuildVersion -> COMPOBJ.CoBuildVersion + * OLE32: CoBuildVersion and Ole~ 23/824 + * + * We probably should reorganize the OLE version stuff, i.e. + * use different values for every *BuildVersion function and Win version. + */ + +/* bad: we shouldn't make use of it that globally ! */ +#define rmm 23 +#define rup 824 + +#endif /* __WINE_OLE2VER_H */ diff --git a/reactos/include/psdk/oleauto.h b/reactos/include/psdk/oleauto.h index fd7dab05e2b..4492d040744 100644 --- a/reactos/include/psdk/oleauto.h +++ b/reactos/include/psdk/oleauto.h @@ -1,661 +1,761 @@ -#ifndef _OLEAUTO_H -#define _OLEAUTO_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif +/* + * Copyright (C) the Wine project + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ -#pragma pack(push,8) -#define WINOLEAUTAPI STDAPI -#define WINOLEAUTAPI_(type) STDAPI_(type) -#define STDOLE_MAJORVERNUM 1 -#define STDOLE_MINORVERNUM 0 -#define STDOLE_LCID 0 -#define VARIANT_NOVALUEPROP 0x01 -#define VARIANT_ALPHABOOL 0x02 -#define VARIANT_NOUSEOVERRIDE 0x04 -#define VARIANT_LOCALBOOL 0x08 -#define VAR_TIMEVALUEONLY 0x0001 -#define VAR_DATEVALUEONLY 0x0002 -#define VAR_VALIDDATE 0x0004 -#define VAR_CALENDAR_HIJRI 0x0008 -#define VAR_LOCALBOOL 0x0010 -#define VAR_FORMAT_NOSUBSTITUTE 0x0020 -#define VAR_FOURDIGITYEARS 0x0040 -#define VAR_CALENDAR_THAI 0x0080 -#define VAR_CALENDAR_GREGORIAN 0x0100 -#define MEMBERID_NIL DISPID_UNKNOWN -#define ID_DEFAULTINST (-2) -#define DISPATCH_METHOD 1 -#define DISPATCH_PROPERTYGET 2 -#define DISPATCH_PROPERTYPUT 4 -#define DISPATCH_PROPERTYPUTREF 8 -#define LHashValOfName(l,n) LHashValOfNameSys(SYS_WIN32,l,n) -#define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h))) -#define IsHashValCompatible(h1,h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2)))) -#define ACTIVEOBJECT_STRONG 0 -#define ACTIVEOBJECT_WEAK 1 -#if __STDC__ || defined(NONAMELESSUNION) -#define V_UNION(X,Y) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.Y) -#define V_VT(X) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.vt) -#define V_RECORDINFO(X) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.__VARIANT_NAME_4.pRecInfo) -#define V_RECORD(X) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.__VARIANT_NAME_4.pvRecord) -#else -#define V_UNION(X,Y) ((X)->Y) -#define V_VT(X) ((X)->vt) -#define V_RECORDINFO(X) ((X)->pRecInfo) -#define V_RECORD(X) ((X)->pvRecord) -#endif -#define V_BOOL(X) V_UNION(X,boolVal) -#define V_ISBYREF(X) (V_VT(X)&VT_BYREF) -#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY) -#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR) -#define V_NONE(X) V_I2(X) -#define V_INT(A) V_UNION(A,intVal) -#define V_UINT(A) V_UNION(A,uintVal) -#define V_UI1(X) V_UNION(X,bVal) -#define V_UI1REF(X) V_UNION(X,pbVal) -#define V_I2(X) V_UNION(X,iVal) -#define V_UI2(X) V_UNION(X,uiVal) -#define V_I2REF(X) V_UNION(X,piVal) -#define V_I4(X) V_UNION(X,lVal) -#define V_UI4(X) V_UNION(X,ulVal) -#define V_I4REF(X) V_UNION(X,plVal) -#define V_UI4REF(X) V_UNION(X,pulVal) -#define V_I8(X) V_UNION(X,llVal) -#define V_UI8(X) V_UNION(X,ullVal) -#define V_I8REF(X) V_UNION(X,phVal) -#define V_UI8REF(X) V_UNION(X,puhVal) -#define V_R4(X) V_UNION(X,fltVal) -#define V_R4REF(X) V_UNION(X,pfltVal) -#define V_R8(X) V_UNION(X,dblVal) -#define V_R8REF(X) V_UNION(X,pdblVal) -#define V_CY(X) V_UNION(X,cyVal) -#define V_CYREF(X) V_UNION(X,pcyVal) -#define V_DATE(X) V_UNION(X,date) -#define V_DATEREF(X) V_UNION(X,pdate) -#define V_BSTR(X) V_UNION(X,bstrVal) -#define V_BSTRREF(X) V_UNION(X,pbstrVal) -#define V_DISPATCH(X) V_UNION(X,pdispVal) -#define V_DISPATCHREF(X) V_UNION(X,ppdispVal) -#define V_ERROR(X) V_UNION(X,scode) -#define V_ERRORREF(X) V_UNION(X,pscode) -#define V_BOOLREF(X) V_UNION(X,pboolVal) -#define V_UNKNOWN(X) V_UNION(X,punkVal) -#define V_UNKNOWNREF(X) V_UNION(X,ppunkVal) -#define V_VARIANTREF(X) V_UNION(X,pvarVal) -#define V_LPSTR(X) V_UNION(X,pszVal) -#define V_LPSTRREF(X) V_UNION(X,ppszVal) -#define V_LPWSTR(X) V_UNION(X,pwszVal) -#define V_LPWSTRREF(X) V_UNION(X,ppwszVal) -#define V_FILETIME(X) V_UNION(X,filetime) -#define V_FILETIMEREF(X) V_UNION(X,pfiletime) -#define V_BLOB(X) V_UNION(X,blob) -#define V_UUID(X) V_UNION(X,puuid) -#define V_CLSID(X) V_UNION(X,puuid) -#define V_ARRAY(X) V_UNION(X,parray) -#define V_ARRAYREF(X) V_UNION(X,pparray) -#define V_BYREF(X) V_UNION(X,byref) -#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION) -#define V_DECIMAL(X) ((X)->__VARIANT_NAME_1.decVal) -#else -#define V_DECIMAL(X) ((X)->decVal) -#endif -#define V_DECIMALREF(X) V_UNION(X,pdecVal) -#define V_I1(X) V_UNION(X,cVal) - -#ifdef _WIN64 -#define V_INT_PTR(X) V_I8(X) -#define V_UINT_PTR(X) V_UI8(X) -#define V_INT_PTRREF(X) V_I8REF(X) -#define V_UINT_PTRREF(X) V_UI8REF(X) -#else -#define V_INT_PTR(X) V_I4(X) -#define V_UINT_PTR(X) V_UI4(X) -#define V_INT_PTRREF(X) V_I4REF(X) -#define V_UINT_PTRREF(X) V_UI4REF(X) -#endif - -#define VARCMP_LT 0 -#define VARCMP_EQ 1 -#define VARCMP_GT 2 -#define VARCMP_NULL 3 - -#define LOCALE_USE_NLS 0x10000000 - -#define VARIANT_NOUSEROVERRIDE 0x04 -#define VARIANT_CALENDAR_HIJRI 0x08 -#define VARIANT_CALENDAR_THAI 0x20 -#define VARIANT_CALENDAR_GREGORIAN 0x40 -#define VARIANT_USE_NLS 0x80 - -#define NUMPRS_LEADING_WHITE 0x00001 -#define NUMPRS_TRAILING_WHITE 0x00002 -#define NUMPRS_LEADING_PLUS 0x00004 -#define NUMPRS_TRAILING_PLUS 0x00008 -#define NUMPRS_LEADING_MINUS 0x00010 -#define NUMPRS_TRAILING_MINUS 0x00020 -#define NUMPRS_HEX_OCT 0x00040 -#define NUMPRS_PARENS 0x00080 -#define NUMPRS_DECIMAL 0x00100 -#define NUMPRS_THOUSANDS 0x00200 -#define NUMPRS_CURRENCY 0x00400 -#define NUMPRS_EXPONENT 0x00800 -#define NUMPRS_USE_ALL 0x01000 -#define NUMPRS_STD 0x01FFF -#define NUMPRS_NEG 0x10000 -#define NUMPRS_INEXACT 0x20000 - -#define VTBIT_I1 (1< -EXTERN_C const IID IID_StdOle; +#ifdef __cplusplus +extern "C" { +#endif + +DEFINE_OLEGUID(IID_StdOle, 0x00020430,0,0); + +#define STDOLE_MAJORVERNUM 1 +#define STDOLE_MINORVERNUM 0 +#define STDOLE_LCID 0 + +#define STDOLE2_MAJORVERNUM 2 +#define STDOLE2_MINORVERNUM 0 +#define STDOLE2_LCID 0 + +ULONG WINAPI OaBuildVersion(void); + +/* BSTR functions */ +BSTR WINAPI SysAllocString(const OLECHAR*); +BSTR WINAPI SysAllocStringByteLen(LPCSTR,UINT); +BSTR WINAPI SysAllocStringLen(const OLECHAR*,UINT); +void WINAPI SysFreeString(BSTR); +INT WINAPI SysReAllocString(LPBSTR,const OLECHAR*); +int WINAPI SysReAllocStringLen(BSTR*,const OLECHAR*,UINT); +UINT WINAPI SysStringByteLen(BSTR); +UINT WINAPI SysStringLen(BSTR); + +/* IErrorInfo helpers */ +HRESULT WINAPI SetErrorInfo(ULONG,IErrorInfo*); +HRESULT WINAPI GetErrorInfo(ULONG,IErrorInfo**); +HRESULT WINAPI CreateErrorInfo(ICreateErrorInfo**); + +/* SafeArray functions */ +SAFEARRAY* WINAPI SafeArrayCreate(VARTYPE,UINT,SAFEARRAYBOUND*); +SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE,UINT,SAFEARRAYBOUND*,LPVOID); +SAFEARRAY* WINAPI SafeArrayCreateVector(VARTYPE,LONG,ULONG); +SAFEARRAY* WINAPI SafeArrayCreateVectorEx(VARTYPE,LONG,ULONG,LPVOID); + +HRESULT WINAPI SafeArrayAllocDescriptor(UINT,SAFEARRAY**); +HRESULT WINAPI SafeArrayAllocDescriptorEx(VARTYPE,UINT,SAFEARRAY**); +HRESULT WINAPI SafeArrayAllocData(SAFEARRAY*); +HRESULT WINAPI SafeArrayDestroyDescriptor(SAFEARRAY*); +HRESULT WINAPI SafeArrayPutElement(SAFEARRAY*,LONG*,void*); +HRESULT WINAPI SafeArrayGetElement(SAFEARRAY*,LONG*,void*); +HRESULT WINAPI SafeArrayLock(SAFEARRAY*); +HRESULT WINAPI SafeArrayUnlock(SAFEARRAY*); +HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY*,UINT,LONG*); +HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY*,UINT,LONG*); +UINT WINAPI SafeArrayGetDim(SAFEARRAY*); +UINT WINAPI SafeArrayGetElemsize(SAFEARRAY*); +HRESULT WINAPI SafeArrayGetVartype(SAFEARRAY*,VARTYPE*); +HRESULT WINAPI SafeArrayAccessData(SAFEARRAY*,void**); +HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY*); +HRESULT WINAPI SafeArrayPtrOfIndex(SAFEARRAY*,LONG*,void **); +HRESULT WINAPI SafeArrayCopyData(SAFEARRAY*,SAFEARRAY*); +HRESULT WINAPI SafeArrayDestroyData(SAFEARRAY*); +HRESULT WINAPI SafeArrayDestroy(SAFEARRAY*); +HRESULT WINAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**); +HRESULT WINAPI SafeArrayRedim(SAFEARRAY*,SAFEARRAYBOUND*); +HRESULT WINAPI SafeArraySetRecordInfo(SAFEARRAY*,IRecordInfo*); +HRESULT WINAPI SafeArrayGetRecordInfo(SAFEARRAY*,IRecordInfo**); +HRESULT WINAPI SafeArraySetIID(SAFEARRAY*,REFGUID); +HRESULT WINAPI SafeArrayGetIID(SAFEARRAY*,GUID*); + +HRESULT WINAPI VectorFromBstr(BSTR,SAFEARRAY**); +HRESULT WINAPI BstrFromVector(SAFEARRAY*,BSTR*); + +/* Object registration helpers */ +#define ACTIVEOBJECT_STRONG 0 +#define ACTIVEOBJECT_WEAK 1 + +HRESULT WINAPI RegisterActiveObject(LPUNKNOWN,REFCLSID,DWORD,LPDWORD); +HRESULT WINAPI RevokeActiveObject(DWORD,LPVOID); +HRESULT WINAPI GetActiveObject(REFCLSID,LPVOID,LPUNKNOWN*); + +/* IRecordInfo helpers */ +HRESULT WINAPI GetRecordInfoFromTypeInfo(ITypeInfo*,IRecordInfo**); +HRESULT WINAPI GetRecordInfoFromGuids(REFGUID,ULONG,ULONG,LCID,REFGUID,IRecordInfo**); + +/* + * Variants + */ + +/* Macros for accessing the fields of the VARIANT type */ +#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION) +#define V_UNION(A,B) ((A)->n1.n2.n3.B) +#define V_VT(A) ((A)->n1.n2.vt) +#else +#define V_UNION(A,B) ((A)->B) +#define V_VT(A) ((A)->vt) +#endif + +#define V_ISBYREF(A) (V_VT(A) & VT_BYREF) +#define V_ISARRAY(A) (V_VT(A) & VT_ARRAY) +#define V_ISVECTOR(A) (V_VT(A) & VT_VECTOR) +#define V_NONE(A) V_I2(A) + +#define V_ARRAY(A) V_UNION(A,parray) +#define V_ARRAYREF(A) V_UNION(A,pparray) +#define V_BOOL(A) V_UNION(A,boolVal) +#define V_BOOLREF(A) V_UNION(A,pboolVal) +#define V_BSTR(A) V_UNION(A,bstrVal) +#define V_BSTRREF(A) V_UNION(A,pbstrVal) +#define V_BYREF(A) V_UNION(A,byref) +#define V_CY(A) V_UNION(A,cyVal) +#define V_CYREF(A) V_UNION(A,pcyVal) +#define V_DATE(A) V_UNION(A,date) +#define V_DATEREF(A) V_UNION(A,pdate) +#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION) +#define V_DECIMAL(A) ((A)->n1.decVal) +#else +#define V_DECIMAL(A) ((A)->decVal) +#endif +#define V_DECIMALREF(A) V_UNION(A,pdecVal) +#define V_DISPATCH(A) V_UNION(A,pdispVal) +#define V_DISPATCHREF(A) V_UNION(A,ppdispVal) +#define V_ERROR(A) V_UNION(A,scode) +#define V_ERRORREF(A) V_UNION(A,pscode) +#define V_I1(A) V_UNION(A,cVal) +#define V_I1REF(A) V_UNION(A,pcVal) +#define V_I2(A) V_UNION(A,iVal) +#define V_I2REF(A) V_UNION(A,piVal) +#define V_I4(A) V_UNION(A,lVal) +#define V_I4REF(A) V_UNION(A,plVal) +#define V_I8(A) V_UNION(A,llVal) +#define V_I8REF(A) V_UNION(A,pllVal) +#define V_INT(A) V_UNION(A,intVal) +#define V_INTREF(A) V_UNION(A,pintVal) +#ifdef _WIN64 +#define V_INT_PTR(A) V_I8(A) +#define V_INT_PTRREF(A) V_I8REF(A) +#else +#define V_INT_PTR(A) V_I4(A) +#define V_INT_PTRREF(A) V_I4REF(A) +#endif +#define V_R4(A) V_UNION(A,fltVal) +#define V_R4REF(A) V_UNION(A,pfltVal) +#define V_R8(A) V_UNION(A,dblVal) +#define V_R8REF(A) V_UNION(A,pdblVal) +#define V_UINT(A) V_UNION(A,uintVal) +#define V_UINTREF(A) V_UNION(A,puintVal) +#define V_UI1(A) V_UNION(A,bVal) +#define V_UI1REF(A) V_UNION(A,pbVal) +#define V_UI2(A) V_UNION(A,uiVal) +#define V_UI2REF(A) V_UNION(A,puiVal) +#define V_UI4(A) V_UNION(A,ulVal) +#define V_UI4REF(A) V_UNION(A,pulVal) +#define V_UI8(A) V_UNION(A,ullVal) +#define V_UI8REF(A) V_UNION(A,pullVal) +#ifdef _WIN64 +#define V_UINT_PTR(A) V_UI8(A) +#define V_UINT_PTRREF(A) V_UI8REF(A) +#else +#define V_UINT_PTR(A) V_UI4(A) +#define V_UINT_PTRREF(A) V_UI4REF(A) +#endif +#define V_UNKNOWN(A) V_UNION(A,punkVal) +#define V_UNKNOWNREF(A) V_UNION(A,ppunkVal) +#define V_VARIANTREF(A) V_UNION(A,pvarVal) + +void WINAPI VariantInit(VARIANT*); +HRESULT WINAPI VariantClear(VARIANT*); +HRESULT WINAPI VariantCopy(VARIANT*,VARIANT*); +HRESULT WINAPI VariantCopyInd(VARIANT*,VARIANT*); +HRESULT WINAPI VariantChangeType(VARIANT*,VARIANT*,USHORT,VARTYPE); +HRESULT WINAPI VariantChangeTypeEx(VARIANT*,VARIANT*,LCID,USHORT,VARTYPE); + +/* VariantChangeType/VariantChangeTypeEx flags */ +#define VARIANT_NOVALUEPROP 0x01 /* Don't get the default value property from IDispatch */ +#define VARIANT_ALPHABOOL 0x02 /* Coerce to "True"|"False" instead of "-1"|"0" */ +#define VARIANT_NOUSEROVERRIDE 0x04 /* Pass LOCALE_NOUSEROVERRIDE to low level conversions */ +#define VARIANT_CALENDAR_HIJRI 0x08 /* Use the Hijri calendar */ +#define VARIANT_LOCALBOOL 0x10 /* Like VARIANT_ALPHABOOL, but use localised text */ +#define VARIANT_CALENDAR_THAI 0x20 /* Use the Thai buddhist calendar */ +#define VARIANT_CALENDAR_GREGORIAN 0x40 /* Use the Gregorian calendar */ +#define VARIANT_USE_NLS 0x80 /* Format result using NLS calls */ + +/* + * Low level Variant coercion functions + */ + +#define VT_HARDTYPE VT_RESERVED /* Don't coerce this variant when comparing it to others */ + +/* Flags for low level coercions. LOCALE_ flags can also be passed */ +#define VAR_TIMEVALUEONLY 0x001 /* Ignore date portion of VT_DATE */ +#define VAR_DATEVALUEONLY 0x002 /* Ignore time portion of VT_DATE */ +#define VAR_VALIDDATE 0x004 +#define VAR_CALENDAR_HIJRI 0x008 /* Use the Hijri calendar */ +#define VAR_LOCALBOOL 0x010 /* VT_BOOL<->VT_BSTR: Use localised boolean text */ +#define VAR_FORMAT_NOSUBSTITUTE 0x020 /* Don't change format strings for un-coercable types */ +#define VAR_FOURDIGITYEARS 0x040 /* Always print years with 4 digits */ +#define VAR_CALENDAR_THAI 0x080 /* Use the Thai buddhist calendar */ +#define VAR_CALENDAR_GREGORIAN 0x100 /* Use the Gregorian calendar */ + +#ifndef LOCALE_USE_NLS +/* This is missing from native winnls.h, but may be added at some point */ +#define LOCALE_USE_NLS 0x10000000 +#endif + +#define VTDATEGRE_MIN -657434 /* Minimum possible Gregorian date: 1/1/100 */ +#define VTDATEGRE_MAX 2958465 /* Maximum possible Gregorian date: 31/12/9999 */ + +HRESULT WINAPI VarUI1FromI2(SHORT,BYTE*); +HRESULT WINAPI VarUI1FromI4(LONG,BYTE*); +HRESULT WINAPI VarUI1FromI8(LONG64,BYTE*); +HRESULT WINAPI VarUI1FromR4(FLOAT,BYTE*); +HRESULT WINAPI VarUI1FromR8(DOUBLE,BYTE*); +HRESULT WINAPI VarUI1FromDate(DATE,BYTE*); +HRESULT WINAPI VarUI1FromBool(VARIANT_BOOL,BYTE*); +HRESULT WINAPI VarUI1FromI1(signed char,BYTE*); +HRESULT WINAPI VarUI1FromUI2(USHORT,BYTE*); +HRESULT WINAPI VarUI1FromUI4(ULONG,BYTE*); +HRESULT WINAPI VarUI1FromUI8(ULONG64,BYTE*); +HRESULT WINAPI VarUI1FromStr(OLECHAR*,LCID,ULONG,BYTE*); +HRESULT WINAPI VarUI1FromCy(CY,BYTE*); +HRESULT WINAPI VarUI1FromDec(DECIMAL*,BYTE*); +HRESULT WINAPI VarUI1FromDisp(IDispatch*,LCID,BYTE*); + +HRESULT WINAPI VarI2FromUI1(BYTE,SHORT*); +HRESULT WINAPI VarI2FromI4(LONG,SHORT*); +HRESULT WINAPI VarI2FromI8(LONG64,SHORT*); +HRESULT WINAPI VarI2FromR4(FLOAT,SHORT*); +HRESULT WINAPI VarI2FromR8(DOUBLE,SHORT*); +HRESULT WINAPI VarI2FromDate(DATE,SHORT*); +HRESULT WINAPI VarI2FromBool(VARIANT_BOOL,SHORT*); +HRESULT WINAPI VarI2FromI1(signed char,SHORT*); +HRESULT WINAPI VarI2FromUI2(USHORT,SHORT*); +HRESULT WINAPI VarI2FromUI4(ULONG,SHORT*); +HRESULT WINAPI VarI2FromUI8(ULONG64,SHORT*); +HRESULT WINAPI VarI2FromStr(OLECHAR*,LCID,ULONG,SHORT*); +HRESULT WINAPI VarI2FromCy(CY,SHORT*); +HRESULT WINAPI VarI2FromDec(DECIMAL*,SHORT*); +HRESULT WINAPI VarI2FromDisp(IDispatch*,LCID,SHORT*); + +HRESULT WINAPI VarI4FromUI1(BYTE,LONG*); +HRESULT WINAPI VarI4FromI2(SHORT,LONG*); +HRESULT WINAPI VarI4FromI8(LONG64,LONG*); +HRESULT WINAPI VarI4FromR4(FLOAT,LONG*); +HRESULT WINAPI VarI4FromR8(DOUBLE,LONG*); +HRESULT WINAPI VarI4FromDate(DATE,LONG*); +HRESULT WINAPI VarI4FromBool(VARIANT_BOOL,LONG*); +HRESULT WINAPI VarI4FromI1(signed char,LONG*); +HRESULT WINAPI VarI4FromUI2(USHORT,LONG*); +HRESULT WINAPI VarI4FromUI4(ULONG,LONG*); +HRESULT WINAPI VarI4FromUI8(ULONG64,LONG*); +HRESULT WINAPI VarI4FromStr(OLECHAR*,LCID,ULONG,LONG*); +HRESULT WINAPI VarI4FromCy(CY,LONG*); +HRESULT WINAPI VarI4FromDec(DECIMAL*,LONG*); +HRESULT WINAPI VarI4FromDisp(IDispatch*,LCID,LONG*); + +HRESULT WINAPI VarI8FromUI1(BYTE,LONG64*); +HRESULT WINAPI VarI8FromI2(SHORT,LONG64*); +HRESULT WINAPI VarI8FromI4(LONG,LONG64*); +HRESULT WINAPI VarI8FromR4(FLOAT,LONG64*); +HRESULT WINAPI VarI8FromR8(DOUBLE,LONG64*); +HRESULT WINAPI VarI8FromDate(DATE,LONG64*); +HRESULT WINAPI VarI8FromStr(OLECHAR*,LCID,ULONG,LONG64*); +HRESULT WINAPI VarI8FromBool(VARIANT_BOOL,LONG64*); +HRESULT WINAPI VarI8FromI1(signed char,LONG64*); +HRESULT WINAPI VarI8FromUI2(USHORT,LONG64*); +HRESULT WINAPI VarI8FromUI4(ULONG,LONG64*); +HRESULT WINAPI VarI8FromUI8(ULONG64,LONG64*); +HRESULT WINAPI VarI8FromDec(DECIMAL *pdecIn,LONG64*); +HRESULT WINAPI VarI8FromInt(INT intIn,LONG64*); +HRESULT WINAPI VarI8FromCy(CY,LONG64*); +HRESULT WINAPI VarI8FromDisp(IDispatch*,LCID,LONG64*); + +HRESULT WINAPI VarR4FromUI1(BYTE,FLOAT*); +HRESULT WINAPI VarR4FromI2(SHORT,FLOAT*); +HRESULT WINAPI VarR4FromI4(LONG,FLOAT*); +HRESULT WINAPI VarR4FromI8(LONG64,FLOAT*); +HRESULT WINAPI VarR4FromR8(DOUBLE,FLOAT*); +HRESULT WINAPI VarR4FromDate(DATE,FLOAT*); +HRESULT WINAPI VarR4FromBool(VARIANT_BOOL,FLOAT*); +HRESULT WINAPI VarR4FromI1(signed char,FLOAT*); +HRESULT WINAPI VarR4FromUI2(USHORT,FLOAT*); +HRESULT WINAPI VarR4FromUI4(ULONG,FLOAT*); +HRESULT WINAPI VarR4FromUI8(ULONG64,FLOAT*); +HRESULT WINAPI VarR4FromStr(OLECHAR*,LCID,ULONG,FLOAT*); +HRESULT WINAPI VarR4FromCy(CY,FLOAT*); +HRESULT WINAPI VarR4FromDec(DECIMAL*,FLOAT*); +HRESULT WINAPI VarR4FromDisp(IDispatch*,LCID,FLOAT*); + +HRESULT WINAPI VarR8FromUI1(BYTE,double*); +HRESULT WINAPI VarR8FromI2(SHORT,double*); +HRESULT WINAPI VarR8FromI4(LONG,double*); +HRESULT WINAPI VarR8FromI8(LONG64,double*); +HRESULT WINAPI VarR8FromR4(FLOAT,double*); +HRESULT WINAPI VarR8FromDate(DATE,double*); +HRESULT WINAPI VarR8FromBool(VARIANT_BOOL,double*); +HRESULT WINAPI VarR8FromI1(signed char,double*); +HRESULT WINAPI VarR8FromUI2(USHORT,double*); +HRESULT WINAPI VarR8FromUI4(ULONG,double*); +HRESULT WINAPI VarR8FromUI8(ULONG64,double*); +HRESULT WINAPI VarR8FromStr(OLECHAR*,LCID,ULONG,double*); +HRESULT WINAPI VarR8FromCy(CY,double*); +HRESULT WINAPI VarR8FromDec(DECIMAL*,double*); +HRESULT WINAPI VarR8FromDisp(IDispatch*,LCID,double*); + +HRESULT WINAPI VarDateFromUI1(BYTE,DATE*); +HRESULT WINAPI VarDateFromI2(SHORT,DATE*); +HRESULT WINAPI VarDateFromI4(LONG,DATE*); +HRESULT WINAPI VarDateFromI8(LONG64,DATE*); +HRESULT WINAPI VarDateFromR4(FLOAT,DATE*); +HRESULT WINAPI VarDateFromR8(DOUBLE,DATE*); +HRESULT WINAPI VarDateFromStr(OLECHAR*,LCID,ULONG,DATE*); +HRESULT WINAPI VarDateFromI1(signed char,DATE*); +HRESULT WINAPI VarDateFromUI2(USHORT,DATE*); +HRESULT WINAPI VarDateFromUI4(ULONG,DATE*); +HRESULT WINAPI VarDateFromUI8(ULONG64,DATE*); +HRESULT WINAPI VarDateFromBool(VARIANT_BOOL,DATE*); +HRESULT WINAPI VarDateFromCy(CY,DATE*); +HRESULT WINAPI VarDateFromDec(DECIMAL*,DATE*); +HRESULT WINAPI VarDateFromDisp(IDispatch*,LCID,DATE*); + +HRESULT WINAPI VarCyFromUI1(BYTE,CY*); +HRESULT WINAPI VarCyFromI2(SHORT sIn,CY*); +HRESULT WINAPI VarCyFromI4(LONG,CY*); +HRESULT WINAPI VarCyFromI8(LONG64,CY*); +HRESULT WINAPI VarCyFromR4(FLOAT,CY*); +HRESULT WINAPI VarCyFromR8(DOUBLE,CY*); +HRESULT WINAPI VarCyFromDate(DATE,CY*); +HRESULT WINAPI VarCyFromStr(OLECHAR*,LCID,ULONG,CY*); +HRESULT WINAPI VarCyFromBool(VARIANT_BOOL,CY*); +HRESULT WINAPI VarCyFromI1(signed char,CY*); +HRESULT WINAPI VarCyFromUI2(USHORT,CY*); +HRESULT WINAPI VarCyFromUI4(ULONG,CY*); +HRESULT WINAPI VarCyFromUI8(ULONG64,CY*); +HRESULT WINAPI VarCyFromDec(DECIMAL*,CY*); +HRESULT WINAPI VarCyFromDisp(IDispatch*,LCID,CY*); + +HRESULT WINAPI VarBstrFromUI1(BYTE,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromI2(SHORT,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromI4(LONG,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromI8(LONG64,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromR4(FLOAT,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromR8(DOUBLE,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromDate(DATE,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromI1(signed char,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromUI2(USHORT,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromUI8(ULONG64,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromUI4(ULONG,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromCy(CY,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromDec(DECIMAL*,LCID,ULONG,BSTR*); +HRESULT WINAPI VarBstrFromDisp(IDispatch*,LCID,ULONG,BSTR*); + +HRESULT WINAPI VarBoolFromUI1(BYTE,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromI2(SHORT,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromI4(LONG,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromI8(LONG64,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromR4(FLOAT,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromR8(DOUBLE,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromDate(DATE,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromStr(OLECHAR*,LCID,ULONG,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromI1(signed char,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromUI2(USHORT,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromUI4(ULONG,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromUI8(ULONG64,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromCy(CY,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromDec(DECIMAL*,VARIANT_BOOL*); +HRESULT WINAPI VarBoolFromDisp(IDispatch*,LCID,VARIANT_BOOL*); + +HRESULT WINAPI VarI1FromUI1(BYTE,signed char*); +HRESULT WINAPI VarI1FromI2(SHORT,signed char*); +HRESULT WINAPI VarI1FromI4(LONG,signed char*); +HRESULT WINAPI VarI1FromI8(LONG64,signed char*); +HRESULT WINAPI VarI1FromR4(FLOAT,signed char*); +HRESULT WINAPI VarI1FromR8(DOUBLE,signed char*); +HRESULT WINAPI VarI1FromDate(DATE,signed char*); +HRESULT WINAPI VarI1FromStr(OLECHAR*,LCID,ULONG,signed char*); +HRESULT WINAPI VarI1FromBool(VARIANT_BOOL,signed char*); +HRESULT WINAPI VarI1FromUI2(USHORT,signed char*); +HRESULT WINAPI VarI1FromUI4(ULONG,signed char*); +HRESULT WINAPI VarI1FromUI8(ULONG64,signed char*); +HRESULT WINAPI VarI1FromCy(CY,signed char*); +HRESULT WINAPI VarI1FromDec(DECIMAL*,signed char*); +HRESULT WINAPI VarI1FromDisp(IDispatch*,LCID,signed char*); + +HRESULT WINAPI VarUI2FromUI1(BYTE,USHORT*); +HRESULT WINAPI VarUI2FromI2(SHORT,USHORT*); +HRESULT WINAPI VarUI2FromI4(LONG,USHORT*); +HRESULT WINAPI VarUI2FromI8(LONG64,USHORT*); +HRESULT WINAPI VarUI2FromR4(FLOAT,USHORT*); +HRESULT WINAPI VarUI2FromR8(DOUBLE,USHORT*); +HRESULT WINAPI VarUI2FromDate(DATE,USHORT*); +HRESULT WINAPI VarUI2FromStr(OLECHAR*,LCID,ULONG,USHORT*); +HRESULT WINAPI VarUI2FromBool(VARIANT_BOOL,USHORT*); +HRESULT WINAPI VarUI2FromI1(signed char,USHORT*); +HRESULT WINAPI VarUI2FromUI4(ULONG,USHORT*); +HRESULT WINAPI VarUI2FromUI8(ULONG64,USHORT*); +HRESULT WINAPI VarUI2FromCy(CY,USHORT*); +HRESULT WINAPI VarUI2FromDec(DECIMAL*,USHORT*); +HRESULT WINAPI VarUI2FromDisp(IDispatch*,LCID,USHORT*); + +HRESULT WINAPI VarUI4FromStr(OLECHAR*,LCID,ULONG,ULONG*); +HRESULT WINAPI VarUI4FromUI1(BYTE,ULONG*); +HRESULT WINAPI VarUI4FromI2(SHORT,ULONG*); +HRESULT WINAPI VarUI4FromI4(LONG,ULONG*); +HRESULT WINAPI VarUI4FromI8(LONG64,ULONG*); +HRESULT WINAPI VarUI4FromR4(FLOAT,ULONG*); +HRESULT WINAPI VarUI4FromR8(DOUBLE,ULONG*); +HRESULT WINAPI VarUI4FromDate(DATE,ULONG*); +HRESULT WINAPI VarUI4FromBool(VARIANT_BOOL,ULONG*); +HRESULT WINAPI VarUI4FromI1(signed char,ULONG*); +HRESULT WINAPI VarUI4FromUI2(USHORT,ULONG*); +HRESULT WINAPI VarUI4FromUI8(ULONG64,ULONG*); +HRESULT WINAPI VarUI4FromCy(CY,ULONG*); +HRESULT WINAPI VarUI4FromDec(DECIMAL*,ULONG*); +HRESULT WINAPI VarUI4FromDisp(IDispatch*,LCID,ULONG*); + +HRESULT WINAPI VarUI8FromUI1(BYTE,ULONG64*); +HRESULT WINAPI VarUI8FromI2(SHORT,ULONG64*); +HRESULT WINAPI VarUI8FromI4(LONG,ULONG64*); +HRESULT WINAPI VarUI8FromI8(LONG64,ULONG64*); +HRESULT WINAPI VarUI8FromR4(FLOAT,ULONG64*); +HRESULT WINAPI VarUI8FromR8(DOUBLE,ULONG64*); +HRESULT WINAPI VarUI8FromDate(DATE,ULONG64*); +HRESULT WINAPI VarUI8FromStr(OLECHAR*,LCID,ULONG,ULONG64*); +HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL,ULONG64*); +HRESULT WINAPI VarUI8FromI1(signed char,ULONG64*); +HRESULT WINAPI VarUI8FromUI2(USHORT,ULONG64*); +HRESULT WINAPI VarUI8FromUI4(ULONG,ULONG64*); +HRESULT WINAPI VarUI8FromDec(DECIMAL*,ULONG64*); +HRESULT WINAPI VarUI8FromInt(INT,ULONG64*); +HRESULT WINAPI VarUI8FromCy(CY,ULONG64*); +HRESULT WINAPI VarUI8FromDisp(IDispatch*,LCID,ULONG64*); + +HRESULT WINAPI VarDecFromUI1(BYTE,DECIMAL*); +HRESULT WINAPI VarDecFromI2(SHORT,DECIMAL*); +HRESULT WINAPI VarDecFromI4(LONG,DECIMAL*); +HRESULT WINAPI VarDecFromI8(LONG64,DECIMAL*); +HRESULT WINAPI VarDecFromR4(FLOAT,DECIMAL*); +HRESULT WINAPI VarDecFromR8(DOUBLE,DECIMAL*); +HRESULT WINAPI VarDecFromDate(DATE,DECIMAL*); +HRESULT WINAPI VarDecFromStr(OLECHAR*,LCID,ULONG,DECIMAL*); +HRESULT WINAPI VarDecFromBool(VARIANT_BOOL,DECIMAL*); +HRESULT WINAPI VarDecFromI1(signed char,DECIMAL*); +HRESULT WINAPI VarDecFromUI2(USHORT,DECIMAL*); +HRESULT WINAPI VarDecFromUI4(ULONG,DECIMAL*); +HRESULT WINAPI VarDecFromUI8(ULONG64,DECIMAL*); +HRESULT WINAPI VarDecFromCy(CY,DECIMAL*); +HRESULT WINAPI VarDecFromDisp(IDispatch*,LCID,DECIMAL*); + +#define VarUI4FromUI4( in,pOut ) ( *(pOut) = (in) ) +#define VarI4FromI4( in,pOut ) ( *(pOut) = (in) ) + +#define VarUI1FromInt VarUI1FromI4 +#define VarUI1FromUint VarUI1FromUI4 +#define VarI2FromInt VarI2FromI4 +#define VarI2FromUint VarI2FromUI4 +#define VarI4FromInt VarI4FromI4 +#define VarI4FromUint VarI4FromUI4 +#define VarI8FromInt VarI8FromI4 +#define VarI8FromUint VarI8FromUI4 +#define VarR4FromInt VarR4FromI4 +#define VarR4FromUint VarR4FromUI4 +#define VarR8FromInt VarR8FromI4 +#define VarR8FromUint VarR8FromUI4 +#define VarDateFromInt VarDateFromI4 +#define VarDateFromUint VarDateFromUI4 +#define VarCyFromInt VarCyFromI4 +#define VarCyFromUint VarCyFromUI4 +#define VarBstrFromInt VarBstrFromI4 +#define VarBstrFromUint VarBstrFromUI4 +#define VarBoolFromInt VarBoolFromI4 +#define VarBoolFromUint VarBoolFromUI4 +#define VarI1FromInt VarI1FromI4 +#define VarI1FromUint VarI1FromUI4 +#define VarUI2FromInt VarUI2FromI4 +#define VarUI2FromUint VarUI2FromUI4 +#define VarUI4FromInt VarUI4FromI4 +#define VarUI4FromUint VarUI4FromUI4 +#define VarUI8FromInt VarUI8FromI4 +#define VarUI8FromUint VarUI8FromUI4 +#define VarDecFromInt VarDecFromI4 +#define VarDecFromUint VarDecFromUI4 +#define VarIntFromUI1 VarI4FromUI1 +#define VarIntFromI2 VarI4FromI2 +#define VarIntFromI4 VarI4FromI4 +#define VarIntFromI8 VarI4FromI8 +#define VarIntFromR4 VarI4FromR4 +#define VarIntFromR8 VarI4FromR8 +#define VarIntFromDate VarI4FromDate +#define VarIntFromCy VarI4FromCy +#define VarIntFromStr VarI4FromStr +#define VarIntFromDisp VarI4FromDisp +#define VarIntFromBool VarI4FromBool +#define VarIntFromI1 VarI4FromI1 +#define VarIntFromUI2 VarI4FromUI2 +#define VarIntFromUI4 VarI4FromUI4 +#define VarIntFromUI8 VarI4FromUI8 +#define VarIntFromDec VarI4FromDec +#define VarIntFromUint VarI4FromUI4 +#define VarUintFromUI1 VarUI4FromUI1 +#define VarUintFromI2 VarUI4FromI2 +#define VarUintFromI4 VarUI4FromI4 +#define VarUintFromI8 VarUI4FromI8 +#define VarUintFromR4 VarUI4FromR4 +#define VarUintFromR8 VarUI4FromR8 +#define VarUintFromDate VarUI4FromDate +#define VarUintFromCy VarUI4FromCy +#define VarUintFromStr VarUI4FromStr +#define VarUintFromDisp VarUI4FromDisp +#define VarUintFromBool VarUI4FromBool +#define VarUintFromI1 VarUI4FromI1 +#define VarUintFromUI2 VarUI4FromUI2 +#define VarUintFromUI4 VarUI4FromUI4 +#define VarUintFromUI8 VarUI4FromUI8 +#define VarUintFromDec VarUI4FromDec +#define VarUintFromInt VarUI4FromI4 + +/* + * Variant Math operations + */ +#define VARCMP_LT 0 +#define VARCMP_EQ 1 +#define VARCMP_GT 2 +#define VARCMP_NULL 3 + +HRESULT WINAPI VarR4CmpR8(float,double); + +HRESULT WINAPI VarR8Pow(double,double,double*); +HRESULT WINAPI VarR8Round(double,int,double*); + +HRESULT WINAPI VarDecAbs(const DECIMAL*,DECIMAL*); +HRESULT WINAPI VarDecAdd(const DECIMAL*,const DECIMAL*,DECIMAL*); +HRESULT WINAPI VarDecCmp(const DECIMAL*,const DECIMAL*); +HRESULT WINAPI VarDecCmpR8(const DECIMAL*,DOUBLE); +HRESULT WINAPI VarDecDiv(const DECIMAL*,const DECIMAL*,DECIMAL*); +HRESULT WINAPI VarDecFix(const DECIMAL*,DECIMAL*); +HRESULT WINAPI VarDecInt(const DECIMAL*,DECIMAL*); +HRESULT WINAPI VarDecMul(const DECIMAL*,const DECIMAL*,DECIMAL*); +HRESULT WINAPI VarDecNeg(const DECIMAL*,DECIMAL*); +HRESULT WINAPI VarDecRound(const DECIMAL*,int,DECIMAL*); +HRESULT WINAPI VarDecSub(const DECIMAL*,const DECIMAL*,DECIMAL*); + +HRESULT WINAPI VarCyAbs(const CY,CY*); +HRESULT WINAPI VarCyAdd(const CY,const CY,CY*); +HRESULT WINAPI VarCyCmp(const CY,const CY); +HRESULT WINAPI VarCyCmpR8(const CY,DOUBLE); +HRESULT WINAPI VarCyFix(const CY,CY*); +HRESULT WINAPI VarCyInt(const CY,CY*); +HRESULT WINAPI VarCyMul(const CY,CY,CY*); +HRESULT WINAPI VarCyMulI4(const CY,LONG,CY*); +HRESULT WINAPI VarCyMulI8(const CY,LONG64,CY*); +HRESULT WINAPI VarCyNeg(const CY,CY*); +HRESULT WINAPI VarCyRound(const CY,INT,CY*); +HRESULT WINAPI VarCySub(const CY,const CY,CY*); + +HRESULT WINAPI VarAdd(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarAnd(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarCat(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarDiv(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarEqv(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarIdiv(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarImp(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarMod(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarMul(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarOr(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarPow(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarSub(LPVARIANT,LPVARIANT,LPVARIANT); +HRESULT WINAPI VarXor(LPVARIANT,LPVARIANT,LPVARIANT); + +HRESULT WINAPI VarAbs(LPVARIANT,LPVARIANT); +HRESULT WINAPI VarFix(LPVARIANT,LPVARIANT); +HRESULT WINAPI VarInt(LPVARIANT,LPVARIANT); +HRESULT WINAPI VarNeg(LPVARIANT,LPVARIANT); +HRESULT WINAPI VarNot(LPVARIANT,LPVARIANT); + +HRESULT WINAPI VarRound(LPVARIANT,int,LPVARIANT); + +HRESULT WINAPI VarCmp(LPVARIANT,LPVARIANT,LCID,ULONG); + +HRESULT WINAPI VarBstrCmp(BSTR,BSTR,LCID,ULONG); +HRESULT WINAPI VarBstrCat(BSTR,BSTR,BSTR*); -typedef enum tagREGKIND { - REGKIND_DEFAULT, - REGKIND_REGISTER, - REGKIND_NONE -} REGKIND; -typedef struct tagPARAMDATA { - OLECHAR *szName; - VARTYPE vt; -} PARAMDATA,*LPPARAMDATA; -typedef struct tagMETHODDATA { - OLECHAR *szName; - PARAMDATA *ppdata; - DISPID dispid; - UINT iMeth; - CALLCONV cc; - UINT cArgs; - WORD wFlags; - VARTYPE vtReturn; -} METHODDATA,*LPMETHODDATA; -typedef struct tagINTERFACEDATA { - METHODDATA *pmethdata; - UINT cMembers; -} INTERFACEDATA,*LPINTERFACEDATA; typedef struct { - SYSTEMTIME st; - USHORT wDayOfYear; + SYSTEMTIME st; + USHORT wDayOfYear; } UDATE; -typedef struct { - int cDig; - unsigned long dwInFlags; - unsigned long dwOutFlags; - int cchUsed; - int nBaseShift; - int nPwr10; +typedef struct +{ + INT cDig; /* Number of parsed digits */ + ULONG dwInFlags; /* Acceptable state of the input string (NUMPRS_ flags) */ + ULONG dwOutFlags; /* Parsed state of the output string (NUMPRS_ flags) */ + INT cchUsed; /* Number of characters parsed from input string */ + INT nBaseShift; /* Base of the number (but apparently unused) */ + INT nPwr10; /* Scale of the number in powers of 10 */ } NUMPARSE; -WINOLEAUTAPI_(BSTR) SysAllocString(const OLECHAR*); -WINOLEAUTAPI_(int) SysReAllocString(BSTR*,const OLECHAR*); -WINOLEAUTAPI_(BSTR) SysAllocStringLen(const OLECHAR*,unsigned int); -WINOLEAUTAPI_(int) SysReAllocStringLen(BSTR*,const OLECHAR*,unsigned int); -WINOLEAUTAPI_(void) SysFreeString(BSTR); -WINOLEAUTAPI_(unsigned int) SysStringLen(BSTR); -WINOLEAUTAPI_(unsigned int) SysStringByteLen(BSTR); -WINOLEAUTAPI_(BSTR) SysAllocStringByteLen(const char*,unsigned int); -WINOLEAUTAPI_(int) DosDateTimeToVariantTime(unsigned short,unsigned short,double*); -WINOLEAUTAPI_(int) VariantTimeToDosDateTime(double,unsigned short*,unsigned short*); -WINOLEAUTAPI_(int) VariantTimeToSystemTime(double,LPSYSTEMTIME); -WINOLEAUTAPI_(int) SystemTimeToVariantTime(LPSYSTEMTIME, double*); -WINOLEAUTAPI VarDateFromUdate(UDATE*,ULONG,DATE*); -WINOLEAUTAPI VarDateFromUdateEx(UDATE*,LCID,ULONG,DATE*); -WINOLEAUTAPI VarUdateFromDate(DATE,ULONG,UDATE*); -WINOLEAUTAPI SafeArrayAllocDescriptor(unsigned int,SAFEARRAY**); -WINOLEAUTAPI SafeArrayAllocData(SAFEARRAY*); -WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreate(VARTYPE,unsigned int,SAFEARRAYBOUND*); -WINOLEAUTAPI SafeArrayDestroyDescriptor(SAFEARRAY*); -WINOLEAUTAPI SafeArrayDestroyData(SAFEARRAY*); -WINOLEAUTAPI SafeArrayDestroy(SAFEARRAY*); -WINOLEAUTAPI SafeArrayRedim(SAFEARRAY*,SAFEARRAYBOUND*); -WINOLEAUTAPI_(unsigned int) SafeArrayGetDim(SAFEARRAY*); -WINOLEAUTAPI_(unsigned int) SafeArrayGetElemsize(SAFEARRAY*); -WINOLEAUTAPI SafeArrayGetUBound(SAFEARRAY*,unsigned int,long*); -WINOLEAUTAPI SafeArrayGetLBound(SAFEARRAY*,unsigned int,long*); -WINOLEAUTAPI SafeArrayLock(SAFEARRAY*); -WINOLEAUTAPI SafeArrayUnlock(SAFEARRAY*); -WINOLEAUTAPI SafeArrayAccessData(SAFEARRAY*,void**); -WINOLEAUTAPI SafeArrayUnaccessData(SAFEARRAY*); -WINOLEAUTAPI SafeArrayGetElement(SAFEARRAY*,long*,void*); -WINOLEAUTAPI SafeArrayPutElement(SAFEARRAY*,long*,void*); -WINOLEAUTAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**); -WINOLEAUTAPI SafeArrayPtrOfIndex(SAFEARRAY*,long*,void**); -WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVector(VARTYPE,LONG,ULONG); -WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVectorEx(VARTYPE,LONG,ULONG,LPVOID); -WINOLEAUTAPI SafeArrayAllocDescriptorEx(VARTYPE,UINT,SAFEARRAY**); -WINOLEAUTAPI SafeArrayGetVartype(SAFEARRAY*,VARTYPE*); -WINOLEAUTAPI SafeArraySetRecordInfo(SAFEARRAY*,IRecordInfo*); -WINOLEAUTAPI SafeArrayGetRecordInfo(SAFEARRAY*,IRecordInfo**); -WINOLEAUTAPI SafeArraySetIID(SAFEARRAY*,REFGUID); -WINOLEAUTAPI SafeArrayGetIID(SAFEARRAY*,GUID*); -WINOLEAUTAPI_(void) VariantInit(VARIANTARG*); -WINOLEAUTAPI VariantClear(VARIANTARG*); -WINOLEAUTAPI VariantCopy(VARIANTARG*,VARIANTARG*); -WINOLEAUTAPI VariantCopyInd(VARIANT*,VARIANTARG*); -WINOLEAUTAPI VariantChangeType(VARIANTARG*,VARIANTARG*,unsigned short,VARTYPE); -WINOLEAUTAPI VariantChangeTypeEx(VARIANTARG*,VARIANTARG*,LCID,unsigned short,VARTYPE); -WINOLEAUTAPI VarUI1FromI2(short,unsigned char*); -WINOLEAUTAPI VarUI1FromI4(long,unsigned char*); -WINOLEAUTAPI VarUI1FromR4(float,unsigned char*); -WINOLEAUTAPI VarUI1FromR8(double,unsigned char*); -WINOLEAUTAPI VarUI1FromCy(CY,unsigned char*); -WINOLEAUTAPI VarUI1FromDate(DATE,unsigned char*); -WINOLEAUTAPI VarUI1FromStr(OLECHAR*,LCID,unsigned long,unsigned char*); -WINOLEAUTAPI VarUI1FromDisp(LPDISPATCH,LCID,unsigned char*); -WINOLEAUTAPI VarUI1FromBool(VARIANT_BOOL,unsigned char*); -WINOLEAUTAPI VarI2FromUI1(unsigned char,short*); -WINOLEAUTAPI VarI2FromI4(long,short*); -WINOLEAUTAPI VarI2FromR4(float,short*); -WINOLEAUTAPI VarI2FromR8(double,short*); -WINOLEAUTAPI VarI2FromCy(CY cyIn,short*); -WINOLEAUTAPI VarI2FromDate(DATE,short*); -WINOLEAUTAPI VarI2FromStr(OLECHAR*,LCID,unsigned long,short*); -WINOLEAUTAPI VarI2FromDisp(LPDISPATCH,LCID,short*); -WINOLEAUTAPI VarI2FromBool(VARIANT_BOOL,short*); -WINOLEAUTAPI VarI4FromUI1(unsigned char,long*); -WINOLEAUTAPI VarI4FromI2(short,long*); -WINOLEAUTAPI VarI4FromR4(float,long*); -WINOLEAUTAPI VarI4FromR8(double,long*); -WINOLEAUTAPI VarI4FromCy(CY,long*); -WINOLEAUTAPI VarI4FromDate(DATE,long*); -WINOLEAUTAPI VarI4FromStr(OLECHAR*,LCID,unsigned long,long*); -WINOLEAUTAPI VarI4FromDisp(LPDISPATCH,LCID,long*); -WINOLEAUTAPI VarI4FromBool(VARIANT_BOOL,long*); -WINOLEAUTAPI VarR4FromUI1(unsigned char,float*); -WINOLEAUTAPI VarR4FromI2(short,float*); -WINOLEAUTAPI VarR4FromI4(long,float*); -WINOLEAUTAPI VarR4FromR8(double,float*); -WINOLEAUTAPI VarR4FromCy(CY,float*); -WINOLEAUTAPI VarR4FromDate(DATE,float*); -WINOLEAUTAPI VarR4FromStr(OLECHAR*,LCID,unsigned long,float*); -WINOLEAUTAPI VarR4FromDisp(LPDISPATCH,LCID,float*); -WINOLEAUTAPI VarR4FromBool(VARIANT_BOOL,float*); -WINOLEAUTAPI VarR8FromUI1(unsigned char,double*); -WINOLEAUTAPI VarR8FromI2(short,double*); -WINOLEAUTAPI VarR8FromI4(long,double*); -WINOLEAUTAPI VarR8FromR4(float,double*); -WINOLEAUTAPI VarR8FromCy(CY,double*); -WINOLEAUTAPI VarR8FromDate(DATE,double*); -WINOLEAUTAPI VarR8FromStr(OLECHAR*,LCID,unsigned long,double*); -WINOLEAUTAPI VarR8FromDisp(LPDISPATCH,LCID,double*); -WINOLEAUTAPI VarR8FromBool(VARIANT_BOOL,double*); -WINOLEAUTAPI VarR8FromDec(DECIMAL*,double*); -WINOLEAUTAPI VarDateFromUI1(unsigned char,DATE*); -WINOLEAUTAPI VarDateFromI2(short,DATE*); -WINOLEAUTAPI VarDateFromI4(long,DATE*); -WINOLEAUTAPI VarDateFromR4(float,DATE*); -WINOLEAUTAPI VarDateFromR8(double,DATE*); -WINOLEAUTAPI VarDateFromCy(CY,DATE*); -WINOLEAUTAPI VarDateFromStr(OLECHAR*,LCID,unsigned long,DATE*); -WINOLEAUTAPI VarDateFromDisp(LPDISPATCH,LCID,DATE*); -WINOLEAUTAPI VarDateFromBool(VARIANT_BOOL,DATE*); -WINOLEAUTAPI VarCyFromUI1(unsigned char,CY*); -WINOLEAUTAPI VarCyFromI2(short,CY*); -WINOLEAUTAPI VarCyFromI4(long,CY*); -WINOLEAUTAPI VarCyFromR4(float,CY*); -WINOLEAUTAPI VarCyFromR8(double,CY*); -WINOLEAUTAPI VarCyFromDate(DATE,CY*); -WINOLEAUTAPI VarCyFromStr(OLECHAR*,LCID,unsigned long,CY*); -WINOLEAUTAPI VarCyFromDisp(LPDISPATCH,LCID,CY*); -WINOLEAUTAPI VarCyFromBool(VARIANT_BOOL,CY*); -WINOLEAUTAPI VarBstrFromUI1(unsigned char,LCID,unsigned long,BSTR*); -WINOLEAUTAPI VarBstrFromI2(short,LCID,unsigned long,BSTR*); -WINOLEAUTAPI VarBstrFromI4(long,LCID,unsigned long,BSTR*); -WINOLEAUTAPI VarBstrFromR4(float,LCID,unsigned long,BSTR*); -WINOLEAUTAPI VarBstrFromR8(double,LCID,unsigned long,BSTR*); -WINOLEAUTAPI VarBstrFromCy(CY,LCID,unsigned long,BSTR*); -WINOLEAUTAPI VarBstrFromDate(DATE,LCID,unsigned long,BSTR*); -WINOLEAUTAPI VarBstrFromDisp(LPDISPATCH,LCID,unsigned long,BSTR*); -WINOLEAUTAPI VarBstrFromBool(VARIANT_BOOL,LCID,unsigned long,BSTR*); -WINOLEAUTAPI VarBoolFromUI1(unsigned char,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromI2(short,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromI4(long,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromR4(float,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromR8(double,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromDate(DATE,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromCy(CY,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromStr(OLECHAR*,LCID,unsigned long,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromDisp(LPDISPATCH,LCID,VARIANT_BOOL*); -WINOLEAUTAPI VarDecFromR8(double,DECIMAL*); -WINOLEAUTAPI_(ULONG) LHashValOfNameSysA(SYSKIND,LCID,const char*); -WINOLEAUTAPI_(ULONG) LHashValOfNameSys(SYSKIND,LCID,const OLECHAR*); -WINOLEAUTAPI LoadTypeLib(const OLECHAR*,LPTYPELIB*); -WINOLEAUTAPI LoadTypeLibEx(LPCOLESTR,REGKIND,LPTYPELIB*); -WINOLEAUTAPI LoadRegTypeLib(REFGUID,WORD,WORD,LCID,LPTYPELIB*); -WINOLEAUTAPI QueryPathOfRegTypeLib(REFGUID,unsigned short,unsigned short,LCID,LPBSTR); -WINOLEAUTAPI RegisterTypeLib(LPTYPELIB,OLECHAR*,OLECHAR*); -WINOLEAUTAPI UnRegisterTypeLib(REFGUID,WORD,WORD,LCID,SYSKIND); -WINOLEAUTAPI CreateTypeLib(SYSKIND,const OLECHAR*,LPCREATETYPELIB*); -WINOLEAUTAPI DispGetParam(DISPPARAMS*,UINT,VARTYPE,VARIANT*,UINT*); -WINOLEAUTAPI DispGetIDsOfNames(LPTYPEINFO,OLECHAR**,UINT,DISPID*); -WINOLEAUTAPI DispInvoke(void*,LPTYPEINFO,DISPID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*); -WINOLEAUTAPI CreateDispTypeInfo(INTERFACEDATA*,LCID,LPTYPEINFO*); -WINOLEAUTAPI CreateStdDispatch(IUnknown*,void*,LPTYPEINFO,IUnknown**); -WINOLEAUTAPI RegisterActiveObject(IUnknown*,REFCLSID,DWORD,DWORD*); -WINOLEAUTAPI RevokeActiveObject(DWORD,void*); -WINOLEAUTAPI GetActiveObject(REFCLSID,void*,IUnknown**); -WINOLEAUTAPI SetErrorInfo(unsigned long,LPERRORINFO); -WINOLEAUTAPI GetErrorInfo(unsigned long,LPERRORINFO*); -WINOLEAUTAPI CreateErrorInfo(LPCREATEERRORINFO*); -WINOLEAUTAPI_(unsigned long) OaBuildVersion(void); -WINOLEAUTAPI VectorFromBstr (BSTR, SAFEARRAY **); -WINOLEAUTAPI BstrFromVector (SAFEARRAY *, BSTR *); -WINOLEAUTAPI VarParseNumFromStr(OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE*); -WINOLEAUTAPI VarNumFromParseNum(NUMPARSE*,BYTE*,ULONG,VARIANT*); -WINOLEAUTAPI GetRecordInfoFromTypeInfo(ITypeInfo*,IRecordInfo**); -WINOLEAUTAPI GetRecordInfoFromGuids(REFGUID,ULONG,ULONG,LCID,REFGUID,IRecordInfo**); +#define NUMPRS_LEADING_WHITE 0x00001 /* Leading whitespace */ +#define NUMPRS_TRAILING_WHITE 0x00002 /* Trailing whitespace */ +#define NUMPRS_LEADING_PLUS 0x00004 /* Leading '+' sign */ +#define NUMPRS_TRAILING_PLUS 0x00008 /* Trailing '+' sign */ +#define NUMPRS_LEADING_MINUS 0x00010 /* Leading '-' sign */ +#define NUMPRS_TRAILING_MINUS 0x00020 /* Trailing '-' sign */ +#define NUMPRS_HEX_OCT 0x00040 /* Octal number (with a leading 0) */ +#define NUMPRS_PARENS 0x00080 /* Parentheses for negative numbers */ +#define NUMPRS_DECIMAL 0x00100 /* Decimal separator */ +#define NUMPRS_THOUSANDS 0x00200 /* Thousands separator */ +#define NUMPRS_CURRENCY 0x00400 /* Currency symbol */ +#define NUMPRS_EXPONENT 0x00800 /* Exponent (e.g. "e-14") */ +#define NUMPRS_USE_ALL 0x01000 /* Parse the entire string */ +#define NUMPRS_STD 0x01FFF /* Standard flags for internal coercions (All of the above) */ +#define NUMPRS_NEG 0x10000 /* Number is negative (dwOutFlags only) */ +#define NUMPRS_INEXACT 0x20000 /* Number is represented inexactly (dwOutFlags only) */ -WINOLEAUTAPI VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); -WINOLEAUTAPI VarSub(LPVARIANT, LPVARIANT, LPVARIANT); -WINOLEAUTAPI VarMul(LPVARIANT, LPVARIANT, LPVARIANT); -WINOLEAUTAPI VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); +#define VTBIT_I1 (1 << VT_I1) +#define VTBIT_UI1 (1 << VT_UI1) +#define VTBIT_I2 (1 << VT_I2) +#define VTBIT_UI2 (1 << VT_UI2) +#define VTBIT_I4 (1 << VT_I4) +#define VTBIT_UI4 (1 << VT_UI4) +#define VTBIT_I8 (1 << VT_I8) +#define VTBIT_UI8 (1 << VT_UI8) +#define VTBIT_R4 (1 << VT_R4) +#define VTBIT_R8 (1 << VT_R8) +#define VTBIT_CY (1 << VT_CY) +#define VTBIT_DECIMAL (1 << VT_DECIMAL) -WINOLEAUTAPI VarUI1FromI2(SHORT,BYTE*); -WINOLEAUTAPI VarUI1FromI4(LONG,BYTE*); -WINOLEAUTAPI VarUI1FromI8(LONG64,BYTE*); -WINOLEAUTAPI VarUI1FromR4(FLOAT,BYTE*); -WINOLEAUTAPI VarUI1FromR8(DOUBLE,BYTE*); -WINOLEAUTAPI VarUI1FromDate(DATE,BYTE*); -WINOLEAUTAPI VarUI1FromBool(VARIANT_BOOL,BYTE*); -WINOLEAUTAPI VarUI1FromI1(signed char,BYTE*); -WINOLEAUTAPI VarUI1FromUI2(USHORT,BYTE*); -WINOLEAUTAPI VarUI1FromUI4(ULONG,BYTE*); -WINOLEAUTAPI VarUI1FromUI8(ULONG64,BYTE*); -WINOLEAUTAPI VarUI1FromStr(OLECHAR*,LCID,ULONG,BYTE*); -WINOLEAUTAPI VarUI1FromCy(CY,BYTE*); -WINOLEAUTAPI VarUI1FromDec(DECIMAL*,BYTE*); -WINOLEAUTAPI VarUI1FromDisp(IDispatch*,LCID,BYTE*); +HRESULT WINAPI VarParseNumFromStr(OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE*); +HRESULT WINAPI VarNumFromParseNum(NUMPARSE*,BYTE*,ULONG,VARIANT*); -WINOLEAUTAPI VarI2FromUI1(BYTE,SHORT*); -WINOLEAUTAPI VarI2FromI4(LONG,SHORT*); -WINOLEAUTAPI VarI2FromI8(LONG64,SHORT*); -WINOLEAUTAPI VarI2FromR4(FLOAT,SHORT*); -WINOLEAUTAPI VarI2FromR8(DOUBLE,SHORT*); -WINOLEAUTAPI VarI2FromDate(DATE,SHORT*); -WINOLEAUTAPI VarI2FromBool(VARIANT_BOOL,SHORT*); -WINOLEAUTAPI VarI2FromI1(signed char,SHORT*); -WINOLEAUTAPI VarI2FromUI2(USHORT,SHORT*); -WINOLEAUTAPI VarI2FromUI4(ULONG,SHORT*); -WINOLEAUTAPI VarI2FromUI8(ULONG64,SHORT*); -WINOLEAUTAPI VarI2FromStr(OLECHAR*,LCID,ULONG,SHORT*); -WINOLEAUTAPI VarI2FromCy(CY,SHORT*); -WINOLEAUTAPI VarI2FromDec(DECIMAL*,SHORT*); -WINOLEAUTAPI VarI2FromDisp(IDispatch*,LCID,SHORT*); +INT WINAPI DosDateTimeToVariantTime(USHORT,USHORT,double*); +INT WINAPI VariantTimeToDosDateTime(double,USHORT*,USHORT*); -WINOLEAUTAPI VarI4FromUI1(BYTE,LONG*); -WINOLEAUTAPI VarI4FromI2(SHORT,LONG*); -WINOLEAUTAPI VarI4FromI8(LONG64,LONG*); -WINOLEAUTAPI VarI4FromR4(FLOAT,LONG*); -WINOLEAUTAPI VarI4FromR8(DOUBLE,LONG*); -WINOLEAUTAPI VarI4FromDate(DATE,LONG*); -WINOLEAUTAPI VarI4FromBool(VARIANT_BOOL,LONG*); -WINOLEAUTAPI VarI4FromI1(signed char,LONG*); -WINOLEAUTAPI VarI4FromUI2(USHORT,LONG*); -WINOLEAUTAPI VarI4FromUI4(ULONG,LONG*); -WINOLEAUTAPI VarI4FromUI8(ULONG64,LONG*); -WINOLEAUTAPI VarI4FromStr(OLECHAR*,LCID,ULONG,LONG*); -WINOLEAUTAPI VarI4FromCy(CY,LONG*); -WINOLEAUTAPI VarI4FromDec(DECIMAL*,LONG*); -WINOLEAUTAPI VarI4FromDisp(IDispatch*,LCID,LONG*); +INT WINAPI VariantTimeToSystemTime(DOUBLE,LPSYSTEMTIME); +INT WINAPI SystemTimeToVariantTime(LPSYSTEMTIME,double*); -WINOLEAUTAPI VarI8FromUI1(BYTE,LONG64*); -WINOLEAUTAPI VarI8FromI2(SHORT,LONG64*); -WINOLEAUTAPI VarI8FromI4(LONG,LONG64*); -WINOLEAUTAPI VarI8FromR4(FLOAT,LONG64*); -WINOLEAUTAPI VarI8FromR8(DOUBLE,LONG64*); -WINOLEAUTAPI VarI8FromDate(DATE,LONG64*); -WINOLEAUTAPI VarI8FromStr(OLECHAR*,LCID,ULONG,LONG64*); -WINOLEAUTAPI VarI8FromBool(VARIANT_BOOL,LONG64*); -WINOLEAUTAPI VarI8FromI1(signed char,LONG64*); -WINOLEAUTAPI VarI8FromUI2(USHORT,LONG64*); -WINOLEAUTAPI VarI8FromUI4(ULONG,LONG64*); -WINOLEAUTAPI VarI8FromUI8(ULONG64,LONG64*); -WINOLEAUTAPI VarI8FromDec(DECIMAL *pdecIn,LONG64*); -WINOLEAUTAPI VarI8FromInt(INT intIn,LONG64*); -WINOLEAUTAPI VarI8FromCy(CY,LONG64*); -WINOLEAUTAPI VarI8FromDisp(IDispatch*,LCID,LONG64*); +HRESULT WINAPI VarDateFromUdate(UDATE*,ULONG,DATE*); +HRESULT WINAPI VarDateFromUdateEx(UDATE*,LCID,ULONG,DATE*); +HRESULT WINAPI VarUdateFromDate(DATE,ULONG,UDATE*); -WINOLEAUTAPI VarR4FromUI1(BYTE,FLOAT*); -WINOLEAUTAPI VarR4FromI2(SHORT,FLOAT*); -WINOLEAUTAPI VarR4FromI4(LONG,FLOAT*); -WINOLEAUTAPI VarR4FromI8(LONG64,FLOAT*); -WINOLEAUTAPI VarR4FromR8(DOUBLE,FLOAT*); -WINOLEAUTAPI VarR4FromDate(DATE,FLOAT*); -WINOLEAUTAPI VarR4FromBool(VARIANT_BOOL,FLOAT*); -WINOLEAUTAPI VarR4FromI1(signed char,FLOAT*); -WINOLEAUTAPI VarR4FromUI2(USHORT,FLOAT*); -WINOLEAUTAPI VarR4FromUI4(ULONG,FLOAT*); -WINOLEAUTAPI VarR4FromUI8(ULONG64,FLOAT*); -WINOLEAUTAPI VarR4FromStr(OLECHAR*,LCID,ULONG,FLOAT*); -WINOLEAUTAPI VarR4FromCy(CY,FLOAT*); -WINOLEAUTAPI VarR4FromDec(DECIMAL*,FLOAT*); -WINOLEAUTAPI VarR4FromDisp(IDispatch*,LCID,FLOAT*); +/* Variant formatting */ +HRESULT WINAPI VarWeekdayName(int,int,int,ULONG,BSTR*); +HRESULT WINAPI VarMonthName(int,int,ULONG,BSTR*); +HRESULT WINAPI GetAltMonthNames(LCID,LPOLESTR**); -WINOLEAUTAPI VarR8FromUI1(BYTE,double*); -WINOLEAUTAPI VarR8FromI2(SHORT,double*); -WINOLEAUTAPI VarR8FromI4(LONG,double*); -WINOLEAUTAPI VarR8FromI8(LONG64,double*); -WINOLEAUTAPI VarR8FromR4(FLOAT,double*); -WINOLEAUTAPI VarR8FromDate(DATE,double*); -WINOLEAUTAPI VarR8FromBool(VARIANT_BOOL,double*); -WINOLEAUTAPI VarR8FromI1(signed char,double*); -WINOLEAUTAPI VarR8FromUI2(USHORT,double*); -WINOLEAUTAPI VarR8FromUI4(ULONG,double*); -WINOLEAUTAPI VarR8FromUI8(ULONG64,double*); -WINOLEAUTAPI VarR8FromStr(OLECHAR*,LCID,ULONG,double*); -WINOLEAUTAPI VarR8FromCy(CY,double*); -WINOLEAUTAPI VarR8FromDec(DECIMAL*,double*); -WINOLEAUTAPI VarR8FromDisp(IDispatch*,LCID,double*); +HRESULT WINAPI VarFormat(LPVARIANT,LPOLESTR,int,int,ULONG,BSTR*); +HRESULT WINAPI VarFormatCurrency(LPVARIANT,int,int,int,int,ULONG,BSTR*); +HRESULT WINAPI VarFormatDateTime(LPVARIANT,int,ULONG,BSTR*); +HRESULT WINAPI VarFormatNumber(LPVARIANT,int,int,int,int,ULONG,BSTR*); +HRESULT WINAPI VarFormatPercent(LPVARIANT,int,int,int,int,ULONG,BSTR*); -WINOLEAUTAPI VarDateFromUI1(BYTE,DATE*); -WINOLEAUTAPI VarDateFromI2(SHORT,DATE*); -WINOLEAUTAPI VarDateFromI4(LONG,DATE*); -WINOLEAUTAPI VarDateFromI8(LONG64,DATE*); -WINOLEAUTAPI VarDateFromR4(FLOAT,DATE*); -WINOLEAUTAPI VarDateFromR8(DOUBLE,DATE*); -WINOLEAUTAPI VarDateFromStr(OLECHAR*,LCID,ULONG,DATE*); -WINOLEAUTAPI VarDateFromI1(signed char,DATE*); -WINOLEAUTAPI VarDateFromUI2(USHORT,DATE*); -WINOLEAUTAPI VarDateFromUI4(ULONG,DATE*); -WINOLEAUTAPI VarDateFromUI8(ULONG64,DATE*); -WINOLEAUTAPI VarDateFromBool(VARIANT_BOOL,DATE*); -WINOLEAUTAPI VarDateFromCy(CY,DATE*); -WINOLEAUTAPI VarDateFromDec(DECIMAL*,DATE*); -WINOLEAUTAPI VarDateFromDisp(IDispatch*,LCID,DATE*); +HRESULT WINAPI VarFormatFromTokens(LPVARIANT,LPOLESTR,LPBYTE,ULONG,BSTR*,LCID); +HRESULT WINAPI VarTokenizeFormatString(LPOLESTR,LPBYTE,int,int,int,LCID,int*); -WINOLEAUTAPI VarCyFromUI1(BYTE,CY*); -WINOLEAUTAPI VarCyFromI2(SHORT sIn,CY*); -WINOLEAUTAPI VarCyFromI4(LONG,CY*); -WINOLEAUTAPI VarCyFromI8(LONG64,CY*); -WINOLEAUTAPI VarCyFromR4(FLOAT,CY*); -WINOLEAUTAPI VarCyFromR8(DOUBLE,CY*); -WINOLEAUTAPI VarCyFromDate(DATE,CY*); -WINOLEAUTAPI VarCyFromStr(OLECHAR*,LCID,ULONG,CY*); -WINOLEAUTAPI VarCyFromBool(VARIANT_BOOL,CY*); -WINOLEAUTAPI VarCyFromI1(signed char,CY*); -WINOLEAUTAPI VarCyFromUI2(USHORT,CY*); -WINOLEAUTAPI VarCyFromUI4(ULONG,CY*); -WINOLEAUTAPI VarCyFromUI8(ULONG64,CY*); -WINOLEAUTAPI VarCyFromDec(DECIMAL*,CY*); -WINOLEAUTAPI VarCyFromStr(OLECHAR*,LCID,ULONG,CY*); -WINOLEAUTAPI VarCyFromDisp(IDispatch*,LCID,CY*); -WINOLEAUTAPI VarBstrFromUI1(BYTE,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromI2(SHORT,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromI4(LONG,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromI8(LONG64,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromR4(FLOAT,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromR8(DOUBLE,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromDate(DATE,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromBool(VARIANT_BOOL,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromI1(signed char,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromUI2(USHORT,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromUI8(ULONG64,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromUI4(ULONG,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromCy(CY,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromDec(DECIMAL*,LCID,ULONG,BSTR*); -WINOLEAUTAPI VarBstrFromDisp(IDispatch*,LCID,ULONG,BSTR*); +/* + * IDispatch types and helper functions + */ -WINOLEAUTAPI VarBoolFromUI1(BYTE,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromI2(SHORT,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromI4(LONG,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromI8(LONG64,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromR4(FLOAT,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromR8(DOUBLE,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromDate(DATE,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromStr(OLECHAR*,LCID,ULONG,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromI1(signed char,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromUI2(USHORT,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromUI4(ULONG,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromUI8(ULONG64,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromCy(CY,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromDec(DECIMAL*,VARIANT_BOOL*); -WINOLEAUTAPI VarBoolFromDisp(IDispatch*,LCID,VARIANT_BOOL*); +/* A structure describing a single parameter to a com object method. */ +typedef struct tagPARAMDATA +{ + OLECHAR *szName; /* Name of Parameter */ + VARTYPE vt; /* Type of Parameter */ +} PARAMDATA, *LPPARAMDATA; -WINOLEAUTAPI VarI1FromUI1(BYTE,signed char*); -WINOLEAUTAPI VarI1FromI2(SHORT,signed char*); -WINOLEAUTAPI VarI1FromI4(LONG,signed char*); -WINOLEAUTAPI VarI1FromI8(LONG64,signed char*); -WINOLEAUTAPI VarI1FromR4(FLOAT,signed char*); -WINOLEAUTAPI VarI1FromR8(DOUBLE,signed char*); -WINOLEAUTAPI VarI1FromDate(DATE,signed char*); -WINOLEAUTAPI VarI1FromStr(OLECHAR*,LCID,ULONG,signed char*); -WINOLEAUTAPI VarI1FromBool(VARIANT_BOOL,signed char*); -WINOLEAUTAPI VarI1FromUI2(USHORT,signed char*); -WINOLEAUTAPI VarI1FromUI4(ULONG,signed char*); -WINOLEAUTAPI VarI1FromUI8(ULONG64,signed char*); -WINOLEAUTAPI VarI1FromCy(CY,signed char*); -WINOLEAUTAPI VarI1FromDec(DECIMAL*,signed char*); -WINOLEAUTAPI VarI1FromDisp(IDispatch*,LCID,signed char*); +/* A structure describing a single method of a com object. */ +typedef struct tagMETHODDATA +{ + OLECHAR *szName; /* Name of method */ + PARAMDATA *ppdata; /* Parameters of the method */ + DISPID dispid; /* Id of the method */ + UINT iMeth; /* Vtable index of the method */ + CALLCONV cc; /* Calling convention of the method */ + UINT cArgs; /* Number of parameters in the method */ + WORD wFlags; /* Type of the method (DISPATCH_ flags) */ + VARTYPE vtReturn; /* Type of the return value */ +} METHODDATA, *LPMETHODDATA; -WINOLEAUTAPI VarUI2FromUI1(BYTE,USHORT*); -WINOLEAUTAPI VarUI2FromI2(SHORT,USHORT*); -WINOLEAUTAPI VarUI2FromI4(LONG,USHORT*); -WINOLEAUTAPI VarUI2FromI8(LONG64,USHORT*); -WINOLEAUTAPI VarUI2FromR4(FLOAT,USHORT*); -WINOLEAUTAPI VarUI2FromR8(DOUBLE,USHORT*); -WINOLEAUTAPI VarUI2FromDate(DATE,USHORT*); -WINOLEAUTAPI VarUI2FromStr(OLECHAR*,LCID,ULONG,USHORT*); -WINOLEAUTAPI VarUI2FromBool(VARIANT_BOOL,USHORT*); -WINOLEAUTAPI VarUI2FromI1(signed char,USHORT*); -WINOLEAUTAPI VarUI2FromUI4(ULONG,USHORT*); -WINOLEAUTAPI VarUI2FromUI8(ULONG64,USHORT*); -WINOLEAUTAPI VarUI2FromCy(CY,USHORT*); -WINOLEAUTAPI VarUI2FromDec(DECIMAL*,USHORT*); -WINOLEAUTAPI VarUI2FromDisp(IDispatch*,LCID,USHORT*); +/* Structure describing a single com object */ +typedef struct tagINTERFACEDATA +{ + METHODDATA *pmethdata; /* Methods of the object */ + UINT cMembers; /* Number of methods in the object */ +} INTERFACEDATA, *LPINTERFACEDATA; -WINOLEAUTAPI VarUI4FromStr(OLECHAR*,LCID,ULONG,ULONG*); -WINOLEAUTAPI VarUI4FromUI1(BYTE,ULONG*); -WINOLEAUTAPI VarUI4FromI2(SHORT,ULONG*); -WINOLEAUTAPI VarUI4FromI4(LONG,ULONG*); -WINOLEAUTAPI VarUI4FromI8(LONG64,ULONG*); -WINOLEAUTAPI VarUI4FromR4(FLOAT,ULONG*); -WINOLEAUTAPI VarUI4FromR8(DOUBLE,ULONG*); -WINOLEAUTAPI VarUI4FromDate(DATE,ULONG*); -WINOLEAUTAPI VarUI4FromBool(VARIANT_BOOL,ULONG*); -WINOLEAUTAPI VarUI4FromI1(signed char,ULONG*); -WINOLEAUTAPI VarUI4FromUI2(USHORT,ULONG*); -WINOLEAUTAPI VarUI4FromUI8(ULONG64,ULONG*); -WINOLEAUTAPI VarUI4FromCy(CY,ULONG*); -WINOLEAUTAPI VarUI4FromDec(DECIMAL*,ULONG*); -WINOLEAUTAPI VarUI4FromDisp(IDispatch*,LCID,ULONG*); +typedef enum tagREGKIND +{ + REGKIND_DEFAULT, + REGKIND_REGISTER, + REGKIND_NONE +} REGKIND; -WINOLEAUTAPI VarUI8FromUI1(BYTE,ULONG64*); -WINOLEAUTAPI VarUI8FromI2(SHORT,ULONG64*); -WINOLEAUTAPI VarUI8FromI4(LONG,ULONG64*); -WINOLEAUTAPI VarUI8FromI8(LONG64,ULONG64*); -WINOLEAUTAPI VarUI8FromR4(FLOAT,ULONG64*); -WINOLEAUTAPI VarUI8FromR8(DOUBLE,ULONG64*); -WINOLEAUTAPI VarUI8FromDate(DATE,ULONG64*); -WINOLEAUTAPI VarUI8FromStr(OLECHAR*,LCID,ULONG,ULONG64*); -WINOLEAUTAPI VarUI8FromBool(VARIANT_BOOL,ULONG64*); -WINOLEAUTAPI VarUI8FromI1(signed char,ULONG64*); -WINOLEAUTAPI VarUI8FromUI2(USHORT,ULONG64*); -WINOLEAUTAPI VarUI8FromUI4(ULONG,ULONG64*); -WINOLEAUTAPI VarUI8FromDec(DECIMAL*,ULONG64*); -WINOLEAUTAPI VarUI8FromInt(INT,ULONG64*); -WINOLEAUTAPI VarUI8FromCy(CY,ULONG64*); -WINOLEAUTAPI VarUI8FromDisp(IDispatch*,LCID,ULONG64*); +HRESULT WINAPI DispGetParam(DISPPARAMS*,UINT,VARTYPE,VARIANT*,UINT*); +HRESULT WINAPI DispGetIDsOfNames(ITypeInfo*,OLECHAR**,UINT,DISPID*); +HRESULT WINAPI DispInvoke(void*,ITypeInfo*,DISPID,WORD,DISPPARAMS*,VARIANT*, + EXCEPINFO*,UINT*); +HRESULT WINAPI CreateDispTypeInfo(INTERFACEDATA*,LCID,ITypeInfo**); +HRESULT WINAPI CreateStdDispatch(IUnknown*,void*,ITypeInfo*,IUnknown**); +HRESULT WINAPI DispCallFunc(void*,ULONG_PTR,CALLCONV,VARTYPE,UINT,VARTYPE*, + VARIANTARG**,VARIANT*); -WINOLEAUTAPI VarDecFromUI1(BYTE,DECIMAL*); -WINOLEAUTAPI VarDecFromI2(SHORT,DECIMAL*); -WINOLEAUTAPI VarDecFromI4(LONG,DECIMAL*); -WINOLEAUTAPI VarDecFromI8(LONG64,DECIMAL*); -WINOLEAUTAPI VarDecFromR4(FLOAT,DECIMAL*); -WINOLEAUTAPI VarDecFromR8(DOUBLE,DECIMAL*); -WINOLEAUTAPI VarDecFromDate(DATE,DECIMAL*); -WINOLEAUTAPI VarDecFromStr(OLECHAR*,LCID,ULONG,DECIMAL*); -WINOLEAUTAPI VarDecFromBool(VARIANT_BOOL,DECIMAL*); -WINOLEAUTAPI VarDecFromI1(signed char,DECIMAL*); -WINOLEAUTAPI VarDecFromUI2(USHORT,DECIMAL*); -WINOLEAUTAPI VarDecFromUI4(ULONG,DECIMAL*); -WINOLEAUTAPI VarDecFromUI8(ULONG64,DECIMAL*); -WINOLEAUTAPI VarDecFromCy(CY,DECIMAL*); -WINOLEAUTAPI VarDecFromDisp(IDispatch*,LCID,DECIMAL*); -WINOLEAUTAPI VarDecNeg(const DECIMAL*,DECIMAL*); -WINOLEAUTAPI VarR4CmpR8(float,double); -WINOLEAUTAPI VarR8Pow(double,double,double*); -WINOLEAUTAPI VarR8Round(double,int,double*); -WINOLEAUTAPI VarDecAbs(const DECIMAL*,DECIMAL*); -WINOLEAUTAPI VarDecAdd(const DECIMAL*,const DECIMAL*,DECIMAL*); -WINOLEAUTAPI VarDecCmp(const DECIMAL*,const DECIMAL*); -WINOLEAUTAPI VarDecCmpR8(const DECIMAL*,DOUBLE); -WINOLEAUTAPI VarDecDiv(const DECIMAL*,const DECIMAL*,DECIMAL*); -WINOLEAUTAPI VarDecFix(const DECIMAL*,DECIMAL*); -WINOLEAUTAPI VarDecInt(const DECIMAL*,DECIMAL*); -WINOLEAUTAPI VarDecMul(const DECIMAL*,const DECIMAL*,DECIMAL*); -WINOLEAUTAPI VarDecRound(const DECIMAL*,int,DECIMAL*); -WINOLEAUTAPI VarDecSub(const DECIMAL*,const DECIMAL*,DECIMAL*); -WINOLEAUTAPI VarCyAbs(const CY,CY*); -WINOLEAUTAPI VarCyAdd(const CY,const CY,CY*); -WINOLEAUTAPI VarCyCmp(const CY,const CY); -WINOLEAUTAPI VarCyCmpR8(const CY,DOUBLE); -WINOLEAUTAPI VarCyFix(const CY,CY*); -WINOLEAUTAPI VarCyInt(const CY,CY*); -WINOLEAUTAPI VarCyMul(const CY,CY,CY*); -WINOLEAUTAPI VarCyMulI4(const CY,LONG,CY*); -WINOLEAUTAPI VarCyMulI8(const CY,LONG64,CY*); -WINOLEAUTAPI VarCyNeg(const CY,CY*); -WINOLEAUTAPI VarCyRound(const CY,INT,CY*); -WINOLEAUTAPI VarCySub(const CY,const CY,CY*); -WINOLEAUTAPI VarAdd(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarAnd(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarCat(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarDiv(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarEqv(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarIdiv(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarImp(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarMod(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarMul(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarOr(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarPow(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarSub(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarXor(LPVARIANT,LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarAbs(LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarFix(LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarInt(LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarNeg(LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarNot(LPVARIANT,LPVARIANT); -WINOLEAUTAPI VarRound(LPVARIANT,int,LPVARIANT); -WINOLEAUTAPI VarCmp(LPVARIANT,LPVARIANT,LCID,ULONG); -WINOLEAUTAPI VarBstrCmp(BSTR,BSTR,LCID,ULONG); -WINOLEAUTAPI VarBstrCat(BSTR,BSTR,BSTR*); +/* + * TypeLib API + */ -#pragma pack(pop) +ULONG WINAPI LHashValOfNameSysA(SYSKIND,LCID,LPCSTR); +ULONG WINAPI LHashValOfNameSys(SYSKIND,LCID,LPCOLESTR); +#define LHashValOfName(lcid,name) LHashValOfNameSys(SYS_WIN32,lcid,name) +#define WHashValOfLHashVal(hash) ((USHORT)((hash) & 0xffff)) +#define IsHashValCompatible(hash1,hash2) ((hash1) & 0xff0000 == (hash2) & 0xff0000) + +#define MEMBERID_NIL DISPID_UNKNOWN +#define ID_DEFAULTINST -2 + +#define DISPATCH_METHOD 0x1 +#define DISPATCH_PROPERTYGET 0x2 +#define DISPATCH_PROPERTYPUT 0x4 +#define DISPATCH_PROPERTYPUTREF 0x8 + +#define LOAD_TLB_AS_32BIT 0x20 +#define LOAD_TLB_AS_64BIT 0x40 +#define MASK_TO_RESET_TLB_BITS ~(LOAD_TLB_AS_32BIT|LOAD_TLB_AS_64BIT) + +HRESULT WINAPI CreateTypeLib(SYSKIND,const OLECHAR*,ICreateTypeLib**); +HRESULT WINAPI CreateTypeLib2(SYSKIND,LPCOLESTR,ICreateTypeLib2**); +HRESULT WINAPI LoadRegTypeLib(REFGUID,WORD,WORD,LCID,ITypeLib**); +HRESULT WINAPI LoadTypeLib(const OLECHAR*,ITypeLib**); +HRESULT WINAPI LoadTypeLibEx(LPCOLESTR,REGKIND,ITypeLib**); +HRESULT WINAPI QueryPathOfRegTypeLib(REFGUID,WORD,WORD,LCID,LPBSTR); +HRESULT WINAPI RegisterTypeLib(ITypeLib*,OLECHAR*,OLECHAR*); +HRESULT WINAPI UnRegisterTypeLib(REFGUID,WORD,WORD,LCID,SYSKIND); + +VOID WINAPI ClearCustData(LPCUSTDATA); + +#ifdef __cplusplus +} /* extern "C" */ #endif + + +#endif /*__WINE_OLEAUTO_H*/ diff --git a/reactos/include/psdk/olectl.h b/reactos/include/psdk/olectl.h index 902a4c83319..49a1f75a188 100644 --- a/reactos/include/psdk/olectl.h +++ b/reactos/include/psdk/olectl.h @@ -1,214 +1,428 @@ -#ifndef _OLECTL_H -#define _OLECTL_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif +/* + * Copyright (C) the Wine project + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_OLECTL_H +#define __WINE_OLECTL_H + +#if !defined(__midl) && !defined(__WIDL__) + +#include #ifdef __cplusplus extern "C" { #endif -#include -#include -#define STD_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR,FACILITY_CONTROL,n) -#define CTL_E_ILLEGALFUNCTIONCALL STD_CTL_SCODE(5) -#define CTL_E_OVERFLOW STD_CTL_SCODE(6) -#define CTL_E_OUTOFMEMORY STD_CTL_SCODE(7) -#define CTL_E_DIVISIONBYZERO STD_CTL_SCODE(11) -#define CTL_E_OUTOFSTRINGSPACE STD_CTL_SCODE(14) -#define CTL_E_OUTOFSTACKSPACE STD_CTL_SCODE(28) -#define CTL_E_BADFILENAMEORNUMBER STD_CTL_SCODE(52) -#define CTL_E_FILENOTFOUND STD_CTL_SCODE(53) -#define CTL_E_BADFILEMODE STD_CTL_SCODE(54) -#define CTL_E_FILEALREADYOPEN STD_CTL_SCODE(55) -#define CTL_E_DEVICEIOERROR STD_CTL_SCODE(57) -#define CTL_E_FILEALREADYEXISTS STD_CTL_SCODE(58) -#define CTL_E_BADRECORDLENGTH STD_CTL_SCODE(59) -#define CTL_E_DISKFULL STD_CTL_SCODE(61) -#define CTL_E_BADRECORDNUMBER STD_CTL_SCODE(63) -#define CTL_E_BADFILENAME STD_CTL_SCODE(64) -#define CTL_E_TOOMANYFILES STD_CTL_SCODE(67) -#define CTL_E_DEVICEUNAVAILABLE STD_CTL_SCODE(68) -#define CTL_E_PERMISSIONDENIED STD_CTL_SCODE(70) -#define CTL_E_DISKNOTREADY STD_CTL_SCODE(71) -#define CTL_E_PATHFILEACCESSERROR STD_CTL_SCODE(75) -#define CTL_E_PATHNOTFOUND STD_CTL_SCODE(76) -#define CTL_E_INVALIDPATTERNSTRING STD_CTL_SCODE(93) -#define CTL_E_INVALIDUSEOFNULL STD_CTL_SCODE(94) -#define CTL_E_INVALIDFILEFORMAT STD_CTL_SCODE(321) -#define CTL_E_INVALIDPROPERTYVALUE STD_CTL_SCODE(380) -#define CTL_E_INVALIDPROPERTYARRAYINDEX STD_CTL_SCODE(381) -#define CTL_E_SETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(382) -#define CTL_E_SETNOTSUPPORTED STD_CTL_SCODE(383) -#define CTL_E_NEEDPROPERTYARRAYINDEX STD_CTL_SCODE(385) -#define CTL_E_SETNOTPERMITTED STD_CTL_SCODE(387) -#define CTL_E_GETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(393) -#define CTL_E_GETNOTSUPPORTED STD_CTL_SCODE(394) -#define CTL_E_PROPERTYNOTFOUND STD_CTL_SCODE(422) -#define CTL_E_INVALIDCLIPBOARDFORMAT STD_CTL_SCODE(460) -#define CTL_E_INVALIDPICTURE STD_CTL_SCODE(481) -#define CTL_E_PRINTERERROR STD_CTL_SCODE(482) -#define CTL_E_CANTSAVEFILETOTEMP STD_CTL_SCODE(735) -#define CTL_E_SEARCHTEXTNOTFOUND STD_CTL_SCODE(744) -#define CTL_E_REPLACEMENTSTOOLONG STD_CTL_SCODE(746) -#define CUSTOM_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR,FACILITY_CONTROL,n) -#define CTL_E_CUSTOM_FIRST CUSTOM_CTL_SCODE(600) -#define CLASS_E_NOTLICENSED (CLASSFACTORY_E_FIRST+2) -#define CONNECT_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200) -#define CONNECT_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F) -#define CONNECT_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200) -#define CONNECT_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F) -#define CONNECT_E_NOCONNECTION (CONNECT_E_FIRST+0) -#define CONNECT_E_ADVISELIMIT (CONNECT_E_FIRST+1) -#define CONNECT_E_CANNOTCONNECT (CONNECT_E_FIRST+2) -#define CONNECT_E_OVERRIDDEN (CONNECT_E_FIRST+3) -#define SELFREG_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200) -#define SELFREG_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F) -#define SELFREG_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200) -#define SELFREG_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F) -#define SELFREG_E_TYPELIB (SELFREG_E_FIRST+0) -#define SELFREG_E_CLASS (SELFREG_E_FIRST+1) -#define PERPROP_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200) -#define PERPROP_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F) -#define PERPROP_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200) -#define PERPROP_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F) -#define PERPROP_E_NOPAGEAVAILABLE PERPROP_E_FIRST -#define OLEMISC_RECOMPOSEONRESIZE 0x1 -#define OLEMISC_ONLYICONIC 0x2 -#define OLEMISC_INSERTNOTREPLACE 0x4 -#define OLEMISC_STATIC 0x8 -#define OLEMISC_CANTLINKINSIDE 0x10 -#define OLEMISC_CANLINKBYOLE1 0x20 -#define OLEMISC_ISLINKOBJECT 0x40 -#define OLEMISC_INSIDEOUT 0x80 -#define OLEMISC_ACTIVATEWHENVISIBLE 0x100 -#define OLEMISC_RENDERINGISDEVICEINDEPENDENT 0x200 -#define OLEMISC_INVISIBLEATRUNTIME 0x400 -#define OLEMISC_ALWAYSRUN 0x800 -#define OLEMISC_ACTSLIKEBUTTON 0x1000 -#define OLEMISC_ACTSLIKELABEL 0x2000 -#define OLEMISC_NOUIACTIVATE 0x4000 -#define OLEMISC_ALIGNABLE 0x8000 -#define OLEMISC_SIMPLEFRAME 0x10000 -#define OLEMISC_SETCLIENTSITEFIRST 0x20000 -#define OLEMISC_IMEMODE 0x40000 -#define OLEMISC_IGNOREACTIVATEWHENVISIBLE 0x80000 -#define OLEMISC_WANTSTOMENUMERGE 0x100000 -#define OLEMISC_SUPPORTSMULTILEVELUNDO 0x200000 -#define OLEIVERB_PROPERTIES (-7) -#define VT_STREAMED_PROPSET 73 -#define VT_STORED_PROPSET 74 -#define VT_BLOB_PROPSET 75 -#define VT_VERBOSE_ENUM 76 -#define VT_COLOR VT_I4 -#define VT_XPOS_PIXELS VT_I4 -#define VT_YPOS_PIXELS VT_I4 -#define VT_XSIZE_PIXELS VT_I4 -#define VT_YSIZE_PIXELS VT_I4 -#define VT_XPOS_HIMETRIC VT_I4 -#define VT_YPOS_HIMETRIC VT_I4 -#define VT_XSIZE_HIMETRIC VT_I4 -#define VT_YSIZE_HIMETRIC VT_I4 -#define VT_TRISTATE VT_I2 -#define VT_OPTEXCLUSIVE VT_BOOL -#define VT_FONT VT_DISPATCH -#define VT_PICTURE VT_DISPATCH -#define VT_HANDLE VT_I4 -#define OCM__BASE (WM_USER+0x1c00) -#define OCM_COMMAND (OCM__BASE+WM_COMMAND) -#define OCM_CTLCOLORBTN (OCM__BASE+WM_CTLCOLORBTN) -#define OCM_CTLCOLOREDIT (OCM__BASE+WM_CTLCOLOREDIT) -#define OCM_CTLCOLORDLG (OCM__BASE+WM_CTLCOLORDLG) -#define OCM_CTLCOLORLISTBOX (OCM__BASE+WM_CTLCOLORLISTBOX) -#define OCM_CTLCOLORMSGBOX (OCM__BASE+WM_CTLCOLORMSGBOX) -#define OCM_CTLCOLORSCROLLBAR (OCM__BASE+WM_CTLCOLORSCROLLBAR) -#define OCM_CTLCOLORSTATIC (OCM__BASE+WM_CTLCOLORSTATIC) -#define OCM_DRAWITEM (OCM__BASE+WM_DRAWITEM) -#define OCM_MEASUREITEM (OCM__BASE+WM_MEASUREITEM) -#define OCM_DELETEITEM (OCM__BASE+WM_DELETEITEM) -#define OCM_VKEYTOITEM (OCM__BASE+WM_VKEYTOITEM) -#define OCM_CHARTOITEM (OCM__BASE+WM_CHARTOITEM) -#define OCM_COMPAREITEM (OCM__BASE+WM_COMPAREITEM) -#define OCM_HSCROLL (OCM__BASE+WM_HSCROLL) -#define OCM_VSCROLL (OCM__BASE+WM_VSCROLL) -#define OCM_PARENTNOTIFY (OCM__BASE+WM_PARENTNOTIFY) -#define OCM_NOTIFY (OCM__BASE+WM_NOTIFY) -#define CTRLINFO_EATS_RETURN 1 -#define CTRLINFO_EATS_ESCAPE 2 -#define XFORMCOORDS_POSITION 1 -#define XFORMCOORDS_SIZE 2 -#define XFORMCOORDS_HIMETRICTOCONTAINER 4 -#define XFORMCOORDS_CONTAINERTOHIMETRIC 8 -#define GUIDKIND_DEFAULT_SOURCE_DISP_IID 1 -#define PROPPAGESTATUS_DIRTY 1 -#define PROPPAGESTATUS_VALIDATE 2 -#define FONTSIZE(n) {n##0000,0} -#define PICTURE_SCALABLE 1 -#define PICTURE_TRANSPARENT 2 + +/* + * Ole Control Interfaces + */ +DEFINE_GUID(CLSID_ConvertVBX, + 0xfb8f0822,0x0164,0x101b,0x84,0xed,0x08,0x00,0x2b,0x2e,0xc7,0x13); +DEFINE_GUID(CLSID_PersistPropset, + 0xfb8f0821,0x0164,0x101b,0x84,0xed,0x08,0x00,0x2b,0x2e,0xc7,0x13); + +DEFINE_GUID(CLSID_StdFont, + 0x0be35203,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51); +DEFINE_GUID(CLSID_StdPicture, + 0x0be35204,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51); + +DEFINE_GUID(IID_IPropertyFrame, + 0xb196b28a,0xbab4,0x101a,0xb6,0x9c,0x00,0xaa,0x00,0x34,0x1d,0x07); + +DEFINE_GUID(CLSID_CFontPropPage, + 0x0be35200,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51); +DEFINE_GUID(CLSID_CColorPropPage, + 0x0be35201,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51); +DEFINE_GUID(CLSID_CPicturePropPage, + 0x0be35202,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51); + +DEFINE_GUID(GUID_HIMETRIC, + 0x66504300,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); +DEFINE_GUID(GUID_COLOR, + 0x66504301,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); +DEFINE_GUID(GUID_XPOSPIXEL, + 0x66504302,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); +DEFINE_GUID(GUID_YPOSPIXEL, + 0x66504303,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); +DEFINE_GUID(GUID_XSIZEPIXEL, + 0x66504304,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); +DEFINE_GUID(GUID_YSIZEPIXEL, + 0x66504305,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); +DEFINE_GUID(GUID_XPOS, + 0x66504306,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); +DEFINE_GUID(GUID_YPOS, + 0x66504307,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); +DEFINE_GUID(GUID_XSIZE, + 0x66504308,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); +DEFINE_GUID(GUID_YSIZE, + 0x66504309,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); + +#ifndef __CGUID_H__ +DEFINE_GUID(GUID_TRISTATE, + 0x6650430a,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); +#endif + +DEFINE_GUID(GUID_OPTIONVALUEEXCLUSIVE, + 0x6650430b,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); +DEFINE_GUID(GUID_CHECKVALUEEXCLUSIVE, + 0x6650430c,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); +DEFINE_GUID(GUID_FONTNAME, + 0x6650430d,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); +DEFINE_GUID(GUID_FONTSIZE, + 0x6650430e,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); +DEFINE_GUID(GUID_FONTBOLD, + 0x6650430f,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); +DEFINE_GUID(GUID_FONTITALIC, + 0x66504310,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); +DEFINE_GUID(GUID_FONTUNDERSCORE, + 0x66504311,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); +DEFINE_GUID(GUID_FONTSTRIKETHROUGH, + 0x66504312,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); +DEFINE_GUID(GUID_HANDLE, + 0x66504313,0xbe0f,0x101a,0x8b,0xbb,0x00,0xaa,0x00,0x30,0x0c,0xab); + +typedef struct tagOCPFIPARAMS +{ + ULONG cbStructSize; + HWND hWndOwner; + int x; + int y; + LPCOLESTR lpszCaption; + ULONG cObjects; + LPUNKNOWN *lplpUnk; + ULONG cPages; + CLSID *lpPages; + LCID lcid; + DISPID dispidInitialProperty; +} OCPFIPARAMS, *LPOCPFIPARAMS; + +/* + * FONTDESC is used as an OLE encapsulation of the GDI fonts + */ +typedef struct tagFONTDESC { + UINT cbSizeofstruct; + LPOLESTR lpstrName; + CY cySize; + SHORT sWeight; + SHORT sCharset; + BOOL fItalic; + BOOL fUnderline; + BOOL fStrikethrough; +} FONTDESC, *LPFONTDESC; + +#define FONTSIZE(n) { n##0000, 0 } + #define PICTYPE_UNINITIALIZED (-1) -#define PICTYPE_NONE 0 -#define PICTYPE_BITMAP 1 -#define PICTYPE_METAFILE 2 -#define PICTYPE_ICON 3 -#define PICTYPE_ENHMETAFILE 4 -#define DISPID_AUTOSIZE (-500) -#define DISPID_BACKCOLOR (-501) -#define DISPID_BACKSTYLE (-502) -#define DISPID_BORDERCOLOR (-503) -#define DISPID_BORDERSTYLE (-504) -#define DISPID_BORDERWIDTH (-505) -#define DISPID_DRAWMODE (-507) -#define DISPID_DRAWSTYLE (-508) -#define DISPID_DRAWWIDTH (-509) -#define DISPID_FILLCOLOR (-510) -#define DISPID_FILLSTYLE (-511) -#define DISPID_FONT (-512) -#define DISPID_FORECOLOR (-513) -#define DISPID_ENABLED (-514) -#define DISPID_HWND (-515) -#define DISPID_TABSTOP (-516) -#define DISPID_TEXT (-517) -#define DISPID_CAPTION (-518) -#define DISPID_BORDERVISIBLE (-519) -#define DISPID_APPEARANCE (-520) -#define DISPID_MOUSEPOINTER (-521) -#define DISPID_MOUSEICON (-522) -#define DISPID_PICTURE (-523) -#define DISPID_VALID (-524) -#define DISPID_REFRESH (-550) -#define DISPID_DOCLICK (-551) -#define DISPID_ABOUTBOX (-552) -#define DISPID_CLICK (-600) -#define DISPID_DBLCLICK (-601) -#define DISPID_KEYDOWN (-602) -#define DISPID_KEYPRESS (-603) -#define DISPID_KEYUP (-604) -#define DISPID_MOUSEDOWN (-605) -#define DISPID_MOUSEMOVE (-606) -#define DISPID_MOUSEUP (-607) -#define DISPID_ERROREVENT (-608) -#define DISPID_AMBIENT_BACKCOLOR (-701) -#define DISPID_AMBIENT_DISPLAYNAME (-702) -#define DISPID_AMBIENT_FONT (-703) -#define DISPID_AMBIENT_FORECOLOR (-704) -#define DISPID_AMBIENT_LOCALEID (-705) -#define DISPID_AMBIENT_MESSAGEREFLECT (-706) -#define DISPID_AMBIENT_SCALEUNITS (-707) -#define DISPID_AMBIENT_TEXTALIGN (-708) -#define DISPID_AMBIENT_USERMODE (-709) -#define DISPID_AMBIENT_UIDEAD (-710) -#define DISPID_AMBIENT_SHOWGRABHANDLES (-711) -#define DISPID_AMBIENT_SHOWHATCHING (-712) +#define PICTYPE_NONE 0 +#define PICTYPE_BITMAP 1 +#define PICTYPE_METAFILE 2 +#define PICTYPE_ICON 3 +#define PICTYPE_ENHMETAFILE 4 + +typedef struct tagPICTDESC { + UINT cbSizeofstruct; + UINT picType; + union { + struct { + HBITMAP hbitmap; + HPALETTE hpal; + } bmp; + struct { + HMETAFILE hmeta; + int xExt; + int yExt; + } wmf; + struct { + HICON hicon; + } icon; + struct { + HENHMETAFILE hemf; + } emf; + } DUMMYUNIONNAME; +} PICTDESC, *LPPICTDESC; + +typedef long OLE_XPOS_PIXELS; +typedef long OLE_YPOS_PIXELS; +typedef long OLE_XSIZE_PIXELS; +typedef long OLE_YSIZE_PIXELS; +typedef float OLE_XPOS_CONTAINER; +typedef float OLE_YPOS_CONTAINER; +typedef float OLE_XSIZE_CONTAINER; +typedef float OLE_YSIZE_CONTAINER; + +typedef enum +{ + triUnchecked = 0, + triChecked = 1, + triGray = 2 +} OLE_TRISTATE; + +typedef VARIANT_BOOL OLE_OPTEXCLUSIVE; +typedef VARIANT_BOOL OLE_CANCELBOOL; +typedef VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; + +/* flags for OleLoadPictureEx and OleLoadPictureFileEx */ +#define LP_DEFAULT 0x0 +#define LP_MONOCHROME 0x1 +#define LP_VGACOLOR 0x2 +#define LP_COLOR 0x4 + +HCURSOR WINAPI OleIconToCursor( HINSTANCE hinstExe, HICON hicon); + +HRESULT WINAPI OleCreatePropertyFrameIndirect( LPOCPFIPARAMS lpParams); + +HRESULT WINAPI OleCreatePropertyFrame( + HWND hwndOwner, UINT x, UINT y, + LPCOLESTR lpszCaption, ULONG cObjects, LPUNKNOWN* ppUnk, + ULONG cPages, LPCLSID pPageClsID, LCID lcid, DWORD dwReserved, + LPVOID pvReserved ); + +HRESULT WINAPI OleLoadPicture( LPSTREAM lpstream, LONG lSize, BOOL fRunmode, + REFIID riid, LPVOID *lplpvObj ); + +HRESULT WINAPI OleLoadPictureEx( LPSTREAM lpstream, LONG lSize, BOOL fRunMode, + REFIID riid, DWORD xSizeDesired, DWORD ySizeDesired, + DWORD dwFlags, LPVOID *lplpvObj ); + +HRESULT WINAPI OleLoadPictureFile( VARIANT varFilename, IDispatch **ppdispPicture ); + +HRESULT WINAPI OleLoadPictureFileEx( VARIANT varFilename, DWORD xSizeDesired, + DWORD ySizeDesired, DWORD dwFlags, IDispatch **ppdispPicture ); + +HRESULT WINAPI OleSavePictureFile( IDispatch *pdispPicture, BSTR bstrFilename ); + +HRESULT WINAPI OleLoadPicturePath( LPOLESTR szURLorPath, LPUNKNOWN punkCaller, + DWORD dwReserved, OLE_COLOR clrReserved, REFIID riid, + LPVOID *ppvRet ); + +HRESULT WINAPI OleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid, + BOOL fOwn, LPVOID * lplpvObj ); + +HRESULT WINAPI OleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid, + LPVOID* lplpvObj); + +HRESULT WINAPI OleTranslateColor( OLE_COLOR clr, HPALETTE hpal, + COLORREF* lpcolorref); + +/* Reflected Window Message IDs */ +#define OCM__BASE (WM_USER+0x1c00) +#define OCM_COMMAND (OCM__BASE + WM_COMMAND) + +#define OCM_CTLCOLORBTN (OCM__BASE + WM_CTLCOLORBTN) +#define OCM_CTLCOLOREDIT (OCM__BASE + WM_CTLCOLOREDIT) +#define OCM_CTLCOLORDLG (OCM__BASE + WM_CTLCOLORDLG) +#define OCM_CTLCOLORLISTBOX (OCM__BASE + WM_CTLCOLORLISTBOX) +#define OCM_CTLCOLORMSGBOX (OCM__BASE + WM_CTLCOLORMSGBOX) +#define OCM_CTLCOLORSCROLLBAR (OCM__BASE + WM_CTLCOLORSCROLLBAR) +#define OCM_CTLCOLORSTATIC (OCM__BASE + WM_CTLCOLORSTATIC) + +#define OCM_DRAWITEM (OCM__BASE + WM_DRAWITEM) +#define OCM_MEASUREITEM (OCM__BASE + WM_MEASUREITEM) +#define OCM_DELETEITEM (OCM__BASE + WM_DELETEITEM) +#define OCM_VKEYTOITEM (OCM__BASE + WM_VKEYTOITEM) +#define OCM_CHARTOITEM (OCM__BASE + WM_CHARTOITEM) +#define OCM_COMPAREITEM (OCM__BASE + WM_COMPAREITEM) +#define OCM_HSCROLL (OCM__BASE + WM_HSCROLL) +#define OCM_VSCROLL (OCM__BASE + WM_VSCROLL) +#define OCM_PARENTNOTIFY (OCM__BASE + WM_PARENTNOTIFY) +#define OCM_NOTIFY (OCM__BASE + WM_NOTIFY) + +#define CONNECT_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0200) +#define CONNECT_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x020F) +#define CONNECT_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200) +#define CONNECT_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F) + +#define CONNECT_E_NOCONNECTION (CONNECT_E_FIRST+0) +#define CONNECT_E_ADVISELIMIT (CONNECT_E_FIRST+1) +#define CONNECT_E_CANNOTCONNECT (CONNECT_E_FIRST+2) +#define CONNECT_E_OVERRIDDEN (CONNECT_E_FIRST+3) + +#define SELFREG_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0200) +#define SELFREG_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x020F) +#define SELFREG_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200) +#define SELFREG_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F) +#define SELFREG_E_TYPELIB (SELFREG_E_FIRST+0) +#define SELFREG_E_CLASS (SELFREG_E_FIRST+1) + +#ifndef FACILITY_CONTROL +#define FACILITY_CONTROL 0xa +#endif +#define STD_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n) +#define CTL_E_ILLEGALFUNCTIONCALL STD_CTL_SCODE(5) +#define CTL_E_OVERFLOW STD_CTL_SCODE(6) +#define CTL_E_OUTOFMEMORY STD_CTL_SCODE(7) +#define CTL_E_DIVISIONBYZERO STD_CTL_SCODE(11) +#define CTL_E_OUTOFSTRINGSPACE STD_CTL_SCODE(14) +#define CTL_E_OUTOFSTACKSPACE STD_CTL_SCODE(28) +#define CTL_E_BADFILENAMEORNUMBER STD_CTL_SCODE(52) +#define CTL_E_FILENOTFOUND STD_CTL_SCODE(53) +#define CTL_E_BADFILEMODE STD_CTL_SCODE(54) +#define CTL_E_FILEALREADYOPEN STD_CTL_SCODE(55) +#define CTL_E_DEVICEIOERROR STD_CTL_SCODE(57) +#define CTL_E_FILEALREADYEXISTS STD_CTL_SCODE(58) +#define CTL_E_BADRECORDLENGTH STD_CTL_SCODE(59) +#define CTL_E_DISKFULL STD_CTL_SCODE(61) +#define CTL_E_BADRECORDNUMBER STD_CTL_SCODE(63) +#define CTL_E_BADFILENAME STD_CTL_SCODE(64) +#define CTL_E_TOOMANYFILES STD_CTL_SCODE(67) +#define CTL_E_DEVICEUNAVAILABLE STD_CTL_SCODE(68) +#define CTL_E_PERMISSIONDENIED STD_CTL_SCODE(70) +#define CTL_E_DISKNOTREADY STD_CTL_SCODE(71) +#define CTL_E_PATHFILEACCESSERROR STD_CTL_SCODE(75) +#define CTL_E_PATHNOTFOUND STD_CTL_SCODE(76) +#define CTL_E_INVALIDPATTERNSTRING STD_CTL_SCODE(93) +#define CTL_E_INVALIDUSEOFNULL STD_CTL_SCODE(94) +#define CTL_E_INVALIDFILEFORMAT STD_CTL_SCODE(321) +#define CTL_E_INVALIDPROPERTYVALUE STD_CTL_SCODE(380) +#define CTL_E_INVALIDPROPERTYARRAYINDEX STD_CTL_SCODE(381) +#define CTL_E_SETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(382) +#define CTL_E_SETNOTSUPPORTED STD_CTL_SCODE(383) +#define CTL_E_NEEDPROPERTYARRAYINDEX STD_CTL_SCODE(385) +#define CTL_E_SETNOTPERMITTED STD_CTL_SCODE(387) +#define CTL_E_GETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(393) +#define CTL_E_GETNOTSUPPORTED STD_CTL_SCODE(394) +#define CTL_E_PROPERTYNOTFOUND STD_CTL_SCODE(422) +#define CTL_E_INVALIDCLIPBOARDFORMAT STD_CTL_SCODE(460) +#define CTL_E_INVALIDPICTURE STD_CTL_SCODE(481) +#define CTL_E_PRINTERERROR STD_CTL_SCODE(482) +#define CTL_E_CANTSAVEFILETOTEMP STD_CTL_SCODE(735) +#define CTL_E_SEARCHTEXTNOTFOUND STD_CTL_SCODE(744) +#define CTL_E_REPLACEMENTSTOOLONG STD_CTL_SCODE(746) + +#define CUSTOM_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n) +#define CTL_E_CUSTOM_FIRST CUSTOM_CTL_SCODE(600) + +#define VT_COLOR VT_I4 +#define VT_XPOS_PIXELS VT_I4 +#define VT_YPOS_PIXELS VT_I4 +#define VT_XSIZE_PIXELS VT_I4 +#define VT_YSIZE_PIXELS VT_I4 +#define VT_XPOS_HIMETRIC VT_I4 +#define VT_YPOS_HIMETRIC VT_I4 +#define VT_XSIZE_HIMETRIC VT_I4 +#define VT_YSIZE_HIMETRIC VT_I4 +#define VT_TRISTATE VT_I2 +#define VT_OPTEXCLUSIVE VT_BOOL +#define VT_FONT VT_DISPATCH +#define VT_PICTURE VT_DISPATCH + +#define VT_STREAMED_PROPSET 73 +#define VT_STORED_PROPSET 74 +#define VT_BLOB_PROPSET 75 +#define VT_VERBOSE_ENUM 76 + +#ifndef OLEIVERB_PROPERTIES +#define OLEIVERB_PROPERTIES (-7L) +#endif + +#define PERPROP_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0200) +#define PERPROP_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x020F) +#define PERPROP_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200) +#define PERPROP_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F) + +#define PERPROP_E_NOPAGEAVAILABLE (PERPROP_E_FIRST+0) + + +#ifdef __cplusplus +} +#endif + +#endif /* !__midl && !__WIDL__ */ + +/* standard dispatch ID's */ +#define DISPID_AUTOSIZE (-500) +#define DISPID_BACKCOLOR (-501) +#define DISPID_BACKSTYLE (-502) +#define DISPID_BORDERCOLOR (-503) +#define DISPID_BORDERSTYLE (-504) +#define DISPID_BORDERWIDTH (-505) +#define DISPID_DRAWMODE (-507) +#define DISPID_DRAWSTYLE (-508) +#define DISPID_DRAWWIDTH (-509) +#define DISPID_FILLCOLOR (-510) +#define DISPID_FILLSTYLE (-511) +#define DISPID_FONT (-512) +#define DISPID_FORECOLOR (-513) +#define DISPID_ENABLED (-514) +#define DISPID_HWND (-515) +#define DISPID_TABSTOP (-516) +#define DISPID_TEXT (-517) +#define DISPID_CAPTION (-518) +#define DISPID_BORDERVISIBLE (-519) +#define DISPID_APPEARANCE (-520) +#define DISPID_MOUSEPOINTER (-521) +#define DISPID_MOUSEICON (-522) +#define DISPID_PICTURE (-523) +#define DISPID_VALID (-524) +#define DISPID_READYSTATE (-525) + +#define DISPID_REFRESH (-550) +#define DISPID_DOCLICK (-551) +#define DISPID_ABOUTBOX (-552) +#define DISPID_ADDITEM (-553) +#define DISPID_CLEAR (-554) +#define DISPID_REMOVEITEM (-555) + +#define DISPID_CLICK (-600) +#define DISPID_DBLCLICK (-601) +#define DISPID_KEYDOWN (-602) +#define DISPID_KEYPRESS (-603) +#define DISPID_KEYUP (-604) +#define DISPID_MOUSEDOWN (-605) +#define DISPID_MOUSEMOVE (-606) +#define DISPID_MOUSEUP (-607) +#define DISPID_ERROREVENT (-608) +#define DISPID_READYSTATECHANGE (-609) +#define DISPID_CLICK_VALUE (-610) +#define DISPID_RIGHTTOLEFT (-611) +#define DISPID_TOPTOBOTTOM (-612) +#define DISPID_THIS (-613) + +#define DISPID_AMBIENT_BACKCOLOR (-701) +#define DISPID_AMBIENT_DISPLAYNAME (-702) +#define DISPID_AMBIENT_FONT (-703) +#define DISPID_AMBIENT_FORECOLOR (-704) +#define DISPID_AMBIENT_LOCALEID (-705) +#define DISPID_AMBIENT_MESSAGEREFLECT (-706) +#define DISPID_AMBIENT_SCALEUNITS (-707) +#define DISPID_AMBIENT_TEXTALIGN (-708) +#define DISPID_AMBIENT_USERMODE (-709) +#define DISPID_AMBIENT_UIDEAD (-710) +#define DISPID_AMBIENT_SHOWGRABHANDLES (-711) +#define DISPID_AMBIENT_SHOWHATCHING (-712) #define DISPID_AMBIENT_DISPLAYASDEFAULT (-713) #define DISPID_AMBIENT_SUPPORTSMNEMONICS (-714) -#define DISPID_AMBIENT_AUTOCLIP (-715) -#define DISPID_AMBIENT_APPEARANCE (-716) -#define DISPID_AMBIENT_CODEPAGE (-725) -#define DISPID_AMBIENT_PALETTE (-726) -#define DISPID_AMBIENT_CHARSET (-727) -#define DISPID_AMBIENT_RIGHTTOLEFT (-732) -#define DISPID_AMBIENT_TOPTOBOTTOM (-733) +#define DISPID_AMBIENT_AUTOCLIP (-715) +#define DISPID_AMBIENT_APPEARANCE (-716) + +#define DISPID_AMBIENT_CODEPAGE (-725) +#define DISPID_AMBIENT_PALETTE (-726) +#define DISPID_AMBIENT_CHARSET (-727) +#define DISPID_AMBIENT_TRANSFERPRIORITY (-728) + +#define DISPID_AMBIENT_RIGHTTOLEFT (-732) +#define DISPID_AMBIENT_TOPTOBOTTOM (-733) + +#define DISPID_Name (-800) +#define DISPID_Delete (-801) +#define DISPID_Object (-802) +#define DISPID_Parent (-803) #define DISPID_FONT_NAME 0 #define DISPID_FONT_SIZE 2 @@ -221,106 +435,11 @@ extern "C" { #define DISPID_FONT_CHANGED 9 /* IPicture */ -#define DISPID_PICT_HANDLE 0 -#define DISPID_PICT_HPAL 2 -#define DISPID_PICT_TYPE 3 -#define DISPID_PICT_WIDTH 4 -#define DISPID_PICT_HEIGHT 5 -#define DISPID_PICT_RENDER 6 +#define DISPID_PICT_HANDLE 0 +#define DISPID_PICT_HPAL 2 +#define DISPID_PICT_TYPE 3 +#define DISPID_PICT_WIDTH 4 +#define DISPID_PICT_HEIGHT 5 +#define DISPID_PICT_RENDER 6 -typedef interface IOleControl *LPOLECONTROL; -typedef interface IOleControlSite *LPOLECONTROLSITE; -typedef interface ISimpleFrameSite *LPSIMPLEFRAMESITE; -typedef interface IPersistPropertyBag *LPPERSISTPROPERTYBAG; -typedef interface IPersistStreamInit *LPPERSISTSTREAMINIT; -typedef interface IPersistMemory *LPPERSISTMEMORY; -typedef interface IPropertyNotifySink* LPPROPERTYNOTIFYSINK; -typedef interface IProvideClassInfo *LPPROVIDECLASSINFO; -typedef interface IProvideClassInfo2 *LPPROVIDECLASSINFO2; -typedef interface IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER; -typedef interface IClassFactory2 *LPCLASSFACTORY2; -typedef interface ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES; -typedef interface IPerPropertyBrowsing *LPPERPROPERTYBROWSING; -typedef interface IPropertyPage *LPPROPERTYPAGE; -typedef interface IPropertyPage2 *LPPROPERTYPAGE2; - -typedef interface IPicture *LPPICTURE; -typedef interface IPictureDisp *LPPICTUREDISP; -typedef long OLE_XPOS_PIXELS; -typedef long OLE_YPOS_PIXELS; -typedef long OLE_XSIZE_PIXELS; -typedef long OLE_YSIZE_PIXELS; -typedef float OLE_XPOS_CONTAINER; -typedef float OLE_YPOS_CONTAINER; -typedef float OLE_XSIZE_CONTAINER; - -typedef VARIANT_BOOL OLE_OPTEXCLUSIVE; -typedef VARIANT_BOOL OLE_CANCELBOOL; -typedef VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; - -#pragma pack(push,8) -typedef enum { triUnchecked,triChecked1,triGray } OLE_TRISTATE; -typedef struct tagOCPFIPARAMS { - ULONG cbStructSize; - HWND hWndOwner; - int x; - int y; - LPCOLESTR lpszCaption; - ULONG cObjects; - LPUNKNOWN *lplpUnk; - ULONG cPages; - CLSID *lpPages; - LCID lcid; - DISPID dispidInitialProperty; -} OCPFIPARAMS,*LPOCPFIPARAMS; -typedef struct tagFONTDESC { - UINT cbSizeofstruct; - LPOLESTR lpstrName; - CY cySize; - SHORT sWeight; - SHORT sCharset; - BOOL fItalic; - BOOL fUnderline; - BOOL fStrikethrough; -} FONTDESC,*LPFONTDESC; -typedef struct tagPICTDESC { - UINT cbSizeofstruct; - UINT picType; - _ANONYMOUS_UNION union { - struct { - HBITMAP hbitmap; - HPALETTE hpal; - } bmp; - struct { - HMETAFILE hmeta; - int xExt; - int yExt; - } wmf; - struct { - HICON hicon; - } icon; - struct { - HENHMETAFILE hemf; - } emf; - } DUMMYUNIONNAME; -} PICTDESC,*LPPICTDESC; -#pragma pack(pop) - -STDAPI DllRegisterServer(void); -STDAPI DllUnregisterServer(void); -STDAPI OleCreateFontIndirect(LPFONTDESC,REFIID,PVOID*); -STDAPI OleCreatePictureIndirect(LPPICTDESC,REFIID,BOOL,PVOID*); -STDAPI OleCreatePropertyFrame(HWND,UINT,UINT,LPCOLESTR,ULONG,LPUNKNOWN*,ULONG,LPCLSID,LCID,DWORD,PVOID); -STDAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS); -STDAPI_(HCURSOR) OleIconToCursor(HINSTANCE,HICON); -STDAPI OleLoadPicture(LPSTREAM,LONG,BOOL,REFIID,PVOID*); -STDAPI OleLoadPictureEx(LPSTREAM,LONG,BOOL,REFIID,DWORD,DWORD,DWORD,LPVOID*); -STDAPI OleLoadPicturePath(LPOLESTR,LPUNKNOWN,DWORD,OLE_COLOR,REFIID,LPVOID*); -STDAPI OleLoadPictureFile(VARIANT,LPDISPATCH*); -STDAPI OleLoadPictureFileEx(VARIANT,DWORD,DWORD,DWORD,LPDISPATCH*); -STDAPI OleSavePictureFile(LPDISPATCH,BSTR); -STDAPI OleTranslateColor(OLE_COLOR,HPALETTE,COLORREF*); -#ifdef __cplusplus -} -#endif -#endif +#endif /* __WINE_OLECTL_H */ diff --git a/reactos/include/reactos/wine/initguid.h b/reactos/include/psdk/oledb.idl similarity index 67% rename from reactos/include/reactos/wine/initguid.h rename to reactos/include/psdk/oledb.idl index b69c925c11f..dd6b2181307 100644 --- a/reactos/include/reactos/wine/initguid.h +++ b/reactos/include/psdk/oledb.idl @@ -1,11 +1,5 @@ /* - * Defines a minimum set of macros create GUID's to keep the size - * small - * - * This file should be included into "only GUID definition *.h" like - * shlguid.h - * - * Copyright (C) 1999 Juergen Schmied + * Copyright (C) 2006 Mike McCormack * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -19,8 +13,16 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define INITGUID -#include +import "wtypes.idl"; +import "oaidl.idl"; +import "ocidl.idl"; +import "propidl.idl"; + +typedef ULONG DBBYTEOFFSET; + +#include "dbinit.idl" +#include "dbs.idl" +#include "dbprop.idl" diff --git a/reactos/include/psdk/oledlg.h b/reactos/include/psdk/oledlg.h index 6daab959f74..29fff5ac0fe 100644 --- a/reactos/include/psdk/oledlg.h +++ b/reactos/include/psdk/oledlg.h @@ -1,935 +1,981 @@ -#ifndef _OLEDLG_H -#define _OLEDLG_H -#if __GNUC__ >=3 -#pragma GCC system_header +/* + * Declarations for OLEDLG + * + * Copyright (C) the Wine project + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_OLEDLG_H +#define __WINE_OLEDLG_H + +#ifndef __WINESRC__ +# include #endif +#include +#include +#include +#ifndef __WINESRC__ +# include +# include +#endif +#include +#include #ifdef __cplusplus extern "C" { #endif -#include -#include -#include -#include -#include -/* #include */ -#include -#include -#define PS_MAXLINKTYPES 8 -#define OLESTDDELIM TEXT("\\") -#define SZOLEUI_MSG_HELP TEXT("OLEUI_MSG_HELP") -#define SZOLEUI_MSG_ENDDIALOG TEXT("OLEUI_MSG_ENDDIALOG") -#define SZOLEUI_MSG_BROWSE TEXT("OLEUI_MSG_BROWSE") -#define SZOLEUI_MSG_CHANGEICON TEXT("OLEUI_MSG_CHANGEICON") -#define SZOLEUI_MSG_CLOSEBUSYDIALOG TEXT("OLEUI_MSG_CLOSEBUSYDIALOG") -#define SZOLEUI_MSG_CONVERT TEXT("OLEUI_MSG_CONVERT") -#define SZOLEUI_MSG_CHANGESOURCE TEXT("OLEUI_MSG_CHANGESOURCE") -#define SZOLEUI_MSG_ADDCONTROL TEXT("OLEUI_MSG_ADDCONTROL") -#define SZOLEUI_MSG_BROWSE_OFN TEXT("OLEUI_MSG_BROWSE_OFN") -#define PROP_HWND_CHGICONDLG TEXT("HWND_CIDLG") -#define IDC_OLEUIHELP 99 -#define IDC_IO_CREATENEW 2100 -#define IDC_IO_CREATEFROMFILE 2101 -#define IDC_IO_LINKFILE 2102 -#define IDC_IO_OBJECTTYPELIST 2103 -#define IDC_IO_DISPLAYASICON 2104 -#define IDC_IO_CHANGEICON 2105 -#define IDC_IO_FILE 2106 -#define IDC_IO_FILEDISPLAY 2107 -#define IDC_IO_RESULTIMAGE 2108 -#define IDC_IO_RESULTTEXT 2109 -#define IDC_IO_ICONDISPLAY 2110 -#define IDC_IO_OBJECTTYPETEXT 2111 -#define IDC_IO_FILETEXT 2112 -#define IDC_IO_FILETYPE 2113 -#define IDC_IO_INSERTCONTROL 2114 -#define IDC_IO_ADDCONTROL 2115 -#define IDC_IO_CONTROLTYPELIST 2116 -#define IDC_PS_PASTE 500 -#define IDC_PS_PASTELINK 501 -#define IDC_PS_SOURCETEXT 502 -#define IDC_PS_PASTELIST 503 -#define IDC_PS_PASTELINKLIST 504 -#define IDC_PS_DISPLAYLIST 505 -#define IDC_PS_DISPLAYASICON 506 -#define IDC_PS_ICONDISPLAY 507 -#define IDC_PS_CHANGEICON 508 -#define IDC_PS_RESULTIMAGE 509 -#define IDC_PS_RESULTTEXT 510 -#define IDC_CI_GROUP 120 -#define IDC_CI_CURRENT 121 -#define IDC_CI_CURRENTICON 122 -#define IDC_CI_DEFAULT 123 -#define IDC_CI_DEFAULTICON 124 -#define IDC_CI_FROMFILE 125 -#define IDC_CI_FROMFILEEDIT 126 -#define IDC_CI_ICONLIST 127 -#define IDC_CI_LABEL 128 -#define IDC_CI_LABELEDIT 129 -#define IDC_CI_BROWSE 130 -#define IDC_CI_ICONDISPLAY 131 -#define IDC_CV_OBJECTTYPE 150 -#define IDC_CV_DISPLAYASICON 152 -#define IDC_CV_CHANGEICON 153 -#define IDC_CV_ACTIVATELIST 154 -#define IDC_CV_CONVERTTO 155 -#define IDC_CV_ACTIVATEAS 156 -#define IDC_CV_RESULTTEXT 157 -#define IDC_CV_CONVERTLIST 158 -#define IDC_CV_ICONDISPLAY 165 -#define IDC_EL_CHANGESOURCE 201 -#define IDC_EL_AUTOMATIC 202 -#define IDC_EL_CANCELLINK 209 -#define IDC_EL_UPDATENOW 210 -#define IDC_EL_OPENSOURCE 211 -#define IDC_EL_MANUAL 212 -#define IDC_EL_LINKSOURCE 216 -#define IDC_EL_LINKTYPE 217 -#define IDC_EL_LINKSLISTBOX 206 -#define IDC_EL_COL1 220 -#define IDC_EL_COL2 221 -#define IDC_EL_COL3 222 -#define IDC_BZ_RETRY 600 -#define IDC_BZ_ICON 601 -#define IDC_BZ_MESSAGE1 602 -#define IDC_BZ_SWITCHTO 604 -#define IDC_UL_METER 1029 -#define IDC_UL_STOP 1030 -#define IDC_UL_PERCENT 1031 -#define IDC_UL_PROGRESS 1032 -#define IDC_PU_LINKS 900 -#define IDC_PU_TEXT 901 -#define IDC_PU_CONVERT 902 -#define IDC_PU_ICON 908 -#define IDC_GP_OBJECTNAME 1009 -#define IDC_GP_OBJECTTYPE 1010 -#define IDC_GP_OBJECTSIZE 1011 -#define IDC_GP_CONVERT 1013 -#define IDC_GP_OBJECTICON 1014 -#define IDC_GP_OBJECTLOCATION 1022 -#define IDC_VP_PERCENT 1000 -#define IDC_VP_CHANGEICON 1001 -#define IDC_VP_EDITABLE 1002 -#define IDC_VP_ASICON 1003 -#define IDC_VP_RELATIVE 1005 -#define IDC_VP_SPIN 1006 -#define IDC_VP_SCALETXT 1034 -#define IDC_VP_ICONDISPLAY 1021 -#define IDC_VP_RESULTIMAGE 1033 -#define IDC_LP_OPENSOURCE 1006 -#define IDC_LP_UPDATENOW 1007 -#define IDC_LP_BREAKLINK 1008 -#define IDC_LP_LINKSOURCE 1012 -#define IDC_LP_CHANGESOURCE 1015 -#define IDC_LP_AUTOMATIC 1016 -#define IDC_LP_MANUAL 1017 -#define IDC_LP_DATE 1018 -#define IDC_LP_TIME 1019 -#define IDD_INSERTOBJECT 1000 -#define IDD_CHANGEICON 1001 -#define IDD_CONVERT 1002 -#define IDD_PASTESPECIAL 1003 -#define IDD_EDITLINKS 1004 -#define IDD_BUSY 1006 -#define IDD_UPDATELINKS 1007 -#define IDD_CHANGESOURCE 1009 -#define IDD_INSERTFILEBROWSE 1010 -#define IDD_CHANGEICONBROWSE 1011 -#define IDD_CONVERTONLY 1012 -#define IDD_CHANGESOURCE4 1013 -#define IDD_GNRLPROPS 1100 -#define IDD_VIEWPROPS 1101 -#define IDD_LINKPROPS 1102 -#define IDD_CANNOTUPDATELINK 1008 -#define IDD_LINKSOURCEUNAVAILABLE 1020 -#define IDD_SERVERNOTFOUND 1023 -#define IDD_OUTOFMEMORY 1024 -#define IDD_SERVERNOTREGW 1021 -#define IDD_LINKTYPECHANGEDW 1022 -#define IDD_SERVERNOTREGA 1025 -#define IDD_LINKTYPECHANGEDA 1026 -#define ID_BROWSE_CHANGEICON 1 -#define ID_BROWSE_INSERTFILE 2 -#define ID_BROWSE_ADDCONTROL 3 -#define ID_BROWSE_CHANGESOURCE 4 -#define OLEUI_FALSE 0 -#define OLEUI_SUCCESS 1 -#define OLEUI_OK 1 -#define OLEUI_CANCEL 2 -#define OLEUI_ERR_STANDARDMIN 100 -#define OLEUI_ERR_STRUCTURENULL 101 -#define OLEUI_ERR_STRUCTUREINVALID 102 -#define OLEUI_ERR_CBSTRUCTINCORRECT 103 -#define OLEUI_ERR_HWNDOWNERINVALID 104 -#define OLEUI_ERR_LPSZCAPTIONINVALID 105 -#define OLEUI_ERR_LPFNHOOKINVALID 106 -#define OLEUI_ERR_HINSTANCEINVALID 107 -#define OLEUI_ERR_LPSZTEMPLATEINVALID 108 -#define OLEUI_ERR_HRESOURCEINVALID 109 -#define OLEUI_ERR_FINDTEMPLATEFAILURE 110 -#define OLEUI_ERR_LOADTEMPLATEFAILURE 111 -#define OLEUI_ERR_DIALOGFAILURE 112 -#define OLEUI_ERR_LOCALMEMALLOC 113 -#define OLEUI_ERR_GLOBALMEMALLOC 114 -#define OLEUI_ERR_LOADSTRING 115 -#define OLEUI_ERR_OLEMEMALLOC 116 -#define OLEUI_ERR_STANDARDMAX 116 -#define OPF_OBJECTISLINK 1 -#define OPF_NOFILLDEFAULT 2 -#define OPF_SHOWHELP 4 -#define OPF_DISABLECONVERT 8 -#define OLEUI_OPERR_SUBPROPNULL OLEUI_ERR_STANDARDMAX -#define OLEUI_OPERR_SUBPROPINVALID (OLEUI_ERR_STANDARDMAX+1) -#define OLEUI_OPERR_PROPSHEETNULL (OLEUI_ERR_STANDARDMAX+2) -#define OLEUI_OPERR_PROPSHEETINVALID (OLEUI_ERR_STANDARDMAX+3) -#define OLEUI_OPERR_SUPPROP (OLEUI_ERR_STANDARDMAX+4) -#define OLEUI_OPERR_PROPSINVALID (OLEUI_ERR_STANDARDMAX+5) -#define OLEUI_OPERR_PAGESINCORRECT (OLEUI_ERR_STANDARDMAX+6) -#define OLEUI_OPERR_INVALIDPAGES (OLEUI_ERR_STANDARDMAX+7) -#define OLEUI_OPERR_NOTSUPPORTED (OLEUI_ERR_STANDARDMAX+8) -#define OLEUI_OPERR_DLGPROCNOTNULL (OLEUI_ERR_STANDARDMAX+9) -#define OLEUI_OPERR_LPARAMNOTZERO (OLEUI_ERR_STANDARDMAX+10) -#define OLEUI_GPERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+11) -#define OLEUI_GPERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+12) -#define OLEUI_GPERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+13) -#define OLEUI_GPERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+14) -#define OLEUI_VPERR_METAPICTINVALID (OLEUI_ERR_STANDARDMAX+15) -#define OLEUI_VPERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+16) -#define OLEUI_LPERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+17) -#define OLEUI_LPERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+18) -#define OLEUI_OPERR_PROPERTYSHEET (OLEUI_ERR_STANDARDMAX+19) -#define OLEUI_OPERR_OBJINFOINVALID (OLEUI_ERR_STANDARDMAX+20) -#define OLEUI_OPERR_LINKINFOINVALID (OLEUI_ERR_STANDARDMAX+21) -#define OLEUI_QUERY_GETCLASSID 65280 -#define OLEUI_QUERY_LINKBROKEN 65281 -#define IOF_SHOWHELP 1 -#define IOF_SELECTCREATENEW 2 -#define IOF_SELECTCREATEFROMFILE 4 -#define IOF_CHECKLINK 8 -#define IOF_CHECKDISPLAYASICON 16 -#define IOF_CREATENEWOBJECT 32 -#define IOF_CREATEFILEOBJECT 64 -#define IOF_CREATELINKOBJECT 128 -#define IOF_DISABLELINK 256 -#define IOF_VERIFYSERVERSEXIST 512 -#define IOF_DISABLEDISPLAYASICON 1024 -#define IOF_HIDECHANGEICON 2048 -#define IOF_SHOWINSERTCONTROL 4096 -#define IOF_SELECTCREATECONTROL 8192 -#define OLEUI_IOERR_LPSZFILEINVALID OLEUI_ERR_STANDARDMAX -#define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1) -#define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2) -#define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3) -#define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4) -#define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5) -#define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6) -#define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7) -#define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8) -#define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9) -#define PSF_SHOWHELP 1 -#define PSF_SELECTPASTE 2 -#define PSF_SELECTPASTELINK 4 -#define PSF_CHECKDISPLAYASICON 8 -#define PSF_DISABLEDISPLAYASICON 16 -#define PSF_HIDECHANGEICON 32 -#define PSF_STAYONCLIPBOARDCHANGE 64 -#define PSF_NOREFRESHDATAOBJECT 128 -#define OLEUI_IOERR_SRCDATAOBJECTINVALID OLEUI_ERR_STANDARDMAX -#define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1) -#define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2) -#define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3) -#define OLEUI_PSERR_GETCLIPBOARDFAILED (OLEUI_ERR_STANDARDMAX+4) -#define OLEUI_ELERR_LINKCNTRNULL OLEUI_ERR_STANDARDMAX -#define OLEUI_ELERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1) -#define ELF_SHOWHELP 1 -#define ELF_DISABLEUPDATENOW 2 -#define ELF_DISABLEOPENSOURCE 4 -#define ELF_DISABLECHANGESOURCE 8 -#define ELF_DISABLECANCELLINK 16 -#define CIF_SHOWHELP 1 -#define CIF_SELECTCURRENT 2 -#define CIF_SELECTDEFAULT 4 -#define CIF_SELECTFROMFILE 8 -#define CIF_USEICONEXE 16 -#define OLEUI_CIERR_MUSTHAVECLSID OLEUI_ERR_STANDARDMAX -#define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1) -#define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2) -#define CF_SHOWHELPBUTTON 1 -#define CF_SETCONVERTDEFAULT 2 -#define CF_SETACTIVATEDEFAULT 4 -#define CF_SELECTCONVERTTO 8 -#define CF_SELECTACTIVATEAS 16 -#define CF_DISABLEDISPLAYASICON 32 -#define CF_DISABLEACTIVATEAS 64 -#define CF_HIDECHANGEICON 128 -#define CF_CONVERTONLY 256 -#define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1) -#define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2) -#define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3) -#define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4) -#define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5) -#define BZ_DISABLECANCELBUTTON 1 -#define BZ_DISABLESWITCHTOBUTTON 2 -#define BZ_DISABLERETRYBUTTON 4 -#define BZ_NOTRESPONDINGDIALOG 8 -#define OLEUI_BZERR_HTASKINVALID OLEUI_ERR_STANDARDMAX -#define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1) -#define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2) -#define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3) -#define CSF_SHOWHELP 1 -#define CSF_VALIDSOURCE 2 -#define CSF_ONLYGETSOURCE 4 -#define CSF_EXPLORER 8 -#define OLEUI_CSERR_LINKCNTRNULL OLEUI_ERR_STANDARDMAX -#define OLEUI_CSERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1) -#define OLEUI_CSERR_FROMNOTNULL (OLEUI_ERR_STANDARDMAX+2) -#define OLEUI_CSERR_TONOTNULL (OLEUI_ERR_STANDARDMAX+3) -#define OLEUI_CSERR_SOURCENULL (OLEUI_ERR_STANDARDMAX+4) -#define OLEUI_CSERR_SOURCEINVALID (OLEUI_ERR_STANDARDMAX+5) -#define OLEUI_CSERR_SOURCEPARSERROR (OLEUI_ERR_STANDARDMAX+6) -#define OLEUI_CSERR_SOURCEPARSEERROR (OLEUI_ERR_STANDARDMAX+7) -#define VPF_SELECTRELATIVE 1 -#define VPF_DISABLERELATIVE 2 -#define VPF_DISABLESCALE 4 -#ifndef RC_INVOKED -#pragma pack(push, 8) + +typedef struct IOleUILinkContainerA *POLEUILINKCONTAINERA, *LPOLEUILINKCONTAINERA; +typedef struct IOleUILinkContainerW *POLEUILINKCONTAINERW, *LPOLEUILINKCONTAINERW; + +typedef struct IOleUILinkInfoA *POLEUILINKINFOA, *LPOLEUILINKINFOA; +typedef struct IOleUILinkInfoW *POLEUILINKINFOW, *LPOLEUILINKINFOW; + +typedef struct IOleUIObjInfoA *POLEUIOBJINFOA, *LPOLEUIOBJINFOA; +typedef struct IOleUIObjInfoW *POLEUIOBJINFOW, *LPOLEUIOBJINFOW; + +#define IDC_OLEUIHELP 99 + + +#define OLEUI_ERR_STANDARDMAX 116 + +#define OLEUI_BZERR_HTASKINVALID (OLEUI_ERR_STANDARDMAX+0) +#define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1) +#define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2) +#define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3) + +#define OLEUI_FALSE 0 +#define OLEUI_SUCCESS 1 /* Same as OLEUI_OK */ +#define OLEUI_OK 1 /* OK button pressed */ +#define OLEUI_CANCEL 2 /* Cancel button pressed */ + +#define OLEUI_ERR_STANDARDMIN 100 +#define OLEUI_ERR_OLEMEMALLOC 100 +#define OLEUI_ERR_STRUCTURENULL 101 +#define OLEUI_ERR_STRUCTUREINVALID 102 +#define OLEUI_ERR_CBSTRUCTINCORRECT 103 +#define OLEUI_ERR_HWNDOWNERINVALID 104 +#define OLEUI_ERR_LPSZCAPTIONINVALID 105 +#define OLEUI_ERR_LPFNHOOKINVALID 106 +#define OLEUI_ERR_HINSTANCEINVALID 107 +#define OLEUI_ERR_LPSZTEMPLATEINVALID 108 +#define OLEUI_ERR_HRESOURCEINVALID 109 +#define OLEUI_ERR_FINDTEMPLATEFAILURE 110 +#define OLEUI_ERR_LOADTEMPLATEFAILURE 111 +#define OLEUI_ERR_DIALOGFAILURE 112 +#define OLEUI_ERR_LOCALMEMALLOC 113 +#define OLEUI_ERR_GLOBALMEMALLOC 114 +#define OLEUI_ERR_LOADSTRING 115 +#define OLEUI_ERR_STANDARDMAX 116 + typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM); -typedef struct tagOLEUIINSERTOBJECTW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - LPWSTR lpszFile; - UINT cchFile; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - IID iid; - DWORD oleRender; - LPFORMATETC lpFormatEtc; - LPOLECLIENTSITE lpIOleClientSite; - LPSTORAGE lpIStorage; - PVOID *ppvObj; - SCODE sc; - HGLOBAL hMetaPict; -} OLEUIINSERTOBJECTW,*POLEUIINSERTOBJECTW,*LPOLEUIINSERTOBJECTW; -typedef struct tagOLEUIINSERTOBJECTA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - LPSTR lpszFile; - UINT cchFile; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - IID iid; - DWORD oleRender; - LPFORMATETC lpFormatEtc; - LPOLECLIENTSITE lpIOleClientSite; - LPSTORAGE lpIStorage; - PVOID *ppvObj; - SCODE sc; - HGLOBAL hMetaPict; -} OLEUIINSERTOBJECTA,*POLEUIINSERTOBJECTA,*LPOLEUIINSERTOBJECTA; -STDAPI_(UINT) OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); -STDAPI_(UINT) OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); -typedef enum tagOLEUIPASTEFLAG { - OLEUIPASTE_PASTEONLY, - OLEUIPASTE_LINKTYPE1, - OLEUIPASTE_LINKTYPE2, - OLEUIPASTE_LINKTYPE3=4, - OLEUIPASTE_LINKTYPE4=8, - OLEUIPASTE_LINKTYPE5=16, - OLEUIPASTE_LINKTYPE6=32, - OLEUIPASTE_LINKTYPE7=64, - OLEUIPASTE_LINKTYPE8=128, - OLEUIPASTE_PASTE=512, - OLEUIPASTE_LINKANYTYPE=1024, - OLEUIPASTE_ENABLEICON=2048 + +/***************************************************************************** + * Registered Message Names + */ +#define SZOLEUI_MSG_HELPA "OLEUI_MSG_HELP" +#define SZOLEUI_MSG_ENDDIALOGA "OLEUI_MSG_ENDDIALOG" +#define SZOLEUI_MSG_BROWSEA "OLEUI_MSG_BROWSE" +#define SZOLEUI_MSG_CHANGEICONA "OLEUI_MSG_CHANGEICON" +#define SZOLEUI_MSG_CLOSEBUSYDIALOGA "OLEUI_MSG_CLOSEBUSYDIALOG" +#define SZOLEUI_MSG_CONVERTA "OLEUI_MSG_CONVERT" +#define SZOLEUI_MSG_CHANGESOURCEA "OLEUI_MSG_CHANGESOURCE" +#define SZOLEUI_MSG_ADDCONTROLA "OLEUI_MSG_ADDCONTROL" +#define SZOLEUI_MSG_BROWSE_OFNA "OLEUI_MSG_BROWSE_OFN" +#if defined(__GNUC__) +# define SZOLEUI_MSG_HELPW (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','H','E','L','P',0 } +# define SZOLEUI_MSG_ENDDIALOGW (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','E','N','D','D','I','A','L','O','G',0 } +# define SZOLEUI_MSG_BROWSEW (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E',0 } +# define SZOLEUI_MSG_CHANGEICONW (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','I','C','O','N',0 } +# define SZOLEUI_MSG_CLOSEBUSYDIALOGW (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','L','O','S','E','B','U','S','Y','D','I','A','L','O','G',0 } +# define SZOLEUI_MSG_CONVERTW (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','O','N','V','E','R','T',0 } +# define SZOLEUI_MSG_CHANGESOURCEW (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','S','O','U','R','C','E',0 } +# define SZOLEUI_MSG_ADDCONTROLW (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','A','D','D','C','O','N','T','R','O','L',0 } +# define SZOLEUI_MSG_BROWSE_OFNW (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E','_','O','F','N',0 } +#elif defined(_MSC_VER) +# define SZOLEUI_MSG_HELPW L"OLEUI_MSG_HELP" +# define SZOLEUI_MSG_ENDDIALOGW L"OLEUI_MSG_ENDDIALOG" +# define SZOLEUI_MSG_BROWSEW L"OLEUI_MSG_BROWSE" +# define SZOLEUI_MSG_CHANGEICONW L"OLEUI_MSG_CHANGEICON" +# define SZOLEUI_MSG_CLOSEBUSYDIALOGW L"OLEUI_MSG_CLOSEBUSYDIALOG" +# define SZOLEUI_MSG_CONVERTW L"OLEUI_MSG_CONVERT" +# define SZOLEUI_MSG_CHANGESOURCEW L"OLEUI_MSG_CHANGESOURCE" +# define SZOLEUI_MSG_ADDCONTROLW L"OLEUI_MSG_ADDCONTROL" +# define SZOLEUI_MSG_BROWSE_OFNW L"OLEUI_MSG_BROWSE_OFN" +#else +static const WCHAR SZOLEUI_MSG_HELPW[] = { 'O','L','E','U','I','_','M','S','G','_','H','E','L','P',0 }; +static const WCHAR SZOLEUI_MSG_ENDDIALOGW[] = { 'O','L','E','U','I','_','M','S','G','_','E','N','D','D','I','A','L','O','G',0 }; +static const WCHAR SZOLEUI_MSG_BROWSEW[] = { 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E',0 }; +static const WCHAR SZOLEUI_MSG_CHANGEICONW[] = { 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','I','C','O','N',0 }; +static const WCHAR SZOLEUI_MSG_CLOSEBUSYDIALOGW[] = { 'O','L','E','U','I','_','M','S','G','_','C','L','O','S','E','B','U','S','Y','D','I','A','L','O','G',0 }; +static const WCHAR SZOLEUI_MSG_CONVERTW[] = { 'O','L','E','U','I','_','M','S','G','_','C','O','N','V','E','R','T',0 }; +static const WCHAR SZOLEUI_MSG_CHANGESOURCEW[] = { 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','S','O','U','R','C','E',0 }; +static const WCHAR SZOLEUI_MSG_ADDCONTROLW[] = { 'O','L','E','U','I','_','M','S','G','_','A','D','D','C','O','N','T','R','O','L',0 }; +static const WCHAR SZOLEUI_MSG_BROWSE_OFNW[] = { 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E','_','O','F','N',0 }; +#endif +#define SZOLEUI_MSG_HELP WINELIB_NAME_AW(SZOLEUI_MSG_HELP) +#define SZOLEUI_MSG_ENDDIALOG WINELIB_NAME_AW(SZOLEUI_MSG_ENDDIALOG) +#define SZOLEUI_MSG_BROWSE WINELIB_NAME_AW(SZOLEUI_MSG_BROWSE) +#define SZOLEUI_MSG_CHANGEICON WINELIB_NAME_AW(SZOLEUI_MSG_CHANGEICON) +#define SZOLEUI_MSG_CLOSEBUSYDIALOG WINELIB_NAME_AW(SZOLEUI_MSG_CLOSEBUSYDIALOG) +#define SZOLEUI_MSG_CONVERT WINELIB_NAME_AW(SZOLEUI_MSG_CONVERT) +#define SZOLEUI_MSG_CHANGESOURCE WINELIB_NAME_AW(SZOLEUI_MSG_CHANGESOURCE) +#define SZOLEUI_MSG_ADDCONTROL WINELIB_NAME_AW(SZOLEUI_MSG_ADDCONTROL) +#define SZOLEUI_MSG_BROWSE_OFN WINELIB_NAME_AW(SZOLEUI_MSG_BROWSE_OFN) + + +/***************************************************************************** + * INSERT OBJECT DIALOG + */ +typedef struct tagOLEUIINSERTOBJECTA +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + LPVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; +} OLEUIINSERTOBJECTA, *POLEUIINSERTOBJECTA, *LPOLEUIINSERTOBJECTA; + +typedef struct tagOLEUIINSERTOBJECTW +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPWSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + LPVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; +} OLEUIINSERTOBJECTW, *POLEUIINSERTOBJECTW, *LPOLEUIINSERTOBJECTW; + +DECL_WINELIB_TYPE_AW(OLEUIINSERTOBJECT) +DECL_WINELIB_TYPE_AW(POLEUIINSERTOBJECT) +DECL_WINELIB_TYPE_AW(LPOLEUIINSERTOBJECT) + +#define IOF_SHOWHELP 0x00000001L +#define IOF_SELECTCREATENEW 0x00000002L +#define IOF_SELECTCREATEFROMFILE 0x00000004L +#define IOF_CHECKLINK 0x00000008L +#define IOF_CHECKDISPLAYASICON 0x00000010L +#define IOF_CREATENEWOBJECT 0x00000020L +#define IOF_CREATEFILEOBJECT 0x00000040L +#define IOF_CREATELINKOBJECT 0x00000080L +#define IOF_DISABLELINK 0x00000100L +#define IOF_VERIFYSERVERSEXIST 0x00000200L +#define IOF_DISABLEDISPLAYASICON 0x00000400L +#define IOF_HIDECHANGEICON 0x00000800L +#define IOF_SHOWINSERTCONTROL 0x00001000L +#define IOF_SELECTCREATECONTROL 0x00002000L + +/***************************************************************************** + * CONVERT DIALOG + */ +typedef struct tagOLEUICONVERTA +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPSTR lpszUserType; + BOOL fObjectsIconChanged; + LPSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; +} OLEUICONVERTA, *POLEUICONVERTA, *LPOLEUICONVERTA; + +typedef struct tagOLEUICONVERTW +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPWSTR lpszUserType; + BOOL fObjectsIconChanged; + LPWSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; +} OLEUICONVERTW, *POLEUICONVERTW, *LPOLEUICONVERTW; + +DECL_WINELIB_TYPE_AW(OLEUICONVERT) +DECL_WINELIB_TYPE_AW(POLEUICONVERT) +DECL_WINELIB_TYPE_AW(LPOLEUICONVERT) + +#define CF_SHOWHELPBUTTON 0x00000001L +#define CF_SETCONVERTDEFAULT 0x00000002L +#define CF_SETACTIVATEDEFAULT 0x00000004L +#define CF_SELECTCONVERTTO 0x00000008L +#define CF_SELECTACTIVATEAS 0x00000010L +#define CF_DISABLEDISPLAYASICON 0x00000020L +#define CF_DISABLEACTIVATEAS 0x00000040L +#define CF_HIDECHANGEICON 0x00000080L +#define CF_CONVERTONLY 0x00000100L + +/***************************************************************************** + * CHANGE ICON DIALOG + */ +typedef struct tagOLEUICHANGEICONA +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + CHAR szIconExe[MAX_PATH]; + INT cchIconExe; +} OLEUICHANGEICONA, *POLEUICHANGEICONA, *LPOLEUICHANGEICONA; + +typedef struct tagOLEUICHANGEICONW +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + WCHAR szIconExe[MAX_PATH]; + INT cchIconExe; +} OLEUICHANGEICONW, *POLEUICHANGEICONW, *LPOLEUICHANGEICONW; + +DECL_WINELIB_TYPE_AW(OLEUICHANGEICON) +DECL_WINELIB_TYPE_AW(POLEUICHANGEICON) +DECL_WINELIB_TYPE_AW(LPOLEUICHANGEICON) + + +#define CIF_SHOWHELP 0x00000001L +#define CIF_SELECTCURRENT 0x00000002L +#define CIF_SELECTDEFAULT 0x00000004L +#define CIF_SELECTFROMFILE 0x00000008L +#define CIF_USEICONEXE 0x00000010L + +/***************************************************************************** + * PASTE SPECIAL DIALOG + */ + +typedef enum tagOLEUIPASTEFLAG +{ + OLEUIPASTE_ENABLEICON = 2048, + OLEUIPASTE_PASTEONLY = 0, + OLEUIPASTE_PASTE = 512, + OLEUIPASTE_LINKANYTYPE = 1024, + OLEUIPASTE_LINKTYPE1 = 1, + OLEUIPASTE_LINKTYPE2 = 2, + OLEUIPASTE_LINKTYPE3 = 4, + OLEUIPASTE_LINKTYPE4 = 8, + OLEUIPASTE_LINKTYPE5 = 16, + OLEUIPASTE_LINKTYPE6 = 32, + OLEUIPASTE_LINKTYPE7 = 64, + OLEUIPASTE_LINKTYPE8 = 128 } OLEUIPASTEFLAG; -typedef struct tagOLEUIPASTEENTRYW { - FORMATETC fmtetc; - LPCWSTR lpstrFormatName; - LPCWSTR lpstrResultText; - DWORD dwFlags; - DWORD dwScratchSpace; -} OLEUIPASTEENTRYW,*POLEUIPASTEENTRYW,*LPOLEUIPASTEENTRYW; -typedef struct tagOLEUIPASTEENTRYA { - FORMATETC fmtetc; - LPCSTR lpstrFormatName; - LPCSTR lpstrResultText; - DWORD dwFlags; - DWORD dwScratchSpace; -} OLEUIPASTEENTRYA,*POLEUIPASTEENTRYA,*LPOLEUIPASTEENTRYA; -typedef struct tagOLEUIPASTESPECIALW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - LPDATAOBJECT lpSrcDataObj; - LPOLEUIPASTEENTRYW arrPasteEntries; - int cPasteEntries; - UINT *arrLinkTypes; - int cLinkTypes; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - int nSelectedIndex; - BOOL fLink; - HGLOBAL hMetaPict; - SIZEL sizel; -} OLEUIPASTESPECIALW,*POLEUIPASTESPECIALW,*LPOLEUIPASTESPECIALW; -typedef struct tagOLEUIPASTESPECIALA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - LPDATAOBJECT lpSrcDataObj; - LPOLEUIPASTEENTRYA arrPasteEntries; - int cPasteEntries; - UINT *arrLinkTypes; - int cLinkTypes; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - int nSelectedIndex; - BOOL fLink; - HGLOBAL hMetaPict; - SIZEL sizel; -} OLEUIPASTESPECIALA,*POLEUIPASTESPECIALA,*LPOLEUIPASTESPECIALA; -#define INTERFACE IOleUILinkContainerW -DECLARE_INTERFACE_(IOleUILinkContainerW, IUnknown) + +typedef struct tagOLEUIPASTEENTRYA { - STDMETHOD(QueryInterface) (THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE; - STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD,DWORD) PURE; - STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD,PDWORD) PURE; - STDMETHOD(SetLinkSource) (THIS_ DWORD, LPWSTR,ULONG,PULONG,BOOL) PURE; - STDMETHOD(GetLinkSource) (THIS_ DWORD,LPWSTR*,PULONG,LPWSTR*,LPWSTR*,BOOL*,BOOL*) PURE; - STDMETHOD(OpenLinkSource) (THIS_ DWORD) PURE; - STDMETHOD(UpdateLink) (THIS_ DWORD,BOOL,BOOL) PURE; - STDMETHOD(CancelLink) (THIS_ DWORD) PURE; -}; -#undef INTERFACE -typedef IOleUILinkContainerW *LPOLEUILINKCONTAINERW; -#undef INTERFACE -#define INTERFACE IOleUILinkContainerA -DECLARE_INTERFACE_(IOleUILinkContainerA, IUnknown) + FORMATETC fmtetc; + LPCSTR lpstrFormatName; + LPCSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} OLEUIPASTEENTRYA, *POLEUIPASTEENTRYA, *LPOLEUIPASTEENTRYA; + +typedef struct tagOLEUIPASTEENTRYW { - STDMETHOD(QueryInterface) (THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD) PURE; - STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD,DWORD) PURE; - STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD,PDWORD) PURE; - STDMETHOD(SetLinkSource) (THIS_ DWORD, LPSTR,ULONG,PULONG,BOOL) PURE; - STDMETHOD(GetLinkSource) (THIS_ DWORD,LPSTR*,PULONG,LPSTR*,LPSTR*,BOOL*,BOOL*) PURE; - STDMETHOD(OpenLinkSource) (THIS_ DWORD) PURE; - STDMETHOD(UpdateLink) (THIS_ DWORD,BOOL,BOOL) PURE; - STDMETHOD(CancelLink) (THIS_ DWORD) PURE; -}; -typedef IOleUILinkContainerA *LPOLEUILINKCONTAINERA; -typedef struct tagOLEUIEDITLINKSW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - LPOLEUILINKCONTAINERW lpOleUILinkContainer; -} OLEUIEDITLINKSW,*POLEUIEDITLINKSW,*LPOLEUIEDITLINKSW; -typedef struct tagOLEUIEDITLINKSA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - LPOLEUILINKCONTAINERA lpOleUILinkContainer; -} OLEUIEDITLINKSA,*POLEUIEDITLINKSA,*LPOLEUIEDITLINKSA; -typedef struct tagOLEUICHANGEICONW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - HGLOBAL hMetaPict; - CLSID clsid; - WCHAR szIconExe[MAX_PATH]; - int cchIconExe; -} OLEUICHANGEICONW,*POLEUICHANGEICONW,*LPOLEUICHANGEICONW; -typedef struct tagOLEUICHANGEICONA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - HGLOBAL hMetaPict; - CLSID clsid; - CHAR szIconExe[MAX_PATH]; - int cchIconExe; -} OLEUICHANGEICONA,*POLEUICHANGEICONA,*LPOLEUICHANGEICONA; -typedef struct tagOLEUICONVERTW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - CLSID clsidConvertDefault; - CLSID clsidActivateDefault; - CLSID clsidNew; - DWORD dvAspect; - WORD wFormat; - BOOL fIsLinkedObject; - HGLOBAL hMetaPict; - LPWSTR lpszUserType; - BOOL fObjectsIconChanged; - LPWSTR lpszDefLabel; - UINT cClsidExclude; - LPCLSID lpClsidExclude; -} OLEUICONVERTW,*POLEUICONVERTW,*LPOLEUICONVERTW; -typedef struct tagOLEUICONVERTA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - CLSID clsidConvertDefault; - CLSID clsidActivateDefault; - CLSID clsidNew; - DWORD dvAspect; - WORD wFormat; - BOOL fIsLinkedObject; - HGLOBAL hMetaPict; - LPSTR lpszUserType; - BOOL fObjectsIconChanged; - LPSTR lpszDefLabel; - UINT cClsidExclude; - LPCLSID lpClsidExclude; -} OLEUICONVERTA,*POLEUICONVERTA,*LPOLEUICONVERTA; -typedef struct tagOLEUIBUSYW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - HTASK hTask; - HWND *lphWndDialog; -} OLEUIBUSYW,*POLEUIBUSYW,*LPOLEUIBUSYW; -typedef struct tagOLEUIBUSYA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - HTASK hTask; - HWND *lphWndDialog; -} OLEUIBUSYA,*POLEUIBUSYA,*LPOLEUIBUSYA; -typedef struct tagOLEUICHANGESOURCEW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - OPENFILENAMEW* lpOFN; - DWORD dwReserved1[4]; - LPOLEUILINKCONTAINERW lpOleUILinkContainer; - DWORD dwLink; - LPWSTR lpszDisplayName; - ULONG nFileLength; - LPWSTR lpszFrom; - LPWSTR lpszTo; -} OLEUICHANGESOURCEW,*POLEUICHANGESOURCEW,*LPOLEUICHANGESOURCEW; -typedef struct tagOLEUICHANGESOURCEA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - OPENFILENAMEA *lpOFN; - DWORD dwReserved1[4]; - LPOLEUILINKCONTAINERA lpOleUILinkContainer; - DWORD dwLink; - LPSTR lpszDisplayName; - ULONG nFileLength; - LPSTR lpszFrom; - LPSTR lpszTo; -} OLEUICHANGESOURCEA,*POLEUICHANGESOURCEA,*LPOLEUICHANGESOURCEA; -#undef INTERFACE -#define INTERFACE IOleUIObjInfoW -DECLARE_INTERFACE_(IOleUIObjInfoW, IUnknown) + FORMATETC fmtetc; + LPCWSTR lpstrFormatName; + LPCWSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} OLEUIPASTEENTRYW, *POLEUIPASTEENTRYW, *LPOLEUIPASTEENTRYW; + +DECL_WINELIB_TYPE_AW(OLEUIPASTEENTRY) +DECL_WINELIB_TYPE_AW(POLEUIPASTEENTRY) +DECL_WINELIB_TYPE_AW(LPOLEUIPASTEENTRY) + +typedef struct tagOLEUIPASTESPECIALA { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetObjectInfo)(THIS_ DWORD,PDWORD,LPWSTR*,LPWSTR*,LPWSTR*,LPWSTR*) PURE; - STDMETHOD(GetConvertInfo)(THIS_ DWORD,CLSID*,PWORD,CLSID*,LPCLSID*,UINT*) PURE; - STDMETHOD(ConvertObject)(THIS_ DWORD,REFCLSID) PURE; - STDMETHOD(GetViewInfo)(THIS_ DWORD,HGLOBAL*,PDWORD,int*) PURE; - STDMETHOD(SetViewInfo)(THIS_ DWORD,HGLOBAL,DWORD,int,BOOL) PURE; -}; -typedef IOleUIObjInfoW *LPOLEUIOBJINFOW; -#undef INTERFACE -#define INTERFACE IOleUIObjInfoA -DECLARE_INTERFACE_(IOleUIObjInfoA, IUnknown) + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYA arrPasteEntries; + INT cPasteEntries; + UINT* arrLinkTypes; + INT cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + INT nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; +} OLEUIPASTESPECIALA, *POLEUIPASTESPECIALA, *LPOLEUIPASTESPECIALA; + +typedef struct tagOLEUIPASTESPECIALW { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetObjectInfo)(THIS_ DWORD,PDWORD,LPSTR*,LPSTR*,LPSTR*,LPSTR*) PURE; - STDMETHOD(GetConvertInfo)(THIS_ DWORD,CLSID*,PWORD,CLSID*,LPCLSID*,UINT*) PURE; - STDMETHOD(ConvertObject)(THIS_ DWORD,REFCLSID) PURE; - STDMETHOD(GetViewInfo)(THIS_ DWORD,HGLOBAL*,PDWORD,int*) PURE; - STDMETHOD(SetViewInfo)(THIS_ DWORD,HGLOBAL,DWORD,int,BOOL) PURE; -}; -typedef IOleUIObjInfoA *LPOLEUIOBJINFOA; -#undef INTERFACE -#define INTERFACE IOleUILinkInfoW -DECLARE_INTERFACE_(IOleUILinkInfoW, IOleUILinkContainerW) + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYW arrPasteEntries; + INT cPasteEntries; + UINT* arrLinkTypes; + INT cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + INT nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; +} OLEUIPASTESPECIALW, *POLEUIPASTESPECIALW, *LPOLEUIPASTESPECIALW; + +DECL_WINELIB_TYPE_AW(OLEUIPASTESPECIAL) +DECL_WINELIB_TYPE_AW(POLEUIPASTESPECIAL) +DECL_WINELIB_TYPE_AW(LPOLEUIPASTESPECIAL) + +#define PS_MAXLINKTYPES 8 + +#define PSF_SHOWHELP 0x00000001L +#define PSF_SELECTPASTE 0x00000002L +#define PSF_SELECTPASTELINK 0x00000004L + +#define PSF_CHECKDISPLAYASICON 0x00000008L +#define PSF_DISABLEDISPLAYASICON 0x00000010L +#define PSF_HIDECHANGEICON 0x00000020L +#define PSF_STAYONCLIPBOARDCHANGE 0x00000040L +#define PSF_NOREFRESHDATAOBJECT 0x00000080L + +#define OLEUI_IOERR_SRCDATAOBJECTINVALID (OLEUI_ERR_STANDARDMAX+0) +#define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1) +#define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2) +#define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3) +#define OLEUI_PSERR_GETCLIPBOARDFAILED (OLEUI_ERR_STANDARDMAX+4) + +/* Paste Special dialog resource ids */ +#define IDD_PASTESPECIAL 1003 +#define IDD_PASTESPECIAL4 1108 + +/* Paste Special dialog control ids */ +#define IDC_PS_PASTE 500 +#define IDC_PS_PASTELINK 501 +#define IDC_PS_SOURCETEXT 502 +#define IDC_PS_PASTELIST 503 +#define IDC_PS_PASTELINKLIST 504 +#define IDC_PS_DISPLAYLIST 505 +#define IDC_PS_DISPLAYASICON 506 +#define IDC_PS_ICONDISPLAY 507 +#define IDC_PS_CHANGEICON 508 +#define IDC_PS_RESULTIMAGE 509 +#define IDC_PS_RESULTTEXT 510 + +/***************************************************************************** + * EDIT LINKS DIALOG + */ + +#define ELF_SHOWHELP 0x00000001L +#define ELF_DISABLEUPDATENOW 0x00000002L +#define ELF_DISABLEOPENSOURCE 0x00000004L +#define ELF_DISABLECHANGESOURCE 0x00000008L +#define ELF_DISABLECANCELLINK 0x00000010L + +typedef struct tagOLEUIEDITLINKSW { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD) PURE; - STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD,DWORD*) PURE; - STDMETHOD(SetLinkSource)(THIS_ DWORD,LPWSTR,ULONG,PULONG,BOOL) PURE; - STDMETHOD(GetLinkSource)(THIS_ DWORD,LPWSTR*,PULONG,LPWSTR*,LPWSTR*,BOOL*,BOOL*) PURE; - STDMETHOD(OpenLinkSource)(THIS_ DWORD) PURE; - STDMETHOD(UpdateLink)(THIS_ DWORD,BOOL,BOOL) PURE; - STDMETHOD(CancelLink)(THIS_ DWORD) PURE; - STDMETHOD(GetLastUpdate)(THIS_ DWORD,FILETIME*) PURE; -}; -typedef IOleUILinkInfoW *LPOLEUILINKINFOW; -#undef INTERFACE -#define INTERFACE IOleUILinkInfoA -DECLARE_INTERFACE_(IOleUILinkInfoA, IOleUILinkContainerA) + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; +} OLEUIEDITLINKSW, *POLEUIEDITLINKSW, *LPOLEUIEDITLINKSW; + +typedef struct tagOLEUIEDITLINKSA { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD) PURE; - STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD,DWORD*) PURE; - STDMETHOD(SetLinkSource)(THIS_ DWORD,LPSTR,ULONG,PULONG,BOOL) PURE; - STDMETHOD(GetLinkSource)(THIS_ DWORD,LPSTR*,PULONG,LPSTR*,LPSTR*,BOOL*,BOOL*) PURE; - STDMETHOD(OpenLinkSource)(THIS_ DWORD) PURE; - STDMETHOD(UpdateLink)(THIS_ DWORD,BOOL,BOOL) PURE; - STDMETHOD(CancelLink)(THIS_ DWORD) PURE; - STDMETHOD(GetLastUpdate)(THIS_ DWORD,FILETIME*) PURE; -}; -typedef IOleUILinkInfoA* LPOLEUILINKINFOA; + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; +} OLEUIEDITLINKSA, *POLEUIEDITLINKSA, *LPOLEUIEDITLINKSA; + +DECL_WINELIB_TYPE_AW(OLEUIEDITLINKS) +DECL_WINELIB_TYPE_AW(POLEUIEDITLINKS) +DECL_WINELIB_TYPE_AW(LPOLEUIEDITLINKS) + + +/*********************************************************************************** + * BUSY DIALOG + */ +typedef struct tagOLEUIBUSYA +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND* lphWndDialog; +} OLEUIBUSYA, *POLEUIBUSYA, *LPOLEUIBUSYA; + +typedef struct tagOLEUIBUSYW +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND* lphWndDialog; +} OLEUIBUSYW, *POLEUIBUSYW, *LPOLEUIBUSYW; + +DECL_WINELIB_TYPE_AW(OLEUIBUSY) +DECL_WINELIB_TYPE_AW(POLEUIBUSY) +DECL_WINELIB_TYPE_AW(LPOLEUIBUSY) + + +#define BZ_DISABLECANCELBUTTON 0x00000001L +#define BZ_DISABLESWITCHTOBUTTON 0x00000002L +#define BZ_DISABLERETRYBUTTON 0x00000004L +#define BZ_NOTRESPONDINGDIALOG 0x00000008L + +/*********************************************************************************** + * OBJECT PROPERTIES DIALOG + */ + struct tagOLEUIOBJECTPROPSW; struct tagOLEUIOBJECTPROPSA; -typedef struct tagOLEUIGNRLPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - struct tagOLEUIOBJECTPROPSW* lpOP; -} OLEUIGNRLPROPSW,*POLEUIGNRLPROPSW,*LPOLEUIGNRLPROPSW; -typedef struct tagOLEUIGNRLPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - struct tagOLEUIOBJECTPROPSA* lpOP; -} OLEUIGNRLPROPSA,*POLEUIGNRLPROPSA,*LPOLEUIGNRLPROPSA; -typedef struct tagOLEUIVIEWPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - struct tagOLEUIOBJECTPROPSW* lpOP; - int nScaleMin; - int nScaleMax; -} OLEUIVIEWPROPSW,*POLEUIVIEWPROPSW,*LPOLEUIVIEWPROPSW; -typedef struct tagOLEUIVIEWPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - struct tagOLEUIOBJECTPROPSA *lpOP; - int nScaleMin; - int nScaleMax; -} OLEUIVIEWPROPSA,*POLEUIVIEWPROPSA,*LPOLEUIVIEWPROPSA; -typedef struct tagOLEUILINKPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - struct tagOLEUIOBJECTPROPSW *lpOP; -} OLEUILINKPROPSW, *POLEUILINKPROPSW,* LPOLEUILINKPROPSW; -typedef struct tagOLEUILINKPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - struct tagOLEUIOBJECTPROPSA* lpOP; -} OLEUILINKPROPSA,*POLEUILINKPROPSA,*LPOLEUILINKPROPSA; -typedef struct tagOLEUIOBJECTPROPSW { - DWORD cbStruct; - DWORD dwFlags; - LPPROPSHEETHEADERW lpPS; - DWORD dwObject; - LPOLEUIOBJINFOW lpObjInfo; - DWORD dwLink; - LPOLEUILINKINFOW lpLinkInfo; - LPOLEUIGNRLPROPSW lpGP; - LPOLEUIVIEWPROPSW lpVP; - LPOLEUILINKPROPSW lpLP; -} OLEUIOBJECTPROPSW,*POLEUIOBJECTPROPSW,*LPOLEUIOBJECTPROPSW; -typedef struct tagOLEUIOBJECTPROPSA { - DWORD cbStruct; - DWORD dwFlags; - LPPROPSHEETHEADERA lpPS; - DWORD dwObject; - LPOLEUIOBJINFOA lpObjInfo; - DWORD dwLink; - LPOLEUILINKINFOA lpLinkInfo; - LPOLEUIGNRLPROPSA lpGP; - LPOLEUIVIEWPROPSA lpVP; - LPOLEUILINKPROPSA lpLP; -} OLEUIOBJECTPROPSA,*POLEUIOBJECTPROPSA,*LPOLEUIOBJECTPROPSA; -STDAPI_(BOOL) OleUIAddVerbMenuW(LPOLEOBJECT,LPCWSTR,HMENU,UINT,UINT,UINT,BOOL,UINT,HMENU*); -STDAPI_(BOOL) OleUIAddVerbMenuA(LPOLEOBJECT,LPCSTR,HMENU,UINT,UINT,UINT,BOOL,UINT,HMENU*); -STDAPI_(UINT) OleUIBusyW(LPOLEUIBUSYW); -STDAPI_(UINT) OleUIBusyA(LPOLEUIBUSYA); -STDAPI_(BOOL) OleUICanConvertOrActivateAs(REFCLSID,BOOL,WORD); -STDAPI_(UINT) OleUIChangeIconW(LPOLEUICHANGEICONW); -STDAPI_(UINT) OleUIChangeIconA(LPOLEUICHANGEICONA); -STDAPI_(UINT) OleUIChangeSourceW(LPOLEUICHANGESOURCEW); -STDAPI_(UINT) OleUIChangeSourceA(LPOLEUICHANGESOURCEA); -STDAPI_(UINT) OleUIConvertW(LPOLEUICONVERTW); -STDAPI_(UINT) OleUIConvertA(LPOLEUICONVERTA); -STDAPI_(UINT) OleUIEditLinksW(LPOLEUIEDITLINKSW); -STDAPI_(UINT) OleUIEditLinksA(LPOLEUIEDITLINKSA); -STDAPI_(UINT) OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); -STDAPI_(UINT) OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); -STDAPI_(UINT) OleUIPasteSpecialW(LPOLEUIPASTESPECIALW); -STDAPI_(UINT) OleUIPasteSpecialA(LPOLEUIPASTESPECIALA); -int OleUIPromptUserW(int,HWND,...); -int OleUIPromptUserA(int,HWND,...); -STDAPI_(BOOL) OleUIUpdateLinksW(LPOLEUILINKCONTAINERW,HWND,LPWSTR,int); -STDAPI_(BOOL) OleUIUpdateLinksA(LPOLEUILINKCONTAINERA,HWND,LPSTR,int); +typedef struct tagOLEUIGNRLPROPSA +{ + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSA* lpOP; -#ifdef UNICODE -#define IDD_SERVERNOTREG IDD_SERVERNOTREGW -#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDW -#define OleUIUpdateLinks OleUIUpdateLinksW -#define OleUIAddVerbMenu OleUIAddVerbMenuW -#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSW -#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSW -#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSW -#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSW -#define OleUIObjectProperties OleUIObjectPropertiesW -#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTW -#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTW -#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTW -#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTW -#define OleUIInsertObject OleUIInsertObjectW -#define OleUIPromptUser OleUIPromptUserW -#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYW -#define OLEUIPASTEENTRY OLEUIPASTEENTRYW -#define POLEUIPASTEENTRY POLEUIPASTEENTRYW -#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYW -#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALW -#define OLEUIPASTESPECIAL OLEUIPASTESPECIALW -#define POLEUIPASTESPECIAL POLEUIPASTESPECIALW -#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALW -#define OleUIPasteSpecial OleUIPasteSpecialW -#define IOleUILinkContainer IOleUILinkContainerW -#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERW -#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSW -#define OLEUIEDITLINKS OLEUIEDITLINKSW -#define POLEUIEDITLINKS POLEUIEDITLINKSW -#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSW -#define OleUIEditLinks OleUIEditLinksW -#define tagOLEUICHANGEICON tagOLEUICHANGEICONW -#define OLEUICHANGEICON OLEUICHANGEICONW -#define POLEUICHANGEICON POLEUICHANGEICONW -#define LPOLEUICHANGEICON LPOLEUICHANGEICONW -#define OleUIChangeIcon OleUIChangeIconW -#define tagOLEUICONVERT tagOLEUICONVERTW -#define OLEUICONVERT OLEUICONVERTW -#define POLEUICONVERT POLEUICONVERTW -#define LPOLEUICONVERT LPOLEUICONVERTW -#define OleUIConvert OleUIConvertW -#define tagOLEUIBUSY tagOLEUIBUSYW -#define OLEUIBUSY OLEUIBUSYW -#define POLEUIBUSY POLEUIBUSYW -#define LPOLEUIBUSY LPOLEUIBUSYW -#define OleUIBusy OleUIBusyW -#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEW -#define OLEUICHANGESOURCE OLEUICHANGESOURCEW -#define POLEUICHANGESOURCE POLEUICHANGESOURCEW -#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEW -#define OleUIChangeSource OleUIChangeSourceW -#define IOleUIObjInfo IOleUIObjInfoW -#define LPOLEUIOBJINFO LPOLEUIOBJINFOW -#define IOleUILinkInfo IOleUILinkInfoW -#define IOleUILinkInfoVtbl IOleUILinkInfoWVtbl -#define LPOLEUILINKINFO LPOLEUILINKINFOW -#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSW -#define OLEUIGNRLPROPS OLEUIGNRLPROPSW -#define POLEUIGNRLPROPS POLEUIGNRLPROPSW -#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSW -#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSW -#define OLEUIVIEWPROPS OLEUIVIEWPROPSW -#define POLEUIVIEWPROPS POLEUIVIEWPROPSW -#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSW -#define tagOLEUILINKPROPS tagOLEUILINKPROPSW -#define OLEUILINKPROPS OLEUILINKPROPSW -#define POLEUILINKPROPS POLEUILINKPROPSW -#define LPOLEUILINKPROPS LPOLEUILINKPROPSW -#else -#define IDD_SERVERNOTREG IDD_SERVERNOTREGA -#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDA -#define OleUIUpdateLinks OleUIUpdateLinksA -#define OleUIAddVerbMenu OleUIAddVerbMenuA -#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSA -#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSA -#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSA -#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSA -#define OleUIObjectProperties OleUIObjectPropertiesA -#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTA -#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTA -#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTA -#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTA -#define OleUIInsertObject OleUIInsertObjectA -#define OleUIPromptUser OleUIPromptUserA -#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYA -#define OLEUIPASTEENTRY OLEUIPASTEENTRYA -#define POLEUIPASTEENTRY POLEUIPASTEENTRYA -#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYA -#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALA -#define OLEUIPASTESPECIAL OLEUIPASTESPECIALA -#define POLEUIPASTESPECIAL POLEUIPASTESPECIALA -#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALA -#define OleUIPasteSpecial OleUIPasteSpecialA -#define IOleUILinkContainer IOleUILinkContainerA -#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERA -#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSA -#define OLEUIEDITLINKS OLEUIEDITLINKSA -#define POLEUIEDITLINKS POLEUIEDITLINKSA -#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSA -#define OleUIEditLinks OleUIEditLinksA -#define tagOLEUICHANGEICON tagOLEUICHANGEICONA -#define OLEUICHANGEICON OLEUICHANGEICONA -#define POLEUICHANGEICON POLEUICHANGEICONA -#define LPOLEUICHANGEICON LPOLEUICHANGEICONA -#define OleUIChangeIcon OleUIChangeIconA -#define tagOLEUICONVERT tagOLEUICONVERTA -#define OLEUICONVERT OLEUICONVERTA -#define POLEUICONVERT POLEUICONVERTA -#define LPOLEUICONVERT LPOLEUICONVERTA -#define OleUIConvert OleUIConvertA -#define tagOLEUIBUSY tagOLEUIBUSYA -#define OLEUIBUSY OLEUIBUSYA -#define POLEUIBUSY POLEUIBUSYA -#define LPOLEUIBUSY LPOLEUIBUSYA -#define OleUIBusy OleUIBusyA -#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEA -#define OLEUICHANGESOURCE OLEUICHANGESOURCEA -#define POLEUICHANGESOURCE POLEUICHANGESOURCEA -#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEA -#define OleUIChangeSource OleUIChangeSourceA -#define IOleUIObjInfo IOleUIObjInfoA -#define LPOLEUIOBJINFO LPOLEUIOBJINFOA -#define IOleUILinkInfo IOleUILinkInfoA -#define IOleUILinkInfoVtbl IOleUILinkInfoAVtbl -#define LPOLEUILINKINFO LPOLEUILINKINFOA -#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSA -#define OLEUIGNRLPROPS OLEUIGNRLPROPSA -#define POLEUIGNRLPROPS POLEUIGNRLPROPSA -#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSA -#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSA -#define OLEUIVIEWPROPS OLEUIVIEWPROPSA -#define POLEUIVIEWPROPS POLEUIVIEWPROPSA -#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSA -#define tagOLEUILINKPROPS tagOLEUILINKPROPSA -#define OLEUILINKPROPS OLEUILINKPROPSA -#define POLEUILINKPROPS POLEUILINKPROPSA -#define LPOLEUILINKPROPS LPOLEUILINKPROPSA +} OLEUIGNRLPROPSA, *POLEUIGNRLPROPSA, *LPOLEUIGNRLPROPSA; + +typedef struct tagOLEUIGNRLPROPSW +{ + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSW* lpOP; +} OLEUIGNRLPROPSW, *POLEUIGNRLPROPSW, *LPOLEUIGNRLPROPSW; + +DECL_WINELIB_TYPE_AW(OLEUIGNRLPROPS) +DECL_WINELIB_TYPE_AW(POLEUIGNRLPROPS) +DECL_WINELIB_TYPE_AW(LPOLEUIGNRLPROPS) + +typedef struct tagOLEUIVIEWPROPSA +{ + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSA* lpOP; + INT nScaleMin; + INT nScaleMax; +} OLEUIVIEWPROPSA, *POLEUIVIEWPROPSA, *LPOLEUIVIEWPROPSA; + +typedef struct tagOLEUIVIEWPROPSW +{ + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSW* lpOP; + INT nScaleMin; + INT nScaleMax; +} OLEUIVIEWPROPSW, *POLEUIVIEWPROPSW, *LPOLEUIVIEWPROPSW; + +DECL_WINELIB_TYPE_AW(OLEUIVIEWPROPS) +DECL_WINELIB_TYPE_AW(POLEUIVIEWPROPS) +DECL_WINELIB_TYPE_AW(LPOLEUIVIEWPROPS) + + +#define VPF_SELECTRELATIVE 0x00000001L +#define VPF_DISABLERELATIVE 0x00000002L +#define VPF_DISABLESCALE 0x00000004L + +typedef struct tagOLEUILINKPROPSA +{ + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSA* lpOP; +} OLEUILINKPROPSA, *POLEUILINKPROPSA, *LPOLEUILINKPROPSA; + +typedef struct tagOLEUILINKPROPSW +{ + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSW* lpOP; +} OLEUILINKPROPSW, *POLEUILINKPROPSW, *LPOLEUILINKPROPSW; + +DECL_WINELIB_TYPE_AW(OLEUILINKPROPS) +DECL_WINELIB_TYPE_AW(POLEUILINKPROPS) +DECL_WINELIB_TYPE_AW(LPOLEUILINKPROPS) + +typedef struct tagOLEUIOBJECTPROPSA +{ + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERA lpPS; + DWORD dwObject; + LPOLEUIOBJINFOA lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOA lpLinkInfo; + LPOLEUIGNRLPROPSA lpGP; + LPOLEUIVIEWPROPSA lpVP; + LPOLEUILINKPROPSA lpLP; +} OLEUIOBJECTPROPSA, *POLEUIOBJECTPROPSA, *LPOLEUIOBJECTPROPSA; + +typedef struct tagOLEUIOBJECTPROPSW +{ + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERW lpPS; + DWORD dwObject; + LPOLEUIOBJINFOW lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOW lpLinkInfo; + LPOLEUIGNRLPROPSW lpGP; + LPOLEUIVIEWPROPSW lpVP; + LPOLEUILINKPROPSW lpLP; +} OLEUIOBJECTPROPSW, *POLEUIOBJECTPROPSW, *LPOLEUIOBJECTPROPSW; + +DECL_WINELIB_TYPE_AW(OLEUIOBJECTPROPS) +DECL_WINELIB_TYPE_AW(POLEUIOBJECTPROPS) +DECL_WINELIB_TYPE_AW(LPOLEUIOBJECTPROPS) + +#define OPF_OBJECTISLINK 0x00000001L +#define OPF_NOFILLDEFAULT 0x00000002L +#define OPF_SHOWHELP 0x00000004L +#define OPF_DISABLECONVERT 0x00000008L + + +/************************************************************************************ + * CHANGE SOURCE DIALOG + */ + + +typedef struct tagOLEUICHANGESOURCEW +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEW*lpOFN; + DWORD dwReserved1[4]; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; + DWORD dwLink; + LPWSTR lpszDisplayName; + ULONG nFileLength; + LPWSTR lpszFrom; + LPWSTR lpszTo; +} OLEUICHANGESOURCEW, *POLEUICHANGESOURCEW, *LPOLEUICHANGESOURCEW; + + +typedef struct tagOLEUICHANGESOURCEA +{ + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEA* lpOFN; + DWORD dwReserved1[4]; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; + DWORD dwLink; + LPSTR lpszDisplayName; + ULONG nFileLength; + LPSTR lpszFrom; + LPSTR lpszTo; +} OLEUICHANGESOURCEA, *POLEUICHANGESOURCEA, *LPOLEUICHANGESOURCEA; + + +DECL_WINELIB_TYPE_AW(OLEUICHANGESOURCE) +DECL_WINELIB_TYPE_AW(POLEUICHANGESOURCE) +DECL_WINELIB_TYPE_AW(LPOLEUICHANGESOURCE) + +/* Change Source Dialog flags */ +#define CSF_SHOWHELP 0x00000001L +#define CSF_VALIDSOURCE 0x00000002L +#define CSF_ONLYGETSOURCE 0x00000004L +#define CSF_EXPLORER 0x00000008L + + +/***************************************************************************** + * IOleUILinkContainer interface + */ +#define INTERFACE IOleUILinkContainerA +DECLARE_INTERFACE_(IOleUILinkContainerA,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IOleUILinkContainerA methods ***/ + STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE; + STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE; + STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE; + STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPSTR lpszDisplayName, + ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE; + STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPSTR *lplpszDisplayName, ULONG *lplenFileName, + LPSTR *lplpszFullLinkType, LPSTR *lplpszShortLinkType, + BOOL *lpfSourceAvailable, BOOL *lpfIsSelected) PURE; + STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE; + STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE; + STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE; +}; +#undef INTERFACE + +#define INTERFACE IOleUILinkContainerW +DECLARE_INTERFACE_(IOleUILinkContainerW,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IOleUILinkContainerW methods ***/ + STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE; + STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE; + STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE; + STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPWSTR lpszDisplayName, + ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE; + STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPWSTR *lplpszDisplayName, ULONG *lplenFileName, + LPWSTR *lplpszFullLinkType, LPWSTR *lplpszShortLinkType, + BOOL *lpfSourceAvailable, BOOL *lpfIsSelected) PURE; + STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE; + STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE; + STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE; +}; +#undef INTERFACE + +DECL_WINELIB_TYPE_AW(IOleUILinkContainer) +DECL_WINELIB_TYPE_AW(POLEUILINKCONTAINER) +DECL_WINELIB_TYPE_AW(LPOLEUILINKCONTAINER) + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IOleUILinkContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleUILinkContainer_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleUILinkContainer_Release(p) (p)->lpVtbl->Release(p) +/*** IOleUILinkContainer methods ***/ +#define IOleUILinkContainer_GetNextLink(p,a) (p)->lpVtbl->GetNextLink(p,a) +#define IOleUILinkContainer_SetLinkUpdateOptions(p,a,b) (p)->lpVtbl->SetLinkUpdateOptions(p,a,b) +#define IOleUILinkContainer_GetLinkUpdateOptions(p,a,b) (p)->lpVtbl->GetLinkUpdateOptions(p,a,b) +#define IOleUILinkContainer_SetLinkSource(p,a,b,c,d,e) (p)->lpVtbl->SetLinkSource(p,a,b,c,d,e) +#define IOleUILinkContainer_GetLinkSource(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetLinkSource(p,a,b,c,d,e,f,g) +#define IOleUILinkContainer_OpenLinkSource(p,a) (p)->lpVtbl->OpenLinkSource(p,a) +#define IOleUILinkContainer_UpdateLink(p,a,b,c) (p)->lpVtbl->UpdateLink(p,a,b,c) +#define IOleUILinkContainer_CancelLink(p,a) (p)->lpVtbl->CancelLink(p,a) #endif -#pragma pack(pop) + + +/***************************************************************************** + * IOleUILinkInfo interface + */ +#define INTERFACE IOleUILinkInfoA +DECLARE_INTERFACE_(IOleUILinkInfoA,IOleUILinkContainerA) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IOleUILinkContainerA methods ***/ + STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE; + STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE; + STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE; + STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPSTR lpszDisplayName, + ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE; + STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPSTR *lplpszDisplayName, ULONG *lplenFileName, + LPSTR *lplpszFullLinkType, LPSTR *lplpszShortLinkType, + BOOL *lpfSourceAvailable, BOOL *lpfIsSelected) PURE; + STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE; + STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE; + STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE; + /*** IOleUILinkInfoA methods ***/ + STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink, FILETIME *lpLastUpdate) PURE; +}; +#undef INTERFACE + +#define INTERFACE IOleUILinkInfoW +DECLARE_INTERFACE_(IOleUILinkInfoW,IOleUILinkContainerW) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IOleUILinkContainerW methods ***/ + STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE; + STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE; + STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE; + STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPWSTR lpszDisplayName, + ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE; + STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPWSTR *lplpszDisplayName, ULONG *lplenFileName, + LPWSTR *lplpszFullLinkType, LPWSTR *lplpszShortLinkType, + BOOL *lpfSourceAvailable, BOOL *lpfIsSelected) PURE; + STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE; + STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE; + STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE; + /*** IOleUILinkInfoW methods ***/ + STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink, FILETIME *lpLastUpdate) PURE; +}; +#undef INTERFACE + +DECL_WINELIB_TYPE_AW(IOleUILinkInfo) +DECL_WINELIB_TYPE_AW(POLEUILINKINFO) +DECL_WINELIB_TYPE_AW(LPOLEUILINKINFO) + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IOleUILinkInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleUILinkInfo_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleUILinkInfo_Release(p) (p)->lpVtbl->Release(p) +/*** IOleUILinkContainer methods ***/ +#define IOleUILinkInfo_GetNextLink(p,a) (p)->lpVtbl->GetNextLink(p,a) +#define IOleUILinkInfo_SetLinkUpdateOptions(p,a,b) (p)->lpVtbl->SetLinkUpdateOptions(p,a,b) +#define IOleUILinkInfo_GetLinkUpdateOptions(p,a,b) (p)->lpVtbl->GetLinkUpdateOptions(p,a,b) +#define IOleUILinkInfo_SetLinkSource(p,a,b,c,d,e) (p)->lpVtbl->SetLinkSource(p,a,b,c,d,e) +#define IOleUILinkInfo_GetLinkSource(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetLinkSource(p,a,b,c,d,e,f,g) +#define IOleUILinkInfo_OpenLinkSource(p,a) (p)->lpVtbl->OpenLinkSource(p,a) +#define IOleUILinkInfo_UpdateLink(p,a,b,c) (p)->lpVtbl->UpdateLink(p,a,b,c) +#define IOleUILinkInfo_CancelLink(p,a) (p)->lpVtbl->CancelLink(p,a) +/*** IOleUILinkInfo methods ***/ +#define IOleUILinkInfo_GetLastUpdate(p,a,b) (p)->lpVtbl->GetLastUpdate(p,a,b) #endif + + +/***************************************************************************** + * IOleUIObjInfo interface + */ +#define INTERFACE IOleUIObjInfoA +DECLARE_INTERFACE_(IOleUIObjInfoA,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IOleUIObjInfoA methods ***/ + STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPSTR *lplpszLabel, + LPSTR *lplpszType, LPSTR *lplpszShortType, LPSTR *lplpszLocation) PURE; + STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat, + CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE; + STDMETHOD(ConvertObject)(THIS_ DWORD dwObject, REFCLSID clsidNew) PURE; + STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE; + STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect, + INT nCurrentScale, BOOL bRelativeToOrig) PURE; +}; +#undef INTERFACE + +#define INTERFACE IOleUIObjInfoW +DECLARE_INTERFACE_(IOleUIObjInfoW,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IOleUIObjInfoW methods ***/ + STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPWSTR *lplpszLabel, + LPWSTR *lplpszType, LPWSTR *lplpszShortType, LPWSTR *lplpszLocation) PURE; + STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat, + CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE; + STDMETHOD(ConvertObject)(THIS_ DWORD dwObject, REFCLSID clsidNew) PURE; + STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE; + STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect, + INT nCurrentScale, BOOL bRelativeToOrig) PURE; +}; +#undef INTERFACE + +DECL_WINELIB_TYPE_AW(IOleUIObjInfo) +DECL_WINELIB_TYPE_AW(POLEUIOBJINFO) +DECL_WINELIB_TYPE_AW(LPOLEUIOBJINFO) + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IOleUIObjInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IOleUIObjInfo_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IOleUIObjInfo_Release(p) (p)->lpVtbl->Release(p) +/*** IOleUIObjInfo methods ***/ +#define IOleUIObjInfo_GetObjectInfo(p,a,b,c,d,e,f) (p)->lpVtbl->GetObjectInfo(p,a,b,c,d,e,f) +#define IOleUIObjInfo_GetConvertInfo(p,a,b,c,d,e,f) (p)->lpVtbl->GetConvertInfo(p,a,b,c,d,e,f) +#define IOleUIObjInfo_ConvertObject(p,a,b) (p)->lpVtbl->ConvertObject(p,a,b) +#define IOleUIObjInfo_GetViewInfo(p,a,b,c,d) (p)->lpVtbl->GetViewInfo(p,a,b,c,d) +#define IOleUIObjInfo_SetViewInfo(p,a,b,c,d,e) (p)->lpVtbl->SetViewInfo(p,a,b,c,d,e) +#endif + +UINT WINAPI OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); +UINT WINAPI OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); +#define OleUIInsertObject WINELIB_NAME_AW(OleUIInsertObject) +UINT WINAPI OleUIConvertA(LPOLEUICONVERTA); +UINT WINAPI OleUIConvertW(LPOLEUICONVERTW); +#define OleUIConvert WINELIB_NAME_AW(OleUIConvert) +UINT WINAPI OleUIChangeIconA(LPOLEUICHANGEICONA); +UINT WINAPI OleUIChangeIconW(LPOLEUICHANGEICONW); +#define OleUIChangeIcon WINELIB_NAME_AW(OleUIChangeIcon) +UINT WINAPI OleUIBusyA(LPOLEUIBUSYA); +UINT WINAPI OleUIBusyW(LPOLEUIBUSYW); +#define OleUIBusy WINELIB_NAME_AW(OleUIBusy) +UINT WINAPI OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); +UINT WINAPI OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); +#define OleUIObjectProperties WINELIB_NAME_AW(OleUIObjectProperties) +UINT WINAPI OleUIChangeSourceW(LPOLEUICHANGESOURCEW); +UINT WINAPI OleUIChangeSourceA(LPOLEUICHANGESOURCEA); +#define OleUIChangeSource WINELIB_NAME_AW(OleUIChangeSource) +UINT WINAPI OleUIEditLinksA(LPOLEUIEDITLINKSA lpOleUIEditLinks); +UINT WINAPI OleUIEditLinksW(LPOLEUIEDITLINKSW lpOleUIEditLinks); +#define OleUIEditLinks WINELIB_NAME_AW(OleUIEditLinks) +BOOL WINAPI OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr, HWND hwndParent, LPSTR lpszTitle, INT cLinks); +BOOL WINAPI OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr, HWND hwndParent, LPWSTR lpszTitle, INT cLinks); +#define OleUIUpdateLinks WINELIB_NAME_AW(OleUIUpdateLinks) +BOOL WINAPI OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj, LPCSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax, + BOOL bAddConvert, UINT idConvert, HMENU *lphMenu); +BOOL WINAPI OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax, + BOOL bAddConvert, UINT idConvert, HMENU *lphMenu); +#define OleUIAddVerbMenu WINELIB_NAME_AW(OleUIAddVerbMenu) +UINT WINAPI OleUIPasteSpecialA(LPOLEUIPASTESPECIALA lpOleUIPasteSpecial); +UINT WINAPI OleUIPasteSpecialW(LPOLEUIPASTESPECIALW lpOleUIPasteSpecial); +#define OleUIPasteSpecial WINELIB_NAME_AW(OleUIPasteSpecial) +INT __cdecl OleUIPromptUserA(INT,HWND, ...); +INT __cdecl OleUIPromptUserW(INT,HWND, ...); +#define OleUIPromptUser WINELIB_NAME_AW(OleUIPromptUser) + #ifdef __cplusplus -} -#endif +} /* Extern "C" */ #endif + + +#endif /* __WINE_OLEDLG_H */ diff --git a/reactos/include/psdk/oleidl.h b/reactos/include/psdk/oleidl.h deleted file mode 100644 index 9011f71710f..00000000000 --- a/reactos/include/psdk/oleidl.h +++ /dev/null @@ -1,655 +0,0 @@ -#ifndef _OLEIDL_H -#define _OLEIDL_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define MK_ALT 32 - -typedef interface IParseDisplayName *LPPARSEDISPLAYNAME; -typedef interface IOleContainer *LPOLECONTAINER; -typedef interface IOleClientSite *LPOLECLIENTSITE; -typedef interface IOleObject *LPOLEOBJECT; -typedef interface IDropTarget *LPDROPTARGET; -typedef interface IDropSource *LPDROPSOURCE; -typedef interface IEnumOleUndoUnits *LPENUMOLEUNDOUNITS; -typedef interface IEnumOLEVERB *LPENUMOLEVERB; -typedef interface IOleWindow *LPOLEWINDOW; -typedef interface IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW; -typedef interface IOleInPlaceObject *LPOLEINPLACEOBJECT; -typedef interface IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT; -typedef interface IOleInPlaceFrame *LPOLEINPLACEFRAME; -typedef interface IOleAdviseHolder *LPOLEADVISEHOLDER; -typedef interface IViewObject *LPVIEWOBJECT; -typedef interface IViewObject2 *LPVIEWOBJECT2; -typedef interface IOleCache *LPOLECACHE; -typedef interface IOleCache2 *LPOLECACHE2; -typedef interface IOleCacheControl *LPOLECACHECONTROL; - -typedef enum tagBINDSPEED -{ - BINDSPEED_INDEFINITE=1, - BINDSPEED_MODERATE, - BINDSPEED_IMMEDIATE -} BINDSPEED; -typedef enum tagOLEWHICHMK { - OLEWHICHMK_CONTAINER=1, - OLEWHICHMK_OBJREL, - OLEWHICHMK_OBJFULL -} OLEWHICHMK; -typedef enum tagOLEGETMONIKER { - OLEGETMONIKER_ONLYIFTHERE=1, - OLEGETMONIKER_FORCEASSIGN, - OLEGETMONIKER_UNASSIGN, - OLEGETMONIKER_TEMPFORUSER -} OLEGETMONIKER; -typedef enum tagUSERCLASSTYPE { - USERCLASSTYPE_FULL=1, - USERCLASSTYPE_SHORT, - USERCLASSTYPE_APPNAME -} USERCLASSTYPE; - -#ifdef __GNUC__ -__extension__ /* IS0 C says enums limited to range of int */ -#endif -typedef enum tagDROPEFFECT { - DROPEFFECT_NONE=0, - DROPEFFECT_COPY=1, - DROPEFFECT_MOVE=2, - DROPEFFECT_LINK=4, - DROPEFFECT_SCROLL=0x80000000 -} DROPEFFECT; -typedef struct tagOleMenuGroupWidths { - LONG width[6]; -} OLEMENUGROUPWIDTHS,*LPOLEMENUGROUPWIDTHS; -typedef HGLOBAL HOLEMENU; -typedef enum tagOLECLOSE { - OLECLOSE_SAVEIFDIRTY, - OLECLOSE_NOSAVE, - OLECLOSE_PROMPTSAVE -} OLECLOSE; -typedef struct tagOLEVERB { - LONG lVerb; - LPWSTR lpszVerbName; - DWORD fuFlags; - DWORD grfAttribs; -} OLEVERB,*LPOLEVERB; -typedef RECT BORDERWIDTHS; -typedef LPRECT LPBORDERWIDTHS; -typedef LPCRECT LPCBORDERWIDTHS; -typedef struct tagOIFI { - UINT cb; - BOOL fMDIApp; - HWND hwndFrame; - HACCEL haccel; - UINT cAccelEntries; -}OLEINPLACEFRAMEINFO,*LPOLEINPLACEFRAMEINFO; - -DECLARE_ENUMERATOR(OLEVERB); -typedef IEnumOLEVERB IEnumOleVerb; - -EXTERN_C const IID IID_IParseDisplayName; -#define INTERFACE IParseDisplayName -DECLARE_INTERFACE_(IParseDisplayName,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IParseDisplayName_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IParseDisplayName_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IParseDisplayName_Release(T) (T)->lpVtbl->Release(T) -#define IParseDisplayName_ParseDisplayName(T,a,b,c,d) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d) -#endif - -EXTERN_C const IID IID_IOleContainer; -#define INTERFACE IOleContainer -DECLARE_INTERFACE_(IOleContainer,IParseDisplayName) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE; - STDMETHOD(EnumObjects)(THIS_ DWORD,IEnumUnknown**) PURE; - STDMETHOD(LockContainer)(THIS_ BOOL) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IOleContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOleContainer_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOleContainer_Release(p) (p)->lpVtbl->Release(p) -/*** IParseDisplayName methods ***/ -#define IOleContainer_ParseDisplayName(p,a,b,c,d) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d) -/*** IOleContainer methods ***/ -#define IOleContainer_EnumObjects(p,a,b) (p)->lpVtbl->EnumObjects(p,a,b) -#define IOleContainer_LockContainer(p,a) (p)->lpVtbl->LockContainer(p,a) -#endif - -EXTERN_C const IID IID_IOleItemContainer; -#define INTERFACE IOleItemContainer -DECLARE_INTERFACE_(IOleItemContainer,IOleContainer) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE; - STDMETHOD(EnumObjects)(THIS_ DWORD,IEnumUnknown**) PURE; - STDMETHOD(LockContainer)(THIS_ BOOL) PURE; - STDMETHOD(GetObject)(THIS_ LPOLESTR,DWORD,IBindCtx*,REFIID,void**) PURE; - STDMETHOD(GetObjectStorage)(THIS_ LPOLESTR,IBindCtx*,REFIID,void**) PURE; - STDMETHOD(IsRunning)(THIS_ LPOLESTR) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IOleItemContainer_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IOleItemContainer_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IOleItemContainer_Release(T) (T)->lpVtbl->Release(T) -#define IOleItemContainer_ParseDisplayName(T,a,b,c,d) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d) -#define IOleItemContainer_EnumObjects(T,a,b) (T)->lpVtbl->EnumObjects(T,a,b) -#define IOleItemContainer_LockContainer(T,a) (T)->lpVtbl->LockContainer(T,a) -#define IOleItemContainer_GetObject(T,a,b,c,d,e) (T)->lpVtbl->GetObject(T,a,b,c,d,e) -#define IOleItemContainer_GetObjectStorage(T,a,b,c,d) (T)->lpVtbl->GetObjectStorage(T,a,b,c,d) -#define IOleItemContainer_IsRunning(T,a) (T)->lpVtbl->IsRunning(T,a) -#endif - -EXTERN_C const IID IID_IOleClientSite; -#define INTERFACE IOleClientSite -DECLARE_INTERFACE_(IOleClientSite,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SaveObject)(THIS) PURE; - STDMETHOD(GetMoniker)(THIS_ DWORD,DWORD,LPMONIKER*) PURE; - STDMETHOD(GetContainer)(THIS_ LPOLECONTAINER*) PURE; - STDMETHOD(ShowObject)(THIS) PURE; - STDMETHOD(OnShowWindow)(THIS_ BOOL) PURE; - STDMETHOD(RequestNewObjectLayout)(THIS) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IOleClientSite_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IOleClientSite_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IOleClientSite_Release(T) (T)->lpVtbl->Release(T) -#define IOleClientSite_SaveObject(T) (T)->lpVtbl->SaveObject(T) -#define IOleClientSite_GetMoniker(T,a,b,c) (T)->lpVtbl->GetMoniker(T,a,b,c) -#define IOleClientSite_GetContainer(T,a) (T)->lpVtbl->GetContainer(T,a) -#define IOleClientSite_ShowObject(T) (T)->lpVtbl->ShowObject(T) -#define IOleClientSite_OnShowWindow(T,a) (T)->lpVtbl->OnShowWindow(T,a) -#define IOleClientSite_RequestNewObjectLayout(T) (T)->lpVtbl->RequestNewObjectLayout(T) -#endif - -EXTERN_C const IID IID_IOleObject; -#define INTERFACE IOleObject -DECLARE_INTERFACE_(IOleObject,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SetClientSite)(THIS_ LPOLECLIENTSITE) PURE; - STDMETHOD(GetClientSite)(THIS_ LPOLECLIENTSITE*) PURE; - STDMETHOD(SetHostNames)(THIS_ LPCOLESTR,LPCOLESTR) PURE; - STDMETHOD(Close)(THIS_ DWORD) PURE; - STDMETHOD(SetMoniker)(THIS_ DWORD,LPMONIKER) PURE; - STDMETHOD(GetMoniker)(THIS_ DWORD,DWORD,LPMONIKER*) PURE; - STDMETHOD(InitFromData)(THIS_ LPDATAOBJECT,BOOL,DWORD) PURE; - STDMETHOD(GetClipboardData)(THIS_ DWORD,LPDATAOBJECT*) PURE; - STDMETHOD(DoVerb)(THIS_ LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT) PURE; - STDMETHOD(EnumVerbs)(THIS_ LPENUMOLEVERB*) PURE; - STDMETHOD(Update)(THIS) PURE; - STDMETHOD(IsUpToDate)(THIS) PURE; - STDMETHOD(GetUserClassID)(THIS_ LPCLSID) PURE; - STDMETHOD(GetUserType)(THIS_ DWORD,LPOLESTR*) PURE; - STDMETHOD(SetExtent)(THIS_ DWORD,SIZEL*) PURE; - STDMETHOD(GetExtent)(THIS_ DWORD,SIZEL*) PURE; - STDMETHOD(Advise)(THIS_ LPADVISESINK,PDWORD) PURE; - STDMETHOD(Unadvise)(THIS_ DWORD) PURE; - STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA*) PURE; - STDMETHOD(GetMiscStatus)(THIS_ DWORD,PDWORD) PURE; - STDMETHOD(SetColorScheme)(THIS_ LPLOGPALETTE) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IOleObject_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IOleObject_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IOleObject_Release(T) (T)->lpVtbl->Release(T) -#define IOleObject_SetClientSite(T,a) (T)->lpVtbl->SetClientSite(T,a) -#define IOleObject_GetClientSite(T,a) (T)->lpVtbl->GetClientSite(T,a) -#define IOleObject_SetHostNames(T,a,b) (T)->lpVtbl->SetHostNames(T,a,b) -#define IOleObject_Close(T,a) (T)->lpVtbl->Close(T,a) -#define IOleObject_SetMoniker(T,a,b) (T)->lpVtbl->SetMoniker(T,a,b) -#define IOleObject_GetMoniker(T,a,b,c) (T)->lpVtbl->GetMoniker(T,a,b,c) -#define IOleObject_InitFromData(T,a,b,c) (T)->lpVtbl->InitFromData(T,a,b,c) -#define IOleObject_GetClipboardData(T,a,b) (T)->lpVtbl->GetClipboardData(T,a,b) -#define IOleObject_DoVerb(T,a,b,c,d,e,f) (T)->lpVtbl->DoVerb(T,a,b,c,d,e,f) -#define IOleObject_EnumVerbs(T,a) (T)->lpVtbl->EnumVerbs(T,a) -#define IOleObject_Update(T) (T)->lpVtbl->Update(T) -#define IOleObject_IsUpToDate(T) (T)->lpVtbl->IsUpToDate(T) -#define IOleObject_GetUserClassID(T,a) (T)->lpVtbl->GetUserClassID(T,a) -#define IOleObject_GetUserType(T,a,b) (T)->lpVtbl->GetUserType(T,a,b) -#define IOleObject_SetExtent(T,a,b) (T)->lpVtbl->SetExtent(T,a,b) -#define IOleObject_GetExtent(T,a,b) (T)->lpVtbl->GetExtent(T,a,b) -#define IOleObject_Advise(T,a,b) (T)->lpVtbl->Advise(T,a,b) -#define IOleObject_Unadvise(T,a) (T)->lpVtbl->Unadvise(T,a) -#define IOleObject_EnumAdvise(T,a) (T)->lpVtbl->EnumAdvise(T,a) -#define IOleObject_GetMiscStatus(T,a,b) (T)->lpVtbl->GetMiscStatus(T,a,b) -#define IOleObject_SetColorScheme(T,a) (T)->lpVtbl->SetColorScheme(T,a) -#endif - -EXTERN_C const IID IID_IOleWindow; -#define INTERFACE IOleWindow -DECLARE_INTERFACE_(IOleWindow,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IOleWindow_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IOleWindow_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IOleWindow_Release(T) (T)->lpVtbl->Release(T) -#define IOleWindow_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) -#define IOleWindow_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) -#endif - -EXTERN_C const IID IID_IOleInPlaceUIWindow; -#define INTERFACE IOleInPlaceUIWindow -DECLARE_INTERFACE_(IOleInPlaceUIWindow,IOleWindow) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(GetBorder)(THIS_ LPRECT) PURE; - STDMETHOD(RequestBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE; - STDMETHOD(SetBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE; - STDMETHOD(SetActiveObject)(THIS_ LPOLEINPLACEACTIVEOBJECT,LPCOLESTR) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IOleInPlaceUIWindow_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOleInPlaceUIWindow_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOleInPlaceUIWindow_Release(p) (p)->lpVtbl->Release(p) -/*** IOleWindow methods ***/ -#define IOleInPlaceUIWindow_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) -#define IOleInPlaceUIWindow_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) -/*** IOleInPlaceUIWindow methods ***/ -#define IOleInPlaceUIWindow_GetBorder(p,a) (p)->lpVtbl->GetBorder(p,a) -#define IOleInPlaceUIWindow_RequestBorderSpace(p,a) (p)->lpVtbl->RequestBorderSpace(p,a) -#define IOleInPlaceUIWindow_SetBorderSpace(p,a) (p)->lpVtbl->SetBorderSpace(p,a) -#define IOleInPlaceUIWindow_SetActiveObject(p,a,b) (p)->lpVtbl->SetActiveObject(p,a,b) -#endif - -EXTERN_C const IID IID_IOleInPlaceObject; -#define INTERFACE IOleInPlaceObject -DECLARE_INTERFACE_(IOleInPlaceObject,IOleWindow) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(InPlaceDeactivate)(THIS) PURE; - STDMETHOD(UIDeactivate)(THIS) PURE; - STDMETHOD(SetObjectRects)(THIS_ LPCRECT,LPCRECT) PURE; - STDMETHOD(ReactivateAndUndo)(THIS) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IOleInPlaceObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOleInPlaceObject_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOleInPlaceObject_Release(p) (p)->lpVtbl->Release(p) -/*** IOleWindow methods ***/ -#define IOleInPlaceObject_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) -#define IOleInPlaceObject_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) -/*** IOleInPlaceObject methods ***/ -#define IOleInPlaceObject_InPlaceDeactivate(p) (p)->lpVtbl->InPlaceDeactivate(p) -#define IOleInPlaceObject_UIDeactivate(p) (p)->lpVtbl->UIDeactivate(p) -#define IOleInPlaceObject_SetObjectRects(p,a,b) (p)->lpVtbl->SetObjectRects(p,a,b) -#define IOleInPlaceObject_ReactivateAndUndo(p) (p)->lpVtbl->ReactivateAndUndo(p) -#endif - -EXTERN_C const IID IID_IOleInPlaceActiveObject; -#define INTERFACE IOleInPlaceActiveObject -DECLARE_INTERFACE_(IOleInPlaceActiveObject,IOleWindow) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE; - STDMETHOD(OnFrameWindowActivate)(THIS_ BOOL) PURE; - STDMETHOD(OnDocWindowActivate)(THIS_ BOOL) PURE; - STDMETHOD(ResizeBorder)(THIS_ LPCRECT,LPOLEINPLACEUIWINDOW,BOOL) PURE; - STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IOleInPlaceActiveObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOleInPlaceActiveObject_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOleInPlaceActiveObject_Release(p) (p)->lpVtbl->Release(p) -/*** IOleWindow methods ***/ -#define IOleInPlaceActiveObject_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) -#define IOleInPlaceActiveObject_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) -/*** IOleInPlaceActiveObject methods ***/ -#define IOleInPlaceActiveObject_TranslateAccelerator(p,a) (p)->lpVtbl->TranslateAccelerator(p,a) -#define IOleInPlaceActiveObject_OnFrameWindowActivate(p,a) (p)->lpVtbl->OnFrameWindowActivate(p,a) -#define IOleInPlaceActiveObject_OnDocWindowActivate(p,a) (p)->lpVtbl->OnDocWindowActivate(p,a) -#define IOleInPlaceActiveObject_ResizeBorder(p,a,b,c) (p)->lpVtbl->ResizeBorder(p,a,b,c) -#define IOleInPlaceActiveObject_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a) -#endif - -EXTERN_C const IID IID_IOleInPlaceFrame; -#define INTERFACE IOleInPlaceFrame -DECLARE_INTERFACE_(IOleInPlaceFrame,IOleInPlaceUIWindow) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(GetBorder)(THIS_ LPRECT) PURE; - STDMETHOD(RequestBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE; - STDMETHOD(SetBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE; - STDMETHOD(SetActiveObject)(THIS_ LPOLEINPLACEACTIVEOBJECT,LPCOLESTR) PURE; - STDMETHOD(InsertMenus)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE; - STDMETHOD(SetMenu)(THIS_ HMENU,HOLEMENU,HWND) PURE; - STDMETHOD(RemoveMenus)(THIS_ HMENU) PURE; - STDMETHOD(SetStatusText)(THIS_ LPCOLESTR) PURE; - STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; - STDMETHOD(TranslateAccelerator)(THIS_ LPMSG,WORD) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IOleInPlaceFrame_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IOleInPlaceFrame_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IOleInPlaceFrame_Release(T) (T)->lpVtbl->Release(T) -#define IOleInPlaceFrame_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) -#define IOleInPlaceFrame_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) -#define IOleInPlaceFrame_GetBorder(T,a) (T)->lpVtbl->GetBorder(T,a) -#define IOleInPlaceFrame_RequestBorderSpace(T,a) (T)->lpVtbl->RequestBorderSpace(T,a) -#define IOleInPlaceFrame_SetBorderSpace(T,a) (T)->lpVtbl->SetBorderSpace(T,a) -#define IOleInPlaceFrame_SetActiveObject(T,a,b) (T)->lpVtbl->SetActiveObject(T,a,b) -#define IOleInPlaceFrame_InsertMenus(T,a,b) (T)->lpVtbl->InsertMenus(T,a,b) -#define IOleInPlaceFrame_SetMenu(T,a,b,c) (T)->lpVtbl->SetMenu(T,a,b,c) -#define IOleInPlaceFrame_RemoveMenus(T,a) (T)->lpVtbl->RemoveMenus(T,a) -#define IOleInPlaceFrame_SetStatusText(T,a) (T)->lpVtbl->SetStatusText(T,a) -#define IOleInPlaceFrame_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a) -#define IOleInPlaceFrame_TranslateAccelerator(T,a,b) (T)->lpVtbl->TranslateAccelerator(T,a,b) -#endif - -EXTERN_C const IID IID_IOleInPlaceSite; -#define INTERFACE IOleInPlaceSite -DECLARE_INTERFACE_(IOleInPlaceSite,IOleWindow) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(CanInPlaceActivate)(THIS) PURE; - STDMETHOD(OnInPlaceActivate)(THIS) PURE; - STDMETHOD(OnUIActivate)(THIS) PURE; - STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame**,IOleInPlaceUIWindow**,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO) PURE; - STDMETHOD(Scroll)(THIS_ SIZE) PURE; - STDMETHOD(OnUIDeactivate)(THIS_ BOOL) PURE; - STDMETHOD(OnInPlaceDeactivate)(THIS) PURE; - STDMETHOD(DiscardUndoState)(THIS) PURE; - STDMETHOD(DeactivateAndUndo)(THIS) PURE; - STDMETHOD(OnPosRectChange)(THIS_ LPCRECT) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IOleInPlaceSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOleInPlaceSite_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOleInPlaceSite_Release(p) (p)->lpVtbl->Release(p) -/*** IOleWindow methods ***/ -#define IOleInPlaceSite_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) -#define IOleInPlaceSite_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) -/*** IOleInPlaceSite methods ***/ -#define IOleInPlaceSite_CanInPlaceActivate(p) (p)->lpVtbl->CanInPlaceActivate(p) -#define IOleInPlaceSite_OnInPlaceActivate(p) (p)->lpVtbl->OnInPlaceActivate(p) -#define IOleInPlaceSite_OnUIActivate(p) (p)->lpVtbl->OnUIActivate(p) -#define IOleInPlaceSite_GetWindowContext(p,a,b,c,d,e) (p)->lpVtbl->GetWindowContext(p,a,b,c,d,e) -#define IOleInPlaceSite_Scroll(p,a) (p)->lpVtbl->Scroll(p,a) -#define IOleInPlaceSite_OnUIDeactivate(p,a) (p)->lpVtbl->OnUIDeactivate(p,a) -#define IOleInPlaceSite_OnInPlaceDeactivate(p) (p)->lpVtbl->OnInPlaceDeactivate(p) -#define IOleInPlaceSite_DiscardUndoState(p) (p)->lpVtbl->DiscardUndoState(p) -#define IOleInPlaceSite_DeactivateAndUndo(p) (p)->lpVtbl->DeactivateAndUndo(p) -#define IOleInPlaceSite_OnPosRectChange(p,a) (p)->lpVtbl->OnPosRectChange(p,a) -#endif - -EXTERN_C const IID IID_IOleAdviseHolder; -#define INTERFACE IOleAdviseHolder -DECLARE_INTERFACE_(IOleAdviseHolder,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Advise)(THIS_ LPADVISESINK,PDWORD) PURE; - STDMETHOD(Unadvise)(THIS_ DWORD) PURE; - STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA*) PURE; - STDMETHOD(SendOnRename)(THIS_ LPMONIKER) PURE; - STDMETHOD(SendOnSave)(THIS) PURE; - STDMETHOD(SendOnClose)(THIS) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IOleAdviseHolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IOleAdviseHolder_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IOleAdviseHolder_Release(T) (T)->lpVtbl->Release(T) -#define IOleAdviseHolder_Advise(T,a,b) (T)->lpVtbl->Advise(T,a,b) -#define IOleAdviseHolder_Unadvise(T,a) (T)->lpVtbl->Unadvise(T,a) -#define IOleAdviseHolder_EnumAdvise(T,a) (T)->lpVtbl->EnumAdvise(T,a) -#define IOleAdviseHolder_SendOnRename(T,a) (T)->lpVtbl->SendOnRename(T,a) -#define IOleAdviseHolder_SendOnSave(T) (T)->lpVtbl->SendOnSave(T) -#define IOleAdviseHolder_SendOnClose(T) (T)->lpVtbl->SendOnClose(T) -#endif - -EXTERN_C const IID IID_IDropSource; -#define INTERFACE IDropSource -DECLARE_INTERFACE_(IDropSource,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(QueryContinueDrag)(THIS_ BOOL,DWORD) PURE; - STDMETHOD(GiveFeedback)(THIS_ DWORD) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IDropSource_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IDropSource_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IDropSource_Release(T) (T)->lpVtbl->Release(T) -#define IDropSource_QueryContinueDrag(T,a,b) (T)->lpVtbl->QueryContinueDrag(T,a,b) -#define IDropSource_GiveFeedback(T,a) (T)->lpVtbl->GiveFeedback(T,a) -#endif - -EXTERN_C const IID IID_IDropTarget; -#define INTERFACE IDropTarget -DECLARE_INTERFACE_(IDropTarget,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(DragEnter)(THIS_ LPDATAOBJECT,DWORD,POINTL,PDWORD) PURE; - STDMETHOD(DragOver)(THIS_ DWORD,POINTL,PDWORD) PURE; - STDMETHOD(DragLeave)(THIS) PURE; - STDMETHOD(Drop)(THIS_ LPDATAOBJECT,DWORD,POINTL,PDWORD) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IDropTarget_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IDropTarget_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IDropTarget_Release(T) (T)->lpVtbl->Release(T) -#define IDropTarget_DragEnter(T,a,b,c,d) (T)->lpVtbl->DragEnter(T,a,b,c,d) -#define IDropTarget_DragOver(T,a,b,c) (T)->lpVtbl->DragOver(T,a,b,c) -#define IDropTarget_DragLeave(T) (T)->lpVtbl->DragLeave(T) -#define IDropTarget_Drop(T,a,b,c,d) (T)->lpVtbl->Drop(T,a,b,c,d) -#endif - -typedef BOOL(CALLBACK *__IView_pfncont)(DWORD); -EXTERN_C const IID IID_IViewObject; -#define INTERFACE IViewObject -DECLARE_INTERFACE_(IViewObject,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Draw)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD) PURE; - STDMETHOD(GetColorSet)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*) PURE; - STDMETHOD(Freeze)(THIS_ DWORD,LONG,PVOID,PDWORD) PURE; - STDMETHOD(Unfreeze)(THIS_ DWORD) PURE; - STDMETHOD(SetAdvise)(THIS_ DWORD,DWORD,IAdviseSink*) PURE; - STDMETHOD(GetAdvise)(THIS_ PDWORD,PDWORD,IAdviseSink**) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IViewObject_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IViewObject_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IViewObject_Release(T) (T)->lpVtbl->Release(T) -#define IViewObject_Draw(T,a,b,c,d,e,f,g,h,i,j) (T)->lpVtbl->Draw(T,a,b,c,d,e,f,g,h,i,j) -#define IViewObject_GetColorSet(T,a,b,c,d,e,f) (T)->lpVtbl->GetColorSet(T,a,b,c,d,e,f) -#define IViewObject_Freeze(T,a,b,c,d) (T)->lpVtbl->Freeze(T,a,b,c,d) -#define IViewObject_Unfreeze(T,a) (T)->lpVtbl->Unfreeze(T,a) -#define IViewObject_SetAdvise(T,a,b,c) (T)->lpVtbl->SetAdvise(T,a,b,c) -#define IViewObject_GetAdvise(T,a,b,c) (T)->lpVtbl->GetAdvise(T,a,b,c) -#endif - -EXTERN_C const IID IID_IViewObject2; -#define INTERFACE IViewObject2 -DECLARE_INTERFACE_(IViewObject2,IViewObject) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Draw)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD) PURE; - STDMETHOD(GetColorSet)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*) PURE; - STDMETHOD(Freeze)(THIS_ DWORD,LONG,PVOID,PDWORD) PURE; - STDMETHOD(Unfreeze)(THIS_ DWORD) PURE; - STDMETHOD(SetAdvise)(THIS_ DWORD,DWORD,IAdviseSink*) PURE; - STDMETHOD(GetAdvise)(THIS_ PDWORD,PDWORD,IAdviseSink**) PURE; - STDMETHOD(GetExtent)(THIS_ DWORD,LONG,DVTARGETDEVICE*,LPSIZEL) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IViewObject2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IViewObject2_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IViewObject2_Release(T) (T)->lpVtbl->Release(T) -#define IViewObject2_Draw(T,a,b,c,d,e,f,g,h,i,j) (T)->lpVtbl->Draw(T,a,b,c,d,e,f,g,h,i,j) -#define IViewObject2_GetColorSet(T,a,b,c,d,e,f) (T)->lpVtbl->GetColorSet(T,a,b,c,d,e,f) -#define IViewObject2_Freeze(T,a,b,c,d) (T)->lpVtbl->Freeze(T,a,b,c,d) -#define IViewObject2_Unfreeze(T,a) (T)->lpVtbl->Unfreeze(T,a) -#define IViewObject2_SetAdvise(T,a,b,c) (T)->lpVtbl->SetAdvise(T,a,b,c) -#define IViewObject2_GetAdvise(T,a,b,c) (T)->lpVtbl->GetAdvise(T,a,b,c) -#define IViewObject2_GetExtent(T,a,b,c,d) (T)->lpVtbl->GetExtent(T,a,b,c,d) -#endif - -EXTERN_C const IID IID_IOleCache; -#define INTERFACE IOleCache -DECLARE_INTERFACE_(IOleCache,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Cache)(THIS_ FORMATETC*,DWORD,DWORD*) PURE; - STDMETHOD(Uncache)(THIS_ DWORD) PURE; - STDMETHOD(EnumCache)(THIS_ IEnumSTATDATA**); - STDMETHOD(InitCache)(THIS_ LPDATAOBJECT); - STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL); -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IOleCache_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IOleCache_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IOleCache_Release(T) (T)->lpVtbl->Release(T) -#define IOleCache_Cache(T,a,b,c) (T)->lpVtbl->Cache(T,a,b,c) -#define IOleCache_Uncache(T,a) (T)->lpVtbl->Uncache(T,a) -#define IOleCache_EnumCache(T,a) (T)->lpVtbl->EnumCache(T,a) -#define IOleCache_InitCache(T,a) (T)->lpVtbl->InitCache(T,a) -#define IOleCache_SetData(T,a,b,c) (T)->lpVtbl->SetData(T,a,b,c) -#endif - -EXTERN_C const IID IID_IOleCache2; -#define INTERFACE IOleCache2 -DECLARE_INTERFACE_(IOleCache2,IOleCache) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Cache)(THIS_ FORMATETC*,DWORD,DWORD*) PURE; - STDMETHOD(Uncache)(THIS_ DWORD) PURE; - STDMETHOD(EnumCache)(THIS_ IEnumSTATDATA**) PURE; - STDMETHOD(InitCache)(THIS_ LPDATAOBJECT) PURE; - STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE; - STDMETHOD(UpdateCache)(THIS_ LPDATAOBJECT,DWORD,LPVOID) PURE; - STDMETHOD(DiscardCache)(THIS_ DWORD) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IOleCache2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IOleCache2_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IOleCache2_Release(T) (T)->lpVtbl->Release(T) -#define IOleCache2_Cache(T,a,b,c) (T)->lpVtbl->Cache(T,a,b,c) -#define IOleCache2_Uncache(T,a) (T)->lpVtbl->Uncache(T,a) -#define IOleCache2_EnumCache(T,a) (T)->lpVtbl->EnumCache(T,a) -#define IOleCache2_InitCache(T,a) (T)->lpVtbl->InitCache(T,a) -#define IOleCache2_SetData(T,a,b,c) (T)->lpVtbl->SetData(T,a,b,c) -#define IOleCache2_UpdateCache(T,a,b,c) (T)->lpVtbl->UpdateCache(T,a,b,c) -#define IOleCache2_DiscardCache(T,a) (T)->lpVtbl->DiscardCache(T,a) -#endif - -EXTERN_C const IID IID_IOleCacheControl; -#define INTERFACE IOleCacheControl -DECLARE_INTERFACE_(IOleCacheControl,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(OnRun)(THIS_ LPDATAOBJECT) PURE; - STDMETHOD(OnStop)(THIS) PURE; -}; -#undef INTERFACE - -#ifdef __cplusplus -} -#endif -#endif - diff --git a/reactos/include/psdk/oleidl.idl b/reactos/include/psdk/oleidl.idl new file mode 100644 index 00000000000..02aef43b5e3 --- /dev/null +++ b/reactos/include/psdk/oleidl.idl @@ -0,0 +1,954 @@ +/* + * Copyright (C) 1999 Paul Quinn + * Copyright (C) 1999 Francis Beaudet + * Copyright (C) 2003 Alexandre Julliard + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; + +interface IOleInPlaceActiveObject; + +/***************************************************************************** + * IOleTypes interface + */ +[ + uuid(b0916c84-7416-101a-bcea-08002b2b79ef) +] +interface IOLETypes +{ + typedef enum tagOLERENDER + { + OLERENDER_NONE = 0, + OLERENDER_DRAW = 1, + OLERENDER_FORMAT = 2, + OLERENDER_ASIS = 3 + } OLERENDER, *LPOLERENDER; + + typedef struct tagOBJECTDESCRIPTOR + { + ULONG cbSize; + CLSID clsid; + DWORD dwDrawAspect; + SIZEL sizel; + POINTL pointl; + DWORD dwStatus; + DWORD dwFullUserTypeName; + DWORD dwSrcOfCopy; + } OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, *LPOBJECTDESCRIPTOR, + LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, *LPLINKSRCDESCRIPTOR; +} + + +/***************************************************************************** + * IOleWindow interface + */ +[ + object, + uuid(00000114-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleWindow : IUnknown +{ + typedef [unique] IOleWindow *LPOLEWINDOW; + + HRESULT GetWindow( + [out] HWND *phwnd); + + HRESULT ContextSensitiveHelp( + [in] BOOL fEnterMode); +} + + +/***************************************************************************** + * IOleInPlaceObject interface + */ +[ + object, + uuid(00000113-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleInPlaceObject : IOleWindow +{ + typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT; + + HRESULT InPlaceDeactivate(); + + HRESULT UIDeactivate(); + + HRESULT SetObjectRects( + [in] LPCRECT lprcPosRect, + [in] LPCRECT lprcClipRect); + + HRESULT ReactivateAndUndo(); +} + + +/***************************************************************************** + * IOleInPlaceUIWindow interface + */ +[ + object, + uuid(00000115-0000-0000-c000-000000000046), + pointer_default(unique) +] + +interface IOleInPlaceUIWindow : IOleWindow +{ + typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW; + + typedef RECT BORDERWIDTHS; + typedef LPRECT LPBORDERWIDTHS; + typedef LPCRECT LPCBORDERWIDTHS; + + HRESULT GetBorder( + [out] LPRECT lprectBorder); + + HRESULT RequestBorderSpace( + [in, unique] LPCBORDERWIDTHS pborderwidths); + + HRESULT SetBorderSpace( + [in, unique] LPCBORDERWIDTHS pborderwidths); + + HRESULT SetActiveObject( + [in, unique] IOleInPlaceActiveObject *pActiveObject, + [in, string, unique] LPCOLESTR pszObjName); +} + + +/* avoid conflict with Wine Unicode macros */ +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef TranslateAccelerator") +cpp_quote("#endif") + +/***************************************************************************** + * IOleInPlaceFrame interface + */ +[ + object, + uuid(00000116-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleInPlaceFrame : IOleInPlaceUIWindow +{ + typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME; + + typedef struct tagOleInPlaceFrameInfo + { + UINT cb; + BOOL fMDIApp; + HWND hwndFrame; + HACCEL haccel; + UINT cAccelEntries; + } OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO; + + typedef struct tagOleMenuGroupWidths + { + LONG width[ 6 ]; + } OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS; + + typedef HGLOBAL HOLEMENU; + + HRESULT InsertMenus( + [in] HMENU hmenuShared, + [in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths); + + HRESULT SetMenu( + [in] HMENU hmenuShared, + [in] HOLEMENU holemenu, + [in] HWND hwndActiveObject); + + HRESULT RemoveMenus( + [in] HMENU hmenuShared); + + HRESULT SetStatusText( + [in, unique] LPCOLESTR pszStatusText); + + HRESULT EnableModeless( + [in] BOOL fEnable); + + HRESULT TranslateAccelerator( + [in] LPMSG lpmsg, + [in] WORD wID); +} + + +/***************************************************************************** + * IOleInPlaceActiveObject interface + */ +[ + object, + uuid(00000117-0000-0000-c000-000000000046) +] +interface IOleInPlaceActiveObject : IOleWindow +{ + typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT; + + [local] + HRESULT TranslateAccelerator( + [in] LPMSG lpmsg); + + [call_as(TranslateAccelerator)] + HRESULT RemoteTranslateAccelerator(); + + HRESULT OnFrameWindowActivate( + [in] BOOL fActivate); + + HRESULT OnDocWindowActivate( + [in] BOOL fActivate); + + [local] + HRESULT ResizeBorder( + [in] LPCRECT prcBorder, + [in, unique] IOleInPlaceUIWindow *pUIWindow, + [in] BOOL fFrameWindow); + + [call_as(ResizeBorder)] + HRESULT RemoteResizeBorder( + [in] LPCRECT prcBorder, + [in] REFIID riid, + [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow, + [in] BOOL fFrameWindow); + + HRESULT EnableModeless( + [in] BOOL fEnable); +} + + +/***************************************************************************** + * IOleInPlaceSite interface + */ +[ + object, + uuid(00000119-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleInPlaceSite : IOleWindow +{ + typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE; + + HRESULT CanInPlaceActivate(); + HRESULT OnInPlaceActivate(); + HRESULT OnUIActivate(); + + HRESULT GetWindowContext( + [out] IOleInPlaceFrame **ppFrame, + [out] IOleInPlaceUIWindow **ppDoc, + [out] LPRECT lprcPosRect, + [out] LPRECT lprcClipRect, + [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo); + + HRESULT Scroll( + [in] SIZE scrollExtent); + + HRESULT OnUIDeactivate( + [in] BOOL fUndoable); + + HRESULT OnInPlaceDeactivate(); + HRESULT DiscardUndoState(); + HRESULT DeactivateAndUndo(); + + HRESULT OnPosRectChange( + [in] LPCRECT lprcPosRect); +} + + +/***************************************************************************** + * IParseDisplayName interface + */ +[ + object, + uuid(0000011a-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IParseDisplayName : IUnknown +{ + typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME; + + HRESULT ParseDisplayName( + [in, unique] IBindCtx *pbc, + [in] LPOLESTR pszDisplayName, + [out] ULONG *pchEaten, + [out] IMoniker **ppmkOut); +} + + +/***************************************************************************** + * IOleContainer interface + */ +[ + object, + uuid(0000011b-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleContainer : IParseDisplayName +{ + typedef [unique] IOleContainer *LPOLECONTAINER; + + HRESULT EnumObjects( + [in] DWORD grfFlags, + [out] IEnumUnknown **ppenum); + + HRESULT LockContainer( + [in] BOOL fLock); +} + + +/***************************************************************************** + * IOleItemContainer interface + */ +[ + object, + uuid(0000011c-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleItemContainer : IOleContainer +{ + typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER; + + typedef enum tagBINDSPEED + { + BINDSPEED_INDEFINITE = 1, + BINDSPEED_MODERATE = 2, + BINDSPEED_IMMEDIATE = 3 + } BINDSPEED; + + typedef enum tagOLECONTF + { + OLECONTF_EMBEDDINGS = 1, + OLECONTF_LINKS = 2, + OLECONTF_OTHERS = 4, + OLECONTF_OLNYUSER = 8, + OLECONTF_ONLYIFRUNNING = 16 + } OLECONTF; + +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef GetObject") +cpp_quote("#endif") + HRESULT GetObject( + [in] LPOLESTR pszItem, + [in] DWORD dwSpeedNeeded, + [in, unique] IBindCtx *pbc, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvObject); + + HRESULT GetObjectStorage( + [in] LPOLESTR pszItem, + [in, unique] IBindCtx *pbc, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvStorage); + + HRESULT IsRunning( + [in] LPOLESTR pszItem); +} + + +/***************************************************************************** + * IOleLink interface + */ +[ + object, + uuid(0000011d-0000-0000-c000-000000000046) +] +interface IOleLink : IUnknown +{ + typedef [unique] IOleLink *LPOLELINK; + + typedef enum tagOLEUPDATE + { + OLEUPDATE_ALWAYS = 1, + OLEUPDATE_ONCALL = 3 + } OLEUPDATE, *POLEUPDATE, *LPOLEUPDATE; + + typedef enum tagOLELINKBIND + { + OLELINKBIND_EVENIFCLASSDIFF = 1 + } OLELINKBIND; + + HRESULT SetUpdateOptions( + [in] DWORD dwUpdateOpt); + + HRESULT GetUpdateOptions( + [out] DWORD *pdwUpdateOpt); + + HRESULT SetSourceMoniker( + [in, unique] IMoniker *pmk, + [in] REFCLSID rclsid); + + HRESULT GetSourceMoniker( + [out] IMoniker **ppmk); + + HRESULT SetSourceDisplayName( + [in]LPCOLESTR pszStatusText); + + HRESULT GetSourceDisplayName( + [out] LPOLESTR *ppszDisplayName); + + HRESULT BindToSource( + [in] DWORD bindflags, + [in, unique] IBindCtx *pbc); + + HRESULT BindIfRunning(); + + HRESULT GetBoundSource( + [out] IUnknown **ppunk); + + HRESULT UnbindSource(); + + HRESULT Update( + [in, unique] IBindCtx *pbc); +} + + +/***************************************************************************** + * IOleClientSite interface + */ +[ + object, + uuid(00000118-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleClientSite : IUnknown +{ + typedef [unique] IOleClientSite * LPOLECLIENTSITE; + + HRESULT SaveObject(); + + HRESULT GetMoniker( + [in] DWORD dwAssign, + [in] DWORD dwWhichMoniker, + [out] IMoniker **ppmk); + + HRESULT GetContainer( + [out] IOleContainer **ppContainer); + + HRESULT ShowObject(); + + HRESULT OnShowWindow( + [in] BOOL fShow); + + HRESULT RequestNewObjectLayout(); +} + + +/***************************************************************************** + * IOleCache interface + */ +[ + object, + uuid(0000011e-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleCache : IUnknown +{ + typedef [unique] IOleCache *LPOLECACHE; + + HRESULT Cache( + [in, unique] FORMATETC *pformatetc, + [in] DWORD advf, + [out] DWORD *pdwConnection); + + HRESULT Uncache( + [in] DWORD dwConnection); + + HRESULT EnumCache( + [out] IEnumSTATDATA **ppenumSTATDATA); + + HRESULT InitCache( + [in, unique] IDataObject *pDataObject); + + HRESULT SetData( + [in, unique] FORMATETC *pformatetc, + [in, unique] STGMEDIUM *pmedium, + [in] BOOL fRelease); +} + + +/***************************************************************************** + * IOleCache2 interface + */ +[ + object, + uuid(00000128-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleCache2 : IOleCache +{ + typedef [unique] IOleCache2 *LPOLECACHE2; + + const DWORD UPDFCACHE_NODATACACHE = 0x00000001; + const DWORD UPDFCACHE_ONSAVECACHE = 0x00000002; + const DWORD UPDFCACHE_ONSTOPCACHE = 0x00000004; + const DWORD UPDFCACHE_NORMALCACHE = 0x00000008; + const DWORD UPDFCACHE_IFBLANK = 0x00000010; + const DWORD UPDFCACHE_ONLYIFBLANK = 0x80000000; + + const DWORD UPDFCACHE_IFBLANKORONSAVECACHE = (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE); + const DWORD UPDFCACHE_ALL = ((DWORD)(~(UPDFCACHE_ONLYIFBLANK))); + const DWORD UPDFCACHE_ALLBUTNODATACACHE = (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE))); + + typedef enum tagDISCARDCACHE + { + DISCARDCACHE_SAVEIFDIRTY = 0, + DISCARDCACHE_NOSAVE = 1 + } DISCARDCACHE; + + [local] + HRESULT UpdateCache( + [in] LPDATAOBJECT pDataObject, + [in] DWORD grfUpdf, + [in] LPVOID pReserved); + + [call_as(UpdateCache)] + HRESULT RemoteUpdateCache( + [in] LPDATAOBJECT pDataObject, + [in] DWORD grfUpdf, + [in] LONG_PTR pReserved); + + HRESULT DiscardCache( + [in] DWORD dwDiscardOptions); +} + + +/***************************************************************************** + * IOleCacheControl interface + */ +[ + object, + uuid(00000129-0000-0000-c000-000000000046) +] +interface IOleCacheControl : IUnknown +{ + typedef [unique] IOleCacheControl *LPOLECACHECONTROL; + + HRESULT OnRun( + LPDATAOBJECT pDataObject); + + HRESULT OnStop(); +} + + +/***************************************************************************** + * IEnumOLEVERB interface + */ +[ + object, + uuid(00000104-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IEnumOLEVERB : IUnknown +{ + typedef [unique] IEnumOLEVERB *LPENUMOLEVERB; + + typedef struct tagOLEVERB + { + LONG lVerb; + LPOLESTR lpszVerbName; + DWORD fuFlags; + DWORD grfAttribs; + } OLEVERB, *LPOLEVERB; + + typedef enum tagOLEVERBATTRIB + { + OLEVERBATTRIB_NEVERDIRTIES = 1, + OLEVERBATTRIB_ONCONTAINERMENU = 2 + } OLEVERBATTRIB; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumOLEVERB **ppenum); +} + + +/***************************************************************************** + * IOleObject interface + */ +[ + object, + uuid(00000112-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IOleObject : IUnknown +{ + typedef [unique] IOleObject *LPOLEOBJECT; + + typedef enum tagOLEGETMONIKER + { + OLEGETMONIKER_ONLYIFTHERE = 1, + OLEGETMONIKER_FORCEASSIGN = 2, + OLEGETMONIKER_UNASSIGN = 3, + OLEGETMONIKER_TEMPFORUSER = 4 + } OLEGETMONIKER; + + typedef enum tagOLEWHICHMK + { + OLEWHICHMK_CONTAINER = 1, + OLEWHICHMK_OBJREL = 2, + OLEWHICHMK_OBJFULL = 3 + } OLEWHICHMK; + + typedef enum tagUSERCLASSTYPE + { + USERCLASSTYPE_FULL = 1, + USERCLASSTYPE_SHORT = 2, + USERCLASSTYPE_APPNAME = 3 + } USERCLASSTYPE; + + typedef enum tagOLEMISC + { + OLEMISC_RECOMPOSEONRESIZE = 0x1, + OLEMISC_ONLYICONIC = 0x2, + OLEMISC_INSERTNOTREPLACE = 0x4, + OLEMISC_STATIC = 0x8, + OLEMISC_CANTLINKINSIDE = 0x10, + OLEMISC_CANLINKBYOLE1 = 0x20, + OLEMISC_ISLINKOBJECT = 0x40, + OLEMISC_INSIDEOUT = 0x80, + OLEMISC_ACTIVATEWHENVISIBLE = 0x100, + OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, + OLEMISC_INVISIBLEATRUNTIME = 0x400, + OLEMISC_ALWAYSRUN = 0x800, + OLEMISC_ACTSLIKEBUTTON = 0x1000, + OLEMISC_ACTSLIKELABEL = 0x2000, + OLEMISC_NOUIACTIVATE = 0x4000, + OLEMISC_ALIGNABLE = 0x8000, + OLEMISC_SIMPLEFRAME = 0x10000, + OLEMISC_SETCLIENTSITEFIRST = 0x20000, + OLEMISC_IMEMODE = 0x40000, + OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, + OLEMISC_WANTSTOMENUMERGE = 0x100000, + OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 + } OLEMISC; + + typedef enum tagOLECLOSE + { + OLECLOSE_SAVEIFDIRTY = 0, + OLECLOSE_NOSAVE = 1, + OLECLOSE_PROMPTSAVE = 2 + } OLECLOSE; + + HRESULT SetClientSite( + [in, unique] IOleClientSite *pClientSite); + + HRESULT GetClientSite( + [out] IOleClientSite **ppClientSite); + + HRESULT SetHostNames( + [in] LPCOLESTR szContainerApp, + [in, unique] LPCOLESTR szContainerObj); + + HRESULT Close( + [in] DWORD dwSaveOption); + + HRESULT SetMoniker( + [in] DWORD dwWhichMoniker, + [in, unique] IMoniker *pmk); + + HRESULT GetMoniker( + [in] DWORD dwAssign, + [in] DWORD dwWhichMoniker, + [out] IMoniker **ppmk); + + HRESULT InitFromData( + [in, unique] IDataObject *pDataObject, + [in] BOOL fCreation, + [in] DWORD dwReserved); + + HRESULT GetClipboardData( + [in] DWORD dwReserved, + [out] IDataObject **ppDataObject); + + HRESULT DoVerb( + [in] LONG iVerb, + [in, unique] LPMSG lpmsg, + [in, unique] IOleClientSite *pActiveSite, + [in] LONG lindex, + [in] HWND hwndParent, + [in, unique] LPCRECT lprcPosRect); + + HRESULT EnumVerbs( + [out] IEnumOLEVERB **ppEnumOleVerb); + + HRESULT Update(); + + HRESULT IsUpToDate(); + + HRESULT GetUserClassID( + [out] CLSID *pClsid); + + HRESULT GetUserType( + [in] DWORD dwFormOfType, + [out] LPOLESTR *pszUserType); + + HRESULT SetExtent( + [in] DWORD dwDrawAspect, + [in] SIZEL *psizel); + + HRESULT GetExtent( + [in] DWORD dwDrawAspect, + [out] SIZEL *psizel); + + HRESULT Advise( + [in, unique] IAdviseSink *pAdvSink, + [out] DWORD *pdwConnection); + + HRESULT Unadvise( + [in] DWORD dwConnection); + + HRESULT EnumAdvise( + [out] IEnumSTATDATA **ppenumAdvise); + + HRESULT GetMiscStatus( + [in] DWORD dwAspect, + [out] DWORD *pdwStatus); + + HRESULT SetColorScheme( + [in] LOGPALETTE *pLogpal); +} + + +/***************************************************************************** + * IOleAdviseHolder interface + */ +[ + local, + object, + uuid(00000111-0000-0000-c000-000000000046) +] +interface IOleAdviseHolder : IUnknown +{ + typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER; + + HRESULT Advise( + [in, unique] IAdviseSink *pAdvise, + [out] DWORD *pdwConnection); + + HRESULT Unadvise( + [in] DWORD dwConnection); + + HRESULT EnumAdvise( + [out] IEnumSTATDATA **ppenumAdvise); + + HRESULT SendOnRename( + [in, unique] IMoniker *pmk); + + HRESULT SendOnSave(); + HRESULT SendOnClose(); +} + + +/***************************************************************************** + * IContinue interface + */ +[ + object, + uuid(0000012a-0000-0000-c000-000000000046) +] +interface IContinue : IUnknown +{ + HRESULT FContinue(); +} + + +/***************************************************************************** + * IViewObject interface + */ +[ + object, + uuid(0000010d-0000-0000-c000-000000000046) +] +interface IViewObject : IUnknown +{ + typedef [unique] IViewObject *LPVIEWOBJECT; + + [local] + HRESULT Draw( + [in] DWORD dwDrawAspect, + [in] LONG lindex, + [in, unique] void * pvAspect, + [in, unique] DVTARGETDEVICE *ptd, + [in] HDC hdcTargetDev, + [in] HDC hdcDraw, + [in] LPCRECTL lprcBounds, + [in, unique] LPCRECTL lprcWBounds, + [in] BOOL (*pfnContinue)(ULONG_PTR dwContinue), + [in] ULONG_PTR dwContinue); + + [call_as(Draw)] + HRESULT RemoteDraw( + [in] DWORD dwDrawAspect, + [in] LONG lindex, + [in] ULONG_PTR pvAspect, + [in, unique] DVTARGETDEVICE *ptd, + [in] ULONG_PTR hdcTargetDev, + [in] ULONG_PTR hdcDraw, + [in] LPCRECTL lprcBounds, + [in, unique] LPCRECTL lprcWBounds, + [in] IContinue *pContinue); + + [local] + HRESULT GetColorSet( + [in] DWORD dwDrawAspect, + [in] LONG lindex, + [in, unique] void *pvAspect, + [in, unique] DVTARGETDEVICE *ptd, + [in] HDC hicTargetDev, + [out] LOGPALETTE **ppColorSet); + + [call_as(GetColorSet)] + HRESULT RemoteGetColorSet( + [in] DWORD dwDrawAspect, + [in] LONG lindex, + [in] ULONG_PTR pvAspect, + [in, unique] DVTARGETDEVICE *ptd, + [in] ULONG_PTR hicTargetDev, + [out] LOGPALETTE **ppColorSet); + + [local] + HRESULT Freeze( + [in] DWORD dwDrawAspect, + [in] LONG lindex, + [in, unique] void *pvAspect, + [out] DWORD *pdwFreeze); + + [call_as(Freeze)] + HRESULT RemoteFreeze( + [in] DWORD dwDrawAspect, + [in] LONG lindex, + [in] ULONG_PTR pvAspect, + [out] DWORD *pdwFreeze); + + HRESULT Unfreeze( + [in] DWORD dwFreeze); + + HRESULT SetAdvise( + [in] DWORD aspects, + [in] DWORD advf, + [in, unique] IAdviseSink *pAdvSink); + + [local] + HRESULT GetAdvise( + [out, unique] DWORD *pAspects, + [out, unique] DWORD *pAdvf, + [out] IAdviseSink **ppAdvSink); + + [call_as(GetAdvise)] + HRESULT RemoteGetAdvise( + [out] DWORD *pAspects, + [out] DWORD *pAdvf, + [out] IAdviseSink **ppAdvSink); +} + + +/***************************************************************************** + * IViewObject2 interface + */ +[ + object, + uuid(00000127-0000-0000-c000-000000000046) +] +interface IViewObject2 : IViewObject +{ + typedef [unique] IViewObject2 *LPVIEWOBJECT2; + + HRESULT GetExtent( + [in] DWORD dwDrawAspect, + [in] LONG lindex, + [in, unique] DVTARGETDEVICE* ptd, + [out] LPSIZEL lpsizel); +} + + +/***************************************************************************** + * IDropSource interface + */ +[ + local, + object, + uuid(00000121-0000-0000-c000-000000000046) +] +interface IDropSource : IUnknown +{ + typedef [unique] IDropSource *LPDROPSOURCE; + + HRESULT QueryContinueDrag( + [in] BOOL fEscapePressed, + [in] DWORD grfKeyState); + + HRESULT GiveFeedback( + [in] DWORD dwEffect); +} + + +/***************************************************************************** + * IDropTarget interface + */ +[ + object, + uuid(00000122-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IDropTarget : IUnknown +{ + typedef [unique] IDropTarget *LPDROPTARGET; + + const DWORD MK_ALT = 0x20; + const DWORD DROPEFFECT_NONE = 0; + const DWORD DROPEFFECT_COPY = 1; + const DWORD DROPEFFECT_MOVE = 2; + const DWORD DROPEFFECT_LINK = 4; + const DWORD DROPEFFECT_SCROLL = 0x80000000; + const DWORD DD_DEFSCROLLINSET = 11; + const DWORD DD_DEFSCROLLDELAY = 50; + const DWORD DD_DEFSCROLLINTERVAL = 50; + const DWORD DD_DEFDRAGDELAY = 200; + const DWORD DD_DEFDRAGMINDIST = 2; + + HRESULT DragEnter( + [in, unique] IDataObject *pDataObj, + [in] DWORD grfKeyState, + [in] POINTL pt, + [in, out] DWORD *pdwEffect); + + HRESULT DragOver( + [in] DWORD grfKeyState, + [in] POINTL pt, + [in, out] DWORD *pdwEffect); + + HRESULT DragLeave(); + + HRESULT Drop( + [in, unique] IDataObject *pDataObj, + [in] DWORD grfKeyState, + [in] POINTL pt, + [in, out] DWORD *pdwEffect); +} diff --git a/reactos/include/psdk/optary.idl b/reactos/include/psdk/optary.idl new file mode 100644 index 00000000000..b0c49e62fae --- /dev/null +++ b/reactos/include/psdk/optary.idl @@ -0,0 +1,65 @@ +/* + * Copyright 2006 Jacek Caban for CodeWeavers + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; +import "oleidl.idl"; + +/***************************************************************************** + * IOptionArray interface + */ +[ + local, + object, + uuid(22b6d492-0f88-11d1-ba19-00c04fd912d0), + pointer_default(unique) +] +interface IOptionArray : IUnknown +{ + typedef [unique] IOptionArray *LPOPTIONARRAY; + + HRESULT QueryOption( + [in] DWORD dwOption, + [out, size_is(*pcbBuf)] LPVOID pBuffer, + [in, out] ULONG *pcbBuf); + + HRESULT SetOption( + [in] DWORD dwOption, + [in, size_is(cbBuf)] LPVOID pBuffer, + [in] ULONG cbBuf); +} + +/***************************************************************************** + * IHtmlLoadOptions interface + */ +[ + local, + object, + uuid(a71a0808-0f88-11d1-ba19-00c04fd912d0), + pointer_default(unique) +] +interface IHtmlLoadOptions : IOptionArray +{ + typedef enum { + HTMLLOADOPTION_CODEPAGE, + HTMLLOADOPTION_INETSHORTCUTPATH, + HTMLLOADOPTION_HYPERLINK, + HTMLLOADOPTION_FRAMELOAD + } HTMLLOADOPTION; +} + +cpp_quote("DEFINE_GUID(CLSID_HTMLLoadOptions, 0x18845040, 0x0FA5, 0x11D1, 0xBA,0x19, 0x00,0xC0,0x4F,0xD9,0x12,0xD0);") diff --git a/reactos/include/psdk/propidl.h b/reactos/include/psdk/propidl.h deleted file mode 100644 index abfa0e29b6f..00000000000 --- a/reactos/include/psdk/propidl.h +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include - -#ifndef _PROPIDL_H -#define _PROPIDL_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#include - -#define PRSPEC_LPWSTR (0) -#define PRSPEC_PROPID (1) - -#define PID_DICTIONARY 0x00000000 -#define PID_CODEPAGE 0x00000001 -#define PID_FIRST_USABLE 0x00000002 -#define PID_FIRST_NAME_DEFAULT 0x00000fff -#define PID_LOCALE 0x80000000 -#define PID_MODIFY_TIME 0x80000001 -#define PID_SECURITY 0x80000002 -#define PID_BEHAVIOR 0x80000003 -#define PID_ILLEGAL 0xffffffff -#define PID_MIN_READONLY 0x80000000 -#define PID_MAX_READONLY 0xbfffffff - -#define PROPSETFLAG_DEFAULT 0 -#define PROPSETFLAG_NONSIMPLE 1 -#define PROPSETFLAG_ANSI 2 -#define PROPSETFLAG_UNBUFFERED 4 -#define PROPSETFLAG_CASE_SENSITIVE 8 - -#define CCH_MAX_PROPSTG_NAME 31 - -/* Macros for dwOSVersion member of STATPROPSETSTG */ -#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD((dwOSVer)) -#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD((dwOSVer))) -#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD((dwOSVer))) -#define PROPSETHDR_OSVERSION_UNKNOWN 0xffffffff - -HRESULT WINAPI FreePropVariantArray(ULONG cVariants, PROPVARIANT *rgvars); -HRESULT WINAPI PropVariantClear(PROPVARIANT*); -HRESULT WINAPI PropVariantCopy(PROPVARIANT*,const PROPVARIANT*); - -#define _PROPVARIANT_INIT_DEFINED_ -#define PropVariantInit(p) memset((p), 0, sizeof(PROPVARIANT)) - -HRESULT WINAPI FmtIdToPropStgName(const FMTID *, LPOLESTR); - -#endif diff --git a/reactos/include/psdk/propidl.idl b/reactos/include/psdk/propidl.idl new file mode 100644 index 00000000000..c041be93cc0 --- /dev/null +++ b/reactos/include/psdk/propidl.idl @@ -0,0 +1,438 @@ +/* + * Copyright 2002 Ove Kaaven + * Copyright 2004 Francois Gouget + * Copyright 2005 Juan Lang + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; +import "oaidl.idl"; + + +/* + * Windows SDK braindamage alert + * + * PID_DICTIONARY and PID_CODEPAGE are defined by msidefs.h too + * PID_SECURITY is defined in msidefs.h with a different value! + * So these need to be undefined first. + */ +cpp_quote("#ifdef PID_DICTIONARY") +cpp_quote("#undef PID_DICTIONARY") +cpp_quote("#endif") + +cpp_quote("#ifdef PID_CODEPAGE") +cpp_quote("#undef PID_CODEPAGE") +cpp_quote("#endif") + +cpp_quote("#ifdef PID_SECURITY") +cpp_quote("#undef PID_SECURITY") +cpp_quote("#endif") + +/******************** Property Storage ********************/ + +interface IEnumSTATPROPSTG; +interface IEnumSTATPROPSETSTG; + +[ + object, + uuid(00000138-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IPropertyStorage : IUnknown +{ + typedef [unique] IPropertyStorage *LPPROPERTYSTORAGE; + + const DWORD PROPSETFLAG_DEFAULT = 0; + const DWORD PROPSETFLAG_NONSIMPLE = 1; + const DWORD PROPSETFLAG_ANSI = 2; + const DWORD PROPSETFLAG_UNBUFFERED = 4; + const DWORD PROPSETFLAG_CASE_SENSITIVE = 8; + + const DWORD PROPSET_BEHAVIOR_CASE_SENSITIVE = 1; + + const PROPID PID_DICTIONARY = 0x00000000; + const PROPID PID_CODEPAGE = 0x00000001; + const PROPID PID_FIRST_USABLE = 0x00000002; + const PROPID PID_FIRST_NAME_DEFAULT = 0x00000fff; + const PROPID PID_LOCALE = 0x80000000; + const PROPID PID_MODIFY_TIME = 0x80000001; + const PROPID PID_SECURITY = 0x80000002; + const PROPID PID_BEHAVIOR = 0x80000003; + const PROPID PID_ILLEGAL = 0xffffffff; + const PROPID PID_MIN_READONLY = 0x80000000; + const PROPID PID_MAX_READONLY = 0xbfffffff; + + typedef struct tagPROPVARIANT PROPVARIANT; + +#define TYPEDEF_CA(type, name) \ + typedef struct tag##name { \ + ULONG cElems; \ + [size_is(cElems)] \ + type *pElems; \ + } name + + TYPEDEF_CA(unsigned char, CAUB); + TYPEDEF_CA(short, CAI); + TYPEDEF_CA(USHORT, CAUI); + TYPEDEF_CA(long, CAL); + TYPEDEF_CA(ULONG, CAUL); + TYPEDEF_CA(float, CAFLT); + TYPEDEF_CA(double, CADBL); + TYPEDEF_CA(CY, CACY); + TYPEDEF_CA(DATE, CADATE); + TYPEDEF_CA(BSTR, CABSTR); + TYPEDEF_CA(BSTRBLOB, CABSTRBLOB); + TYPEDEF_CA(VARIANT_BOOL, CABOOL); + TYPEDEF_CA(SCODE, CASCODE); + TYPEDEF_CA(PROPVARIANT, CAPROPVARIANT); + TYPEDEF_CA(LARGE_INTEGER, CAH); + TYPEDEF_CA(ULARGE_INTEGER, CAUH); + TYPEDEF_CA(LPSTR, CALPSTR); + TYPEDEF_CA(LPWSTR, CALPWSTR); + TYPEDEF_CA(FILETIME, CAFILETIME); + TYPEDEF_CA(CLIPDATA, CACLIPDATA); + TYPEDEF_CA(CLSID, CACLSID); + + struct tagPROPVARIANT { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + [switch_is(vt & 0x1fff)] union { + [case(VT_EMPTY, VT_NULL)] ; + [case(VT_I1)] char cVal; + [case(VT_UI1)] UCHAR bVal; + [case(VT_I2)] short iVal; + [case(VT_UI2)] USHORT uiVal; + [case(VT_BOOL)] VARIANT_BOOL boolVal; +#if 0 /* illegal in C++ */ + [case(VT_ILLEGAL)] _VARIANT_BOOL bool; +#endif + [case(VT_I4)] long lVal; + [case(VT_UI4)] ULONG ulVal; + [case(VT_R4)] float fltVal; + [case(VT_ERROR)] SCODE scode; + [case(VT_I8)] LARGE_INTEGER hVal; + [case(VT_UI8)] ULARGE_INTEGER uhVal; + [case(VT_R8)] double dblVal; + [case(VT_CY)] CY cyVal; + [case(VT_DATE)] DATE date; + [case(VT_FILETIME)] FILETIME filetime; + [case(VT_CLSID)] CLSID *puuid; + [case(VT_BLOB, VT_BLOB_OBJECT)] BLOB blob; + [case(VT_CF)] CLIPDATA *pclipdata; + [case(VT_STREAM, VT_STREAMED_OBJECT)] IStream *pStream; + [case(VT_STORAGE, VT_STORED_OBJECT)] IStorage *pStorage; + [case(VT_BSTR)] BSTR bstrVal; + [case(VT_BSTR_BLOB)] BSTRBLOB bstrblobVal; + [case(VT_LPSTR)] LPSTR pszVal; + [case(VT_LPWSTR)] LPWSTR pwszVal; + [case(VT_UI1|VT_VECTOR)] CAUB caub; + [case(VT_I2|VT_VECTOR)] CAI cai; + [case(VT_UI2|VT_VECTOR)] CAUI caui; + [case(VT_BOOL|VT_VECTOR)] CABOOL cabool; + [case(VT_I4|VT_VECTOR)] CAL cal; + [case(VT_UI4|VT_VECTOR)] CAUL caul; + [case(VT_R4|VT_VECTOR)] CAFLT caflt; + [case(VT_ERROR|VT_VECTOR)] CASCODE cascode; + [case(VT_I8|VT_VECTOR)] CAH cah; + [case(VT_UI8|VT_VECTOR)] CAUH cauh; + [case(VT_R8|VT_VECTOR)] CADBL cadbl; + [case(VT_CY|VT_VECTOR)] CACY cacy; + [case(VT_DATE|VT_VECTOR)] CADATE cadate; + [case(VT_FILETIME|VT_VECTOR)] CAFILETIME cafiletime; + [case(VT_CLSID|VT_VECTOR)] CACLSID cauuid; + [case(VT_CF|VT_VECTOR)] CACLIPDATA caclipdata; + [case(VT_BSTR|VT_VECTOR)] CABSTR cabstr; + [case(VT_BSTR_BLOB|VT_VECTOR)] CABSTRBLOB cabstrblob; + [case(VT_LPSTR|VT_VECTOR)] CALPSTR calpstr; + [case(VT_LPWSTR|VT_VECTOR)] CALPWSTR calpwstr; + [case(VT_VARIANT|VT_VECTOR)] CAPROPVARIANT capropvar; + [case(VT_ARRAY|VT_I1, + VT_ARRAY|VT_UI1, + VT_ARRAY|VT_I2, + VT_ARRAY|VT_UI2, + VT_ARRAY|VT_I4, + VT_ARRAY|VT_UI4, + VT_ARRAY|VT_INT, + VT_ARRAY|VT_UINT, + VT_ARRAY|VT_R4, + VT_ARRAY|VT_R8, + VT_ARRAY|VT_CY, + VT_ARRAY|VT_DATE, + VT_ARRAY|VT_BSTR, + VT_ARRAY|VT_BOOL, + VT_ARRAY|VT_DECIMAL, + VT_ARRAY|VT_DISPATCH, + VT_ARRAY|VT_UNKNOWN, + VT_ARRAY|VT_ERROR, + VT_ARRAY|VT_VARIANT)] LPSAFEARRAY parray; + [case(VT_BYREF|VT_I1)] CHAR *pcVal; + [case(VT_BYREF|VT_UI1)] UCHAR *pbVal; + [case(VT_BYREF|VT_I2)] SHORT *piVal; + [case(VT_BYREF|VT_UI2)] USHORT *puiVal; + [case(VT_BYREF|VT_I4)] LONG *plVal; + [case(VT_BYREF|VT_UI4)] ULONG *pulVal; + [case(VT_BYREF|VT_INT)] INT *pintVal; + [case(VT_BYREF|VT_UINT)] UINT *puintVal; + [case(VT_BYREF|VT_R4)] FLOAT *pfltVal; + [case(VT_BYREF|VT_R8)] DOUBLE *pdblVal; + [case(VT_BYREF|VT_BOOL)] VARIANT_BOOL *pboolVal; + [case(VT_BYREF|VT_DECIMAL)] DECIMAL *pdecVal; + [case(VT_BYREF|VT_ERROR)] SCODE *pscode; + [case(VT_BYREF|VT_CY)] CY *pcyVal; + [case(VT_BYREF|VT_DATE)] DATE *pdate; + [case(VT_BYREF|VT_BSTR)] BSTR *pbstrVal; + [case(VT_BYREF|VT_UNKNOWN)] IUnknown **ppunkVal; + [case(VT_BYREF|VT_DISPATCH)] IDispatch **ppdispVal; + [case(VT_BYREF|VT_ARRAY)] LPSAFEARRAY *pparray; + [case(VT_BYREF|VT_VARIANT)] PROPVARIANT *pvarVal; + }; + }; + + typedef struct tagPROPVARIANT *LPPROPVARIANT; + + cpp_quote("#define PIDDI_THUMBNAIL 0x00000002L /* VT_BLOB */") + cpp_quote("") + cpp_quote("#define PIDSI_TITLE 0x00000002L /* VT_LPSTR */") + cpp_quote("#define PIDSI_SUBJECT 0x00000003L /* VT_LPSTR */") + cpp_quote("#define PIDSI_AUTHOR 0x00000004L /* VT_LPSTR */") + cpp_quote("#define PIDSI_KEYWORDS 0x00000005L /* VT_LPSTR */") + cpp_quote("#define PIDSI_COMMENTS 0x00000006L /* VT_LPSTR */") + cpp_quote("#define PIDSI_TEMPLATE 0x00000007L /* VT_LPSTR */") + cpp_quote("#define PIDSI_LASTAUTHOR 0x00000008L /* VT_LPSTR */") + cpp_quote("#define PIDSI_REVNUMBER 0x00000009L /* VT_LPSTR */") + cpp_quote("#define PIDSI_EDITTIME 0x0000000AL /* VT_FILETIME (UTC) */") + cpp_quote("#define PIDSI_LASTPRINTED 0x0000000BL /* VT_FILETIME (UTC) */") + cpp_quote("#define PIDSI_CREATE_DTM 0x0000000CL /* VT_FILETIME (UTC) */") + cpp_quote("#define PIDSI_LASTSAVE_DTM 0x0000000DL /* VT_FILETIME (UTC) */") + cpp_quote("#define PIDSI_PAGECOUNT 0x0000000EL /* VT_I4 */") + cpp_quote("#define PIDSI_WORDCOUNT 0x0000000FL /* VT_I4 */") + cpp_quote("#define PIDSI_CHARCOUNT 0x00000010L /* VT_I4 */") + cpp_quote("#define PIDSI_THUMBNAIL 0x00000011L /* VT_CF */") + cpp_quote("#define PIDSI_APPNAME 0x00000012L /* VT_LPSTR */") + cpp_quote("#define PIDSI_DOC_SECURITY 0x00000013L /* VT_I4 */") + cpp_quote("") + cpp_quote("#define PIDDSI_CATEGORY 0x00000002L /* VT_LPSTR */") + cpp_quote("#define PIDDSI_PRESFORMAT 0x00000003L /* VT_LPSTR */") + cpp_quote("#define PIDDSI_BYTECOUNT 0x00000004L /* VT_I4 */") + cpp_quote("#define PIDDSI_LINECOUNT 0x00000005L /* VT_I4 */") + cpp_quote("#define PIDDSI_PARCOUNT 0x00000006L /* VT_I4 */") + cpp_quote("#define PIDDSI_SLIDECOUNT 0x00000007L /* VT_I4 */") + cpp_quote("#define PIDDSI_NOTECOUNT 0x00000008L /* VT_I4 */") + cpp_quote("#define PIDDSI_HIDDENCOUNT 0x00000009L /* VT_I4 */") + cpp_quote("#define PIDDSI_MMCLIPCOUNT 0x0000000AL /* VT_I4 */") + cpp_quote("#define PIDDSI_SCALE 0x0000000BL /* VT_BOOL */") + cpp_quote("#define PIDDSI_HEADINGPAIR 0x0000000CL /* VT_VARIANT|VT_VECTOR */") + cpp_quote("#define PIDDSI_DOCPARTS 0x0000000DL /* VT_LPSTR|VT_VECTOR */") + cpp_quote("#define PIDDSI_MANAGER 0x0000000EL /* VT_LPSTR */") + cpp_quote("#define PIDDSI_COMPANY 0x0000000FL /* VT_LPSTR */") + cpp_quote("#define PIDDSI_LINKSDIRTY 0x00000010L /* VT_B0OL */") + + const ULONG PRSPEC_INVALID = 0xffffffff; + const ULONG PRSPEC_LPWSTR = 0; + const ULONG PRSPEC_PROPID = 1; + + typedef struct tagPROPSPEC { + ULONG ulKind; + [switch_is(ulKind)] union { + [case(PRSPEC_PROPID)] PROPID propid; + [case(PRSPEC_LPWSTR)] LPOLESTR lpwstr; + [default] ; + }; + } PROPSPEC; + + typedef struct tagSTATPROPSTG { + LPOLESTR lpwstrName; + PROPID propid; + VARTYPE vt; + } STATPROPSTG; + + cpp_quote("/* Macros for dwOSVersion member of STATPROPSETSTG */") + cpp_quote("#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD((dwOSVer))") + cpp_quote("#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD((dwOSVer)))") + cpp_quote("#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD((dwOSVer)))") + cpp_quote("#define PROPSETHDR_OSVERSION_UNKNOWN 0xffffffff") + + typedef struct tagSTATPROPSETSTG { + FMTID fmtid; + CLSID clsid; + DWORD grfFlags; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD dwOSVersion; + } STATPROPSETSTG; + + HRESULT ReadMultiple( + [in] ULONG cpspec, + [in, size_is(cpspec)] const PROPSPEC rgpspec[], + [out, size_is(cpspec)] PROPVARIANT rgpropvar[]); + + HRESULT WriteMultiple( + [in] ULONG cpspec, + [in, size_is(cpspec)] const PROPSPEC rgpspec[], + [in, size_is(cpspec)] const PROPVARIANT rgpropvar[], + [in] PROPID propidNameFirst); + + HRESULT DeleteMultiple( + [in] ULONG cpspec, + [in, size_is(cpspec)] const PROPSPEC rgpspec[]); + + HRESULT ReadPropertyNames( + [in] ULONG cpropid, + [in, size_is(cpropid)] const PROPID rgpropid[], + [out, size_is(cpropid)] LPOLESTR rglpwstrName[]); + + HRESULT WritePropertyNames( + [in] ULONG cpropid, + [in, size_is(cpropid)] const PROPID rgpropid[], + [in, size_is(cpropid)] const LPOLESTR rglpwstrName[]); + + HRESULT DeletePropertyNames( + [in] ULONG cpropid, + [in, size_is(cpropid)] const PROPID rgpropid[]); + + HRESULT Commit( + [in] DWORD grfCommitFlags); + + HRESULT Revert(); + + HRESULT Enum( + [out] IEnumSTATPROPSTG **ppenum); + + HRESULT SetTimes( + [in] const FILETIME *pctime, + [in] const FILETIME *patime, + [in] const FILETIME *pmtime); + + HRESULT SetClass( + [in] REFCLSID clsid); + + HRESULT Stat( + [out] STATPROPSETSTG *statpsstg); +} + +[ + object, + uuid(0000013A-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IPropertySetStorage : IUnknown +{ + typedef [unique] IPropertySetStorage *LPPROPERTYSETSTORAGE; + + HRESULT Create( + [in] REFFMTID rfmtid, + [in, unique] const CLSID *pclsid, + [in] DWORD grfFlags, + [in] DWORD grfMode, + [out] IPropertyStorage **ppprstg); + + HRESULT Open( + [in] REFFMTID rfmtid, + [in] DWORD grfMode, + [out] IPropertyStorage **ppprstg); + + HRESULT Delete( + [in] REFFMTID rfmtid); + + HRESULT Enum( + [out] IEnumSTATPROPSETSTG **ppenum); +} + +[ + object, + uuid(00000139-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumSTATPROPSTG : IUnknown +{ + typedef [unique] IEnumSTATPROPSTG *LPENUMSTATPROPSTG; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATPROPSTG *rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATPROPSTG *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumSTATPROPSTG **ppenum); +} + +[ + object, + uuid(0000013B-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IEnumSTATPROPSETSTG : IUnknown +{ + typedef [unique] IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; + + [local] + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATPROPSETSTG *rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] + HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] + STATPROPSETSTG *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumSTATPROPSETSTG **ppenum); +} + + +cpp_quote("HRESULT WINAPI FreePropVariantArray(ULONG,PROPVARIANT*);") +cpp_quote("HRESULT WINAPI PropVariantClear(PROPVARIANT*);") +cpp_quote("HRESULT WINAPI PropVariantCopy(PROPVARIANT*,const PROPVARIANT*);") +cpp_quote("") +cpp_quote("#define _PROPVARIANT_INIT_DEFINED_") +cpp_quote("#define PropVariantInit(p) memset((p), 0, sizeof(PROPVARIANT))") +cpp_quote("") +cpp_quote("#ifndef _STGCREATEPROPSTG_DEFINED_") +cpp_quote("#define _STGCREATEPROPSTG_DEFINED_") +cpp_quote("HRESULT WINAPI StgCreatePropStg(IUnknown *, REFFMTID, const CLSID *, DWORD, DWORD, IPropertyStorage **);") +cpp_quote("HRESULT WINAPI StgOpenPropStg(IUnknown *, REFFMTID, DWORD, DWORD, IPropertyStorage **);") +cpp_quote("HRESULT WINAPI StgCreatePropSetStg(IStorage *, DWORD, IPropertySetStorage **);") +cpp_quote("#define CCH_MAX_PROPSTG_NAME 31") +cpp_quote("HRESULT WINAPI FmtIdToPropStgName(const FMTID *, LPOLESTR);") +cpp_quote("HRESULT WINAPI PropStgNameToFmtId(const LPOLESTR, FMTID *);") +cpp_quote("#endif /* _STGCREATEPROPSTG_DEFINED_ */") +cpp_quote("") diff --git a/reactos/include/psdk/psdk.rbuild b/reactos/include/psdk/psdk.rbuild new file mode 100644 index 00000000000..1b0dad5c537 --- /dev/null +++ b/reactos/include/psdk/psdk.rbuild @@ -0,0 +1,26 @@ + + docobj.idl + oaidl.idl + objidl.idl + objsafe.idl + ocmm.idl + oledb.idl + oleidl.idl + optary.idl + propidl.idl + pstore.idl + richole.idl + sensevts.idl + servprov.idl + shldisp.idl + shobjidl.idl + shtypes.idl + strmif.idl + tom.idl + unknwn.idl + urlhist.idl + urlmon.idl + mshtmhst.idl + exdisp.idl + wtypes.idl + \ No newline at end of file diff --git a/reactos/include/psdk/pstore.idl b/reactos/include/psdk/pstore.idl new file mode 100644 index 00000000000..06f5132a5c5 --- /dev/null +++ b/reactos/include/psdk/pstore.idl @@ -0,0 +1,261 @@ +/* + * Copyright (C) 2004 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "oaidl.idl"; + +cpp_quote("#define PST_KEY_CURRENT_USER 0") +cpp_quote("#define PST_KEY_LOCAL_MACHINE 1") + +cpp_quote("#define PST_E_OK 0x00000000L") +cpp_quote("#define PST_E_TYPE_EXISTS 0x800C0004L") + +cpp_quote("#define PST_AUTHENTICODE 1") +cpp_quote("#define PST_BINARY_CHECK 2") +cpp_quote("#define PST_SECURITY_DESCRIPTOR 4") + +typedef DWORD PST_ACCESSMODE; +typedef DWORD PST_ACCESSCLAUSETYPE; +typedef DWORD PST_KEY; +typedef DWORD PST_PROVIDERCAPABILITIES; +typedef GUID PST_PROVIDERID, *PPST_PROVIDERID; + +typedef struct _PST_PROVIDERINFO +{ + DWORD cbSize; + PST_PROVIDERID ID; + PST_PROVIDERCAPABILITIES Capabilities; + LPWSTR szProviderName; +} PST_PROVIDERINFO, *PPST_PROVIDERINFO; + +typedef void *PPST_PROMPTIFO; + + + +typedef struct { + DWORD cbSize; + PST_ACCESSCLAUSETYPE ClauseType; + DWORD cbClauseData; + BYTE* pbClauseData; +} PST_ACCESSCLAUSE, *PPST_ACCESSCLAUSE; + +typedef struct { + DWORD cbSize; + PST_ACCESSMODE AccessModeFlags; + DWORD cClauses; + PST_ACCESSCLAUSE* rgClauses; +} PST_ACCESSRULE, *PPST_ACCESSRULE; + +typedef struct { + DWORD cbSize; + DWORD cClause; + PST_ACCESSRULE* rgRules; +} PST_ACCESSRULESET, *PPST_ACCESSRULESET; + +typedef struct { + DWORD cbSize; + LPWSTR szDisplayName; +} PST_TYPEINFO, *PPST_TYPEINFO; + +typedef struct { + DWORD cbSize; + DWORD dwPromptFlags; + DWORD_PTR hwndApp; + LPCWSTR szPrompt; +} PST_PROMPTINFO, *PPST_PROMPTINFO; + +[ + object, + pointer_default(unique) +] +interface IEnumPStoreItems : IUnknown +{ + HRESULT Clone( + [in] IEnumPStoreItems** ppenum ); + + HRESULT Next( + [in] DWORD celt, + [in] LPWSTR* rgelt, + [in] DWORD* pceltFetched ); + + HRESULT Reset(); + + HRESULT Skip( + [in] DWORD celt ); +} + +[ + object, + pointer_default(unique) +] +interface IEnumPStoreTypes : IUnknown +{ + HRESULT Clone( + [in] IEnumPStoreTypes** ppenum ); + + HRESULT Next( + [in] DWORD celt, + [in] LPWSTR* rgelt, + [in] DWORD* pceltFetched ); + + HRESULT Reset(); + + HRESULT Skip( + [in] DWORD celt ); +} + +/***************************************************************************** + * IPStore interface + */ +[ + object, + pointer_default(unique) +] +interface IPStore : IUnknown +{ + HRESULT GetInfo( + [in] PPST_PROVIDERINFO* ppProperties ); + + HRESULT GetProvParam( + [in] DWORD dwParam, + [out] DWORD* pcbData, + [out] BYTE** ppbData, + [in] DWORD dwFlags ); + + HRESULT SetProvParam( + [in] DWORD dwParam, + [in] DWORD cbData, + [in] BYTE* pbData, + [in] DWORD* dwFlags ); + + HRESULT CreateType( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] PPST_TYPEINFO pInfo, + [in] DWORD dwFlags ); + + HRESULT GetTypeInfo( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] PPST_TYPEINFO** ppInfo, + [in] DWORD dwFlags ); + + HRESULT DeleteType( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] DWORD dwFlags ); + + HRESULT CreateSubtype( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] PPST_TYPEINFO pInfo, + [in] PPST_ACCESSRULESET pRules, + [in] DWORD dwFlags ); + + HRESULT GetSubtypeInfo( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] PPST_TYPEINFO** ppInfo, + [in] DWORD dwFlags ); + + HRESULT DeleteSubtype( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] DWORD dwFlags ); + + HRESULT ReadAccessRuleset( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] PPST_TYPEINFO pInfo, + [in] PPST_ACCESSRULESET** ppRules, + [in] DWORD dwFlags ); + + HRESULT WriteAccessRuleset( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] const GUID* pSubtype, + [in] PPST_TYPEINFO pInfo, + [in] PPST_ACCESSRULESET pRules, + [in] DWORD dwFlags ); + + HRESULT EnumTypes( + [in] PST_KEY Key, + [in] DWORD dwFlags, + [in] IEnumPStoreTypes** ppenum ); + + HRESULT EnumSubtypes( + [in] PST_KEY Key, + [in] const GUID* pType, + [in] DWORD dwFlags, + [in] IEnumPStoreTypes** ppenum ); + + HRESULT DeleteItem( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubType, + [in] LPCWSTR szItemName, + [in] PPST_PROMPTINFO pPromptInfo, + [in] DWORD dwFlags ); + + HRESULT ReadItem( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] LPCWSTR szItemName, + [in] DWORD *cbData, + [in] BYTE** pbData, + [in] PPST_PROMPTIFO pPromptInfo, + [in] DWORD dwFlags ); + + HRESULT WriteItem( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] LPCWSTR szItemName, + [in] DWORD cbData, + [in,size_is(cbData)] BYTE *ppbData, + [in] PPST_PROMPTIFO pPromptInfo, + [in] DWORD dwDefaultConfirmationStyle, + [in] DWORD dwFlags); + + HRESULT OpenItem( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] LPCWSTR szItemName, + [in] PST_ACCESSMODE ModeFlags, + [in] PPST_PROMPTIFO pProomptInfo, + [in] DWORD dwFlags ); + + HRESULT CloseItem( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] LPCWSTR* szItemName, + [in] DWORD dwFlags ); + + HRESULT EnumItems( + [in] PST_KEY Key, + [in] const GUID* pItemType, + [in] const GUID* pItemSubtype, + [in] DWORD dwFlags, + [in] IEnumPStoreItems** ppenum ); +} diff --git a/reactos/include/psdk/richedit.h b/reactos/include/psdk/richedit.h index 662413c1767..b58a3145a10 100644 --- a/reactos/include/psdk/richedit.h +++ b/reactos/include/psdk/richedit.h @@ -1,545 +1,684 @@ -#ifndef _RICHEDIT_H -#define _RICHEDIT_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif +/* + * Copyright (C) 2000 Jean-Claude Batista + * Copyright (C) 2002 Andriy Palamarchuk + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_RICHEDIT_H +#define __WINE_RICHEDIT_H + +#include #ifdef __cplusplus extern "C" { #endif -#pragma pack(push,4) -#ifdef UNICODE -#define RICHEDIT_CLASS L"RichEdit20W" -#define RICHEDIT_CLASS20W L"RichEdit20W" +#ifndef _RICHEDIT_VER +#define _RICHEDIT_VER 0x0210 +#endif /* _RICHEDIT_VER */ + +#define cchTextLimitDefault 0x7fff + +#define RICHEDIT_CLASS20A "RichEdit20A" +#if defined(__GNUC__) +# define RICHEDIT_CLASS20W (const WCHAR []){ 'R','i','c','h','E','d','i','t','2','0','W',0 } +#elif defined(_MSC_VER) +# define RICHEDIT_CLASS20W L"RichEdit20W" #else -#define RICHEDIT_CLASS "RichEdit20A" -#define RICHEDIT_CLASS20A "RichEdit20A" +static const WCHAR RICHEDIT_CLASS20W[] = { 'R','i','c','h','E','d','i','t','2','0','W',0 }; #endif -#define RICHEDIT_CLASS10A "RICHEDIT" -#define CF_RTF TEXT("Rich Text Format") -#define CF_RTFNOOBJS TEXT("Rich Text Format Without Objects") -#define CF_RETEXTOBJ TEXT("RichEdit Text and Objects") -#define CFM_BOLD 1 -#define CFM_ITALIC 2 -#define CFM_UNDERLINE 4 -#define CFM_STRIKEOUT 8 -#define CFM_PROTECTED 16 -#define CFM_LINK 32 -#define CFM_SIZE 0x80000000 -#define CFM_COLOR 0x40000000 -#define CFM_FACE 0x20000000 -#define CFM_OFFSET 0x10000000 -#define CFM_CHARSET 0x08000000 -#define CFM_BACKCOLOR 0x04000000 -#define CFM_LCID 0x02000000 -#define CFM_UNDERLINETYPE 0x00800000 -#define CFM_WEIGHT 0x00400000 -#define CFM_SPACING 0x00200000 -#define CFM_KERNING 0x00100000 -#define CFM_STYLE 0x00080000 -#define CFM_ANIMATION 0x00040000 -#define CFM_SUBSCRIPT 0x00030000 -#define CFM_SUPERSCRIPT 0x00030000 -#define CFM_REVAUTHOR 0x00008000 -#define CFM_REVISED 0x00004000 -#define CFM_DISABLED 0x00002000 -#define CFM_IMPRINT 0x00001000 -#define CFM_EMBOSS 0x00000800 -#define CFM_SHADOW 0x00000400 -#define CFM_OUTLINE 0x00000200 -#define CFM_HIDDEN 0x00000100 -#define CFM_ALLCAPS 0x00000080 -#define CFM_SMALLCAPS 0x00000040 -#define CFM_EFFECTS (CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK) -#define CFE_BOLD 1 -#define CFE_ITALIC 2 -#define CFE_UNDERLINE 4 -#define CFE_STRIKEOUT 8 -#define CFE_PROTECTED 16 -#define CFE_AUTOCOLOR 0x40000000 -#define CFE_AUTOBACKCOLOR 0x04000000 -#define CFE_SUBSCRIPT 0x00010000 -#define CFE_SUPERSCRIPT 0x00020000 -#define CFE_ALLCAPS CFM_ALLCAPS -#define CFE_EMBOSS CFM_EMBOSS -#define CFE_HIDDEN CFM_HIDDEN -#define CFE_IMPRINT CFM_IMPRINT -#define CFE_OUTLINE CFM_OUTLINE -#define CFE_SHADOW CFM_SHADOW -#define CFE_SMALLCAPS CFM_SMALLCAPS -#define CFE_LINK 0x00000020 -#define CFU_CF1UNDERLINE 0xff -#define CFU_UNDERLINENONE 0 -#define CFU_UNDERLINE 1 -#define CFU_UNDERLINEWORD 2 -#define CFU_UNDERLINEDOUBLE 3 -#define CFU_UNDERLINEDOTTED 4 -#define IMF_FORCENONE 1 -#define IMF_FORCEENABLE 2 -#define IMF_FORCEDISABLE 4 -#define IMF_CLOSESTATUSWINDOW 8 -#define IMF_VERTICAL 32 -#define IMF_FORCEACTIVE 64 -#define IMF_FORCEINACTIVE 128 -#define IMF_FORCEREMEMBER 256 -#define SEL_EMPTY 0 -#define SEL_TEXT 1 -#define SEL_OBJECT 2 -#define SEL_MULTICHAR 4 -#define SEL_MULTIOBJECT 8 -#define MAX_TAB_STOPS 32 -#define PFM_ALIGNMENT 8 -#define PFM_NUMBERING 32 -#define PFM_OFFSET 4 -#define PFM_OFFSETINDENT 0x80000000 -#define PFM_RIGHTINDENT 2 -#define PFM_STARTINDENT 1 -#define PFM_TABSTOPS 16 -#define PFM_BORDER 2048 -#define PFM_LINESPACING 256 -#define PFM_NUMBERINGSTART 32768 -#define PFM_NUMBERINGSTYLE 8192 -#define PFM_NUMBERINGTAB 16384 -#define PFM_SHADING 4096 -#define PFM_SPACEAFTER 128 -#define PFM_SPACEBEFORE 64 -#define PFM_STYLE 1024 -#define PFM_DONOTHYPHEN 4194304 -#define PFM_KEEP 131072 -#define PFM_KEEPNEXT 262144 -#define PFM_NOLINENUMBER 1048576 -#define PFM_NOWIDOWCONTROL 2097152 -#define PFM_PAGEBREAKBEFORE 524288 -#define PFM_RTLPARA 65536 -#define PFM_SIDEBYSIDE 8388608 -#define PFM_TABLE 1073741824 -#define PFN_BULLET 1 -#define PFE_DONOTHYPHEN 64 -#define PFE_KEEP 2 -#define PFE_KEEPNEXT 4 -#define PFE_NOLINENUMBER 16 -#define PFE_NOWIDOWCONTROL 32 -#define PFE_PAGEBREAKBEFORE 8 -#define PFE_RTLPARA 1 -#define PFE_SIDEBYSIDE 128 -#define PFE_TABLE 16384 -#define PFA_LEFT 1 -#define PFA_RIGHT 2 -#define PFA_CENTER 3 -#define PFA_JUSTIFY 4 -#define PFA_FULL_INTERWORD 4 -#define SF_TEXT 1 -#define SF_RTF 2 -#define SF_RTFNOOBJS 3 -#define SF_TEXTIZED 4 -#define SF_UNICODE 16 -#define SF_USECODEPAGE 32 -#define SF_NCRFORNONASCII 64 -#define SF_RTFVAL 0x0700 -#define SFF_PWD 0x0800 -#define SFF_KEEPDOCINFO 0x1000 -#define SFF_PERSISTVIEWSCALE 0x2000 -#define SFF_PLAINRTF 0x4000 -#define SFF_SELECTION 0x8000 -#define ST_DEFAULT 0x00000000 -#define ST_KEEPUNDO 0x00000001 -#define ST_SELECTION 0x00000002 -#define WB_CLASSIFY 3 -#define WB_MOVEWORDLEFT 4 -#define WB_MOVEWORDRIGHT 5 -#define WB_LEFTBREAK 6 -#define WB_RIGHTBREAK 7 -#define WB_MOVEWORDPREV 4 -#define WB_MOVEWORDNEXT 5 -#define WB_PREVBREAK 6 -#define WB_NEXTBREAK 7 -#define WBF_WORDWRAP 16 -#define WBF_WORDBREAK 32 -#define WBF_OVERFLOW 64 -#define WBF_LEVEL1 128 -#define WBF_LEVEL2 256 -#define WBF_CUSTOM 512 -#define ES_DISABLENOSCROLL 8192 -#define ES_EX_NOCALLOLEINIT 16777216 -#define ES_NOIME 524288 -#define ES_NOOLEDRAGDROP 8 -#define ES_SAVESEL 32768 -#define ES_SELECTIONBAR 16777216 -#define ES_SELFIME 262144 -#define ES_SUNKEN 16384 -#define ES_VERTICAL 4194304 -#define EM_CANPASTE (WM_USER+50) -#define EM_DISPLAYBAND (WM_USER+51) -#define EM_EXGETSEL (WM_USER+52) -#define EM_EXLIMITTEXT (WM_USER+53) -#define EM_EXLINEFROMCHAR (WM_USER+54) -#define EM_EXSETSEL (WM_USER+55) -#define EM_FINDTEXT (WM_USER+56) -#define EM_FORMATRANGE (WM_USER+57) -#define EM_GETCHARFORMAT (WM_USER+58) -#define EM_GETEVENTMASK (WM_USER+59) -#define EM_GETOLEINTERFACE (WM_USER+60) -#define EM_GETPARAFORMAT (WM_USER+61) -#define EM_GETSELTEXT (WM_USER+62) -#define EM_HIDESELECTION (WM_USER+63) -#define EM_PASTESPECIAL (WM_USER+64) -#define EM_REQUESTRESIZE (WM_USER+65) -#define EM_SELECTIONTYPE (WM_USER+66) -#define EM_SETBKGNDCOLOR (WM_USER+67) -#define EM_SETCHARFORMAT (WM_USER+68) -#define EM_SETEVENTMASK (WM_USER+69) -#define EM_SETOLECALLBACK (WM_USER+70) -#define EM_SETPARAFORMAT (WM_USER+71) -#define EM_SETTARGETDEVICE (WM_USER+72) -#define EM_STREAMIN (WM_USER+73) -#define EM_STREAMOUT (WM_USER+74) -#define EM_GETTEXTRANGE (WM_USER+75) -#define EM_FINDWORDBREAK (WM_USER+76) -#define EM_SETOPTIONS (WM_USER+77) -#define EM_GETOPTIONS (WM_USER+78) -#define EM_FINDTEXTEX (WM_USER+79) -#define EM_GETWORDBREAKPROCEX (WM_USER+80) -#define EM_SETWORDBREAKPROCEX (WM_USER+81) -/* RichEdit 2.0 messages */ -#define EM_SETUNDOLIMIT (WM_USER+82) -#define EM_REDO (WM_USER+84) -#define EM_CANREDO (WM_USER+85) -#define EM_GETUNDONAME (WM_USER+86) -#define EM_GETREDONAME (WM_USER+87) -#define EM_STOPGROUPTYPING (WM_USER+88) -#define EM_SETTEXTMODE (WM_USER+89) -#define EM_GETTEXTMODE (WM_USER+90) -#define EM_AUTOURLDETECT (WM_USER+91) +#define RICHEDIT_CLASS10A "RICHEDIT" + +#if (_RICHEDIT_VER >= 0x0200 ) +#define RICHEDIT_CLASS WINELIB_NAME_AW(RICHEDIT_CLASS20) +#else +#define RICHEDIT_CLASS RICHEDIT_CLASS10A +#endif + +#ifndef EM_SCROLLCARET +#define EM_SCROLLCARET (WM_USER + 49) +#endif +#define EM_CANPASTE (WM_USER + 50) +#define EM_DISPLAYBAND (WM_USER + 51) +#define EM_EXGETSEL (WM_USER + 52) +#define EM_EXLIMITTEXT (WM_USER + 53) +#define EM_EXLINEFROMCHAR (WM_USER + 54) +#define EM_EXSETSEL (WM_USER + 55) +#define EM_FINDTEXT (WM_USER + 56) +#define EM_FORMATRANGE (WM_USER + 57) +#define EM_GETCHARFORMAT (WM_USER + 58) +#define EM_GETEVENTMASK (WM_USER + 59) +#define EM_GETOLEINTERFACE (WM_USER + 60) +#define EM_GETPARAFORMAT (WM_USER + 61) +#define EM_GETSELTEXT (WM_USER + 62) +#define EM_HIDESELECTION (WM_USER + 63) +#define EM_PASTESPECIAL (WM_USER + 64) +#define EM_REQUESTRESIZE (WM_USER + 65) +#define EM_SELECTIONTYPE (WM_USER + 66) +#define EM_SETBKGNDCOLOR (WM_USER + 67) +#define EM_SETCHARFORMAT (WM_USER + 68) +#define EM_SETEVENTMASK (WM_USER + 69) +#define EM_SETOLECALLBACK (WM_USER + 70) +#define EM_SETPARAFORMAT (WM_USER + 71) +#define EM_SETTARGETDEVICE (WM_USER + 72) +#define EM_STREAMIN (WM_USER + 73) +#define EM_STREAMOUT (WM_USER + 74) +#define EM_GETTEXTRANGE (WM_USER + 75) +#define EM_FINDWORDBREAK (WM_USER + 76) +#define EM_SETOPTIONS (WM_USER + 77) +#define EM_GETOPTIONS (WM_USER + 78) +#define EM_FINDTEXTEX (WM_USER + 79) +#define EM_GETWORDBREAKPROCEX (WM_USER + 80) +#define EM_SETWORDBREAKPROCEX (WM_USER + 81) + +#define EM_SETUNDOLIMIT (WM_USER + 82) +#define EM_REDO (WM_USER + 84) +#define EM_CANREDO (WM_USER + 85) +#define EM_GETUNDONAME (WM_USER + 86) +#define EM_GETREDONAME (WM_USER + 87) +#define EM_STOPGROUPTYPING (WM_USER + 88) + +#define EM_SETTEXTMODE (WM_USER + 89) +#define EM_GETTEXTMODE (WM_USER + 90) +#define EM_AUTOURLDETECT (WM_USER + 91) #define EM_GETAUTOURLDETECT (WM_USER + 92) -#define EM_SETPALETTE (WM_USER + 93) -#define EM_GETTEXTEX (WM_USER+94) -#define EM_GETTEXTLENGTHEX (WM_USER+95) -#define EM_SHOWSCROLLBAR (WM_USER+96) -#define EM_SETTEXTEX (WM_USER + 97) +#define EM_SETPALETTE (WM_USER + 93) +#define EM_GETTEXTEX (WM_USER + 94) +#define EM_GETTEXTLENGTHEX (WM_USER + 95) +#define EM_SHOWSCROLLBAR (WM_USER + 96) +#define EM_SETTEXTEX (WM_USER + 97) + #define EM_SETPUNCTUATION (WM_USER + 100) #define EM_GETPUNCTUATION (WM_USER + 101) #define EM_SETWORDWRAPMODE (WM_USER + 102) #define EM_GETWORDWRAPMODE (WM_USER + 103) -#define EM_SETIMECOLOR (WM_USER + 104) -#define EM_GETIMECOLOR (WM_USER + 105) +#define EM_SETIMECOLOR (WM_USER + 104) +#define EM_GETIMECOLOR (WM_USER + 105) #define EM_SETIMEOPTIONS (WM_USER + 106) #define EM_GETIMEOPTIONS (WM_USER + 107) #define EM_CONVPOSITION (WM_USER + 108) -#define EM_SETLANGOPTIONS (WM_USER+120) -#define EM_GETLANGOPTIONS (WM_USER+121) -#define EM_GETIMECOMPMODE (WM_USER+122) -#define EM_FINDTEXTW (WM_USER + 123) -#define EM_FINDTEXTEXW (WM_USER + 124) -#define EM_RECONVERSION (WM_USER + 125) + +#define EM_SETLANGOPTIONS (WM_USER + 120) +#define EM_GETLANGOPTIONS (WM_USER + 121) +#define EM_GETIMECOMPMODE (WM_USER + 122) + +#define EM_FINDTEXTW (WM_USER + 123) +#define EM_FINDTEXTEXW (WM_USER + 124) + +#define EM_RECONVERSION (WM_USER + 125) #define EM_SETIMEMODEBIAS (WM_USER + 126) #define EM_GETIMEMODEBIAS (WM_USER + 127) + #define EM_SETBIDIOPTIONS (WM_USER + 200) #define EM_GETBIDIOPTIONS (WM_USER + 201) -#define EM_SETTYPOGRAPHYOPTIONS (WM_USER+202) -#define EM_GETTYPOGRAPHYOPTIONS (WM_USER+203) -#define EM_SETEDITSTYLE (WM_USER + 204) -#define EM_GETEDITSTYLE (WM_USER + 205) -#define EM_OUTLINE (WM_USER + 220) -#define EM_GETSCROLLPOS (WM_USER+221) -#define EM_SETSCROLLPOS (WM_USER+222) -#define EM_SETFONTSIZE (WM_USER+223) -#define EM_GETZOOM (WM_USER+224) -#define EM_SETZOOM (WM_USER+225) -#define EN_CORRECTTEXT 1797 -#define EN_DROPFILES 1795 -#define EN_IMECHANGE 1799 -#define EN_LINK 1803 -#define EN_MSGFILTER 1792 -#define EN_OLEOPFAILED 1801 -#define EN_PROTECTED 1796 -#define EN_REQUESTRESIZE 1793 -#define EN_SAVECLIPBOARD 1800 -#define EN_SELCHANGE 1794 -#define EN_STOPNOUNDO 1798 -#define ENM_NONE 0 -#define ENM_CHANGE 1 -#define ENM_CORRECTTEXT 4194304 -#define ENM_DRAGDROPDONE 16 -#define ENM_DROPFILES 1048576 -#define ENM_IMECHANGE 8388608 -#define ENM_KEYEVENTS 65536 -#define ENM_LANGCHANGE 16777216 -#define ENM_LINK 67108864 -#define ENM_MOUSEEVENTS 131072 -#define ENM_OBJECTPOSITIONS 33554432 -#define ENM_PROTECTED 2097152 -#define ENM_REQUESTRESIZE 262144 -#define ENM_SCROLL 4 -#define ENM_SCROLLEVENTS 8 -#define ENM_SELCHANGE 524288 -#define ENM_UPDATE 2 -#define ECO_AUTOWORDSELECTION 1 -#define ECO_AUTOVSCROLL 64 -#define ECO_AUTOHSCROLL 128 -#define ECO_NOHIDESEL 256 -#define ECO_READONLY 2048 -#define ECO_WANTRETURN 4096 -#define ECO_SAVESEL 0x8000 -#define ECO_SELECTIONBAR 0x1000000 -#define ECO_VERTICAL 0x400000 -#define ECOOP_SET 1 -#define ECOOP_OR 2 -#define ECOOP_AND 3 -#define ECOOP_XOR 4 -#define SCF_DEFAULT 0 -#define SCF_SELECTION 1 -#define SCF_WORD 2 -#define SCF_ALL 4 -#define SCF_USEUIRULES 8 -#define TM_PLAINTEXT 1 -#define TM_RICHTEXT 2 -#define TM_SINGLELEVELUNDO 4 -#define TM_MULTILEVELUNDO 8 -#define TM_SINGLECODEPAGE 16 -#define TM_MULTICODEPAGE 32 -#define GT_DEFAULT 0 -#define GT_USECRLF 1 -#define GT_SELECTION 2 -#define yHeightCharPtsMost 1638 -#define lDefaultTab 720 +#define EM_SETTYPOGRAPHYOPTIONS (WM_USER + 202) +#define EM_GETTYPOGRAPHYOPTIONS (WM_USER + 203) -typedef struct _charformat { - UINT cbSize; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - char szFaceName[LF_FACESIZE]; +#define EM_SETEDITSTYLE (WM_USER + 204) +#define EM_GETEDITSTYLE (WM_USER + 205) + +#define EM_OUTLINE (WM_USER + 220) + +#define EM_GETSCROLLPOS (WM_USER + 221) +#define EM_SETSCROLLPOS (WM_USER + 222) + +#define EM_SETFONTSIZE (WM_USER + 223) +#define EM_GETZOOM (WM_USER + 224) +#define EM_SETZOOM (WM_USER + 225) + +/* New notifications */ +#define EN_MSGFILTER 0x0700 +#define EN_REQUESTRESIZE 0x0701 +#define EN_SELCHANGE 0x0702 +#define EN_DROPFILES 0x0703 +#define EN_PROTECTED 0x0704 +#define EN_CORRECTTEXT 0x0705 +#define EN_STOPNOUNDO 0x0706 +#define EN_IMECHANGE 0x0707 +#define EN_SAVECLIPBOARD 0x0708 +#define EN_OLEOPFAILED 0x0709 +#define EN_OBJECTPOSITIONS 0x070a +#define EN_LINK 0x070b +#define EN_DRAGDROPDONE 0x070c +#define EN_PARAGRAPHEXPANDED 0x070d +#define EN_ALIGNLTR 0x0710 +#define EN_ALIGNRTL 0x0711 + + +typedef DWORD (CALLBACK * EDITSTREAMCALLBACK)( DWORD_PTR, LPBYTE, LONG, LONG * ); + +/* tab stops number limit */ +#define MAX_TAB_STOPS 0x00000020 + +/* Rich edit control styles */ +#define ES_DISABLENOSCROLL 0x00002000 +#define ES_SUNKEN 0x00004000 +#define ES_SAVESEL 0x00008000 +#define ES_SELFIME 0x00040000 +#define ES_NOIME 0x00080000 +#define ES_VERTICAL 0x00400000 +#define ES_SELECTIONBAR 0x01000000 +#define ES_EX_NOCALLOLEINIT 0x01000000 + +/* the character formatting options */ +#define SCF_DEFAULT 0x00000000 +#define SCF_SELECTION 0x00000001 +#define SCF_WORD 0x00000002 +#define SCF_ALL 0x00000004 +#define SCF_USEUIRULES 0x00000008 + +/* CHARFORMAT structure */ +typedef struct _charformat +{ + UINT cbSize; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char szFaceName[LF_FACESIZE]; } CHARFORMATA; -typedef struct _charformatw { - UINT cbSize; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - WCHAR szFaceName[LF_FACESIZE]; + +typedef struct _charformatw +{ + UINT cbSize; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR szFaceName[LF_FACESIZE]; } CHARFORMATW; + typedef struct _charformat2a { - UINT cbSize; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - char szFaceName[LF_FACESIZE]; - WORD wWeight; - SHORT sSpacing; - COLORREF crBackColor; - LCID lcid; - DWORD dwReserved; - SHORT sStyle; - WORD wKerning; - BYTE bUnderlineType; - BYTE bAnimation; - BYTE bRevAuthor; + UINT cbSize; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char szFaceName[LF_FACESIZE]; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; } CHARFORMAT2A; + typedef struct _charformat2w { - UINT cbSize; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - WCHAR szFaceName[LF_FACESIZE]; - WORD wWeight; - SHORT sSpacing; - COLORREF crBackColor; - LCID lcid; - DWORD dwReserved; - SHORT sStyle; - WORD wKerning; - BYTE bUnderlineType; - BYTE bAnimation; - BYTE bRevAuthor; + UINT cbSize; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR szFaceName[LF_FACESIZE]; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; } CHARFORMAT2W; -typedef struct _charrange { - LONG cpMin; - LONG cpMax; + +/* CHARFORMAT masks */ +#define CFM_BOLD 0x00000001 +#define CFM_ITALIC 0x00000002 +#define CFM_UNDERLINE 0x00000004 +#define CFM_STRIKEOUT 0x00000008 +#define CFM_PROTECTED 0x00000010 +#define CFM_LINK 0x00000020 +#define CFM_SMALLCAPS 0x00000040 +#define CFM_ALLCAPS 0x00000080 +#define CFM_HIDDEN 0x00000100 +#define CFM_OUTLINE 0x00000200 +#define CFM_SHADOW 0x00000400 +#define CFM_EMBOSS 0x00000800 +#define CFM_IMPRINT 0x00001000 +#define CFM_DISABLED 0x00002000 +#define CFM_REVISED 0x00004000 +#define CFM_REVAUTHOR 0x00008000 +#define CFM_SUBSCRIPT 0x00030000 +#define CFM_SUPERSCRIPT 0x00030000 +#define CFM_ANIMATION 0x00040000 +#define CFM_STYLE 0x00080000 +#define CFM_KERNING 0x00100000 +#define CFM_SPACING 0x00200000 +#define CFM_WEIGHT 0x00400000 +#define CFM_UNDERLINETYPE 0x00800000 +#define CFM_LCID 0x02000000 +#define CFM_BACKCOLOR 0x04000000 +#define CFM_CHARSET 0x08000000 +#define CFM_OFFSET 0x10000000 +#define CFM_FACE 0x20000000 +#define CFM_COLOR 0x40000000 +#define CFM_SIZE 0x80000000 +#define CFM_EFFECTS (CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK) + +/* CHARFORMAT effects */ +#define CFE_BOLD 0x00000001 +#define CFE_ITALIC 0x00000002 +#define CFE_UNDERLINE 0x00000004 +#define CFE_STRIKEOUT 0x00000008 +#define CFE_PROTECTED 0x00000010 +#define CFE_LINK 0x00000020 +#define CFE_SUBSCRIPT 0x00010000 +#define CFE_SUPERSCRIPT 0x00020000 +#define CFE_AUTOCOLOR 0x40000000 + +#define CFE_SMALLCAPS CFM_SMALLCAPS +#define CFE_ALLCAPS CFM_ALLCAPS +#define CFE_HIDDEN CFM_HIDDEN +#define CFE_OUTLINE CFM_OUTLINE +#define CFE_SHADOW CFM_SHADOW +#define CFE_EMBOSS CFM_EMBOSS +#define CFE_IMPRINT CFM_IMPRINT +#define CFE_DISABLED CFM_DISABLED +#define CFE_REVISED CFM_REVISED +#define CFE_AUTOBACKCOLOR CFM_BACKCOLOR + +#define CFU_CF1UNDERLINE 0xFF +#define CFU_INVERT 0xFE +#define CFU_UNDERLINEDOTTED 0x04 +#define CFU_UNDERLINEDOUBLE 0x03 +#define CFU_UNDERLINEWORD 0x02 +#define CFU_UNDERLINE 0x01 +#define CFU_UNDERLINENONE 0x00 + +/* ECO operations */ +#define ECOOP_SET 0x0001 +#define ECOOP_OR 0x0002 +#define ECOOP_AND 0x0003 +#define ECOOP_XOR 0x0004 + +/* edit control options */ +#define ECO_AUTOWORDSELECTION 0x00000001 +#define ECO_AUTOVSCROLL 0x00000040 +#define ECO_AUTOHSCROLL 0x00000080 +#define ECO_NOHIDESEL 0x00000100 +#define ECO_READONLY 0x00000800 +#define ECO_WANTRETURN 0x00001000 +#define ECO_SAVESEL 0x00008000 +#define ECO_SELECTIONBAR 0x01000000 +#define ECO_VERTICAL 0x00400000 + +/* Event notification masks */ +#define ENM_NONE 0x00000000 +#define ENM_CHANGE 0x00000001 +#define ENM_UPDATE 0x00000002 +#define ENM_SCROLL 0x00000004 +#define ENM_KEYEVENTS 0x00010000 +#define ENM_MOUSEEVENTS 0x00020000 +#define ENM_REQUESTRESIZE 0x00040000 +#define ENM_SELCHANGE 0x00080000 +#define ENM_DROPFILES 0x00100000 +#define ENM_PROTECTED 0x00200000 +#define ENM_CORRECTTEXT 0x00400000 +#define ENM_IMECHANGE 0x00800000 +#define ENM_LINK 0x04000000 + +#ifndef __RICHEDIT_CHARRANGE_DEFINED +#define __RICHEDIT_CHARRANGE_DEFINED + +typedef struct _charrange +{ + LONG cpMin; + LONG cpMax; } CHARRANGE; -typedef struct _compcolor { - COLORREF crText; - COLORREF crBackground; - DWORD dwEffects; -} COMPCOLOR; -typedef DWORD(CALLBACK *EDITSTREAMCALLBACK)(DWORD,PBYTE,LONG,LONG*); -typedef struct _editstream { - DWORD dwCookie; - DWORD dwError; - EDITSTREAMCALLBACK pfnCallback; -} EDITSTREAM; -typedef struct _encorrecttext { - NMHDR nmhdr; - CHARRANGE chrg; - WORD seltyp; -} ENCORRECTTEXT; -typedef struct _endropfiles { - NMHDR nmhdr; - HANDLE hDrop; - LONG cp; - BOOL fProtected; -} ENDROPFILES; -typedef struct _enlink { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; - CHARRANGE chrg; -} ENLINK; -typedef struct { - NMHDR nmhdr; - LONG iob; - LONG lOper; - HRESULT hr; -} ENOLEOPFAILED; -typedef struct _enprotected { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; - CHARRANGE chrg; -} ENPROTECTED,*LPENPROTECTED; -typedef struct _ensaveclipboard { - NMHDR nmhdr; - LONG cObjectCount; - LONG cch; -} ENSAVECLIPBOARD; -typedef struct _findtextA { - CHARRANGE chrg; - LPSTR lpstrText; -} FINDTEXTA; -typedef struct _findtextW { - CHARRANGE chrg; - LPWSTR lpstrText; -} FINDTEXTW; -typedef struct _findtextexA { - CHARRANGE chrg; - LPSTR lpstrText; - CHARRANGE chrgText; -} FINDTEXTEXA; -typedef struct _findtextexW { - CHARRANGE chrg; - LPWSTR lpstrText; - CHARRANGE chrgText; -} FINDTEXTEXW; -typedef struct _formatrange { - HDC hdc; - HDC hdcTarget; - RECT rc; - RECT rcPage; - CHARRANGE chrg; -} FORMATRANGE; -typedef struct _msgfilter { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; -} MSGFILTER; -typedef struct _paraformat { - UINT cbSize; - DWORD dwMask; - WORD wNumbering; - WORD wReserved; - LONG dxStartIndent; - LONG dxRightIndent; - LONG dxOffset; - WORD wAlignment; - SHORT cTabCount; - LONG rgxTabs[MAX_TAB_STOPS]; -} PARAFORMAT; -typedef struct _paraformat2 { - UINT cbSize; - DWORD dwMask; - WORD wNumbering; - WORD wEffects; - LONG dxStartIndent; - LONG dxRightIndent; - LONG dxOffset; - WORD wAlignment; - SHORT cTabCount; - LONG rgxTabs[MAX_TAB_STOPS]; - LONG dySpaceBefore; - LONG dySpaceAfter; - LONG dyLineSpacing; - SHORT sStyle; - BYTE bLineSpacingRule; - BYTE bOutlineLevel; - WORD wShadingWeight; - WORD wShadingStyle; - WORD wNumberingStart; - WORD wNumberingStyle; - WORD wNumberingTab; - WORD wBorderSpace; - WORD wBorderWidth; - WORD wBorders; -} PARAFORMAT2; -typedef struct _selchange { - NMHDR nmhdr; - CHARRANGE chrg; - WORD seltyp; -} SELCHANGE; -typedef struct _textrange { - CHARRANGE chrg; - LPSTR lpstrText; + +#endif /* __RICHEDIT_CHARRANGE_DEFINED */ + +typedef struct _textrange +{ + CHARRANGE chrg; + LPSTR lpstrText; } TEXTRANGEA; -typedef struct _textrangew { - CHARRANGE chrg; - LPWSTR lpstrText; + +typedef struct _textrangew +{ + CHARRANGE chrg; + LPWSTR lpstrText; } TEXTRANGEW; + +typedef struct _editstream +{ + DWORD dwCookie; + DWORD dwError; + EDITSTREAMCALLBACK pfnCallback; +} EDITSTREAM; + +typedef struct _compcolor { + COLORREF crText; + COLORREF crBackground; + DWORD dwEffects; +} COMPCOLOR; + +typedef struct _encorrecttext { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} ENCORRECTTEXT; + +typedef struct _endropfiles { + NMHDR nmhdr; + HANDLE hDrop; + LONG cp; + BOOL fProtected; +} ENDROPFILES; + +typedef struct _enlink { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} ENLINK; + +typedef struct { + NMHDR nmhdr; + LONG iob; + LONG lOper; + HRESULT hr; +} ENOLEOPFAILED; + +typedef struct _enprotected { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} ENPROTECTED, *LPENPROTECTED; + +typedef struct _ensaveclipboard { + NMHDR nmhdr; + LONG cObjectCount; + LONG cch; +} ENSAVECLIPBOARD; + +typedef struct _findtextA { + CHARRANGE chrg; + LPCSTR lpstrText; +} FINDTEXTA; + +typedef struct _findtextW { + CHARRANGE chrg; + LPCWSTR lpstrText; +} FINDTEXTW; + +typedef struct _findtextexA { + CHARRANGE chrg; + LPCSTR lpstrText; + CHARRANGE chrgText; +} FINDTEXTEXA; + +typedef struct _findtextexW { + CHARRANGE chrg; + LPCWSTR lpstrText; + CHARRANGE chrgText; +} FINDTEXTEXW; + +typedef struct _formatrange { + HDC hdc; + HDC hdcTarget; + RECT rc; + RECT rcPage; + CHARRANGE chrg; +} FORMATRANGE; + +typedef struct _msgfilter { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; +} MSGFILTER; + +typedef struct _paraformat { + UINT cbSize; + DWORD dwMask; + WORD wNumbering; + WORD wReserved; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG rgxTabs[MAX_TAB_STOPS]; +} PARAFORMAT; + +typedef struct _paraformat2 { + UINT cbSize; + DWORD dwMask; + WORD wNumbering; + WORD wEffects; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG rgxTabs[MAX_TAB_STOPS]; + LONG dySpaceBefore, dySpaceAfter, dyLineSpacing; + SHORT sStyle; + BYTE bLineSpacingRule, bOutlineLevel; + WORD wShadingWeight, wShadingStyle; + WORD wNumberingStart, wNumberingStyle, wNumberingTab; + WORD wBorderSpace, wBorderWidth, wBorders; +} PARAFORMAT2; + +typedef struct _selchange { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} SELCHANGE; + typedef struct _reqresize { - NMHDR nmhdr; - RECT rc; + NMHDR nmhdr; + RECT rc; } REQRESIZE; + typedef struct _repastespecial { - DWORD dwAspect; - DWORD dwParam; + DWORD dwAspect; + DWORD dwParam; } REPASTESPECIAL; + typedef struct _punctuation { - UINT iSize; - LPSTR szPunctuation; + UINT iSize; + LPSTR szPunctuation; } PUNCTUATION; + typedef struct _gettextex { - DWORD cb; - DWORD flags; - UINT codepage; - LPCSTR lpDefaultChar; - LPBOOL lpUsedDefaultChar; + DWORD cb; + DWORD flags; + UINT codepage; + LPCSTR lpDefaultChar; + LPBOOL lpUsedDefaultChar; } GETTEXTEX; -typedef struct _settextex { - DWORD flags; - UINT codepage; -} SETTEXTEX; + +#define SF_TEXT 0x00000001 +#define SF_RTF 0x00000002 +#define SF_RTFNOOBJS 0x00000003 +#define SF_TEXTIZED 0x00000004 +#define SF_UNICODE 0x00000010 +#define SF_USECODEPAGE 0x00000020 +#define SF_NCRFORNONASCII 0x00000040 +#define SF_RTFVAL 0x00000700 + +/* Clipboard formats */ +#define CF_RTF TEXT("Rich Text Format") +#define CF_RTFNOOBJS TEXT("Rich Text Format Without Objects") +#define CF_RETEXTOBJ TEXT("RichEdit Text and Objects") + + +/* Parameters of the EM_SETIMEOPTIONS message */ +#define IMF_FORCENONE 0x00000001 +#define IMF_FORCEENABLE 0x00000002 +#define IMF_FORCEDISABLE 0x00000004 +#define IMF_CLOSESTATUSWINDOW 0x00000008 +#define IMF_VERTICAL 0x00000020 +#define IMF_FORCEACTIVE 0x00000040 +#define IMF_FORCEINACTIVE 0x00000080 +#define IMF_FORCEREMEMBER 0x00000100 + +/* return values of the EM_SELECTION_TYPE message */ +#define SEL_EMPTY 0x00000000 +#define SEL_TEXT 0x00000001 +#define SEL_OBJECT 0x00000002 +#define SEL_MULTICHAR 0x00000004 +#define SEL_MULTIOBJECT 0x00000008 + +/* mask values in the PARAFORMAT structure */ +#define PFM_STARTINDENT 0x00000001 +#define PFM_RIGHTINDENT 0x00000002 +#define PFM_OFFSET 0x00000004 +#define PFM_ALIGNMENT 0x00000008 +#define PFM_TABSTOPS 0x00000010 +#define PFM_NUMBERING 0x00000020 +#define PFM_OFFSETINDENT 0x80000000 + +/* mask values in the PARAFORMAT2 structure */ +#define PFM_SPACEBEFORE 0x00000040 +#define PFM_SPACEAFTER 0x00000080 +#define PFM_LINESPACING 0x00000100 +#define PFM_STYLE 0x00000400 +#define PFM_BORDER 0x00000800 +#define PFM_SHADING 0x00001000 + +#define PFM_NUMBERINGSTYLE 0x00002000 +#define PFM_NUMBERINGTAB 0x00004000 +#define PFM_NUMBERINGSTART 0x00008000 +#define PFM_RTLPARA 0x00010000 +#define PFM_KEEP 0x00020000 +#define PFM_KEEPNEXT 0x00040000 +#define PFM_PAGEBREAKBEFORE 0x00080000 +#define PFM_NOLINENUMBER 0x00100000 +#define PFM_NOWIDOWCONTROL 0x00200000 +#define PFM_DONOTHYPHEN 0x00400000 +#define PFM_SIDEBYSIDE 0x00800000 +#define PFM_TABLE 0x40000000 + +/* numbering option */ +#define PFN_BULLET 0x00000001 + +/* paragraph alignment */ +#define PFA_LEFT 0x00000001 +#define PFA_RIGHT 0x00000002 +#define PFA_CENTER 0x00000003 +#define PFA_JUSTIFY 0x00000004 +#define PFA_FULL_INTERWORD 0x00000004 +#define PFA_FULL_INTERLETTER 0x00000005 + +/* paragraph effects */ +#define PFE_RTLPARA 0x00000001 +#define PFE_KEEP 0x00000002 +#define PFE_KEEPNEXT 0x00000004 +#define PFE_PAGEBREAKBEFORE 0x00000008 +#define PFE_NOLINENUMBER 0x00000010 +#define PFE_NOWIDOWCONTROL 0x00000020 +#define PFE_DONOTHYPHEN 0x00000040 +#define PFE_SIDEBYSIDE 0x00000080 +#define PFE_TABLE 0x00004000 + +/* streaming flags */ +#define SFF_PWD 0x00000800 +#define SFF_KEEPDOCINFO 0x00001000 +#define SFF_PERSISTVIEWSCALE 0x00002000 +#define SFF_PLAINRTF 0x00004000 +#define SFF_SELECTION 0x00008000 + typedef LONG (*EDITWORDBREAKPROCEX)(char*,LONG,BYTE,INT); -/* Defines for EM_SETTYPOGRAPHYOPTIONS */ -#define TO_ADVANCEDTYPOGRAPHY 1 -#define TO_SIMPLELINEBREAK 2 -/* Defines for GETTEXTLENGTHEX */ -#define GTL_DEFAULT 0 -#define GTL_USECRLF 1 -#define GTL_PRECISE 2 -#define GTL_CLOSE 4 -#define GTL_NUMCHARS 8 -#define GTL_NUMBYTES 16 + +/* options of the EM_FINDWORDBREAK message */ +#define WB_CLASSIFY 0x00000003 +#define WB_MOVEWORDLEFT 0x00000004 +#define WB_MOVEWORDPREV 0x00000004 +#define WB_MOVEWORDRIGHT 0x00000005 +#define WB_MOVEWORDNEXT 0x00000005 +#define WB_LEFTBREAK 0x00000006 +#define WB_PREVBREAK 0x00000006 +#define WB_RIGHTBREAK 0x00000007 +#define WB_NEXTBREAK 0x00000007 + +/* options of the EM_SETWORDWRAPMODE message */ +#define WBF_WORDWRAP 0x00000010 +#define WBF_WORDBREAK 0x00000020 +#define WBF_OVERFLOW 0x00000040 +#define WBF_LEVEL1 0x00000080 +#define WBF_LEVEL2 0x00000100 +#define WBF_CUSTOM 0x00000200 + +/* options of the EM_SETTEXTMODE message */ +#define TM_PLAINTEXT 0x00000001 +#define TM_RICHTEXT 0x00000002 +#define TM_SINGLELEVELUNDO 0x00000004 +#define TM_MULTILEVELUNDO 0x00000008 +#define TM_SINGLECODEPAGE 0x00000010 +#define TM_MULTICODEPAGE 0x00000020 + +/* GETTEXTEX structure flags */ +#define GT_DEFAULT 0x00000000 +#define GT_USECRLF 0x00000001 +#define GT_SELECTION 0x00000002 + +/* Options of the EM_SETTYPOGRAPHYOPTIONS message */ +#define TO_ADVANCEDTYPOGRAPHY 0x00000001 +#define TO_SIMPLELINEBREAK 0x00000002 + typedef struct _gettextlengthex { - DWORD flags; - UINT codepage; + DWORD flags; + UINT codepage; } GETTEXTLENGTHEX; + +/* Flags of the GETTEXTLENGTHEX structure */ +#define GTL_DEFAULT 0x00000000 +#define GTL_USECRLF 0x00000001 +#define GTL_PRECISE 0x00000002 +#define GTL_CLOSE 0x00000004 +#define GTL_NUMCHARS 0x00000008 +#define GTL_NUMBYTES 0x00000010 + +#define GCM_RIGHTMOUSEDROP 0x8000 + +/* Options of the EM_SETTEXTEX message */ +typedef struct _settextex { + DWORD flags; + UINT codepage; +} SETTEXTEX; + +/* Flags of the EM_SETTEXTEX message */ +#define ST_DEFAULT 0x00000000 +#define ST_KEEPUNDO 0x00000001 +#define ST_SELECTION 0x00000002 + #ifdef UNICODE typedef CHARFORMATW CHARFORMAT; typedef CHARFORMAT2W CHARFORMAT2; @@ -553,8 +692,11 @@ typedef FINDTEXTA FINDTEXT; typedef FINDTEXTEXA FINDTEXTEX; typedef TEXTRANGEA TEXTRANGE; #endif -#pragma pack(pop) + #ifdef __cplusplus } #endif -#endif + +#include + +#endif /* __WINE_RICHEDIT_H */ diff --git a/reactos/include/psdk/richole.h b/reactos/include/psdk/richole.h deleted file mode 100644 index 48dc13abc52..00000000000 --- a/reactos/include/psdk/richole.h +++ /dev/null @@ -1,107 +0,0 @@ -#ifndef _RICHOLE_H -#define _RICHOLE_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif -#pragma pack(push,4) -#define REO_GETOBJ_NO_INTERFACES 0 -#define REO_GETOBJ_POLEOBJ 1 -#define REO_GETOBJ_PSTG 2 -#define REO_GETOBJ_POLESITE 4 -#define REO_GETOBJ_ALL_INTERFACES 7 -#define REO_CP_SELECTION ((ULONG)-1) -#define REO_IOB_SELECTION ((ULONG)-1) -#define REO_IOB_USE_CP ((ULONG)-2) -#define REO_NULL 0 -#define REO_READWRITEMASK 0x3FL -#define REO_DONTNEEDPALETTE 32 -#define REO_BLANK 16 -#define REO_DYNAMICSIZE 8 -#define REO_INVERTEDSELECT 4 -#define REO_BELOWBASELINE 2 -#define REO_RESIZABLE 1 -#define REO_LINK 0x80000000 -#define REO_STATIC 0x40000000 -#define REO_SELECTED 0x08000000 -#define REO_OPEN 0x4000000 -#define REO_INPLACEACTIVE 0x2000000 -#define REO_HILITED 0x1000000 -#define REO_LINKAVAILABLE 0x800000 -#define REO_GETMETAFILE 0x400000 -#define RECO_PASTE 0 -#define RECO_DROP 1 -#define RECO_COPY 2 -#define RECO_CUT 3 -#define RECO_DRAG 4 - -extern const GUID IID_IRichEditOle; -extern const GUID IID_IRichEditOleCallback; -#ifndef INITGUID -typedef struct _reobject { - DWORD cbStruct; - LONG cp; - CLSID clsid; - LPOLEOBJECT poleobj; - LPSTORAGE pstg; - LPOLECLIENTSITE polesite; - SIZEL sizel; - DWORD dvaspect; - DWORD dwFlags; - DWORD dwUser; -} REOBJECT; - -#define INTERFACE IRichEditOle -DECLARE_INTERFACE_(IRichEditOle, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClientSite)(THIS_ LPOLECLIENTSITE*) PURE; - STDMETHOD_(LONG,GetObjectCount)(THIS) PURE; - STDMETHOD_(LONG,GetLinkCount)(THIS) PURE; - STDMETHOD(GetObject)(THIS_ LONG, REOBJECT*,DWORD) PURE; - STDMETHOD(InsertObject)(THIS_ REOBJECT*) PURE; - STDMETHOD(ConvertObject)(THIS_ LONG,REFCLSID,LPCSTR) PURE; - STDMETHOD(ActivateAs)(THIS_ REFCLSID,REFCLSID) PURE; - STDMETHOD(SetHostNames)(THIS_ LPCSTR,LPCSTR) PURE; - STDMETHOD(SetLinkAvailable)(THIS_ LONG,BOOL) PURE; - STDMETHOD(SetDvaspect)(THIS_ LONG,DWORD) PURE; - STDMETHOD(HandsOffStorage)(THIS_ LONG) PURE; - STDMETHOD(SaveCompleted)(THIS_ LONG,LPSTORAGE) PURE; - STDMETHOD(InPlaceDeactivate)(THIS) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(GetClipboardData)(THIS_ CHARRANGE*,DWORD,LPDATAOBJECT*) PURE; - STDMETHOD(ImportDataObject)(THIS_ LPDATAOBJECT,CLIPFORMAT,HGLOBAL) PURE; -}; -#undef INTERFACE -typedef IRichEditOle *LPRICHEDITOLE; - -#define INTERFACE IRichEditOleCallback -DECLARE_INTERFACE_(IRichEditOleCallback, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetNewStorage)(THIS_ LPSTORAGE*) PURE; - STDMETHOD(GetInPlaceContext)(THIS_ LPOLEINPLACEFRAME*,LPOLEINPLACEUIWINDOW*,LPOLEINPLACEFRAMEINFO) PURE; - STDMETHOD(ShowContainerUI)(THIS_ BOOL) PURE; - STDMETHOD(QueryInsertObject)(THIS_ LPCLSID,LPSTORAGE,LONG) PURE; - STDMETHOD(DeleteObject)(THIS_ LPOLEOBJECT) PURE; - STDMETHOD(QueryAcceptData) (THIS_ LPDATAOBJECT,CLIPFORMAT*,DWORD,BOOL,HGLOBAL) PURE; - STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL) PURE; - STDMETHOD(GetClipboardData) (THIS_ CHARRANGE*,DWORD,LPDATAOBJECT*) PURE; - STDMETHOD(GetDragDropEffect) (THIS_ BOOL,DWORD,PDWORD) PURE; - STDMETHOD(GetContextMenu) (THIS_ WORD,LPOLEOBJECT,CHARRANGE*,HMENU*) PURE; -}; -#undef INTERFACE -typedef IRichEditOleCallback FAR * LPRICHEDITOLECALLBACK; -#endif -#pragma pack(pop) -#ifdef __cplusplus -} -#endif -#endif diff --git a/reactos/include/psdk/richole.idl b/reactos/include/psdk/richole.idl new file mode 100644 index 00000000000..c74783f9a28 --- /dev/null +++ b/reactos/include/psdk/richole.idl @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2002 Andriy Palamarchuk + * Copyright (C) 2004 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +cpp_quote("#if 0") /* not included on Windows */ +import "oleidl.idl"; +cpp_quote("#endif") + +/* REOBJECT structure flags */ +cpp_quote("#define REO_GETOBJ_NO_INTERFACES 0x00000000") +cpp_quote("#define REO_GETOBJ_POLEOBJ 0x00000001") +cpp_quote("#define REO_GETOBJ_PSTG 0x00000002") +cpp_quote("#define REO_GETOBJ_POLESITE 0x00000004") +cpp_quote("#define REO_GETOBJ_ALL_INTERFACES 0x00000007") +cpp_quote("#define REO_CP_SELECTION 0xFFFFFFFF") +cpp_quote("#define REO_IOB_SELECTION 0xFFFFFFFF") +cpp_quote("#define REO_IOB_USE_CP 0xFFFFFFFE") +cpp_quote("#define REO_NULL 0x00000000") +cpp_quote("#define REO_READWRITEMASK 0x0000003F") +cpp_quote("#define REO_DONTNEEDPALETTE 0x00000020") +cpp_quote("#define REO_BLANK 0x00000010") +cpp_quote("#define REO_DYNAMICSIZE 0x00000008") +cpp_quote("#define REO_INVERTEDSELECT 0x00000004") +cpp_quote("#define REO_BELOWBASELINE 0x00000002") +cpp_quote("#define REO_RESIZABLE 0x00000001") +cpp_quote("#define REO_LINK 0x80000000") +cpp_quote("#define REO_STATIC 0x40000000") +cpp_quote("#define REO_SELECTED 0x08000000") +cpp_quote("#define REO_OPEN 0x04000000") +cpp_quote("#define REO_INPLACEACTIVE 0x02000000") +cpp_quote("#define REO_HILITED 0x01000000") +cpp_quote("#define REO_LINKAVAILABLE 0x00800000") +cpp_quote("#define REO_GETMETAFILE 0x00400000") + +/* clipboard operation flags */ +cpp_quote("#define RECO_PASTE 0x00000000") +cpp_quote("#define RECO_DROP 0x00000001") +cpp_quote("#define RECO_COPY 0x00000002") +cpp_quote("#define RECO_CUT 0x00000003") +cpp_quote("#define RECO_DRAG 0x00000004") + +typedef struct _reobject { + DWORD cbStruct; + LONG cp; + CLSID clsid; + LPOLEOBJECT poleobj; + LPSTORAGE pstg; + LPOLECLIENTSITE polesite; + SIZEL sizel; + DWORD dvaspect; + DWORD dwFlags; + DWORD dwUser; +} REOBJECT; + +cpp_quote("#ifndef __RICHEDIT_CHARRANGE_DEFINED") +cpp_quote("#define __RICHEDIT_CHARRANGE_DEFINED") + +typedef struct _charrange +{ + LONG cpMin; + LONG cpMax; +} CHARRANGE; + +cpp_quote("#endif /* __RICHEDIT_CHARRANGE_DEFINED */") + +/***************************************************************************** + * IRichEditOle + */ +[ + object, + uuid(00020d00-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IRichEditOle : IUnknown +{ + typedef [unique] IRichEditOle *LPRICHEDITOLE; + + HRESULT GetClientSite(LPOLECLIENTSITE *lplpolesite); + HRESULT GetObjectCount(); + HRESULT GetLinkCount(); + HRESULT GetObject(LONG iob, REOBJECT *lpreobject, DWORD dwFlags); + HRESULT InsertObject(REOBJECT *lpreobject); + HRESULT ConvertObject(LONG iob, REFCLSID rclsidNew, LPCSTR lpstrUserTypeNew); + HRESULT ActivateAs(REFCLSID rclsid, REFCLSID rclsidAs); + HRESULT SetHostNames(LPCSTR lpstrContainerApp, LPCSTR lpstrContainerObj); + HRESULT SetLinkAvailable(LONG iob, BOOL fAvailable); + HRESULT SetDvaspect(LONG iob, DWORD dvaspect); + HRESULT HandsOffStorage(LONG iob); + HRESULT SaveCompleted(LONG iob, LPSTORAGE lpstg); + HRESULT InPlaceDeactivate(); + HRESULT ContextSensitiveHelp(BOOL fEnterMode); + HRESULT GetClipboardData(CHARRANGE* lpchrg, DWORD reco, LPDATAOBJECT *lplpdataobj); + HRESULT ImportDataObject(LPDATAOBJECT lpdataobj, CLIPFORMAT cf, HGLOBAL hMetaPict); +} + +/***************************************************************************** + * IRichEditOleCallback + */ +[ + object, + uuid(00020d03-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IRichEditOleCallback : IUnknown +{ + typedef [unique] IRichEditOleCallback *LPRICHEDITOLECALLBACK; + + HRESULT GetNewStorage(LPSTORAGE *lplpstg); + HRESULT GetInPlaceContext(LPOLEINPLACEFRAME *lplpFrame, LPOLEINPLACEUIWINDOW *lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo); + HRESULT ShowContainerUI(BOOL fShow); + HRESULT QueryInsertObject(LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp); + HRESULT DeleteObject(LPOLEOBJECT lpoleobj); + HRESULT QueryAcceptData(LPDATAOBJECT lpdataobj, CLIPFORMAT *lpcfFormat, DWORD reco, BOOL fReally, HGLOBAL hMetaPict); + HRESULT ContextSensitiveHelp(BOOL fEnterMode); + HRESULT GetClipboardData(CHARRANGE *lpchrg, DWORD reco, LPDATAOBJECT *lplpdataobj); + HRESULT GetDragDropEffect(BOOL fDrag, DWORD grfKeyState, LPDWORD pdwEffect); + HRESULT GetContextMenu(WORD seltype, LPOLEOBJECT lpoleobj, CHARRANGE *lpchrg, HMENU *lphmenu); +} diff --git a/reactos/include/psdk/rpc.h b/reactos/include/psdk/rpc.h index dc801a6c259..d4687760e75 100644 --- a/reactos/include/psdk/rpc.h +++ b/reactos/include/psdk/rpc.h @@ -1,69 +1,74 @@ +/* + * RPC interface + * + * Copyright (C) the Wine project + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + #ifndef RPC_NO_WINDOWS_H -#include +# ifdef __WINESRC__ +# include +# else +# include +# endif #endif -#ifndef _RPC_H -#define _RPC_H -#if __GNUC__ >=3 -#pragma GCC system_header +#ifndef __WINE_RPC_H +#define __WINE_RPC_H + +#if defined(__powerpc__) || defined(_MAC) /* ? */ +# define __RPC_MAC__ + /* Also define __RPC_WIN32__ to ensure compatibility */ +# define __RPC_WIN32__ +#elif defined(_WIN64) +# define __RPC_WIN64__ +#else +# define __RPC_WIN32__ #endif -#ifdef __cplusplus -extern "C" { -#endif -#define __RPC_WIN32__ -#ifndef _WIN95 -#define __RPC_NT__ -#define RPC_UNICODE_SUPPORTED -#endif +#include -#ifndef __MIDL_USER_DEFINED -#define midl_user_allocate MIDL_user_allocate -#define midl_user_free MIDL_user_free -#define __MIDL_USER_DEFINED -#endif -#define RPC_UNICODE_SUPPORTED #define __RPC_FAR #define __RPC_API __stdcall #define __RPC_USER __stdcall #define __RPC_STUB __stdcall #define RPC_ENTRY __stdcall #define RPCRTAPI -typedef void *I_RPC_HANDLE; typedef long RPC_STATUS; -#include -#include -#include +typedef void* I_RPC_HANDLE; +#include +/* #include */ +#include +#include #include -/* SEH is not supported */ -#if 0 -#include -#define RpcTryExcept __try { -#define RpcExcept(x) } __except (x) { -#define RpcEndExcept } -#define RpcTryFinally __try { -#define RpcFinally } __finally { -#define RpcEndFinally } -#define RpcExceptionCode() GetExceptionCode() -#define RpcAbnormalTermination() AbnormalTermination() -#else +/* ignore exception handling for now */ #define RpcTryExcept if (1) { -#define RpcExcept(x) } else { +#define RpcExcept(expr) } else { #define RpcEndExcept } -#define RpcTryFinally if (1) { -#define RpcFinally } if (1) { -#define RpcEndFinally } +#define RpcTryFinally +#define RpcFinally +#define RpcEndFinally #define RpcExceptionCode() 0 -#define RpcAbnormalTermination() AbnormalTermination() -#endif /* 0 */ +/* #define RpcAbnormalTermination() abort() */ RPC_STATUS RPC_ENTRY RpcImpersonateClient(RPC_BINDING_HANDLE); RPC_STATUS RPC_ENTRY RpcRevertToSelf(void); long RPC_ENTRY I_RpcMapWin32Status(RPC_STATUS); -#ifdef __cplusplus -} -#endif -#endif + +#endif /*__WINE_RPC_H */ diff --git a/reactos/include/psdk/rpcdce.h b/reactos/include/psdk/rpcdce.h index 59599d784f7..5a74cf02b12 100644 --- a/reactos/include/psdk/rpcdce.h +++ b/reactos/include/psdk/rpcdce.h @@ -1,57 +1,121 @@ -#ifndef _RPCDCE_H -#define _RPCDCE_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif +/* + * Copyright (C) 2000 Francois Gouget + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_RPCDCE_H +#define __WINE_RPCDCE_H #ifdef __cplusplus extern "C" { #endif -#include +#ifndef IN #define IN +#endif +#ifndef OUT #define OUT +#endif #ifndef OPTIONAL #define OPTIONAL #endif -#define uuid_t UUID +#ifndef GUID_DEFINED +#include +#endif + +#ifndef UUID_DEFINED +#define UUID_DEFINED +typedef GUID UUID; +#endif + +typedef unsigned char* RPC_CSTR; +typedef unsigned short* RPC_WSTR; +typedef void* RPC_AUTH_IDENTITY_HANDLE; +typedef void* RPC_AUTHZ_HANDLE; +typedef void* RPC_IF_HANDLE; +typedef I_RPC_HANDLE RPC_BINDING_HANDLE; +typedef RPC_BINDING_HANDLE handle_t; #define rpc_binding_handle_t RPC_BINDING_HANDLE -#define rpc_binding_vector_t RPC_BINDING_VECTOR -#define uuid_vector_t UUID_VECTOR -#define RPC_C_BINDING_INFINITE_TIMEOUT 10 -#define RPC_C_BINDING_MIN_TIMEOUT 0 -#define RPC_C_BINDING_DEFAULT_TIMEOUT 5 -#define RPC_C_BINDING_MAX_TIMEOUT 9 -#define RPC_C_CANCEL_INFINITE_TIMEOUT (-1) -#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234 -#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10 -#define RPC_C_BIND_TO_ALL_NICS 1 -#define RPC_C_USE_INTERNET_PORT 1 -#define RPC_C_USE_INTRANET_PORT 2 #define RPC_MGR_EPV void -#define RPC_C_STATS_CALLS_IN 0 -#define RPC_C_STATS_CALLS_OUT 1 -#define RPC_C_STATS_PKTS_IN 2 -#define RPC_C_STATS_PKTS_OUT 3 -#define RPC_IF_AUTOLISTEN 0x0001 -#define RPC_IF_OLE 2 -#define RPC_C_MGMT_INQ_IF_IDS 0 -#define RPC_C_MGMT_INQ_PRINC_NAME 1 -#define RPC_C_MGMT_INQ_STATS 2 -#define RPC_C_MGMT_IS_SERVER_LISTEN 3 -#define RPC_C_MGMT_STOP_SERVER_LISTEN 4 + +typedef struct _RPC_BINDING_VECTOR +{ + unsigned long Count; + RPC_BINDING_HANDLE BindingH[1]; +} RPC_BINDING_VECTOR; +#define rpc_binding_vector_t RPC_BINDING_VECTOR + +typedef struct _UUID_VECTOR +{ + unsigned long Count; + UUID *Uuid[1]; +} UUID_VECTOR; +#define uuid_vector_t UUID_VECTOR + +typedef struct _RPC_IF_ID +{ + UUID Uuid; + unsigned short VersMajor; + unsigned short VersMinor; +} RPC_IF_ID; + +typedef struct +{ + unsigned long Count; + RPC_IF_ID *IfId[1]; +} RPC_IF_ID_VECTOR; + +typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE; + #define RPC_C_EP_ALL_ELTS 0 #define RPC_C_EP_MATCH_BY_IF 1 #define RPC_C_EP_MATCH_BY_OBJ 2 #define RPC_C_EP_MATCH_BY_BOTH 3 + #define RPC_C_VERS_ALL 1 #define RPC_C_VERS_COMPATIBLE 2 #define RPC_C_VERS_EXACT 3 #define RPC_C_VERS_MAJOR_ONLY 4 #define RPC_C_VERS_UPTO 5 -#define DCE_C_ERROR_STRING_LEN 256 -#define RPC_C_PARM_MAX_PACKET_LENGTH 1 -#define RPC_C_PARM_BUFFER_LENGTH 2 + +#define RPC_C_BINDING_INFINITE_TIMEOUT 10 +#define RPC_C_BINDING_MIN_TIMEOUT 0 +#define RPC_C_BINDING_DEFAULT_TIMEOUT 5 +#define RPC_C_BINDING_MAX_TIMEOUT 9 + +#define RPC_C_CANCEL_INFINITE_TIMEOUT -1 + +#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234 +#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10 + +/* RPC_POLICY EndpointFlags */ +#define RPC_C_BIND_TO_ALL_NICS 0x1 +#define RPC_C_USE_INTERNET_PORT 0x1 +#define RPC_C_USE_INTRANET_PORT 0x2 +#define RPC_C_DONT_FAIL 0x4 + +/* RPC_POLICY EndpointFlags specific to the Falcon/RPC transport */ +#define RPC_C_MQ_TEMPORARY 0x0000 +#define RPC_C_MQ_PERMANENT 0x0001 +#define RPC_C_MQ_CLEAR_ON_OPEN 0x0002 +#define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004 +#define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000 +#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008 +#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010 + #define RPC_C_AUTHN_LEVEL_DEFAULT 0 #define RPC_C_AUTHN_LEVEL_NONE 1 #define RPC_C_AUTHN_LEVEL_CONNECT 2 @@ -59,335 +123,391 @@ extern "C" { #define RPC_C_AUTHN_LEVEL_PKT 4 #define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5 #define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6 -#define RPC_C_IMP_LEVEL_ANONYMOUS 1 -#define RPC_C_IMP_LEVEL_IDENTIFY 2 -#define RPC_C_IMP_LEVEL_IMPERSONATE 3 -#define RPC_C_IMP_LEVEL_DELEGATE 4 -#define RPC_C_QOS_IDENTITY_STATIC 0 -#define RPC_C_QOS_IDENTITY_DYNAMIC 1 -#define RPC_C_QOS_CAPABILITIES_DEFAULT 0 -#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1 -#define RPC_C_PROTECT_LEVEL_DEFAULT(RPC_C_AUTHN_LEVEL_DEFAULT) -#define RPC_C_PROTECT_LEVEL_NONE(RPC_C_AUTHN_LEVEL_NONE) -#define RPC_C_PROTECT_LEVEL_CONNECT(RPC_C_AUTHN_LEVEL_CONNECT) -#define RPC_C_PROTECT_LEVEL_CALL(RPC_C_AUTHN_LEVEL_CALL) -#define RPC_C_PROTECT_LEVEL_PKT(RPC_C_AUTHN_LEVEL_PKT) -#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY(RPC_C_AUTHN_LEVEL_PKT_INTEGRITY) -#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY(RPC_C_AUTHN_LEVEL_PKT_PRIVACY) + #define RPC_C_AUTHN_NONE 0 #define RPC_C_AUTHN_DCE_PRIVATE 1 #define RPC_C_AUTHN_DCE_PUBLIC 2 #define RPC_C_AUTHN_DEC_PUBLIC 4 +#define RPC_C_AUTHN_GSS_NEGOTIATE 9 #define RPC_C_AUTHN_WINNT 10 -#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFF -#define RPC_C_SECURITY_QOS_VERSION L -#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1 -#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2 -#define RPC_C_AUTHZ_NONE 0 -#define RPC_C_AUTHZ_NAME 1 -#define RPC_C_AUTHZ_DCE 2 -#define RPC_C_AUTHZ_DEFAULT 0xFFFFFFFF +#define RPC_C_AUTHN_GSS_SCHANNEL 14 +#define RPC_C_AUTHN_GSS_KERBEROS 16 +#define RPC_C_AUTHN_DPA 17 +#define RPC_C_AUTHN_MSN 18 +#define RPC_C_AUTHN_DIGEST 21 +#define RPC_C_AUTHN_MQ 100 +#define RPC_C_AUTHN_DEFAULT 0xffffffff + +/* values for RPC_SECURITY_QOS*::ImpersonationType */ +#define RPC_C_IMP_LEVEL_DEFAULT 0 +#define RPC_C_IMP_LEVEL_ANONYMOUS 1 +#define RPC_C_IMP_LEVEL_IDENTIFY 2 +#define RPC_C_IMP_LEVEL_IMPERSONATE 3 +#define RPC_C_IMP_LEVEL_DELEGATE 4 + +/* values for RPC_SECURITY_QOS*::IdentityTracking */ +#define RPC_C_QOS_IDENTIFY_STATIC 0 +#define RPC_C_QOS_IDENTIFY_DYNAMIC 1 + +/* flags for RPC_SECURITY_QOS*::Capabilities */ +#define RPC_C_QOS_CAPABILITIES_DEFAULT 0x0 +#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 0x1 +#define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC 0x2 +#define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY 0x4 + +/* values for RPC_SECURITY_QOS*::Version */ +#define RPC_C_SECURITY_QOS_VERSION 1 +#define RPC_C_SECURITY_QOS_VERSION_1 1 +#define RPC_C_SECURITY_QOS_VERSION_2 2 + +/* flags for RPC_SECURITY_QOS_V2::AdditionalSecurityInfoType */ +#define RPC_C_AUTHN_INFO_TYPE_HTTP 1 + +/* flags for RPC_HTTP_TRANSPORT_CREDENTIALS::Flags */ +#define RPC_C_HTTP_FLAG_USE_SSL 0x1 +#define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 0x2 + +/* values for RPC_HTTP_TRANSPORT_CREDENTIALS::AuthenticationTarget */ +#define RPC_C_HTTP_AUTHN_TARGET_SERVER 1 +#define RPC_C_HTTP_AUTHN_TARGET_PROXY 2 + +#define RPC_C_HTTP_AUTHN_SCHEME_BASIC 0x01 +#define RPC_C_HTTP_AUTHN_SCHEME_NTLM 0x02 +#define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT 0x04 +#define RPC_C_HTTP_AUTHN_SCHEME_DIGEST 0x08 +#define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE 0x10 + +typedef RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN( RPC_IF_HANDLE InterfaceUuid, void *Context ); +typedef void (__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(); + +typedef struct _RPC_POLICY +{ + unsigned int Length; + unsigned long EndpointFlags; + unsigned long NICFlags; +} RPC_POLICY, *PRPC_POLICY; + +typedef struct _SEC_WINNT_AUTH_IDENTITY_W +{ + unsigned short* User; + unsigned long UserLength; + unsigned short* Domain; + unsigned long DomainLength; + unsigned short* Password; + unsigned long PasswordLength; + unsigned long Flags; +} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W; + +typedef struct _SEC_WINNT_AUTH_IDENTITY_A +{ + unsigned char* User; + unsigned long UserLength; + unsigned char* Domain; + unsigned long DomainLength; + unsigned char* Password; + unsigned long PasswordLength; + unsigned long Flags; +} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A; + +typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W +{ + SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials; + unsigned long Flags; + unsigned long AuthenticationTarget; + unsigned long NumberOfAuthnSchemes; + unsigned long *AuthnSchemes; + unsigned short *ServerCertificateSubject; +} RPC_HTTP_TRANSPORT_CREDENTIALS_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_W; + +typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A +{ + SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials; + unsigned long Flags; + unsigned long AuthenticationTarget; + unsigned long NumberOfAuthnSchemes; + unsigned long *AuthnSchemes; + unsigned char *ServerCertificateSubject; +} RPC_HTTP_TRANSPORT_CREDENTIALS_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_A; -typedef I_RPC_HANDLE RPC_BINDING_HANDLE; -typedef RPC_BINDING_HANDLE handle_t; -typedef struct _RPC_BINDING_VECTOR { - unsigned long Count; - RPC_BINDING_HANDLE BindingH[1]; -} RPC_BINDING_VECTOR; -typedef struct _UUID_VECTOR { - unsigned long Count; - UUID *Uuid[1]; -} UUID_VECTOR; -typedef void *RPC_IF_HANDLE; -typedef struct _RPC_IF_ID { - UUID Uuid; - unsigned short VersMajor; - unsigned short VersMinor; -} RPC_IF_ID; -typedef struct _RPC_POLICY { - unsigned int Length ; - unsigned long EndpointFlags ; - unsigned long NICFlags ; -} RPC_POLICY,*PRPC_POLICY ; -typedef void __RPC_USER RPC_OBJECT_INQ_FN(UUID*,UUID*,RPC_STATUS*); -typedef RPC_STATUS RPC_IF_CALLBACK_FN(RPC_IF_HANDLE,void*); -typedef struct { - unsigned int Count; - unsigned long Stats[1]; -} RPC_STATS_VECTOR; -typedef struct { - unsigned long Count; - RPC_IF_ID*IfId[1]; -} RPC_IF_ID_VECTOR; -typedef void *RPC_AUTH_IDENTITY_HANDLE; -typedef void *RPC_AUTHZ_HANDLE; typedef struct _RPC_SECURITY_QOS { - unsigned long Version; - unsigned long Capabilities; - unsigned long IdentityTracking; - unsigned long ImpersonationType; -} RPC_SECURITY_QOS,*PRPC_SECURITY_QOS; -typedef struct _SEC_WINNT_AUTH_IDENTITY_W { - unsigned short *User; - unsigned long UserLength; - unsigned short *Domain; - unsigned long DomainLength; - unsigned short *Password; - unsigned long PasswordLength; - unsigned long Flags; -} SEC_WINNT_AUTH_IDENTITY_W,*PSEC_WINNT_AUTH_IDENTITY_W; -typedef struct _SEC_WINNT_AUTH_IDENTITY_A { - unsigned char *User; - unsigned long UserLength; - unsigned char *Domain; - unsigned long DomainLength; - unsigned char *Password; - unsigned long PasswordLength; - unsigned long Flags; -} SEC_WINNT_AUTH_IDENTITY_A,*PSEC_WINNT_AUTH_IDENTITY_A; -typedef struct { - unsigned char *UserName; - unsigned char *ComputerName; - unsigned short Privilege; - unsigned long AuthFlags; -} RPC_CLIENT_INFORMATION1,* PRPC_CLIENT_INFORMATION1; -typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE; -typedef int(__RPC_API *RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE,unsigned long,RPC_STATUS*); + unsigned long Version; + unsigned long Capabilities; + unsigned long IdentityTracking; + unsigned long ImpersonationType; +} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS; -#ifdef RPC_UNICODE_SUPPORTED -typedef struct _RPC_PROTSEQ_VECTORA { - unsigned int Count; - unsigned char*Protseq[1]; -} RPC_PROTSEQ_VECTORA; -typedef struct _RPC_PROTSEQ_VECTORW { - unsigned int Count; - unsigned short*Protseq[1]; -} RPC_PROTSEQ_VECTORW; -RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingA(unsigned char *,RPC_BINDING_HANDLE *); -RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingW(unsigned short *,RPC_BINDING_HANDLE *); -RPC_STATUS RPC_ENTRY RpcBindingToStringBindingA(RPC_BINDING_HANDLE,unsigned char**); -RPC_STATUS RPC_ENTRY RpcBindingToStringBindingW(RPC_BINDING_HANDLE,unsigned short**); -RPC_STATUS RPC_ENTRY RpcStringBindingComposeA(unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char **); -RPC_STATUS RPC_ENTRY RpcStringBindingComposeW(unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short **); -RPC_STATUS RPC_ENTRY RpcStringBindingParseA(unsigned char *,unsigned char **,unsigned char **,unsigned char **,unsigned char **,unsigned char **); -RPC_STATUS RPC_ENTRY RpcStringBindingParseW(unsigned short *,unsigned short **,unsigned short **,unsigned short **,unsigned short **,unsigned short **); -RPC_STATUS RPC_ENTRY RpcStringFreeA(unsigned char**); -RPC_STATUS RPC_ENTRY RpcStringFreeW(unsigned short**); -RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidA(unsigned char*); -RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidW(unsigned short*); -RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**); -RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**); -RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**); -RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqA(unsigned char*,unsigned int,void*); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqW(unsigned short*,unsigned int,void*); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqExA(unsigned char*,unsigned int MaxCalls,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqExW(unsigned short*,unsigned int,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpA(unsigned char*,unsigned int,unsigned char*,void*); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExA(unsigned char*,unsigned int,unsigned char*,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpW(unsigned short*,unsigned int,unsigned short*,void*); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExW(unsigned short*,unsigned int,unsigned short*,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfExA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfExW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**); -RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**); -RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameA(unsigned long,unsigned char**); -RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameW(unsigned long,unsigned short**); -RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**); -RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**); -RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientA(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned char**,unsigned long*,unsigned long*,unsigned long*); -RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientW(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned short**,unsigned long*,unsigned long*,unsigned long*); -RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*); -RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE,unsigned short**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*); -RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long); -RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*); -RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long); -RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*); -RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*,unsigned long,RPC_SECURITY_QOS*); -RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE,unsigned short ** , unsigned long *, unsigned long *, RPC_AUTH_IDENTITY_HANDLE *, unsigned long *, unsigned long , RPC_SECURITY_QOS *); -typedef void(__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(void*,unsigned short*,unsigned long,void**,RPC_STATUS*); -RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoA(unsigned char*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*); -RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoW(unsigned short*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*); -RPC_STATUS RPC_ENTRY UuidToStringA(UUID*,unsigned char**); -RPC_STATUS RPC_ENTRY UuidFromStringA(unsigned char*,UUID*); -RPC_STATUS RPC_ENTRY UuidToStringW(UUID*,unsigned short**); -RPC_STATUS RPC_ENTRY UuidFromStringW(unsigned short*,UUID*); -RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*); -RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*, UUID_VECTOR*,unsigned short*); -RPC_STATUS RPC_ENTRY RpcEpRegisterA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*); -RPC_STATUS RPC_ENTRY RpcEpRegisterW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned short*); -RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS,unsigned char*); -RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS,unsigned short*); -RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); -RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned short**); -#ifdef UNICODE -#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW -#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W -#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W -#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W -#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW -#define RpcBindingFromStringBinding RpcBindingFromStringBindingW -#define RpcBindingToStringBinding RpcBindingToStringBindingW -#define RpcStringBindingCompose RpcStringBindingComposeW -#define RpcStringBindingParse RpcStringBindingParseW -#define RpcStringFree RpcStringFreeW -#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW -#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW -#define RpcProtseqVectorFree RpcProtseqVectorFreeW -#define RpcServerUseProtseq RpcServerUseProtseqW -#define RpcServerUseProtseqEx RpcServerUseProtseqExW -#define RpcServerUseProtseqEp RpcServerUseProtseqEpW -#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW -#define RpcServerUseProtseqIf RpcServerUseProtseqIfW -#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW -#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW -#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW -#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW -#define RpcBindingInqAuthClient RpcBindingInqAuthClientW -#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW -#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW -#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW -#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW -#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW -#define UuidFromString UuidFromStringW -#define UuidToString UuidToStringW -#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW -#define RpcEpRegister RpcEpRegisterW -#define DceErrorInqText DceErrorInqTextW -#else /* UNICODE */ -#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA -#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A -#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A -#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A -#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA -#define RpcBindingFromStringBinding RpcBindingFromStringBindingA -#define RpcBindingToStringBinding RpcBindingToStringBindingA -#define RpcStringBindingCompose RpcStringBindingComposeA -#define RpcStringBindingParse RpcStringBindingParseA -#define RpcStringFree RpcStringFreeA -#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA -#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA -#define RpcProtseqVectorFree RpcProtseqVectorFreeA -#define RpcServerUseProtseq RpcServerUseProtseqA -#define RpcServerUseProtseqEx RpcServerUseProtseqExA -#define RpcServerUseProtseqEp RpcServerUseProtseqEpA -#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA -#define RpcServerUseProtseqIf RpcServerUseProtseqIfA -#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA -#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA -#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA -#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA -#define RpcBindingInqAuthClient RpcBindingInqAuthClientA -#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA -#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA -#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA -#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA -#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA -#define UuidFromString UuidFromStringA -#define UuidToString UuidToStringA -#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA -#define RpcEpRegister RpcEpRegisterA -#define DceErrorInqText DceErrorInqTextA -#endif /* UNICODE */ -#else /* RPC_UNICODE_SUPPORTED */ -typedef struct _RPC_PROTSEQ_VECTOR { - unsigned int Count; - unsigned char* Protseq[1]; -} RPC_PROTSEQ_VECTOR; -RPC_STATUS RPC_ENTRY RpcBindingFromStringBinding(unsigned char *,RPC_BINDING_HANDLE *); -RPC_STATUS RPC_ENTRY RpcBindingToStringBinding(RPC_BINDING_HANDLE,unsigned char **); -RPC_STATUS RPC_ENTRY RpcStringBindingCompose(unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char **); -RPC_STATUS RPC_ENTRY RpcStringBindingParse(unsigned char *,unsigned char **,unsigned char **,unsigned char **,unsigned char **,unsigned char **); -RPC_STATUS RPC_ENTRY RpcStringFree(unsigned char**); -RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValid(unsigned char*); -RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqs(RPC_PROTSEQ_VECTOR **); -RPC_STATUS RPC_ENTRY RpcServerInqBindings(RPC_BINDING_VECTOR **); -RPC_STATUS RPC_ENTRY RpcServerUseProtseq(unsigned char*,unsigned int,void*); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqEx(unsigned char*,unsigned int,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqEp(unsigned char*,unsigned int,unsigned char*,void*); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpEx(unsigned char*,unsigned int,unsigned char*,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqIf(unsigned char*,unsigned int,RPC_IF_HANDLE,void*); -RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfEx(unsigned char*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincName(RPC_BINDING_HANDLE,unsigned long,unsigned char**); -RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincName(unsigned long,unsigned char**); -RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryName(RPC_BINDING_HANDLE,unsigned long,unsigned char**); -RPC_STATUS RPC_ENTRY RpcBindingInqAuthClient(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE*,unsigned char**,unsigned long*,unsigned long*,unsigned long*); -RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfo(RPC_BINDING_HANDLE,unsigned char **,unsigned long *,unsigned long *,RPC_AUTH_IDENTITY_HANDLE *,unsigned long *); -RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfo(RPC_BINDING_HANDLE,unsigned char *,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long); -typedef void(__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(void*,unsigned char*,unsigned long,void**,RPC_STATUS*); -RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfo(unsigned char*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*); -RPC_STATUS RPC_ENTRY UuidToString(UUID*,unsigned char**); -RPC_STATUS RPC_ENTRY UuidFromString(unsigned char*,UUID*); -RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplace(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*); -RPC_STATUS RPC_ENTRY RpcEpRegister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*); -RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*); -RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID *,RPC_BINDING_HANDLE *,unsigned char **); -#endif /* RPC_UNICODE_SUPPORTED */ +typedef struct _RPC_SECURITY_QOS_V2_W +{ + unsigned long Version; + unsigned long Capabilities; + unsigned long IdentityTracking; + unsigned long ImpersonationType; + unsigned long AdditionalSecurityInfoType; + union + { + RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials; + } u; +} RPC_SECURITY_QOS_V2_W, *PRPC_SECURITY_QOS_V2_W; -RPC_STATUS RPC_ENTRY RpcBindingCopy(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*); -RPC_STATUS RPC_ENTRY RpcBindingFree(RPC_BINDING_HANDLE*); -RPC_STATUS RPC_ENTRY RpcBindingInqObject(RPC_BINDING_HANDLE,UUID *); -RPC_STATUS RPC_ENTRY RpcBindingReset(RPC_BINDING_HANDLE); -RPC_STATUS RPC_ENTRY RpcBindingSetObject(RPC_BINDING_HANDLE,UUID *); -RPC_STATUS RPC_ENTRY RpcMgmtInqDefaultProtectLevel(unsigned long,unsigned long *); -RPC_STATUS RPC_ENTRY RpcBindingVectorFree(RPC_BINDING_VECTOR **); -RPC_STATUS RPC_ENTRY RpcIfInqId(RPC_IF_HANDLE,RPC_IF_ID *); -RPC_STATUS RPC_ENTRY RpcMgmtInqComTimeout(RPC_BINDING_HANDLE,unsigned int*); -RPC_STATUS RPC_ENTRY RpcMgmtSetComTimeout(RPC_BINDING_HANDLE,unsigned int); -RPC_STATUS RPC_ENTRY RpcMgmtSetCancelTimeout(long Timeout); -RPC_STATUS RPC_ENTRY RpcObjectInqType(UUID *,UUID *); -RPC_STATUS RPC_ENTRY RpcObjectSetInqFn(RPC_OBJECT_INQ_FN *); -RPC_STATUS RPC_ENTRY RpcObjectSetType(UUID *,UUID *); -RPC_STATUS RPC_ENTRY RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR **); -RPC_STATUS RPC_ENTRY RpcServerInqIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV**); -RPC_STATUS RPC_ENTRY RpcServerListen(unsigned int,unsigned int,unsigned int); -RPC_STATUS RPC_ENTRY RpcServerRegisterIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*); -RPC_STATUS RPC_ENTRY RpcServerRegisterIfEx(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*,unsigned int,unsigned int,RPC_IF_CALLBACK_FN*); -RPC_STATUS RPC_ENTRY RpcServerRegisterIf2(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*,unsigned int,unsigned int,unsigned int,RPC_IF_CALLBACK_FN*); -RPC_STATUS RPC_ENTRY RpcServerUnregisterIf(RPC_IF_HANDLE,UUID*,unsigned int); -RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqs(unsigned int,void*); -RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsEx(unsigned int,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsIf(unsigned int,RPC_IF_HANDLE,void*); -RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsIfEx(unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY); -RPC_STATUS RPC_ENTRY RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**); -RPC_STATUS RPC_ENTRY RpcMgmtInqStats(RPC_BINDING_HANDLE,RPC_STATS_VECTOR**); -RPC_STATUS RPC_ENTRY RpcMgmtIsServerListening(RPC_BINDING_HANDLE); -RPC_STATUS RPC_ENTRY RpcMgmtStopServerListening(RPC_BINDING_HANDLE); -RPC_STATUS RPC_ENTRY RpcMgmtWaitServerListen(void); -RPC_STATUS RPC_ENTRY RpcMgmtSetServerStackSize(unsigned long); -void RPC_ENTRY RpcSsDontSerializeContext(void); -RPC_STATUS RPC_ENTRY RpcMgmtEnableIdleCleanup(void); -RPC_STATUS RPC_ENTRY RpcMgmtInqIfIds(RPC_BINDING_HANDLE,RPC_IF_ID_VECTOR**); -RPC_STATUS RPC_ENTRY RpcIfIdVectorFree(RPC_IF_ID_VECTOR**); -RPC_STATUS RPC_ENTRY RpcEpResolveBinding(RPC_BINDING_HANDLE,RPC_IF_HANDLE); -RPC_STATUS RPC_ENTRY RpcBindingServerFromClient(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*); -DECLSPEC_NORETURN void RPC_ENTRY RpcRaiseException(RPC_STATUS); -RPC_STATUS RPC_ENTRY RpcTestCancel(void); -RPC_STATUS RPC_ENTRY RpcCancelThread(void*); -RPC_STATUS RPC_ENTRY UuidCreate(UUID*); -signed int RPC_ENTRY UuidCompare(UUID*,UUID*, RPC_STATUS*); -RPC_STATUS RPC_ENTRY UuidCreateNil(UUID*); -int RPC_ENTRY UuidEqual(UUID*,UUID*, RPC_STATUS*); -unsigned short RPC_ENTRY UuidHash(UUID*,RPC_STATUS*); -int RPC_ENTRY UuidIsNil(UUID*,RPC_STATUS*); -RPC_STATUS RPC_ENTRY RpcEpUnregister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*); -RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE,unsigned long,RPC_IF_ID*,unsigned long,UUID*,RPC_EP_INQ_HANDLE*); -RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); -RPC_STATUS RPC_ENTRY RpcMgmtEpUnregister(RPC_BINDING_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE,UUID*); -RPC_STATUS RPC_ENTRY RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); -RPC_STATUS RPC_ENTRY RpcMgmtInqParameter(unsigned int,unsigned long*); -RPC_STATUS RPC_ENTRY RpcMgmtSetParameter(unsigned int,unsigned long); -RPC_STATUS RPC_ENTRY RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long*); -RPC_STATUS RPC_ENTRY RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long); +typedef struct _RPC_SECURITY_QOS_V2_A +{ + unsigned long Version; + unsigned long Capabilities; + unsigned long IdentityTracking; + unsigned long ImpersonationType; + unsigned long AdditionalSecurityInfoType; + union + { + RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials; + } u; +} RPC_SECURITY_QOS_V2_A, *PRPC_SECURITY_QOS_V2_A; -#if _WIN32_WINNT >= 0x0500 -RPC_STATUS RPC_ENTRY UuidCreateSequential(UUID*); -#endif +#define _SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(_SEC_WINNT_AUTH_IDENTITY_) +#define SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(SEC_WINNT_AUTH_IDENTITY_) +#define PSEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(PSEC_WINNT_AUTH_IDENTITY_) + +#define RPC_HTTP_TRANSPORT_CREDENTIALS_ WINELIB_NAME_AW(RPC_HTTP_TRANSPORT_CREDENTIALS_) +#define PRPC_HTTP_TRANSPORT_CREDENTIALS_ WINELIB_NAME_AW(PRPC_HTTP_TRANSPORT_CREDENTIALS_) +#define _RPC_HTTP_TRANSPORT_CREDENTIALS_ WINELIB_NAME_AW(_RPC_HTTP_TRANSPORT_CREDENTIALS_) + +#define RPC_SECURITY_QOS_V2 WINELIB_NAME_AW(RPC_SECURITY_QOS_V2_) +#define PRPC_SECURITY_QOS_V2 WINELIB_NAME_AW(PRPC_SECURITY_QOS_V2_) +#define _RPC_SECURITY_QOS_V2 WINELIB_NAME_AW(_RPC_SECURITY_QOS_V2_) + +/* SEC_WINNT_AUTH Flags */ +#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1 +#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2 + +/* RpcServerRegisterIfEx Flags */ +#define RPC_IF_AUTOLISTEN 0x1 +#define RPC_IF_OLE 0x2 +#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x4 +#define RPC_IF_ALLOW_SECURE_ONLY 0x8 + +RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS e, RPC_CSTR buffer); +RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS e, RPC_WSTR buffer); +#define DceErrorInqText WINELIB_NAME_AW(DceErrorInqText) + +RPCRTAPI void RPC_ENTRY + RpcRaiseException( RPC_STATUS exception ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingCopy( RPC_BINDING_HANDLE SourceBinding, RPC_BINDING_HANDLE* DestinationBinding ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingFree( RPC_BINDING_HANDLE* Binding ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingInqObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingReset( RPC_BINDING_HANDLE Binding ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingSetObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcObjectSetType( UUID* ObjUuid, UUID* TypeUuid ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingFromStringBindingA( RPC_CSTR StringBinding, RPC_BINDING_HANDLE* Binding ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingFromStringBindingW( RPC_WSTR StringBinding, RPC_BINDING_HANDLE* Binding ); +#define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingToStringBindingA( RPC_BINDING_HANDLE Binding, RPC_CSTR *StringBinding ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingToStringBindingW( RPC_BINDING_HANDLE Binding, RPC_WSTR *StringBinding ); +#define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingVectorFree( RPC_BINDING_VECTOR** BindingVector ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcStringBindingComposeA( RPC_CSTR ObjUuid, RPC_CSTR Protseq, RPC_CSTR NetworkAddr, + RPC_CSTR Endpoint, RPC_CSTR Options, RPC_CSTR *StringBinding ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcStringBindingComposeW( RPC_WSTR ObjUuid, RPC_WSTR Protseq, RPC_WSTR NetworkAddr, + RPC_WSTR Endpoint, RPC_WSTR Options, RPC_WSTR *StringBinding ); +#define RpcStringBindingCompose WINELIB_NAME_AW(RpcStringBindingCompose) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcStringBindingParseA( RPC_CSTR StringBinding, RPC_CSTR *ObjUuid, RPC_CSTR *Protseq, + RPC_CSTR *NetworkAddr, RPC_CSTR *Endpoint, RPC_CSTR *NetworkOptions ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcStringBindingParseW( RPC_WSTR StringBinding, RPC_WSTR *ObjUuid, RPC_WSTR *Protseq, + RPC_WSTR *NetworkAddr, RPC_WSTR *Endpoint, RPC_WSTR *NetworkOptions ); +#define RpcStringBindingParse WINELIB_NAME_AW(RpcStringBindingParse) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcEpResolveBinding( RPC_BINDING_HANDLE Binding, RPC_IF_HANDLE IfSpec ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector, + UUID_VECTOR* UuidVector, RPC_CSTR Annotation ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcEpRegisterW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector, + UUID_VECTOR* UuidVector, RPC_WSTR Annotation ); +#define RpcEpRegister WINELIB_NAME_AW(RpcEpRegister) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcEpRegisterNoReplaceA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector, + UUID_VECTOR* UuidVector, RPC_CSTR Annotation ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcEpRegisterNoReplaceW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector, + UUID_VECTOR* UuidVector, RPC_WSTR Annotation ); +#define RpcEpRegisterNoReplace WINELIB_NAME_AW(RpcEpRegisterNoReplace) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcEpUnregister( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector, + UUID_VECTOR* UuidVector ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerInqBindings( RPC_BINDING_VECTOR** BindingVector ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerListen( unsigned int MinimumCallThreads, unsigned int MaxCalls, unsigned int DontWait ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcMgmtWaitServerListen( void ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcMgmtStopServerListening( RPC_BINDING_HANDLE Binding ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcMgmtInqIfIds( RPC_BINDING_HANDLE Binding, RPC_IF_ID_VECTOR** IfIdVector ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcMgmtEpEltInqBegin( RPC_BINDING_HANDLE EpBinding, ULONG InquiryType, RPC_IF_ID *IfId, + ULONG VersOption, UUID *ObjectUuid, RPC_EP_INQ_HANDLE *InquiryContext); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerRegisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerRegisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv, + unsigned int Flags, unsigned int MaxCalls, RPC_IF_CALLBACK_FN* IfCallbackFn ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv, + unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN* IfCallbackFn ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerUnregisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, unsigned int WaitForCallsToComplete ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerUnregisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, int RundownContextHandles ); + + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerUseProtseqA(RPC_CSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerUseProtseqW(RPC_WSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor); +#define RpcServerUseProtseq WINELIB_NAME_AW(RpcServerUseProtseq) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerUseProtseqEpA( RPC_CSTR Protseq, unsigned int MaxCalls, RPC_CSTR Endpoint, void *SecurityDescriptor ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerUseProtseqEpW( RPC_WSTR Protseq, unsigned int MaxCalls, RPC_WSTR Endpoint, void *SecurityDescriptor ); +#define RpcServerUseProtseqEp WINELIB_NAME_AW(RpcServerUseProtseqEp) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerUseProtseqEpExA( RPC_CSTR Protseq, unsigned int MaxCalls, RPC_CSTR Endpoint, void *SecurityDescriptor, + PRPC_POLICY Policy ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerUseProtseqEpExW( RPC_WSTR Protseq, unsigned int MaxCalls, RPC_WSTR Endpoint, void *SecurityDescriptor, + PRPC_POLICY Policy ); +#define RpcServerUseProtseqEpEx WINELIB_NAME_AW(RpcServerUseProtseqEpEx) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerRegisterAuthInfoA( RPC_CSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, + void *Arg ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerRegisterAuthInfoW( RPC_WSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, + void *Arg ); +#define RpcServerRegisterAuthInfo WINELIB_NAME_AW(RpcServerRegisterAuthInfo) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingSetAuthInfoExA( RPC_BINDING_HANDLE Binding, RPC_CSTR ServerPrincName, ULONG AuthnLevel, + ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr, + RPC_SECURITY_QOS *SecurityQos ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingSetAuthInfoExW( RPC_BINDING_HANDLE Binding, RPC_WSTR ServerPrincName, ULONG AuthnLevel, + ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr, + RPC_SECURITY_QOS *SecurityQos ); +#define RpcBindingSetAuthInfoEx WINELIB_NAME_AW(RpcBindingSetAuthInfoEx) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingSetAuthInfoA( RPC_BINDING_HANDLE Binding, RPC_CSTR ServerPrincName, ULONG AuthnLevel, + ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingSetAuthInfoW( RPC_BINDING_HANDLE Binding, RPC_WSTR ServerPrincName, ULONG AuthnLevel, + ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr ); +#define RpcBindingSetAuthInfo WINELIB_NAME_AW(RpcBindingSetAuthInfo) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingInqAuthInfoExA( RPC_BINDING_HANDLE Binding, RPC_CSTR * ServerPrincName, ULONG *AuthnLevel, + ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc, + ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingInqAuthInfoExW( RPC_BINDING_HANDLE Binding, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, + ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc, + ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS ); +#define RpcBindingInqAuthInfoEx WINELIB_NAME_AW(RpcBindingInqAuthInfoEx) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingInqAuthInfoA( RPC_BINDING_HANDLE Binding, RPC_CSTR * ServerPrincName, ULONG *AuthnLevel, + ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcBindingInqAuthInfoW( RPC_BINDING_HANDLE Binding, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, + ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc ); +#define RpcBindingInqAuthInfo WINELIB_NAME_AW(RpcBindingInqAuthInfo) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcNetworkIsProtseqValidA( RPC_CSTR protseq ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcNetworkIsProtseqValidW( RPC_WSTR protseq ); +#define RpcNetworkIsProtseqValid WINELIB_NAME_AW(RpcNetworkIsProtseqValid) + +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcStringFreeA(RPC_CSTR* String); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcStringFreeW(RPC_WSTR* String); +#define RpcStringFree WINELIB_NAME_AW(RpcStringFree) + +RPCRTAPI RPC_STATUS RPC_ENTRY + UuidToStringA( UUID* Uuid, RPC_CSTR* StringUuid ); +RPCRTAPI RPC_STATUS RPC_ENTRY + UuidToStringW( UUID* Uuid, RPC_WSTR* StringUuid ); +#define UuidToString WINELIB_NAME_AW(UuidToString) + +RPCRTAPI RPC_STATUS RPC_ENTRY + UuidFromStringA( RPC_CSTR StringUuid, UUID* Uuid ); +RPCRTAPI RPC_STATUS RPC_ENTRY + UuidFromStringW( RPC_WSTR StringUuid, UUID* Uuid ); +#define UuidFromString WINELIB_NAME_AW(UuidFromString) + +RPCRTAPI RPC_STATUS RPC_ENTRY + UuidCreate( UUID* Uuid ); +RPCRTAPI RPC_STATUS RPC_ENTRY + UuidCreateSequential( UUID* Uuid ); +RPCRTAPI RPC_STATUS RPC_ENTRY + UuidCreateNil( UUID* Uuid ); +RPCRTAPI signed int RPC_ENTRY + UuidCompare( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ ); +RPCRTAPI int RPC_ENTRY + UuidEqual( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ ); +RPCRTAPI unsigned short RPC_ENTRY + UuidHash(UUID* Uuid, RPC_STATUS* Status_ ); +RPCRTAPI int RPC_ENTRY + UuidIsNil( UUID* Uuid, RPC_STATUS* Status_ ); -#include #ifdef __cplusplus } #endif -#endif + +#include + +#endif /*__WINE_RPCDCE_H */ diff --git a/reactos/include/psdk/rpcdcep.h b/reactos/include/psdk/rpcdcep.h index d6da3e94efa..6c3f41f4b90 100644 --- a/reactos/include/psdk/rpcdcep.h +++ b/reactos/include/psdk/rpcdcep.h @@ -1,131 +1,185 @@ -#ifndef _RPCDCEP_H -#define _RPCDCEP_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif +/* + * Copyright (C) 2000 Francois Gouget + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ -#ifdef __cplusplus -extern "C" { -#endif -#define RPC_NCA_FLAGS_DEFAULT 0 -#define RPC_NCA_FLAGS_IDEMPOTENT 1 -#define RPC_NCA_FLAGS_BROADCAST 2 -#define RPC_NCA_FLAGS_MAYBE 4 -#define RPCFLG_ASYNCHRONOUS 0x40000000 -#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000 -#define RPC_FLAGS_VALID_BIT 0x8000 -#define TRANSPORT_TYPE_CN 1 -#define TRANSPORT_TYPE_DG 2 -#define TRANSPORT_TYPE_LPC 4 -#define TRANSPORT_TYPE_WMSG 8 +#ifndef __WINE_RPCDCEP_H +#define __WINE_RPCDCEP_H typedef struct _RPC_VERSION { - unsigned short MajorVersion; - unsigned short MinorVersion; + unsigned short MajorVersion; + unsigned short MinorVersion; } RPC_VERSION; -typedef struct _RPC_SYNTAX_IDENTIFIER { - GUID SyntaxGUID; - RPC_VERSION SyntaxVersion; -} RPC_SYNTAX_IDENTIFIER, *PRPC_SYNTAX_IDENTIFIER; -typedef struct _RPC_MESSAGE { - HANDLE Handle; - unsigned long DataRepresentation; - void *Buffer; - unsigned int BufferLength; - unsigned int ProcNum; - PRPC_SYNTAX_IDENTIFIER TransferSyntax; - void *RpcInterfaceInformation; - void *ReservedForRuntime; - void *ManagerEpv; - void *ImportContext; - unsigned long RpcFlags; -} RPC_MESSAGE,*PRPC_MESSAGE; -typedef long __stdcall RPC_FORWARD_FUNCTION(GUID*,RPC_VERSION*,GUID*,unsigned char*,void**); -typedef void(__stdcall *RPC_DISPATCH_FUNCTION) ( PRPC_MESSAGE Message); -typedef struct { - unsigned int DispatchTableCount; - RPC_DISPATCH_FUNCTION *DispatchTable; - int Reserved; -} RPC_DISPATCH_TABLE,*PRPC_DISPATCH_TABLE; -typedef struct _RPC_PROTSEQ_ENDPOINT { - unsigned char *RpcProtocolSequence; - unsigned char *Endpoint; -} RPC_PROTSEQ_ENDPOINT,*PRPC_PROTSEQ_ENDPOINT; -typedef struct _RPC_SERVER_INTERFACE { - unsigned int Length; - RPC_SYNTAX_IDENTIFIER InterfaceId; - RPC_SYNTAX_IDENTIFIER TransferSyntax; - PRPC_DISPATCH_TABLE DispatchTable; - unsigned int RpcProtseqEndpointCount; - PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; - void *DefaultManagerEpv; - void const *InterpreterInfo; - unsigned int Flags; -} RPC_SERVER_INTERFACE,*PRPC_SERVER_INTERFACE; -typedef struct _RPC_CLIENT_INTERFACE { - unsigned int Length; - RPC_SYNTAX_IDENTIFIER InterfaceId; - RPC_SYNTAX_IDENTIFIER TransferSyntax; - PRPC_DISPATCH_TABLE DispatchTable; - unsigned int RpcProtseqEndpointCount; - PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; - unsigned long Reserved; - void const *InterpreterInfo; - unsigned int Flags; -} RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE; -typedef void *I_RPC_MUTEX; -typedef struct _RPC_TRANSFER_SYNTAX { - GUID Uuid; - unsigned short VersMajor; - unsigned short VersMinor; -} RPC_TRANSFER_SYNTAX; -typedef RPC_STATUS (*RPC_BLOCKING_FN)(void*,void*,void*); -long __stdcall I_RpcGetBuffer(RPC_MESSAGE*); -long __stdcall I_RpcSendReceive(RPC_MESSAGE*); -long __stdcall I_RpcSend(RPC_MESSAGE*); -long __stdcall I_RpcFreeBuffer(RPC_MESSAGE*); -void __stdcall I_RpcRequestMutex(I_RPC_MUTEX*); -void __stdcall I_RpcClearMutex(I_RPC_MUTEX); -void __stdcall I_RpcDeleteMutex(I_RPC_MUTEX); -DECLARE_STDCALL_P(void *) I_RpcAllocate(unsigned int); -void __stdcall I_RpcFree(void*); -void __stdcall I_RpcPauseExecution(unsigned long); -typedef void(__stdcall *PRPC_RUNDOWN) (void*); -long __stdcall I_RpcMonitorAssociation(HANDLE,PRPC_RUNDOWN,void*); -long __stdcall I_RpcStopMonitorAssociation(HANDLE); -HANDLE __stdcall I_RpcGetCurrentCallHandle(void); -long __stdcall I_RpcGetAssociationContext(void**); -long __stdcall I_RpcSetAssociationContext(void*); -#ifdef __RPC_NT__ -long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned short*); -long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE, unsigned short**); +typedef struct _RPC_SYNTAX_IDENTIFIER { + GUID SyntaxGUID; + RPC_VERSION SyntaxVersion; +} RPC_SYNTAX_IDENTIFIER, *PRPC_SYNTAX_IDENTIFIER; + +typedef struct _RPC_MESSAGE +{ + RPC_BINDING_HANDLE Handle; + unsigned long DataRepresentation; + void* Buffer; + unsigned int BufferLength; + unsigned int ProcNum; + PRPC_SYNTAX_IDENTIFIER TransferSyntax; + void* RpcInterfaceInformation; + void* ReservedForRuntime; + RPC_MGR_EPV* ManagerEpv; + void* ImportContext; + unsigned long RpcFlags; +} RPC_MESSAGE, *PRPC_MESSAGE; + +#define RPC_NCA_FLAGS_DEFAULT 0x00000000 +#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 +#define RPC_NCA_FLAGS_BROADCAST 0x00000002 +#define RPC_NCA_FLAGS_MAYBE 0x00000004 + +typedef void (__RPC_STUB *RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message); + +typedef struct +{ + unsigned int DispatchTableCount; + RPC_DISPATCH_FUNCTION* DispatchTable; + LONG_PTR Reserved; +} RPC_DISPATCH_TABLE, *PRPC_DISPATCH_TABLE; + +typedef struct _RPC_PROTSEQ_ENDPOINT +{ + unsigned char* RpcProtocolSequence; + unsigned char* Endpoint; +} RPC_PROTSEQ_ENDPOINT, *PRPC_PROTSEQ_ENDPOINT; + +#define NT351_INTERFACE_SIZE 0x40 +#define RPC_INTERFACE_HAS_PIPES 0x0001 + +typedef struct _RPC_SERVER_INTERFACE +{ + unsigned int Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + unsigned int RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + RPC_MGR_EPV* DefaultManagerEpv; + void const* InterpreterInfo; + unsigned int Flags; +} RPC_SERVER_INTERFACE, *PRPC_SERVER_INTERFACE; + +typedef struct _RPC_CLIENT_INTERFACE +{ + unsigned int Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + unsigned int RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + ULONG_PTR Reserved; + void const* InterpreterInfo; + unsigned int Flags; +} RPC_CLIENT_INTERFACE, *PRPC_CLIENT_INTERFACE; + +#define TRANSPORT_TYPE_CN 0x01 +#define TRANSPORT_TYPE_DG 0x02 +#define TRANSPORT_TYPE_LPC 0x04 +#define TRANSPORT_TYPE_WMSG 0x08 + +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcGetBuffer( RPC_MESSAGE* Message ); +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcGetBufferWithObject( RPC_MESSAGE* Message, UUID* ObjectUuid ); +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcSendReceive( RPC_MESSAGE* Message ); +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcFreeBuffer( RPC_MESSAGE* Message ); +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcSend( RPC_MESSAGE* Message ); +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcReceive( RPC_MESSAGE* Message ); + +RPCRTAPI void* RPC_ENTRY + I_RpcAllocate( unsigned int Size ); +RPCRTAPI void RPC_ENTRY + I_RpcFree( void* Object ); + +RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY + I_RpcGetCurrentCallHandle( void ); + +/* + * The platform SDK headers don't define these functions at all if WINNT is defined + * The MSVC6 headers define two different sets of functions : + * If WINNT and MSWMSG are defined, the NT versions are defined + * If WINNT is not defined, the windows 9x versions are defined. + * Note that the prototypes for I_RpcBindingSetAsync are different for each case. + * + * Wine defaults to the WinNT case and only defines these function is MSWMSG is + * defined. Defining the NT functions by default causes MIDL generated proxys + * to not compile. + */ + +#if 1 /* WINNT */ +#ifdef MSWMSG + +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcServerStartListening( HWND hWnd ); +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcServerStopListening( void ); +/* WINNT */ +RPCRTAPI RPC_STATUS RPC_ENTRY + I_GetThreadWindowHandle( HWND* hWnd ); +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcAsyncSendReceive( RPC_MESSAGE* Message, void* Context, HWND hWnd ); + +typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, HANDLE hSyncEvent); + +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn ); + +RPCRTAPI UINT RPC_ENTRY + I_RpcWindowProc( void* hWnd, UINT Message, UINT wParam, ULONG lParam ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcSetWMsgEndpoint( WCHAR* Endpoint ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcBindingInqTransportType( RPC_BINDING_HANDLE Binding, unsigned int* Type ); + +#endif + #else -long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned char*); -long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE,unsigned char**); -#endif -long __stdcall I_RpcBindingInqTransportType(HANDLE,unsigned int*); -long __stdcall I_RpcIfInqTransferSyntaxes(HANDLE,RPC_TRANSFER_SYNTAX*,unsigned int,unsigned int*); -long __stdcall I_UuidCreate(GUID*); -long __stdcall I_RpcBindingCopy(HANDLE,HANDLE*); -long __stdcall I_RpcBindingIsClientLocal(HANDLE,unsigned int*); -void __stdcall I_RpcSsDontSerializeContext(void); -long __stdcall I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION*); -long __stdcall I_RpcConnectionInqSockBuffSize(unsigned long*,unsigned long*); -long __stdcall I_RpcConnectionSetSockBuffSize(unsigned long,unsigned long); -long __stdcall I_RpcBindingSetAsync(HANDLE,RPC_BLOCKING_FN); -long __stdcall I_RpcAsyncSendReceive(RPC_MESSAGE*,void*); -long __stdcall I_RpcGetThreadWindowHandle(void**); -long __stdcall I_RpcServerThreadPauseListening(void); -long __stdcall I_RpcServerThreadContinueListening(void); -long __stdcall I_RpcServerUnregisterEndpointA(unsigned char*,unsigned char*); -long __stdcall I_RpcServerUnregisterEndpointW(unsigned short*,unsigned short*); -#ifdef UNICODE -#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW -#else -#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA -#endif -#ifdef __cplusplus -} -#endif + +/* WIN9x */ +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcServerStartListening( void* hWnd ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcServerStopListening( void ); + +typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, void* hSyncEvent); + +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn, unsigned long ServerTid ); + +RPCRTAPI RPC_STATUS RPC_ENTRY + I_RpcSetThreadParams( int fClientFree, void* Context, void* hWndClient ); + +RPCRTAPI UINT RPC_ENTRY + I_RpcWindowProc( void* hWnd, unsigned int Message, unsigned int wParam, unsigned long lParam ); + #endif + +#endif /*__WINE_RPCDCEP_H */ diff --git a/reactos/include/psdk/rpcndr.h b/reactos/include/psdk/rpcndr.h index fd0c4f8fcc0..8feab235499 100644 --- a/reactos/include/psdk/rpcndr.h +++ b/reactos/include/psdk/rpcndr.h @@ -1,135 +1,159 @@ -#ifndef __RPCNDR_H__ -#define __RPCNDR_H__ -#if __GNUC__ >=3 -#pragma GCC system_header -#endif +/* + * Copyright (C) 2000 Francois Gouget + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ #ifndef __RPCNDR_H_VERSION__ -#define __RPCNDR_H_VERSION__ ( 450 ) -#endif /* __RPCNDR_H_VERSION__ */ -#include +/* FIXME: What version? Perhaps something is better than nothing, however incorrect */ +#define __RPCNDR_H_VERSION__ ( 399 ) +#endif + +#ifndef __WINE_RPCNDR_H +#define __WINE_RPCNDR_H + #ifdef __cplusplus extern "C" { #endif -#include +#include + +#undef CONST_VTBL #ifdef CONST_VTABLE -#define CONST_VTBL const +# define CONST_VTBL const #else -#define CONST_VTBL +# define CONST_VTBL #endif +/* stupid #if can't handle casts... this __stupidity + is just a workaround for that limitation */ + +#define __NDR_CHAR_REP_MASK 0x000fL +#define __NDR_INT_REP_MASK 0x00f0L +#define __NDR_FLOAT_REP_MASK 0xff00L + +#define __NDR_IEEE_FLOAT 0x0000L +#define __NDR_VAX_FLOAT 0x0100L +#define __NDR_IBM_FLOAT 0x0300L + +#define __NDR_ASCII_CHAR 0x0000L +#define __NDR_EBCDIC_CHAR 0x0001L + +#define __NDR_LITTLE_ENDIAN 0x0010L +#define __NDR_BIG_ENDIAN 0x0000L + +/* Mac's are special */ +#if defined(__RPC_MAC__) +# define __NDR_LOCAL_DATA_REPRESENTATION \ + (__NDR_IEEE_FLOAT | __NDR_ASCII_CHAR | __NDR_BIG_ENDIAN) +#else +# define __NDR_LOCAL_DATA_REPRESENTATION \ + (__NDR_IEEE_FLOAT | __NDR_ASCII_CHAR | __NDR_LITTLE_ENDIAN) +#endif + +#define __NDR_LOCAL_ENDIAN \ + (__NDR_LOCAL_DATA_REPRESENTATION & __NDR_INT_REP_MASK) + +/* for convenience, define NDR_LOCAL_IS_BIG_ENDIAN iff it is */ +#if __NDR_LOCAL_ENDIAN == __NDR_BIG_ENDIAN +# define NDR_LOCAL_IS_BIG_ENDIAN +#elif __NDR_LOCAL_ENDIAN == __NDR_LITTLE_ENDIAN +# undef NDR_LOCAL_IS_BIG_ENDIAN +#else +# error alien NDR_LOCAL_ENDIAN - Greg botched the defines again, please report +#endif + +/* finally, do the casts like Microsoft */ + +#define NDR_CHAR_REP_MASK ((ULONG) __NDR_CHAR_REP_MASK) +#define NDR_INT_REP_MASK ((ULONG) __NDR_INT_REP_MASK) +#define NDR_FLOAT_REP_MASK ((ULONG) __NDR_FLOAT_REP_MASK) +#define NDR_IEEE_FLOAT ((ULONG) __NDR_IEEE_FLOAT) +#define NDR_VAX_FLOAT ((ULONG) __NDR_VAX_FLOAT) +#define NDR_IBM_FLOAT ((ULONG) __NDR_IBM_FLOAT) +#define NDR_ASCII_CHAR ((ULONG) __NDR_ASCII_CHAR) +#define NDR_EBCDIC_CHAR ((ULONG) __NDR_EBCDIC_CHAR) +#define NDR_LITTLE_ENDIAN ((ULONG) __NDR_LITTLE_ENDIAN) +#define NDR_BIG_ENDIAN ((ULONG) __NDR_BIG_ENDIAN) +#define NDR_LOCAL_DATA_REPRESENTATION ((ULONG) __NDR_LOCAL_DATA_REPRESENTATION) +#define NDR_LOCAL_ENDIAN ((ULONG) __NDR_LOCAL_ENDIAN) + + #define TARGET_IS_NT50_OR_LATER 1 #define TARGET_IS_NT40_OR_LATER 1 #define TARGET_IS_NT351_OR_WIN95_OR_LATER 1 -#define DECLSPEC_UUID(x) -#define MIDL_INTERFACE(x) struct -#define NDR_CHAR_REP_MASK (unsigned long)0xFL -#define NDR_INT_REP_MASK (unsigned long)0xF0L -#define NDR_FLOAT_REP_MASK (unsigned long)0xFF00L -#define NDR_LITTLE_ENDIAN (unsigned long)0x10L -#define NDR_BIG_ENDIAN (unsigned long)0 -#define NDR_IEEE_FLOAT (unsigned long)0 -#define NDR_VAX_FLOAT (unsigned long)0x100L -#define NDR_ASCII_CHAR (unsigned long)0 -#define NDR_EBCDIC_CHAR (unsigned long)1 -#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0x10L -#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN -#define __RPC_CALLEE __stdcall -#ifndef __MIDL_USER_DEFINED -#define midl_user_allocate MIDL_user_allocate -#define midl_user_free MIDL_user_free -#define __MIDL_USER_DEFINED -#endif -#define RPC_VAR_ENTRY __cdecl -#ifdef _M_IX86 -#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport) -#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport) -#else -#define __MIDL_DECLSPEC_DLLIMPORT -#define __MIDL_DECLSPEC_DLLEXPORT -#endif -#if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64) -#define hyper __int64 -#define MIDL_uhyper unsigned __int64 -#else -#define hyper double -#define MIDL_uhyper double -#endif + #define small char typedef unsigned char byte; +#define hyper __int64 +#define MIDL_uhyper unsigned __int64 +typedef unsigned char boolean; + +#define __RPC_CALLEE WINAPI +#define RPC_VAR_ENTRY __cdecl +#define NDR_SHAREABLE static + +#define MIDL_ascii_strlen(s) strlen(s) +#define MIDL_ascii_strcpy(d,s) strcpy(d,s) +#define MIDL_memset(d,v,n) memset(d,v,n) +#define midl_user_free MIDL_user_free +#define midl_user_allocate MIDL_user_allocate + +#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) +#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \ + (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) + +typedef struct +{ + void *pad[2]; + void *userContext; +} *NDR_SCONTEXT; + #define NDRSContextValue(hContext) (&(hContext)->userContext) #define cbNDRContext 20 -#define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } -#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } -#define boolean_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } -#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } -#define small_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } -#define small_from_ndr_temp(source, target, format) { *(target) = *(*(char**)(source))++; } -#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } -#define MIDL_ascii_strlen(string) strlen(string) -#define MIDL_ascii_strcpy(target,source) strcpy(target,source) -#define MIDL_memset(s,c,n) memset(s,c,n) -#define _midl_ma1( p, cast ) *(*( cast **)&p)++ -#define _midl_ma2( p, cast ) *(*( cast **)&p)++ -#define _midl_ma4( p, cast ) *(*( cast **)&p)++ -#define _midl_ma8( p, cast ) *(*( cast **)&p)++ -#define _midl_unma1( p, cast ) *(( cast *)p)++ -#define _midl_unma2( p, cast ) *(( cast *)p)++ -#define _midl_unma3( p, cast ) *(( cast *)p)++ -#define _midl_unma4( p, cast ) *(( cast *)p)++ -#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe)) -#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc)) -#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8)) -#define _midl_addp( p, n ) (p += n) -#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++ -#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p -#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++ -#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++) -#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l) -#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long)) -#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20) -#define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20) -#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep )) -#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd) -#define NdrFieldOffset(s,f) (long)(& (((s *)0)->f)) -#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t)) -#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) -#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) -#ifdef CONST_VTABLE -#define CONST_VTBL const -#else -#define CONST_VTBL -#endif -typedef void *NDR_CCONTEXT; -typedef struct { - void *pad[2]; - void *userContext; -} *NDR_SCONTEXT; -typedef void (__RPC_USER *NDR_RUNDOWN)(void*); + +typedef void (__RPC_USER *NDR_RUNDOWN)(void *context); +typedef void (__RPC_USER *NDR_NOTIFY_ROUTINE)(void); +typedef void (__RPC_USER *NDR_NOTIFY2_ROUTINE)(boolean flag); + +#define DECLSPEC_UUID(x) +#define MIDL_INTERFACE(x) struct struct _MIDL_STUB_MESSAGE; struct _MIDL_STUB_DESC; struct _FULL_PTR_XLAT_TABLES; -typedef unsigned char *RPC_BUFPTR; -typedef unsigned long RPC_LENGTH; -typedef void(__RPC_USER *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE*); +struct NDR_ALLOC_ALL_NODES_CONTEXT; +struct NDR_POINTER_QUEUE_STATE; + +typedef void (__RPC_USER *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE *); typedef const unsigned char *PFORMAT_STRING; typedef struct { - long Dimension; - unsigned long *BufferConformanceMark; - unsigned long *BufferVarianceMark; - unsigned long *MaxCountArray; - unsigned long *OffsetArray; - unsigned long *ActualCountArray; + LONG Dimension; + ULONG *BufferConformanceMark; + ULONG *BufferVarianceMark; + ULONG *MaxCountArray; + ULONG *OffsetArray; + ULONG *ActualCountArray; } ARRAY_INFO, *PARRAY_INFO; typedef struct { - unsigned long WireCodeset; - unsigned long DesiredReceivingCodeset; + ULONG WireCodeset; + ULONG DesiredReceivingCodeset; void *CSArrayInfo; } CS_STUB_INFO; @@ -146,8 +170,8 @@ typedef struct _MIDL_STUB_MESSAGE unsigned char *BufferStart; unsigned char *BufferEnd; unsigned char *BufferMark; - unsigned long BufferLength; - unsigned long MemorySize; + ULONG BufferLength; + ULONG MemorySize; unsigned char *Memory; int IsClient; int ReuseBuffer; @@ -159,8 +183,8 @@ typedef struct _MIDL_STUB_MESSAGE unsigned char uFlags; unsigned short UniquePtrCount; ULONG_PTR MaxCount; - unsigned long Offset; - unsigned long ActualCount; + ULONG Offset; + ULONG ActualCount; void * (__RPC_API *pfnAllocate)(size_t); void (__RPC_API *pfnFree)(void *); unsigned char *StackTop; @@ -169,8 +193,8 @@ typedef struct _MIDL_STUB_MESSAGE handle_t SavedHandle; const struct _MIDL_STUB_DESC *StubDesc; struct _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; - unsigned long FullPtrRefId; - unsigned long PointerLength; + ULONG FullPtrRefId; + ULONG PointerLength; int fInDontFree:1; int fDontCallFreeInst:1; int fInOnlyParam:1; @@ -179,17 +203,17 @@ typedef struct _MIDL_STUB_MESSAGE int fHasNewCorrDesc:1; int fUnused:10; int fUnused2:16; - unsigned long dwDestContext; + DWORD dwDestContext; void *pvDestContext; NDR_SCONTEXT *SavedContextHandles; - long ParamNumber; + LONG ParamNumber; struct IRpcChannelBuffer *pRpcChannelBuffer; PARRAY_INFO pArrayInfo; - unsigned long *SizePtrCountArray; - unsigned long *SizePtrOffsetArray; - unsigned long *SizePtrLengthArray; + ULONG *SizePtrCountArray; + ULONG *SizePtrOffsetArray; + ULONG *SizePtrLengthArray; void *pArgQueue; - unsigned long dwStubPhase; + DWORD dwStubPhase; void *LowStackMark; PNDR_ASYNC_MESSAGE pAsyncMsg; PNDR_CORRELATION_INFO pCorrInfo; @@ -198,280 +222,301 @@ typedef struct _MIDL_STUB_MESSAGE CS_STUB_INFO *pCSInfo; unsigned char *ConformanceMark; unsigned char *VarianceMark; - INT_PTR Unused; + INT_PTR Unused; /* BackingStoreLowMark on IA64 */ struct _NDR_PROC_CONTEXT *pContext; - INT_PTR Reserved51_1; - INT_PTR Reserved51_2; + void* ContextHandleHash; + void* pUserMarshalList; INT_PTR Reserved51_3; INT_PTR Reserved51_4; INT_PTR Reserved51_5; } MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE; #include -typedef void*(__RPC_API *GENERIC_BINDING_ROUTINE)(void*); -typedef void (__RPC_API *GENERIC_UNBIND_ROUTINE)(void*,unsigned char*); -typedef struct _GENERIC_BINDING_ROUTINE_PAIR { - GENERIC_BINDING_ROUTINE pfnBind; - GENERIC_UNBIND_ROUTINE pfnUnbind; -} GENERIC_BINDING_ROUTINE_PAIR,*PGENERIC_BINDING_ROUTINE_PAIR; -typedef struct __GENERIC_BINDING_INFO { - void *pObj; - unsigned int Size; - GENERIC_BINDING_ROUTINE pfnBind; - GENERIC_UNBIND_ROUTINE pfnUnbind; -} GENERIC_BINDING_INFO,*PGENERIC_BINDING_INFO; -typedef void(__RPC_USER *XMIT_HELPER_ROUTINE)(PMIDL_STUB_MESSAGE); +typedef void * (__RPC_API * GENERIC_BINDING_ROUTINE)(void *); +typedef void (__RPC_API * GENERIC_UNBIND_ROUTINE)(void *, unsigned char *); + +typedef struct _GENERIC_BINDING_ROUTINE_PAIR +{ + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} GENERIC_BINDING_ROUTINE_PAIR, *PGENERIC_BINDING_ROUTINE_PAIR; + +typedef struct __GENERIC_BINDING_INFO +{ + void *pObj; + unsigned int Size; + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} GENERIC_BINDING_INFO, *PGENERIC_BINDING_INFO; + +typedef void (__RPC_USER *XMIT_HELPER_ROUTINE)(PMIDL_STUB_MESSAGE); + typedef struct _XMIT_ROUTINE_QUINTUPLE { - XMIT_HELPER_ROUTINE pfnTranslateToXmit; - XMIT_HELPER_ROUTINE pfnTranslateFromXmit; - XMIT_HELPER_ROUTINE pfnFreeXmit; - XMIT_HELPER_ROUTINE pfnFreeInst; + XMIT_HELPER_ROUTINE pfnTranslateToXmit; + XMIT_HELPER_ROUTINE pfnTranslateFromXmit; + XMIT_HELPER_ROUTINE pfnFreeXmit; + XMIT_HELPER_ROUTINE pfnFreeInst; } XMIT_ROUTINE_QUINTUPLE, *PXMIT_ROUTINE_QUINTUPLE; -typedef struct _MALLOC_FREE_STRUCT { -void*(__RPC_USER *pfnAllocate)(unsigned int); -void(__RPC_USER *pfnFree)(void*); -} MALLOC_FREE_STRUCT; -typedef struct _COMM_FAULT_OFFSETS { - short CommOffset; - short FaultOffset; -} COMM_FAULT_OFFSETS; -typedef unsigned long (__RPC_USER *USER_MARSHAL_SIZING_ROUTINE)(unsigned long *,unsigned long,void *); -typedef unsigned char *(__RPC_USER *USER_MARSHAL_MARSHALLING_ROUTINE)(unsigned long *,unsigned char *,void *); -typedef unsigned char *(__RPC_USER *USER_MARSHAL_UNMARSHALLING_ROUTINE)(unsigned long *,unsigned char *,void *); -typedef void (__RPC_USER *USER_MARSHAL_FREEING_ROUTINE)(unsigned long *,void *); +typedef ULONG (__RPC_USER *USER_MARSHAL_SIZING_ROUTINE)(ULONG *, ULONG, void *); +typedef unsigned char * (__RPC_USER *USER_MARSHAL_MARSHALLING_ROUTINE)(ULONG *, unsigned char *, void *); +typedef unsigned char * (__RPC_USER *USER_MARSHAL_UNMARSHALLING_ROUTINE)(ULONG *, unsigned char *, void *); +typedef void (__RPC_USER *USER_MARSHAL_FREEING_ROUTINE)(ULONG *, void *); typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE { - USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; - USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; - USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; - USER_MARSHAL_FREEING_ROUTINE pfnFree; + USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; + USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; + USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; + USER_MARSHAL_FREEING_ROUTINE pfnFree; } USER_MARSHAL_ROUTINE_QUADRUPLE; -typedef void (__RPC_USER *NDR_NOTIFY_ROUTINE)(void); -typedef enum _IDL_CS_CONVERT { - IDL_CS_NO_CONVERT, - IDL_CS_IN_PLACE_CONVERT, - IDL_CS_NEW_BUFFER_CONVERT -} IDL_CS_CONVERT; -typedef void (__RPC_USER *CS_TYPE_NET_SIZE_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,unsigned long,IDL_CS_CONVERT*,unsigned long*,error_status_t*); -typedef void (__RPC_USER *CS_TYPE_LOCAL_SIZE_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,unsigned long,IDL_CS_CONVERT*,unsigned long*,error_status_t*); -typedef void (__RPC_USER *CS_TYPE_TO_NETCS_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,void*,unsigned long,byte*,unsigned long*,error_status_t*); -typedef void (__RPC_USER *CS_TYPE_FROM_NETCS_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,byte*,unsigned long,unsigned long,void*,unsigned long*,error_status_t*); -typedef void (__RPC_USER *CS_TAG_GETTING_ROUTINE)(RPC_BINDING_HANDLE,int,unsigned long*,unsigned long*,unsigned long*,error_status_t*); -typedef struct _NDR_CS_SIZE_CONVERT_ROUTINES { - CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; - CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; - CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; - CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; -} NDR_CS_SIZE_CONVERT_ROUTINES; -typedef struct _NDR_CS_ROUTINES { - NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; - CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; -} NDR_CS_ROUTINES; + +/* 'USRC' */ +#define USER_MARSHAL_CB_SIGNATURE \ + ( ( (DWORD)'U' << 24 ) | ( (DWORD)'S' << 16 ) | \ + ( (DWORD)'R' << 8 ) | ( (DWORD)'C' ) ) + +typedef enum +{ + USER_MARSHAL_CB_BUFFER_SIZE, + USER_MARSHAL_CB_MARSHALL, + USER_MARSHAL_CB_UNMARSHALL, + USER_MARSHAL_CB_FREE +} USER_MARSHAL_CB_TYPE; + +typedef struct _USER_MARSHAL_CB +{ + ULONG Flags; + PMIDL_STUB_MESSAGE pStubMsg; + PFORMAT_STRING pReserve; + ULONG Signature; + USER_MARSHAL_CB_TYPE CBType; + PFORMAT_STRING pFormat; + PFORMAT_STRING pTypeFormat; +} USER_MARSHAL_CB; + +#define USER_CALL_CTXT_MASK(f) ((f) & 0x00ff) +#define USER_CALL_AUX_MASK(f) ((f) & 0xff00) +#define GET_USER_DATA_REP(f) HIWORD(f) + +#define USER_CALL_IS_ASYNC 0x0100 +#define USER_CALL_NEW_CORRELATION_DESC 0x0200 + +typedef struct _MALLOC_FREE_STRUCT +{ + void * (__RPC_USER *pfnAllocate)(size_t); + void (__RPC_USER *pfnFree)(void *); +} MALLOC_FREE_STRUCT; + +typedef struct _COMM_FAULT_OFFSETS +{ + short CommOffset; + short FaultOffset; +} COMM_FAULT_OFFSETS; + typedef struct _MIDL_STUB_DESC { - void *RpcInterfaceInformation; - void * (__RPC_API *pfnAllocate)(size_t); - void (__RPC_API *pfnFree)(void *); - union { - handle_t *pAutoHandle; - handle_t *pPrimitiveHandle; - PGENERIC_BINDING_INFO pGenericBindingInfo; - } IMPLICIT_HANDLE_INFO; - const NDR_RUNDOWN *apfnNdrRundownRoutines; - const GENERIC_BINDING_ROUTINE_PAIR *aGenericBindingRoutinePairs; - const EXPR_EVAL *apfnExprEval; - const XMIT_ROUTINE_QUINTUPLE *aXmitQuintuple; - const unsigned char *pFormatTypes; - int fCheckBounds; - unsigned long Version; - MALLOC_FREE_STRUCT *pMallocFreeStruct; - long MIDLVersion; - const COMM_FAULT_OFFSETS *CommFaultOffsets; - const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple; - const NDR_NOTIFY_ROUTINE *NotifyRoutineTable; - ULONG_PTR mFlags; - const NDR_CS_ROUTINES *CsRoutineTables; - void *Reserved4; - ULONG_PTR Reserved5; + void *RpcInterfaceInformation; + void * (__RPC_API *pfnAllocate)(size_t); + void (__RPC_API *pfnFree)(void *); + union { + handle_t *pAutoHandle; + handle_t *pPrimitiveHandle; + PGENERIC_BINDING_INFO pGenericBindingInfo; + } IMPLICIT_HANDLE_INFO; + const NDR_RUNDOWN *apfnNdrRundownRoutines; + const GENERIC_BINDING_ROUTINE_PAIR *aGenericBindingRoutinePairs; + const EXPR_EVAL *apfnExprEval; + const XMIT_ROUTINE_QUINTUPLE *aXmitQuintuple; + const unsigned char *pFormatTypes; + int fCheckBounds; + ULONG Version; + MALLOC_FREE_STRUCT *pMallocFreeStruct; + LONG MIDLVersion; + const COMM_FAULT_OFFSETS *CommFaultOffsets; + const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple; + const NDR_NOTIFY_ROUTINE *NotifyRoutineTable; + ULONG_PTR mFlags; + ULONG_PTR Reserved3; + ULONG_PTR Reserved4; + ULONG_PTR Reserved5; } MIDL_STUB_DESC; typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC; -typedef void*PMIDL_XMIT_TYPE; + typedef struct _MIDL_FORMAT_STRING { - short Pad; + short Pad; #if defined(__GNUC__) - unsigned char Format[0]; + unsigned char Format[0]; #else - unsigned char Format[1]; + unsigned char Format[1]; #endif } MIDL_FORMAT_STRING; typedef struct _MIDL_SYNTAX_INFO { - RPC_SYNTAX_IDENTIFIER TransferSyntax; - RPC_DISPATCH_TABLE* DispatchTable; - PFORMAT_STRING ProcString; - const unsigned short* FmtStringOffset; - PFORMAT_STRING TypeString; - const void* aUserMarshalQuadruple; - ULONG_PTR pReserved1; - ULONG_PTR pReserved2; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + RPC_DISPATCH_TABLE* DispatchTable; + PFORMAT_STRING ProcString; + const unsigned short* FmtStringOffset; + PFORMAT_STRING TypeString; + const void* aUserMarshalQuadruple; + ULONG_PTR pReserved1; + ULONG_PTR pReserved2; } MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO; typedef void (__RPC_API *STUB_THUNK)( PMIDL_STUB_MESSAGE ); -typedef long (__RPC_API *SERVER_ROUTINE)(); +typedef LONG (__RPC_API *SERVER_ROUTINE)(); typedef struct _MIDL_SERVER_INFO_ { - PMIDL_STUB_DESC pStubDesc; - const SERVER_ROUTINE *DispatchTable; - PFORMAT_STRING ProcString; - const unsigned short *FmtStringOffset; - const STUB_THUNK *ThunkTable; - PRPC_SYNTAX_IDENTIFIER pTransferSyntax; - ULONG_PTR nCount; - PMIDL_SYNTAX_INFO pSyntaxInfo; + PMIDL_STUB_DESC pStubDesc; + const SERVER_ROUTINE *DispatchTable; + PFORMAT_STRING ProcString; + const unsigned short *FmtStringOffset; + const STUB_THUNK *ThunkTable; + PRPC_SYNTAX_IDENTIFIER pTransferSyntax; + ULONG_PTR nCount; + PMIDL_SYNTAX_INFO pSyntaxInfo; } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO; typedef struct _MIDL_STUBLESS_PROXY_INFO { - PMIDL_STUB_DESC pStubDesc; - PFORMAT_STRING ProcFormatString; - const unsigned short *FormatStringOffset; - PRPC_SYNTAX_IDENTIFIER pTransferSyntax; - ULONG_PTR nCount; - PMIDL_SYNTAX_INFO pSyntaxInfo; + PMIDL_STUB_DESC pStubDesc; + PFORMAT_STRING ProcFormatString; + const unsigned short *FormatStringOffset; + PRPC_SYNTAX_IDENTIFIER pTransferSyntax; + ULONG_PTR nCount; + PMIDL_SYNTAX_INFO pSyntaxInfo; } MIDL_STUBLESS_PROXY_INFO, *PMIDL_STUBLESS_PROXY_INFO; typedef union _CLIENT_CALL_RETURN { - void *Pointer; - LONG_PTR Simple; + void *Pointer; + LONG_PTR Simple; } CLIENT_CALL_RETURN; typedef enum { - STUB_UNMARSHAL, - STUB_CALL_SERVER, - STUB_MARSHAL, - STUB_CALL_SERVER_NO_HRESULT + STUB_UNMARSHAL, + STUB_CALL_SERVER, + STUB_MARSHAL, + STUB_CALL_SERVER_NO_HRESULT } STUB_PHASE; typedef enum { - PROXY_CALCSIZE, - PROXY_GETBUFFER, - PROXY_MARSHAL, - PROXY_SENDRECEIVE, - PROXY_UNMARSHAL + PROXY_CALCSIZE, + PROXY_GETBUFFER, + PROXY_MARSHAL, + PROXY_SENDRECEIVE, + PROXY_UNMARSHAL } PROXY_PHASE; typedef enum { - XLAT_SERVER = 1, - XLAT_CLIENT + XLAT_SERVER = 1, + XLAT_CLIENT } XLAT_SIDE; typedef struct _FULL_PTR_TO_REFID_ELEMENT { - struct _FULL_PTR_TO_REFID_ELEMENT *Next; - void *Pointer; - unsigned long RefId; - unsigned char State; + struct _FULL_PTR_TO_REFID_ELEMENT *Next; + void *Pointer; + ULONG RefId; + unsigned char State; } FULL_PTR_TO_REFID_ELEMENT, *PFULL_PTR_TO_REFID_ELEMENT; /* Full pointer translation tables */ typedef struct _FULL_PTR_XLAT_TABLES { - struct { - void **XlatTable; - unsigned char *StateTable; - unsigned long NumberOfEntries; - } RefIdToPointer; + struct { + void **XlatTable; + unsigned char *StateTable; + ULONG NumberOfEntries; + } RefIdToPointer; - struct { - PFULL_PTR_TO_REFID_ELEMENT *XlatTable; - unsigned long NumberOfBuckets; - unsigned long HashMask; - } PointerToRefId; + struct { + PFULL_PTR_TO_REFID_ELEMENT *XlatTable; + ULONG NumberOfBuckets; + ULONG HashMask; + } PointerToRefId; - unsigned long NextRefId; - XLAT_SIDE XlatSide; -} FULL_PTR_XLAT_TABLES, *PFULL_PTR_XLAT_TABLES; + ULONG NextRefId; + XLAT_SIDE XlatSide; +} FULL_PTR_XLAT_TABLES, *PFULL_PTR_XLAT_TABLES; struct IRpcStubBuffer; -typedef unsigned long error_status_t; +typedef ULONG error_status_t; typedef void * NDR_CCONTEXT; typedef struct _SCONTEXT_QUEUE { - unsigned long NumberOfObjects; - NDR_SCONTEXT *ArrayOfObjects; + ULONG NumberOfObjects; + NDR_SCONTEXT *ArrayOfObjects; } SCONTEXT_QUEUE, *PSCONTEXT_QUEUE; /* Context Handles */ RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY - NDRCContextBinding( IN NDR_CCONTEXT CContext ); + NDRCContextBinding( NDR_CCONTEXT CContext ); RPCRTAPI void RPC_ENTRY - NDRCContextMarshall( IN NDR_CCONTEXT CContext, OUT void *pBuff ); + NDRCContextMarshall( NDR_CCONTEXT CContext, void *pBuff ); RPCRTAPI void RPC_ENTRY - NDRCContextUnmarshall( OUT NDR_CCONTEXT *pCContext, IN RPC_BINDING_HANDLE hBinding, - IN void *pBuff, IN unsigned long DataRepresentation ); + NDRCContextUnmarshall( NDR_CCONTEXT *pCContext, RPC_BINDING_HANDLE hBinding, + void *pBuff, ULONG DataRepresentation ); RPCRTAPI void RPC_ENTRY - NDRSContextMarshall( IN NDR_SCONTEXT CContext, OUT void *pBuff, IN NDR_RUNDOWN userRunDownIn ); + NDRSContextMarshall( NDR_SCONTEXT CContext, void *pBuff, NDR_RUNDOWN userRunDownIn ); RPCRTAPI NDR_SCONTEXT RPC_ENTRY - NDRSContextUnmarshall( IN void *pBuff, IN unsigned long DataRepresentation ); + NDRSContextUnmarshall( void *pBuff, ULONG DataRepresentation ); RPCRTAPI void RPC_ENTRY - NDRSContextMarshallEx( IN RPC_BINDING_HANDLE BindingHandle, IN NDR_SCONTEXT CContext, - OUT void *pBuff, IN NDR_RUNDOWN userRunDownIn ); + NDRSContextMarshallEx( RPC_BINDING_HANDLE BindingHandle, NDR_SCONTEXT CContext, + void *pBuff, NDR_RUNDOWN userRunDownIn ); RPCRTAPI void RPC_ENTRY - NDRSContextMarshall2( IN RPC_BINDING_HANDLE BindingHandle, IN NDR_SCONTEXT CContext, - OUT void *pBuff, IN NDR_RUNDOWN userRunDownIn, IN void * CtxGuard, - IN unsigned long Flags ); + NDRSContextMarshall2( RPC_BINDING_HANDLE BindingHandle, NDR_SCONTEXT CContext, + void *pBuff, NDR_RUNDOWN userRunDownIn, void * CtxGuard, + ULONG Flags ); RPCRTAPI NDR_SCONTEXT RPC_ENTRY - NDRSContextUnmarshallEx( IN RPC_BINDING_HANDLE BindingHandle, IN void *pBuff, - IN unsigned long DataRepresentation ); + NDRSContextUnmarshallEx( RPC_BINDING_HANDLE BindingHandle, void *pBuff, + ULONG DataRepresentation ); RPCRTAPI NDR_SCONTEXT RPC_ENTRY - NDRSContextUnmarshall2( IN RPC_BINDING_HANDLE BindingHandle, IN void *pBuff, - IN unsigned long DataRepresentation, IN void *CtxGuard, - IN unsigned long Flags ); + NDRSContextUnmarshall2( RPC_BINDING_HANDLE BindingHandle, void *pBuff, + ULONG DataRepresentation, void *CtxGuard, + ULONG Flags ); RPCRTAPI void RPC_ENTRY NdrClientContextMarshall ( PMIDL_STUB_MESSAGE pStubMsg, NDR_CCONTEXT ContextHandle, int fCheck ); RPCRTAPI void RPC_ENTRY - NdrClientContextUnmarshall( IN PMIDL_STUB_MESSAGE pStubMsg, OUT NDR_CCONTEXT* pContextHandle, - IN RPC_BINDING_HANDLE BindHandle ); + NdrClientContextUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, NDR_CCONTEXT* pContextHandle, + RPC_BINDING_HANDLE BindHandle ); RPCRTAPI void RPC_ENTRY NdrServerContextMarshall ( PMIDL_STUB_MESSAGE pStubMsg, NDR_SCONTEXT ContextHandle, NDR_RUNDOWN RundownRoutine ); RPCRTAPI NDR_SCONTEXT RPC_ENTRY - NdrServerContextUnmarshall( IN PMIDL_STUB_MESSAGE pStubMsg ); + NdrServerContextUnmarshall( PMIDL_STUB_MESSAGE pStubMsg ); RPCRTAPI void RPC_ENTRY NdrContextHandleSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat ); RPCRTAPI NDR_SCONTEXT RPC_ENTRY - NdrContextHandleInitialize( IN PMIDL_STUB_MESSAGE pStubMsg, IN PFORMAT_STRING pFormat ); + NdrContextHandleInitialize( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat ); RPCRTAPI void RPC_ENTRY NdrServerContextNewMarshall( PMIDL_STUB_MESSAGE pStubMsg, NDR_SCONTEXT ContextHandle, NDR_RUNDOWN RundownRoutine, PFORMAT_STRING pFormat ); RPCRTAPI NDR_SCONTEXT RPC_ENTRY - NdrServerContextNewUnmarshall( IN PMIDL_STUB_MESSAGE pStubMsg, IN PFORMAT_STRING pFormat ); + NdrServerContextNewUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat ); RPCRTAPI void RPC_ENTRY - RpcSsDestroyClientContext( IN void **ContextHandle ); + RpcSsDestroyClientContext( void **ContextHandle ); RPCRTAPI void RPC_ENTRY NdrSimpleTypeMarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, unsigned char FormatChar ); @@ -486,7 +531,7 @@ RPCRTAPI unsigned char* RPC_ENTRY \ Ndr##type##Unmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char** ppMemory, PFORMAT_STRING pFormat, unsigned char fMustAlloc ); \ RPCRTAPI void RPC_ENTRY \ Ndr##type##BufferSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat ); \ -RPCRTAPI unsigned long RPC_ENTRY \ +RPCRTAPI ULONG RPC_ENTRY \ Ndr##type##MemorySize( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat ); #define TYPE_MARSHAL(type) \ @@ -519,7 +564,7 @@ SIMPLE_TYPE_MARSHAL(NonConformantString) #undef SIMPLE_TYPE_MARSHAL RPCRTAPI void RPC_ENTRY - NdrConvert2( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, long NumberParams ); + NdrConvert2( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, LONG NumberParams ); RPCRTAPI void RPC_ENTRY NdrConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat ); @@ -537,12 +582,12 @@ RPCRTAPI void RPC_ENTRY RPCRTAPI void RPC_ENTRY NdrServerCall( PRPC_MESSAGE pRpcMsg ); -RPCRTAPI long RPC_ENTRY - NdrStubCall2( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, unsigned long * pdwStubPhase ); -RPCRTAPI long RPC_ENTRY - NdrStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, unsigned long * pdwStubPhase ); -RPCRTAPI long RPC_ENTRY - NdrAsyncStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, unsigned long * pdwStubPhase ); +RPCRTAPI LONG RPC_ENTRY + NdrStubCall2( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase ); +RPCRTAPI LONG RPC_ENTRY + NdrStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase ); +RPCRTAPI LONG RPC_ENTRY + NdrAsyncStubCall( struct IRpcStubBuffer* pThis, struct IRpcChannelBuffer* pChannel, PRPC_MESSAGE pRpcMsg, DWORD * pdwStubPhase ); RPCRTAPI void* RPC_ENTRY NdrAllocate( PMIDL_STUB_MESSAGE pStubMsg, size_t Len ); @@ -551,8 +596,8 @@ RPCRTAPI void RPC_ENTRY NdrClearOutParameters( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, void *ArgAddr ); RPCRTAPI RPC_STATUS RPC_ENTRY - NdrMapCommAndFaultStatus( PMIDL_STUB_MESSAGE pStubMsg, unsigned long *pCommStatus, - unsigned long *pFaultStatus, RPC_STATUS Status_ ); + NdrMapCommAndFaultStatus( PMIDL_STUB_MESSAGE pStubMsg, ULONG *pCommStatus, + ULONG *pFaultStatus, RPC_STATUS Status_ ); RPCRTAPI void* RPC_ENTRY NdrOleAllocate( size_t Size ); @@ -560,34 +605,34 @@ RPCRTAPI void RPC_ENTRY NdrOleFree( void* NodeToFree ); RPCRTAPI void RPC_ENTRY - NdrClientInitializeNew( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE pStubMsg, + NdrClientInitializeNew( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc, unsigned int ProcNum ); RPCRTAPI unsigned char* RPC_ENTRY - NdrServerInitializeNew( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc ); + NdrServerInitializeNew( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDesc ); RPCRTAPI unsigned char* RPC_ENTRY - NdrGetBuffer( MIDL_STUB_MESSAGE *stubmsg, unsigned long buflen, RPC_BINDING_HANDLE handle ); + NdrGetBuffer( PMIDL_STUB_MESSAGE stubmsg, ULONG buflen, RPC_BINDING_HANDLE handle ); RPCRTAPI void RPC_ENTRY - NdrFreeBuffer( MIDL_STUB_MESSAGE *pStubMsg ); + NdrFreeBuffer( PMIDL_STUB_MESSAGE pStubMsg ); RPCRTAPI unsigned char* RPC_ENTRY - NdrSendReceive( MIDL_STUB_MESSAGE *stubmsg, unsigned char *buffer ); + NdrSendReceive( PMIDL_STUB_MESSAGE stubmsg, unsigned char *buffer ); RPCRTAPI unsigned char * RPC_ENTRY - NdrNsGetBuffer( PMIDL_STUB_MESSAGE pStubMsg, unsigned long BufferLength, RPC_BINDING_HANDLE Handle ); + NdrNsGetBuffer( PMIDL_STUB_MESSAGE pStubMsg, ULONG BufferLength, RPC_BINDING_HANDLE Handle ); RPCRTAPI unsigned char * RPC_ENTRY NdrNsSendReceive( PMIDL_STUB_MESSAGE pStubMsg, unsigned char *pBufferEnd, RPC_BINDING_HANDLE *pAutoHandle ); RPCRTAPI PFULL_PTR_XLAT_TABLES RPC_ENTRY - NdrFullPointerXlatInit( unsigned long NumberOfPointers, XLAT_SIDE XlatSide ); + NdrFullPointerXlatInit( ULONG NumberOfPointers, XLAT_SIDE XlatSide ); RPCRTAPI void RPC_ENTRY NdrFullPointerXlatFree( PFULL_PTR_XLAT_TABLES pXlatTables ); RPCRTAPI int RPC_ENTRY NdrFullPointerQueryPointer( PFULL_PTR_XLAT_TABLES pXlatTables, void *pPointer, - unsigned char QueryType, unsigned long *pRefId ); + unsigned char QueryType, ULONG *pRefId ); RPCRTAPI int RPC_ENTRY - NdrFullPointerQueryRefId( PFULL_PTR_XLAT_TABLES pXlatTables, unsigned long RefId, + NdrFullPointerQueryRefId( PFULL_PTR_XLAT_TABLES pXlatTables, ULONG RefId, unsigned char QueryType, void **ppPointer ); RPCRTAPI void RPC_ENTRY - NdrFullPointerInsertRefId( PFULL_PTR_XLAT_TABLES pXlatTables, unsigned long RefId, void *pPointer ); + NdrFullPointerInsertRefId( PFULL_PTR_XLAT_TABLES pXlatTables, ULONG RefId, void *pPointer ); RPCRTAPI int RPC_ENTRY NdrFullPointerFree( PFULL_PTR_XLAT_TABLES pXlatTables, void *Pointer ); @@ -598,15 +643,15 @@ RPCRTAPI void RPC_ENTRY RPCRTAPI void RPC_ENTRY NdrRpcSmSetClientToOsf( PMIDL_STUB_MESSAGE pMessage ); RPCRTAPI void * RPC_ENTRY - NdrRpcSmClientAllocate( IN size_t Size ); + NdrRpcSmClientAllocate( size_t Size ); RPCRTAPI void RPC_ENTRY - NdrRpcSmClientFree( IN void *NodeToFree ); + NdrRpcSmClientFree( void *NodeToFree ); RPCRTAPI void * RPC_ENTRY - NdrRpcSsDefaultAllocate( IN size_t Size ); + NdrRpcSsDefaultAllocate( size_t Size ); RPCRTAPI void RPC_ENTRY - NdrRpcSsDefaultFree( IN void *NodeToFree ); + NdrRpcSsDefaultFree( void *NodeToFree ); #ifdef __cplusplus } #endif -#endif +#endif /*__WINE_RPCNDR_H */ diff --git a/reactos/include/psdk/rpcnterr.h b/reactos/include/psdk/rpcnterr.h index ad342ba7852..3803da3331a 100644 --- a/reactos/include/psdk/rpcnterr.h +++ b/reactos/include/psdk/rpcnterr.h @@ -13,7 +13,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __RPCNTERR_H__ diff --git a/reactos/include/psdk/rpcproxy.h b/reactos/include/psdk/rpcproxy.h index 96e6b497517..1ebc5d82dc0 100644 --- a/reactos/include/psdk/rpcproxy.h +++ b/reactos/include/psdk/rpcproxy.h @@ -1,215 +1,360 @@ /* - -DREGISTER_PROXY_DLL Generates DllMain, DllRegisterServer, and DllUnregisterServer - -DPROXY_CLSID=clsid Specifies a class ID to be used by the proxy DLL. - -DPROXY_CLSID_IS={..} Specifies the class ID to be used by the proxy DLL. - -DNT35_STRICT No new features -*/ -#ifndef _RPCPROXY_H -#define _RPCPROXY_H -#if __GNUC__ >=3 -#pragma GCC system_header + * Copyright (C) 2001 Ove Kaaven + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __RPCPROXY_H_VERSION__ +/* FIXME: Find an appropriate version number. I guess something is better than nothing */ +#define __RPCPROXY_H_VERSION__ ( 399 ) #endif -#if defined __cplusplus && !defined CINTERFACE -#warning "rpcproxy type definitions require CINTERFACE" -#else -#ifdef __cplusplus -extern "C" { +#ifndef __WINE_RPCPROXY_H +#define __WINE_RPCPROXY_H + +#define __midl_proxy + +#include +#ifndef GUID_DEFINED +#include #endif #include #include -#include -#ifndef __RPCPROXY_H_VERSION__ -#define __RPCPROXY_H_VERSION__ 475 -#endif +typedef struct tagCInterfaceStubVtbl *PCInterfaceStubVtblList; +typedef struct tagCInterfaceProxyVtbl *PCInterfaceProxyVtblList; +typedef const char *PCInterfaceName; +typedef int __stdcall IIDLookupRtn( const IID *pIID, int *pIndex ); +typedef IIDLookupRtn *PIIDLookup; -#define CStdStubBuffer_METHODS CStdStubBuffer_QueryInterface,CStdStubBuffer_AddRef,\ -CStdStubBuffer_Release,CStdStubBuffer_Connect,CStdStubBuffer_Disconnect,CStdStubBuffer_Invoke,\ -CStdStubBuffer_IsIIDSupported,CStdStubBuffer_CountRefs,CStdStubBuffer_DebugServerQueryInterface,\ -CStdStubBuffer_DebugServerRelease -#define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp(pIID,name##_ProxyVtblList[index]->header.piid,16) -#define IID_BS_LOOKUP_SETUP int result, low=-1; -#define IID_BS_LOOKUP_INITIAL_TEST(name,sz,split) if ((result = name##_CHECK_IID(split))>0) { low=sz-split;} else if (!result) { low = split; goto found_label; } -#define IID_BS_LOOKUP_NEXT_TEST(name,split) if ((result = name##_CHECK_IID(low+split))>=0) { low=low+split; if (!result) goto found_label; } -#define IID_BS_LOOKUP_RETURN_RESULT(name,sz,index) low+=1; if ((low>=sz )||(result=name##_CHECK_IID(low))) goto not_found_label; found_label: (index)=low; return 1; not_found_label: return 0; -#define REGISTER_PROXY_DLL_ROUTINES(pProxyFileList, pClsID) \ -HINSTANCE hProxyDll = 0; \ -BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) \ -{ \ -if(fdwReason == DLL_PROCESS_ATTACH) hProxyDll = hinstDLL; \ -return TRUE; \ -} \ -HRESULT STDAPICALLTYPE DllRegisterServer(void) \ -{\ -return NdrDllRegisterProxy(hProxyDll, pProxyFileList, pClsID); \ -}\ -HRESULT STDAPICALLTYPE DllUnregisterServer(void)\ -{\ -return NdrDllUnregisterProxy(hProxyDll, pProxyFileList, pClsID);\ -} -#ifdef PROXY_CLSID -#define CLSID_PSFACTORYBUFFER extern CLSID PROXY_CLSID; -#else -#ifdef PROXY_CLSID_IS -#define CLSID_PSFACTORYBUFFER const CLSID CLSID_PSFactoryBuffer = PROXY_CLSID_IS; -#define PROXY_CLSID CLSID_PSFactoryBuffer -#else -#define CLSID_PSFACTORYBUFFER +typedef struct tagProxyFileInfo +{ + const PCInterfaceProxyVtblList *pProxyVtblList; + const PCInterfaceStubVtblList *pStubVtblList; + const PCInterfaceName *pNamesArray; + const IID **pDelegatedIIDs; + const PIIDLookup pIIDLookupRtn; + unsigned short TableSize; + unsigned short TableVersion; + const IID **pAsyncIIDLookup; + LONG_PTR Filler2; + LONG_PTR Filler3; + LONG_PTR Filler4; +} ProxyFileInfo; + +typedef ProxyFileInfo ExtendedProxyFileInfo; + +typedef struct tagCInterfaceProxyHeader +{ +#ifdef USE_STUBLESS_PROXY + const void *pStublessProxyInfo; #endif -#endif -#ifndef PROXY_CLSID -#define GET_DLL_CLSID (aProxyFileList[0]->pStubVtblList[0] != 0 ? aProxyFileList[0]->pStubVtblList[0]->header.piid : 0) + const IID *piid; +} CInterfaceProxyHeader; + +#define CINTERFACE_PROXY_VTABLE(n) \ + struct \ + { \ + CInterfaceProxyHeader header; \ + void *Vtbl[n]; \ + } + +typedef struct tagCInterfaceProxyVtbl +{ + CInterfaceProxyHeader header; +#if defined(__GNUC__) + void *Vtbl[0]; #else -#define GET_DLL_CLSID &PROXY_CLSID + void *Vtbl[1]; #endif -#define EXTERN_PROXY_FILE(name) EXTERN_C const ProxyFileInfo name##_ProxyFileInfo; -#define PROXYFILE_LIST_START const ProxyFileInfo * aProxyFileList[] = { -#define REFERENCE_PROXY_FILE(name) & name##_ProxyFileInfo -#define PROXYFILE_LIST_END 0 }; -#define DLLDATA_GETPROXYDLLINFO(pPFList,pClsid) \ -void RPC_ENTRY GetProxyDllInfo( const ProxyFileInfo*** pInfo, const CLSID ** pId ) \ -{ *pInfo = pPFList; *pId = pClsid; }; -#define DLLGETCLASSOBJECTROUTINE(pPFlist, pClsid,pFactory) HRESULT STDAPICALLTYPE DllGetClassObject(REFCLSID rclsid,REFIID riid,void **ppv) \ -{ return NdrDllGetClassObject(rclsid,riid,ppv,pPFlist,pClsid,pFactory ); } -#define DLLCANUNLOADNOW(pFactory) HRESULT STDAPICALLTYPE DllCanUnloadNow(void) \ -{ return NdrDllCanUnloadNow( pFactory ); } -#define DLLDUMMYPURECALL void __cdecl _purecall(void) { } -#define CSTDSTUBBUFFERRELEASE(pFactory) ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer *This) \ -{ return NdrCStdStubBuffer_Release(This,(IPSFactoryBuffer *)pFactory); } +} CInterfaceProxyVtbl; + +typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *pdwStubPhase); + +typedef struct tagCInterfaceStubHeader +{ + const IID *piid; + const MIDL_SERVER_INFO *pServerInfo; + ULONG DispatchTableCount; + const PRPC_STUB_FUNCTION *pDispatchTable; +} CInterfaceStubHeader; + +typedef struct tagCInterfaceStubVtbl +{ + CInterfaceStubHeader header; + IRpcStubBufferVtbl Vtbl; +} CInterfaceStubVtbl; + +typedef struct tagCStdStubBuffer +{ + const IRpcStubBufferVtbl *lpVtbl; + LONG RefCount; + struct IUnknown *pvServerObject; + const struct ICallFactoryVtbl *pCallFactoryVtbl; + const IID *pAsyncIID; + struct IPSFactoryBuffer *pPSFactory; +} CStdStubBuffer; + +typedef struct tagCStdPSFactoryBuffer +{ + const IPSFactoryBufferVtbl *lpVtbl; + LONG RefCount; + const ProxyFileInfo **pProxyFileList; + LONG Filler1; +} CStdPSFactoryBuffer; + +#define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction + +ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This); +ULONG STDMETHODCALLTYPE NdrCStdStubBuffer2_Release(IRpcStubBuffer *This, IPSFactoryBuffer *pPSF); + +#define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0 + + +HRESULT WINAPI + CStdStubBuffer_QueryInterface( IRpcStubBuffer *This, REFIID riid, void **ppvObject ); +ULONG WINAPI + CStdStubBuffer_AddRef( IRpcStubBuffer *This ); +ULONG WINAPI + CStdStubBuffer_Release( IRpcStubBuffer *This ); +ULONG WINAPI + NdrCStdStubBuffer_Release( IRpcStubBuffer *This, IPSFactoryBuffer *pPSF ); +HRESULT WINAPI + CStdStubBuffer_Connect( IRpcStubBuffer *This, IUnknown *pUnkServer ); +void WINAPI + CStdStubBuffer_Disconnect( IRpcStubBuffer *This ); +HRESULT WINAPI + CStdStubBuffer_Invoke( IRpcStubBuffer *This, RPCOLEMESSAGE *pRpcMsg, IRpcChannelBuffer *pRpcChannelBuffer ); +IRpcStubBuffer * WINAPI + CStdStubBuffer_IsIIDSupported( IRpcStubBuffer *This, REFIID riid ); +ULONG WINAPI + CStdStubBuffer_CountRefs( IRpcStubBuffer *This ); +HRESULT WINAPI + CStdStubBuffer_DebugServerQueryInterface( IRpcStubBuffer *This, void **ppv ); +void WINAPI + CStdStubBuffer_DebugServerRelease( IRpcStubBuffer *This, void *pv ); + +#define CStdStubBuffer_METHODS \ + CStdStubBuffer_QueryInterface, \ + CStdStubBuffer_AddRef, \ + CStdStubBuffer_Release, \ + CStdStubBuffer_Connect, \ + CStdStubBuffer_Disconnect, \ + CStdStubBuffer_Invoke, \ + CStdStubBuffer_IsIIDSupported, \ + CStdStubBuffer_CountRefs, \ + CStdStubBuffer_DebugServerQueryInterface, \ + CStdStubBuffer_DebugServerRelease + +RPCRTAPI void RPC_ENTRY + NdrProxyInitialize( void *This, PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor, unsigned int ProcNum ); +RPCRTAPI void RPC_ENTRY + NdrProxyGetBuffer( void *This, PMIDL_STUB_MESSAGE pStubMsg ); +RPCRTAPI void RPC_ENTRY + NdrProxySendReceive( void *This, PMIDL_STUB_MESSAGE pStubMsg ); +RPCRTAPI void RPC_ENTRY + NdrProxyFreeBuffer( void *This, PMIDL_STUB_MESSAGE pStubMsg ); +RPCRTAPI HRESULT RPC_ENTRY + NdrProxyErrorHandler( DWORD dwExceptionCode ); + +RPCRTAPI void RPC_ENTRY + NdrStubInitialize( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor, IRpcChannelBuffer *pRpcChannelBuffer ); +RPCRTAPI void RPC_ENTRY + NdrStubInitializePartial( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, + PMIDL_STUB_DESC pStubDescriptor, IRpcChannelBuffer *pRpcChannelBuffer, + ULONG RequestedBufferSize ); +void __RPC_STUB NdrStubForwardingFunction( IRpcStubBuffer *This, IRpcChannelBuffer *pChannel, + PRPC_MESSAGE pMsg, DWORD *pdwStubPhase ); +RPCRTAPI void RPC_ENTRY + NdrStubGetBuffer( IRpcStubBuffer *This, IRpcChannelBuffer *pRpcChannelBuffer, PMIDL_STUB_MESSAGE pStubMsg ); +RPCRTAPI HRESULT RPC_ENTRY + NdrStubErrorHandler( DWORD dwExceptionCode ); + +RPCRTAPI HRESULT RPC_ENTRY + NdrDllGetClassObject( REFCLSID rclsid, REFIID riid, void **ppv, const ProxyFileInfo **pProxyFileList, + const CLSID *pclsid, CStdPSFactoryBuffer *pPSFactoryBuffer ); +RPCRTAPI HRESULT RPC_ENTRY + NdrDllCanUnloadNow( CStdPSFactoryBuffer *pPSFactoryBuffer ); + +RPCRTAPI HRESULT RPC_ENTRY + NdrDllRegisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid ); +RPCRTAPI HRESULT RPC_ENTRY + NdrDllUnregisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid ); + +#define CSTDSTUBBUFFERRELEASE(pFactory) \ +ULONG WINAPI CStdStubBuffer_Release(IRpcStubBuffer *This) \ + { return NdrCStdStubBuffer_Release(This, (IPSFactoryBuffer *)pFactory); } + #ifdef PROXY_DELEGATION -#define CSTDSTUBBUFFER2RELEASE(pFactory) ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This) \ -{ return NdrCStdStubBuffer2_Release(This,(IPSFactoryBuffer *)pFactory); } +#define CSTDSTUBBUFFER2RELEASE(pFactory) \ +ULONG WINAPI CStdStubBuffer2_Release(IRpcStubBuffer *This) \ + { return NdrCStdStubBuffer2_Release(This, (IPSFactoryBuffer *)pFactory); } #else #define CSTDSTUBBUFFER2RELEASE(pFactory) #endif +#define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp(pIID, name##_ProxyVtblList[index]->header.piid, sizeof(IID)) + +/* + * In these macros, BS stands for Binary Search. MIDL uses these to + * "unroll" a binary search into the module's IID_Lookup function. + * However, I haven't bothered to reimplement that stuff yet; + * I've just implemented a linear search for now. + */ +#define IID_BS_LOOKUP_SETUP \ + int c; +#define IID_BS_LOOKUP_INITIAL_TEST(name, sz, split) +#define IID_BS_LOOKUP_NEXT_TEST(name, split) +#define IID_BS_LOOKUP_RETURN_RESULT(name, sz, index) \ + for (c=0; cpStubVtblList[0] ? \ + aProxyFileList[0]->pStubVtblList[0]->header.piid : NULL) +#else +# define GET_DLL_CLSID &PROXY_CLSID +#endif + +#ifdef ENTRY_PREFIX +# define __rpc_macro_expand2(a, b) a##b +# define __rpc_macro_expand(a, b) __rpc_macro_expand2(a, b) +# define DLLREGISTERSERVER_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllRegisterServer) +# define DLLUNREGISTERSERVER_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllUnregisterServer) +# define DLLMAIN_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllMain) +# define DLLGETCLASSOBJECT_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllGetClassObject) +# define DLLCANUNLOADNOW_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllCanUnloadNow) +#else +# define DLLREGISTERSERVER_ENTRY DllRegisterServer +# define DLLUNREGISTERSERVER_ENTRY DllUnregisterServer +# define DLLMAIN_ENTRY DllMain +# define DLLGETCLASSOBJECT_ENTRY DllGetClassObject +# define DLLCANUNLOADNOW_ENTRY DllCanUnloadNow +#endif + +#define DLLDATA_GETPROXYDLLINFO(pfl, rclsid) \ + void RPC_ENTRY GetProxyDllInfo(const ProxyFileInfo ***ppProxyFileInfo, \ + const CLSID **ppClsid) \ + { \ + *ppProxyFileInfo = (pfl); \ + *ppClsid = (rclsid); \ + } + +#define DLLGETCLASSOBJECTROUTINE(pfl, factory_clsid, factory) \ + HRESULT WINAPI DLLGETCLASSOBJECT_ENTRY(REFCLSID rclsid, REFIID riid, \ + void **ppv) \ + { \ + return NdrDllGetClassObject(rclsid, riid, ppv, (pfl), \ + (factory_clsid), factory); \ + } + +#define DLLCANUNLOADNOW(factory) \ + HRESULT WINAPI DLLCANUNLOADNOW_ENTRY(void) \ + { \ + return NdrDllCanUnloadNow((factory)); \ + } + +#define REGISTER_PROXY_DLL_ROUTINES(pfl, factory_clsid) \ + HINSTANCE hProxyDll = NULL; \ + \ + BOOL WINAPI DLLMAIN_ENTRY(HINSTANCE hinstDLL, DWORD fdwReason, \ + LPVOID lpvReserved) \ + { \ + if (fdwReason == DLL_PROCESS_ATTACH) \ + { \ + DisableThreadLibraryCalls(hinstDLL); \ + hProxyDll = hinstDLL; \ + } \ + return TRUE; \ + } \ + \ + HRESULT WINAPI DLLREGISTERSERVER_ENTRY(void) \ + { \ + return NdrDllRegisterProxy(hProxyDll, (pfl), (factory_clsid)); \ + } \ + \ + HRESULT WINAPI DLLUNREGISTERSERVER_ENTRY(void) \ + { \ + return NdrDllUnregisterProxy(hProxyDll, (pfl), (factory_clsid)); \ + } + #ifdef REGISTER_PROXY_DLL -#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID ) REGISTER_PROXY_DLL_ROUTINES(pProxyFileList,pClsID) +# define DLLREGISTRY_ROUTINES(pfl, factory_clsid) \ + REGISTER_PROXY_DLL_ROUTINES(pfl, factory_clsid) #else -#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID) -#endif -#define DLLDATA_ROUTINES(pProxyFileList,pClsID) \ -CLSID_PSFACTORYBUFFER \ -CStdPSFactoryBuffer gPFactory = {0,0,0,0}; \ -DLLDATA_GETPROXYDLLINFO(pProxyFileList,pClsID) \ -DLLGETCLASSOBJECTROUTINE(pProxyFileList,pClsID,&gPFactory) \ -DLLCANUNLOADNOW(&gPFactory) \ -CSTDSTUBBUFFERRELEASE(&gPFactory) \ -CSTDSTUBBUFFER2RELEASE(&gPFactory) \ -DLLDUMMYPURECALL \ -DLLREGISTRY_ROUTINES(pProxyFileList, pClsID) - -#define DLLDATA_STANDARD_ROUTINES DLLDATA_ROUTINES( (const ProxyFileInfo**) pProxyFileList, &CLSID_PSFactoryBuffer) - -#define CINTERFACE_PROXY_VTABLE(n) \ - struct \ - { \ - CInterfaceProxyHeader header; \ - void *Vtbl[n]; \ - } - -struct tagCInterfaceStubVtbl; -struct tagCInterfaceProxyVtbl; -typedef struct tagCInterfaceStubVtbl *PCInterfaceStubVtblList; -typedef struct tagCInterfaceProxyVtbl *PCInterfaceProxyVtblList; -typedef const char *PCInterfaceName; -typedef int __stdcall IIDLookupRtn(const IID*,int*); -typedef IIDLookupRtn *PIIDLookup; -typedef struct tagProxyFileInfo { - const PCInterfaceProxyVtblList *pProxyVtblList; - const PCInterfaceStubVtblList *pStubVtblList; - const PCInterfaceName * pNamesArray; - const IID ** pDelegatedIIDs; - const PIIDLookup pIIDLookupRtn; - unsigned short TableSize; - unsigned short TableVersion; - unsigned long Filler1; - unsigned long Filler2; - unsigned long Filler3; - unsigned long Filler4; -}ProxyFileInfo; -typedef ProxyFileInfo ExtendedProxyFileInfo; - -typedef struct tagCInterfaceProxyHeader { -#ifdef USE_STUBLESS_PROXY - const void *pStublessProxyInfo; -#endif - const IID *piid; -} CInterfaceProxyHeader; -typedef struct tagCInterfaceProxyVtbl { - CInterfaceProxyHeader header; -#if defined(__WATCOMC__) - void *Vtbl[1]; -#else -#ifdef __GNUC__ -__extension__ -#endif - void *Vtbl[0]; -#endif -} CInterfaceProxyVtbl; -typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,DWORD*); -typedef struct tagCInterfaceStubHeader { - const IID *piid; - const MIDL_SERVER_INFO *pServerInfo; - unsigned long DispatchTableCount; - const PRPC_STUB_FUNCTION *pDispatchTable; -} CInterfaceStubHeader; -typedef struct tagCInterfaceStubVtbl { - CInterfaceStubHeader header; - IRpcStubBufferVtbl Vtbl; -} CInterfaceStubVtbl; -typedef struct tagCStdStubBuffer { - const struct IRpcStubBufferVtbl * lpVtbl; - long RefCount; - struct IUnknown *pvServerObject; - const struct ICallFactoryVtbl * pCallFactoryVtbl; - const IID * pAsyncIID; - struct IPSFactoryBuffer * pPSFactory; - const struct IReleaseMarshalBuffersVtbl * pRMBVtbl; -} CStdStubBuffer; -typedef struct tagCStdPSFactoryBuffer { - const IPSFactoryBufferVtbl *lpVtbl; - long RefCount; - const ProxyFileInfo ** pProxyFileList; - long Filler1; -} CStdPSFactoryBuffer; -void RPC_ENTRY NdrProxyInitialize(void*,PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int); -void RPC_ENTRY NdrProxyGetBuffer(void*,PMIDL_STUB_MESSAGE); -void RPC_ENTRY NdrProxySendReceive(void*,MIDL_STUB_MESSAGE*); -void RPC_ENTRY NdrProxyFreeBuffer(void*,MIDL_STUB_MESSAGE*); -HRESULT RPC_ENTRY NdrProxyErrorHandler(DWORD); -void RPC_ENTRY NdrStubInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,IRpcChannelBuffer*); -void __RPC_STUB NdrStubForwardingFunction(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,DWORD*); -void RPC_ENTRY NdrStubGetBuffer(IRpcStubBuffer*,IRpcChannelBuffer*,PMIDL_STUB_MESSAGE); -HRESULT RPC_ENTRY NdrStubErrorHandler(DWORD); -HRESULT STDMETHODCALLTYPE CStdStubBuffer_QueryInterface(IRpcStubBuffer*,REFIID,void**); -ULONG STDMETHODCALLTYPE CStdStubBuffer_AddRef(IRpcStubBuffer*); -ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer*); -ULONG STDMETHODCALLTYPE NdrCStdStubBuffer_Release(IRpcStubBuffer*,IPSFactoryBuffer*); -HRESULT STDMETHODCALLTYPE CStdStubBuffer_Connect(IRpcStubBuffer*,IUnknown*); -void STDMETHODCALLTYPE CStdStubBuffer_Disconnect(IRpcStubBuffer*); -HRESULT STDMETHODCALLTYPE CStdStubBuffer_Invoke(IRpcStubBuffer*,RPCOLEMESSAGE*,IRpcChannelBuffer*); -IRpcStubBuffer* STDMETHODCALLTYPE CStdStubBuffer_IsIIDSupported(IRpcStubBuffer*,REFIID); -ULONG STDMETHODCALLTYPE CStdStubBuffer_CountRefs(IRpcStubBuffer*); -HRESULT STDMETHODCALLTYPE CStdStubBuffer_DebugServerQueryInterface(IRpcStubBuffer*,void**); -void STDMETHODCALLTYPE CStdStubBuffer_DebugServerRelease(IRpcStubBuffer*,void*); -HRESULT RPC_ENTRY NdrDllGetClassObject(REFCLSID,REFIID,void**,const ProxyFileInfo**,const CLSID*,CStdPSFactoryBuffer*); -HRESULT RPC_ENTRY NdrDllCanUnloadNow(CStdPSFactoryBuffer*); -#ifndef NT35_STRICT -HRESULT RPC_ENTRY NdrDllRegisterProxy(HMODULE,const ProxyFileInfo**,const CLSID*); -HRESULT RPC_ENTRY NdrDllUnregisterProxy(HMODULE,const ProxyFileInfo**,const CLSID*); -#define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction -ULONG STDMETHODCALLTYPE -CStdStubBuffer2_Release(IRpcStubBuffer*); -ULONG STDMETHODCALLTYPE -NdrCStdStubBuffer2_Release(IRpcStubBuffer*,IPSFactoryBuffer*); -#define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0 +# define DLLREGISTRY_ROUTINES(pfl, factory_clsid) #endif -#ifdef __cplusplus -} -#endif -#endif /* defined __cplusplus && !defined CINTERFACE */ -#endif /* ndef _RPCPROXY_H */ +#define DLLDATA_ROUTINES(pfl, factory_clsid) \ + CLSID_PSFACTORYBUFFER \ + CStdPSFactoryBuffer gPFactory = { NULL, 0, NULL, 0 }; \ + DLLDATA_GETPROXYDLLINFO(pfl, factory_clsid) \ + DLLGETCLASSOBJECTROUTINE(pfl, factory_clsid, &gPFactory) \ + DLLCANUNLOADNOW(&gPFactory) \ + CSTDSTUBBUFFERRELEASE(&gPFactory) \ + CSTDSTUBBUFFER2RELEASE(&gPFactory) \ + DLLREGISTRY_ROUTINES(pfl, factory_clsid) +#if 0 + +/* see http://www.microsoft.com/msj/0199/com/com0199.aspx */ + +RPCRTAPI HRESULT RPC_ENTRY + CreateProxyFromTypeInfo( LPTYPEINFO pTypeInfo, LPUNKNOWN pUnkOuter, REFIID riid, + LPRPCPROXYBUFFER *ppProxy, LPVOID *ppv ); +RPCRTAPI HRESULT RPC_ENTRY + CreateStubFromTypeInfo( LPTYPEINFO pTypeInfo, REFIID riid, LPUNKNOWN pUnkServer, + LPRPCSTUBBUFFER *ppStub ); + +#endif + +#endif /*__WINE_RPCDCE_H */ diff --git a/reactos/include/psdk/sensevts.h b/reactos/include/psdk/sensevts.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/reactos/include/psdk/sensevts.idl b/reactos/include/psdk/sensevts.idl new file mode 100644 index 00000000000..ec018a95c66 --- /dev/null +++ b/reactos/include/psdk/sensevts.idl @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2005 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "oaidl.idl"; + +typedef struct SENS_QOCINFO +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwOutSpeed; + DWORD dwInSpeed; +} SENS_QOCINFO, *LPSENS_QOCINFO; + +[ + object, + pointer_default(unique) +] +interface ISensNetwork : IDispatch +{ + HRESULT ConnectionMade( + [in] BSTR bstrConnection, + [in] ULONG ulType, + [in] LPSENS_QOCINFO lpQOCInfo ); + HRESULT ConnectionMadeNoQOCInfo( + [in] BSTR bstrConnection, + [in] ULONG ulType ); + HRESULT ConnectionLost( + [in] BSTR bstrConnection, + [in] ULONG ulType ); + HRESULT DestinationReachable( + [in] BSTR bstrDestination, + [in] BSTR bstrConnection, + [in] ULONG ulType, + [in] LPSENS_QOCINFO lpQOCInfo ); + HRESULT DestinationReachableNoQOCInfo( + [in] BSTR bstrDestination, + [in] BSTR bstrConnection, + [in] ULONG ulType ); +} + +[ + object, + pointer_default(unique) +] +interface ISensOnNow : IDispatch +{ + HRESULT OnAcPower( void ); + HRESULT OnBatteryPower( + [in] DWORD dwBatteryLifePercent ); + HRESULT BatteryLow( + [in] DWORD dwBatteryLifePercent ); +} + +[ + object, + pointer_default(unique) +] +interface ISensLogon : IDispatch +{ + HRESULT Logon( + [in] BSTR bstrUserName ); + HRESULT Logoff( + [in] BSTR bstrUserName ); + HRESULT StartShell( + [in] BSTR bstrUserName ); + HRESULT DisplayLock( + [in] BSTR bstrUserName ); + HRESULT DisplayUnlock( + [in] BSTR bstrUserName ); + HRESULT StartScreenSaver( + [in] BSTR bstrUserName ); + HRESULT StopScreenSaver( + [in] BSTR bstrUserName ); +} + +[ + object, + pointer_default(unique) +] +interface ISensLogon2 : IDispatch +{ + HRESULT Logon( + [in] BSTR bstrUserName, + [in] DWORD dwSessionId ); + HRESULT Logoff( + [in] BSTR bstrUserName, + [in] DWORD dwSessionId ); + HRESULT SessionDisconnect( + [in] BSTR bstrUserName, + [in] DWORD dwSessionId ); + HRESULT SessionReconnect( + [in] BSTR bstrUserName, + [in] DWORD dwSessionId ); + HRESULT PostShell( + [in] BSTR bstrUserName, + [in] DWORD dwSessionId ); +} diff --git a/reactos/include/psdk/servprov.h b/reactos/include/psdk/servprov.h deleted file mode 100644 index 883339418e7..00000000000 --- a/reactos/include/psdk/servprov.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef _SERVPROV_H -#define _SERVPROV_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -EXTERN_C const IID IID_IServiceProvider; -#define INTERFACE IServiceProvider -DECLARE_INTERFACE_(IServiceProvider,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(QueryService)(THIS_ REFGUID,REFIID,void**) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IServiceProvider_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IServiceProvider_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IServiceProvider_Release(T) (T)->lpVtbl->Release(T) -#define IServiceProvider_QueryService(T,a,b,c) (T)->lpVtbl->QueryService(T,a,b,c) -#endif - -#ifdef __cplusplus -} -#endif -#endif diff --git a/reactos/include/psdk/servprov.idl b/reactos/include/psdk/servprov.idl new file mode 100644 index 00000000000..e99c10dc4e1 --- /dev/null +++ b/reactos/include/psdk/servprov.idl @@ -0,0 +1,46 @@ +/* + * Copyright (C) 1999 Francois Gouget + * Copyright (C) 2003 Alexandre Julliard + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; + + +/***************************************************************************** + * IServiceProvider interface + */ +[ + object, + uuid(6d5140c1-7436-11ce-8034-00aa006009fa), + pointer_default(unique) +] +interface IServiceProvider : IUnknown +{ + typedef [unique] IServiceProvider *LPSERVICEPROVIDER; + + [local] + HRESULT QueryService( + [in] REFGUID guidService, + [in] REFIID riid, + [out] void ** ppvObject); + + [call_as(QueryService)] + HRESULT RemoteQueryService( + [in] REFGUID guidService, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown ** ppvObject); +} diff --git a/reactos/include/psdk/shldisp.idl b/reactos/include/psdk/shldisp.idl new file mode 100644 index 00000000000..ee722611304 --- /dev/null +++ b/reactos/include/psdk/shldisp.idl @@ -0,0 +1,95 @@ +/* + * COM interfaces for shell objects + * + * Copyright (C) 2004 Maxime Bellengé + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; +import "shtypes.idl"; +import "servprov.idl"; +import "comcat.idl"; + +/***************************************************************************** + * IAutoComplete interface + */ +[ + object, + uuid(00bb2762-6a77-11d0-a535-00c04fd7d062), + pointer_default(unique) +] +interface IAutoComplete : IUnknown +{ + typedef IAutoComplete *LPAUTOCOMPLETE; + + HRESULT Init( [in] HWND hwndEdit, + [in] IUnknown *punkACL, + [in] LPCOLESTR pwszRegKeyPath, + [in] LPCOLESTR pwszQuickComplete); + + HRESULT Enable( [in] BOOL fEnable ); +} + +/***************************************************************************** + * IAutoComplete2 interface + */ +[ + object, + uuid(eac04bc0-3791-11d2-bb95-0060977b464c), + pointer_default(unique) +] +interface IAutoComplete2 : IAutoComplete +{ + typedef IAutoComplete2 *LPAUTOCOMPLETE2; + + typedef enum _tagAUTOCOMPLETEOPTIONS + { + ACO_NONE = 0x00, /* No AutoComplete */ + ACO_AUTOSUGGEST = 0x01, /* enable autosuggest dropdown */ + ACO_AUTOAPPEND = 0x02, /* enable autoappend */ + ACO_SEARCH = 0x04, /* add search entry to completion list */ + ACO_FILTERPREFIXES = 0x08, /* don't match common prefixes (www., http://, etc) */ + ACO_USETAB = 0x10, /* use tab to select autosuggest entries */ + ACO_UPDOWNKEYDROPSLIST = 0x20, /* up/down arrow key invokes autosuggest dropdown (if enabled) */ + ACO_RTLREADING = 0x40, /* enable RTL reading order for dropdown */ + } AUTOCOMPLETEOPTIONS; + + HRESULT SetOptions( [in] DWORD dwFlag); + + HRESULT GetOptions( [out] DWORD *pdwFlag); +} + +[ + object, + uuid(9ba05970-f6a8-11cf-a442-00a0c90a8f39), + pointer_default(unique) +] +interface IFolderViewOC : IDispatch +{ + HRESULT SetFolderView( [in] IDispatch *pdisp ); +} + +[ + uuid(9ba05971-f6a8-11cf-a442-00a0c90a8f39), + hidden +] +coclass ShellFolderViewOC +{ + [default] interface IFolderViewOC; + [default, source] dispinterface DShellFolderViewEvents; +} diff --git a/reactos/include/psdk/shlguid.h b/reactos/include/psdk/shlguid.h index 9daca5de1ba..1214a2df05d 100644 --- a/reactos/include/psdk/shlguid.h +++ b/reactos/include/psdk/shlguid.h @@ -1,17 +1,26 @@ -#ifndef _SHLGUID_H -#define _SHLGUID_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif +/* + * Copyright (C) 1999 Juergen Schmied + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ -#ifdef __cplusplus -extern "C" { -#endif +#ifndef __WINE_SHLGUID_H +#define __WINE_SHLGUID_H #define DEFINE_SHLGUID(name, l, w1, w2) DEFINE_OLEGUID(name,l,w1,w2) -DEFINE_GUID(IID_IShellFolderViewCB, 0x2047E320L, 0xF2A9, 0x11CE, 0xAE, 0x65, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62); - DEFINE_SHLGUID(CLSID_ShellDesktop, 0x00021400L, 0, 0); DEFINE_SHLGUID(CLSID_ShellLink, 0x00021401L, 0, 0); @@ -32,7 +41,6 @@ DEFINE_SHLGUID(CGID_ShellServiceObject, 0x000214D2L, 0, 0); DEFINE_SHLGUID(CGID_ExplorerBarDoc, 0x000214D3L, 0, 0); DEFINE_SHLGUID(IID_IShellIcon, 0x000214E5L, 0, 0); -DEFINE_SHLGUID(IID_IShellPropSheetExt, 0x000214E9L, 0, 0); DEFINE_SHLGUID(IID_IShellDetails, 0x000214ECL, 0, 0); DEFINE_SHLGUID(IID_IDelayedRelease, 0x000214EDL, 0, 0); DEFINE_SHLGUID(IID_IShellCopyHookA, 0x000214EFL, 0, 0); @@ -44,23 +52,29 @@ DEFINE_SHLGUID(IID_IShellCopyHookW, 0x000214FCL, 0, 0); DEFINE_SHLGUID(IID_IRemoteComputer, 0x000214FEL, 0, 0); DEFINE_SHLGUID(IID_IQueryInfo, 0x00021500L, 0, 0); -DEFINE_SHLGUID(IID_IExtractIconA, 0x000214EBL, 0, 0); -DEFINE_SHLGUID(IID_IExtractIconW, 0x000214FAL, 0, 0); -DEFINE_SHLGUID(IID_IContextMenu, 0x000214E4L, 0, 0); -DEFINE_SHLGUID(IID_IContextMenu2, 0x000214F4L, 0, 0); -DEFINE_SHLGUID(IID_ICommDlgBrowser, 0x000214F1L, 0, 0); -DEFINE_SHLGUID(IID_IShellBrowser, 0x000214E2L, 0, 0); -DEFINE_SHLGUID(IID_IShellView, 0x000214E3L, 0, 0); -DEFINE_SHLGUID(IID_IShellFolder, 0x000214E6L, 0, 0); -DEFINE_SHLGUID(IID_IShellExtInit, 0x000214E8L, 0, 0); -DEFINE_SHLGUID(IID_IPersistFolder, 0x000214EAL, 0, 0); -DEFINE_SHLGUID(IID_IShellLinkA, 0x000214EEL, 0, 0); -DEFINE_SHLGUID(IID_IEnumIDList, 0x000214F2L, 0, 0); -DEFINE_SHLGUID(IID_IShellLinkW, 0x000214F9L, 0, 0); -DEFINE_SHLGUID(IID_IShellExecuteHookA, 0x000214F5L, 0, 0); -DEFINE_SHLGUID(IID_IShellExecuteHookW, 0x000214FBL, 0, 0); -DEFINE_SHLGUID(IID_INewShortcutHookA, 0x000214E1L, 0, 0); -DEFINE_SHLGUID(IID_INewShortcutHookW, 0x000214F7L, 0, 0); +DEFINE_GUID(IID_IACList, 0x77A130B0L,0x94FD,0x11D0,0xA5,0x44,0x00,0xC0,0x4F,0xD7,0xD0,0x62); +DEFINE_GUID(IID_IACList2, 0x470141A0L,0x5186,0x11D2,0xBB,0xB6,0x00,0x60,0x97,0x7B,0x46,0x4C); +DEFINE_GUID(IID_IObjMgr, 0x00BB2761L,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62); + +/* avoid duplicate definitions with shobjidl.h (FIXME) */ +/* DEFINE_SHLGUID(IID_IShellPropSheetExt, 0x000214E9L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IExtractIconA, 0x000214EBL, 0, 0); */ +/* DEFINE_SHLGUID(IID_IExtractIconW, 0x000214FAL, 0, 0); */ +/* DEFINE_SHLGUID(IID_IContextMenu, 0x000214E4L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IContextMenu2, 0x000214F4L, 0, 0); */ +/* DEFINE_SHLGUID(IID_ICommDlgBrowser, 0x000214F1L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IShellBrowser, 0x000214E2L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IShellView, 0x000214E3L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IShellFolder, 0x000214E6L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IShellExtInit, 0x000214E8L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IPersistFolder, 0x000214EAL, 0, 0); */ +/* DEFINE_SHLGUID(IID_IShellLinkA, 0x000214EEL, 0, 0); */ +/* DEFINE_SHLGUID(IID_IEnumIDList, 0x000214F2L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IShellLinkW, 0x000214F9L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IShellExecuteHookA, 0x000214F5L, 0, 0); */ +/* DEFINE_SHLGUID(IID_IShellExecuteHookW, 0x000214FBL, 0, 0); */ +/* DEFINE_SHLGUID(IID_INewShortcutHookA, 0x000214E1L, 0, 0); */ +/* DEFINE_SHLGUID(IID_INewShortcutHookW, 0x000214F7L, 0, 0); */ DEFINE_GUID(CLSID_CUrlHistory, 0x3c374a40, 0xbae4, 0x11cf, 0xbf, 0x7d, 0x00, 0xaa, 0x00, 0x69, 0x46, 0xee); #define SID_SUrlHistory CLSID_CUrlHistory @@ -71,21 +85,12 @@ DEFINE_GUID(SID_STopLevelBrowser, 0x4C96BE40L, 0x915C, 0x11CF, 0x99, 0xD3, 0x00, #define SID_SShellBrowser IID_IShellBrowser -#ifdef UNICODE -#define IID_IFileViewer IID_IFileViewerW -#define IID_IShellLink IID_IShellLinkW -#define IID_IExtractIcon IID_IExtractIconW -#define IID_IShellCopyHook IID_IShellCopyHookW -#define IID_IShellExecuteHook IID_IShellExecuteHookW -#define IID_INewShortcutHook IID_INewShortcutHookW -#else -#define IID_IFileViewer IID_IFileViewerA -#define IID_IShellLink IID_IShellLinkA -#define IID_IExtractIcon IID_IExtractIconA -#define IID_IShellCopyHook IID_IShellCopyHookA -#define IID_IShellExecuteHook IID_IShellExecuteHookA -#define IID_INewShortcutHook IID_INewShortcutHookA -#endif +#define IID_IFileViewer WINELIB_NAME_AW(IID_IFileViewer) +#define IID_IShellLink WINELIB_NAME_AW(IID_IShellLink) +#define IID_IExtractIcon WINELIB_NAME_AW(IID_IExtractIcon) +#define IID_IShellCopyHook WINELIB_NAME_AW(IID_IShellCopyHook) +#define IID_IShellExecuteHook WINELIB_NAME_AW(IID_IShellExecuteHook) +#define IID_INewShortcutHook WINELIB_NAME_AW(IID_INewShortcutHook) DEFINE_GUID(IID_IDockingWindow, 0x012dd920L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8); DEFINE_GUID(IID_IDockingWindowSite, 0x2A342FC2L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8); @@ -113,9 +118,7 @@ DEFINE_GUID(IID_IQueryAssociations, 0xc46ca590, 0x3c3f, 0x11d2, 0xbe, 0xe6, 0x00 DEFINE_GUID(CLSID_DragDropHelper, 0x4657278a, 0x411b, 0x11d2, 0x83, 0x9a, 0x00, 0xc0, 0x4f, 0xd9, 0x18, 0xd0); DEFINE_GUID(CLSID_AutoComplete, 0x00bb2763, 0x6a77, 0x11d0, 0xa5, 0x35, 0x00, 0xc0, 0x4f, 0xd7, 0xd0, 0x62); - -DEFINE_GUID(IID_IDragSourceHelper, 0xde5bf786, 0x477a, 0x11d2, 0x83, 0x9d, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0); -DEFINE_GUID(IID_IDropTargetHelper, 0x4657278b, 0x411b, 0x11d2, 0x83, 0x9a, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0); +DEFINE_GUID(CLSID_ACLMulti, 0x00bb2765, 0x6a77, 0x11d0, 0xa5, 0x35, 0x00, 0xc0, 0x4f, 0xd7, 0xd0, 0x62); #define PSGUID_SHELLDETAILS {0x28636aa6, 0x953d, 0x11d2, 0xb5, 0xd6, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0} DEFINE_GUID(FMTID_ShellDetails, 0x28636aa6, 0x953d, 0x11d2, 0xb5, 0xd6, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0); @@ -135,8 +138,5 @@ DEFINE_GUID(FMTID_Displaced, 0x9b174b33, 0x40ff, 0x11d2, 0xa2, 0x7e, 0x0, 0xc0, #define PID_DISPLACED_FROM 2 #define PID_DISPLACED_DATE 3 -#ifdef __cplusplus -} -#endif -#endif +#endif /* __WINE_SHLGUID_H */ diff --git a/reactos/include/psdk/shlobj.h b/reactos/include/psdk/shlobj.h index 0700f1fdc8e..39000f587c4 100644 --- a/reactos/include/psdk/shlobj.h +++ b/reactos/include/psdk/shlobj.h @@ -1,650 +1,729 @@ -#ifndef _SHLOBJ_H -#define _SHLOBJ_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif +/* + * Copyright (C) the Wine project + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_SHLOBJ_H +#define __WINE_SHLOBJ_H + +#include +#include +#include +#include #ifdef __cplusplus extern "C" { -#endif +#endif /* defined(__cplusplus) */ + +/* Except for specific structs, this header is byte packed */ +#include -#include -#include -#include #include -#include - -#pragma pack(push,1) - -#define BIF_RETURNONLYFSDIRS 1 -#define BIF_DONTGOBELOWDOMAIN 2 -#define BIF_STATUSTEXT 4 -#define BIF_RETURNFSANCESTORS 8 -#define BIF_EDITBOX 16 -#define BIF_VALIDATE 32 -#define BIF_NEWDIALOGSTYLE 64 -#define BIF_BROWSEINCLUDEURLS 128 -#define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE ) -#define BIF_BROWSEFORCOMPUTER 0x1000 -#define BIF_BROWSEFORPRINTER 0x2000 -#define BIF_BROWSEINCLUDEFILES 0x4000 -#define BIF_SHAREABLE 0x8000 -#define BFFM_INITIALIZED 1 -#define BFFM_SELCHANGED 2 -#define BFFM_VALIDATEFAILEDA 3 -#define BFFM_VALIDATEFAILEDW 4 -#define BFFM_SETSTATUSTEXTA (WM_USER + 100) -#define BFFM_SETSTATUSTEXTW (WM_USER + 104) -#define BFFM_ENABLEOK (WM_USER + 101) -#define BFFM_SETSELECTIONA (WM_USER + 102) -#define BFFM_SETSELECTIONW (WM_USER + 103) -#define BFFM_SETOKTEXT (WM_USER + 105) -#define BFFM_SETEXPANDED (WM_USER + 106) -#ifdef UNICODE -#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTW -#define BFFM_SETSELECTION BFFM_SETSELECTIONW -#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW -#else -#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTA -#define BFFM_SETSELECTION BFFM_SETSELECTIONA -#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA -#endif -#define DVASPECT_SHORTNAME 2 -#define SHARD_PIDL 1 -#define SHARD_PATHA 2 -#define SHARD_PATHW 3 -#ifdef UNICODE -#define SHARD_PATH SHARD_PATHW -#else -#define SHARD_PATH SHARD_PATHA -#endif -#define SHCNE_RENAMEITEM 1 -#define SHCNE_CREATE 2 -#define SHCNE_DELETE 4 -#define SHCNE_MKDIR 8 -#define SHCNE_RMDIR 16 -#define SHCNE_MEDIAINSERTED 32 -#define SHCNE_MEDIAREMOVED 64 -#define SHCNE_DRIVEREMOVED 128 -#define SHCNE_DRIVEADD 256 -#define SHCNE_NETSHARE 512 -#define SHCNE_NETUNSHARE 1024 -#define SHCNE_ATTRIBUTES 2048 -#define SHCNE_UPDATEDIR 4096 -#define SHCNE_UPDATEITEM 8192 -#define SHCNE_SERVERDISCONNECT 16384 -#define SHCNE_UPDATEIMAGE 32768 -#define SHCNE_DRIVEADDGUI 65536 -#define SHCNE_RENAMEFOLDER 0x20000 -#define SHCNE_FREESPACE 0x40000 -#define SHCNE_ASSOCCHANGED 0x8000000 -#define SHCNE_DISKEVENTS 0x2381F -#define SHCNE_GLOBALEVENTS 0xC0581E0 -#define SHCNE_ALLEVENTS 0x7FFFFFFF -#define SHCNE_INTERRUPT 0x80000000 -#define SHCNF_IDLIST 0 -#define SHCNF_PATHA 1 -#define SHCNF_PRINTERA 2 -#define SHCNF_DWORD 3 -#define SHCNF_PATHW 5 -#define SHCNF_PRINTERW 6 -#define SHCNF_TYPE 0xFF -#define SHCNF_FLUSH 0x1000 -#define SHCNF_FLUSHNOWAIT 0x2000 -#ifdef UNICODE -#define SHCNF_PATH SHCNF_PATHW -#define SHCNF_PRINTER SHCNF_PRINTERW -#else -#define SHCNF_PATH SHCNF_PATHA -#define SHCNF_PRINTER SHCNF_PRINTERA -#endif -#define SFGAO_CANCOPY DROPEFFECT_COPY -#define SFGAO_CANMOVE DROPEFFECT_MOVE -#define SFGAO_CANLINK DROPEFFECT_LINK -#define SFGAO_STORAGE 0x00000008L -#define SFGAO_CANRENAME 0x00000010L -#define SFGAO_CANDELETE 0x00000020L -#define SFGAO_HASPROPSHEET 0x00000040L -#define SFGAO_DROPTARGET 0x00000100L -#define SFGAO_CAPABILITYMASK 0x00000177L -#define SFGAO_ISSLOW 0x00004000L -#define SFGAO_GHOSTED 0x00008000L -#define SFGAO_LINK 0x00010000L -#define SFGAO_SHARE 0x00020000L -#define SFGAO_READONLY 0x00040000L -#define SFGAO_HIDDEN 0x00080000L -#define SFGAO_DISPLAYATTRMASK 0x000F0000L -#define SFGAO_FILESYSANCESTOR 0x10000000L -#define SFGAO_FOLDER 0x20000000L -#define SFGAO_FILESYSTEM 0x40000000L -#define SFGAO_HASSUBFOLDER 0x80000000L -#define SFGAO_CONTENTSMASK 0x80000000L -#define SFGAO_VALIDATE 0x01000000L -#define SFGAO_REMOVABLE 0x02000000L -#define SFGAO_COMPRESSED 0x04000000L -#define SFGAO_STORAGEANCESTOR 0x00800000L -#define STRRET_WSTR 0 -#define STRRET_OFFSET 1 -#define STRRET_CSTR 2 -#define SHGDFIL_FINDDATA 1 -#define SHGDFIL_NETRESOURCE 2 -#define SHGDFIL_DESCRIPTIONID 3 -#define SHDID_ROOT_REGITEM 1 -#define SHDID_FS_FILE 2 -#define SHDID_FS_DIRECTORY 3 -#define SHDID_FS_OTHER 4 -#define SHDID_COMPUTER_DRIVE35 5 -#define SHDID_COMPUTER_DRIVE525 6 -#define SHDID_COMPUTER_REMOVABLE 7 -#define SHDID_COMPUTER_FIXED 8 -#define SHDID_COMPUTER_NETDRIVE 9 -#define SHDID_COMPUTER_CDROM 10 -#define SHDID_COMPUTER_RAMDISK 11 -#define SHDID_COMPUTER_OTHER 12 -#define SHDID_NET_DOMAIN 13 -#define SHDID_NET_SERVER 14 -#define SHDID_NET_SHARE 15 -#define SHDID_NET_RESTOFNET 16 -#define SHDID_NET_OTHER 17 -#ifndef REGSTR_PATH_EXPLORER -#define REGSTR_PATH_EXPLORER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer") -#endif -#define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders") - -#define CSIDL_DESKTOP 0x0000 -#define CSIDL_INTERNET 0x0001 -#define CSIDL_PROGRAMS 0x0002 -#define CSIDL_CONTROLS 0x0003 -#define CSIDL_PRINTERS 0x0004 -#define CSIDL_PERSONAL 0x0005 -#define CSIDL_FAVORITES 0x0006 -#define CSIDL_STARTUP 0x0007 -#define CSIDL_RECENT 0x0008 -#define CSIDL_SENDTO 0x0009 -#define CSIDL_BITBUCKET 0x000a -#define CSIDL_STARTMENU 0x000b -#define CSIDL_MYDOCUMENTS 0x000c -#define CSIDL_MYMUSIC 0x000d -#define CSIDL_MYVIDEO 0x000e -#define CSIDL_DESKTOPDIRECTORY 0x0010 -#define CSIDL_DRIVES 0x0011 -#define CSIDL_NETWORK 0x0012 -#define CSIDL_NETHOOD 0x0013 -#define CSIDL_FONTS 0x0014 -#define CSIDL_TEMPLATES 0x0015 -#define CSIDL_COMMON_STARTMENU 0x0016 -#define CSIDL_COMMON_PROGRAMS 0X0017 -#define CSIDL_COMMON_STARTUP 0x0018 -#define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019 -#define CSIDL_APPDATA 0x001a -#define CSIDL_PRINTHOOD 0x001b -#define CSIDL_LOCAL_APPDATA 0x001c -#define CSIDL_ALTSTARTUP 0x001d -#define CSIDL_COMMON_ALTSTARTUP 0x001e -#define CSIDL_COMMON_FAVORITES 0x001f -#define CSIDL_INTERNET_CACHE 0x0020 -#define CSIDL_COOKIES 0x0021 -#define CSIDL_HISTORY 0x0022 -#define CSIDL_COMMON_APPDATA 0x0023 -#define CSIDL_WINDOWS 0x0024 -#define CSIDL_SYSTEM 0x0025 -#define CSIDL_PROGRAM_FILES 0x0026 -#define CSIDL_MYPICTURES 0x0027 -#define CSIDL_PROFILE 0x0028 -#define CSIDL_SYSTEMX86 0x0029 -#define CSIDL_PROGRAM_FILESX86 0x002a -#define CSIDL_PROGRAM_FILES_COMMON 0x002b -#define CSIDL_PROGRAM_FILES_COMMONX86 0x002c -#define CSIDL_COMMON_TEMPLATES 0x002d -#define CSIDL_COMMON_DOCUMENTS 0x002e -#define CSIDL_COMMON_ADMINTOOLS 0x002f -#define CSIDL_ADMINTOOLS 0x0030 -#define CSIDL_CONNECTIONS 0x0031 -#define CSIDL_COMMON_MUSIC 0x0035 -#define CSIDL_COMMON_PICTURES 0x0036 -#define CSIDL_COMMON_VIDEO 0x0037 -#define CSIDL_RESOURCES 0x0038 -#define CSIDL_RESOURCES_LOCALIZED 0x0039 -#define CSIDL_COMMON_OEM_LINKS 0x003a -#define CSIDL_CDBURN_AREA 0x003b -#define CSIDL_COMPUTERSNEARME 0x003d -#define CSIDL_PROFILES 0x003e -#define CSIDL_FOLDER_MASK 0x00ff -#define CSIDL_FLAG_PER_USER_INIT 0x0800 -#define CSIDL_FLAG_NO_ALIAS 0x1000 -#define CSIDL_FLAG_DONT_VERIFY 0x4000 -#define CSIDL_FLAG_CREATE 0x8000 -#define CSIDL_FLAG_MASK 0xff00 - -#define CFSTR_SHELLIDLIST TEXT("Shell IDList Array") -#define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets") -#define CFSTR_NETRESOURCES TEXT("Net Resource") -#define CFSTR_FILECONTENTS TEXT("FileContents") -#define CFSTR_FILENAMEA TEXT("FileName") -#define CFSTR_FILENAMEMAPA TEXT("FileNameMap") -#define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor") -#define CFSTR_INETURLA TEXT("UniformResourceLocator") -#define CFSTR_SHELLURL CFSTR_INETURLA -#define CFSTR_FILENAMEW TEXT("FileNameW") -#define CFSTR_FILENAMEMAPW TEXT("FileNameMapW") -#define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW") -#define CFSTR_INETURLW TEXT("UniformResourceLocatorW") -#ifdef UNICODE -#define CFSTR_FILENAME CFSTR_FILENAMEW -#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPW -#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORW -#define CFSTR_INETURL CFSTR_INETURLW -#else -#define CFSTR_FILENAME CFSTR_FILENAMEA -#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPA -#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORA -#define CFSTR_INETURL CFSTR_INETURLA -#endif -#define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName") -#define CFSTR_INDRAGLOOP TEXT("InShellDragLoop") -#define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded") -#define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect") -#define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect") -#define CMF_NORMAL 0 -#define CMF_DEFAULTONLY 1 -#define CMF_VERBSONLY 2 -#define CMF_EXPLORE 4 -#define CMF_NOVERBS 8 -#define CMF_CANRENAME 16 -#define CMF_NODEFAULT 32 -#define CMF_INCLUDESTATIC 64 -#define CMF_RESERVED 0xffff0000 -#define GCS_VERBA 0 -#define GCS_HELPTEXTA 1 -#define GCS_VALIDATEA 2 -#define GCS_VERBW 4 -#define GCS_HELPTEXTW 5 -#define GCS_VALIDATEW 6 -#define GCS_UNICODE 4 -#ifdef UNICODE -#define GCS_VERB GCS_VERBW -#define GCS_HELPTEXT GCS_HELPTEXTW -#define GCS_VALIDATE GCS_VALIDATEW -#else -#define GCS_VERB GCS_VERBA -#define GCS_HELPTEXT GCS_HELPTEXTA -#define GCS_VALIDATE GCS_VALIDATEA -#endif -#define CMDSTR_NEWFOLDERA "NewFolder" -#define CMDSTR_VIEWLISTA "ViewList" -#define CMDSTR_VIEWDETAILSA "ViewDetails" -#define CMDSTR_NEWFOLDERW L"NewFolder" -#define CMDSTR_VIEWLISTW L"ViewList" -#define CMDSTR_VIEWDETAILSW L"ViewDetails" -#ifdef UNICODE -#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDERW -#define CMDSTR_VIEWLIST CMDSTR_VIEWLISTW -#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILSW -#else -#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDER -#define CMDSTR_VIEWLIST CMDSTR_VIEWLIST -#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILS -#endif -#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY -#define CMIC_MASK_ICON SEE_MASK_ICON -#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI -#define CMIC_MASK_UNICODE SEE_MASK_UNICODE -#define CMIC_MASK_MODAL 0x80000000 -#define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS -#define GIL_OPENICON 1 -#define GIL_FORSHELL 2 -#define GIL_ASYNC 32 -#define GIL_DEFAULTICON 64 -#define GIL_FORSHORTCUT 128 -#define GIL_SIMULATEDOC 1 -#define GIL_PERINSTANCE 2 -#define GIL_PERCLASS 4 -#define GIL_NOTFILENAME 8 -#define GIL_DONTCACHE 16 -#define FVSIF_RECT 1 -#define FVSIF_PINNED 2 -#define FVSIF_NEWFAILED 0x8000000 -#define FVSIF_NEWFILE 0x80000000 -#define FVSIF_CANVIEWIT 0x40000000 -#define CDBOSC_SETFOCUS 0 -#define CDBOSC_KILLFOCUS 1 -#define CDBOSC_SELCHANGE 2 -#define CDBOSC_RENAME 3 -#define FCIDM_SHVIEWFIRST 0 -#define FCIDM_SHVIEWLAST 0x7fff -#define FCIDM_BROWSERFIRST 0xa000 -#define FCIDM_BROWSERLAST 0xbf00 -#define FCIDM_GLOBALFIRST 0x8000 -#define FCIDM_GLOBALLAST 0x9fff -#define FCIDM_MENU_FILE FCIDM_GLOBALFIRST -#define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040) -#define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080) -#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081) -#define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0) -#define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1) -#define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100) -#define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140) -#define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150) -#define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170) -#define FCIDM_TOOLBAR FCIDM_BROWSERFIRST -#define FCIDM_STATUS (FCIDM_BROWSERFIRST+1) -#define SBSP_DEFBROWSER 0 -#define SBSP_SAMEBROWSER 1 -#define SBSP_NEWBROWSER 2 -#define SBSP_DEFMODE 0 -#define SBSP_OPENMODE 16 -#define SBSP_EXPLOREMODE 32 -#define SBSP_ABSOLUTE 0 -#define SBSP_HELPMODE 0x40 -#define SBSP_NOTRANSFERHIST 0x80 -#define SBSP_RELATIVE 0x1000 -#define SBSP_PARENT 0x2000 -#define SBSP_NAVIGATEBACK 0x4000 -#define SBSP_NAVIGATEFORWARD 0x8000 -#define SBSP_ALLOW_AUTONAVIGATE 0x10000 -#define SBSP_NOAUTOSELECT 0x4000000 -#define SBSP_WRITENOHISTORY 0x8000000 -#define SBSP_INITIATEDBYHLINKFRAME 0x80000000 -#define SBSP_REDIRECT 0x40000000 -#define FCW_STATUS 1 -#define FCW_TOOLBAR 2 -#define FCW_TREE 3 -#define FCW_INTERNETBAR 6 -#define FCW_PROGRESS 8 -#define FCT_MERGE 1 -#define FCT_CONFIGABLE 2 -#define FCT_ADDTOEND 4 -#define SVSI_DESELECT 0 -#define SVSI_SELECT 1 -#define SVSI_EDIT 3 -#define SVSI_DESELECTOTHERS 4 -#define SVSI_ENSUREVISIBLE 8 -#define SVSI_FOCUSED 16 -#define SVGIO_BACKGROUND 0 -#define SVGIO_SELECTION 1 -#define SVGIO_ALLVIEW 2 -#define SV2GV_CURRENTVIEW ((UINT)-1) -#define SV2GV_DEFAULTVIEW ((UINT)-2) -#define SHCNE_RENAMEITEM 0x00000001 -#define SHCNE_CREATE 0x00000002 -#define SHCNE_DELETE 0x00000004 -#define SHCNE_MKDIR 0x00000008 -#define SHCNE_RMDIR 0x00000010 -#define SHCNE_MEDIAINSERTED 0x00000020 -#define SHCNE_MEDIAREMOVED 0x00000040 -#define SHCNE_DRIVEREMOVED 0x00000080 -#define SHCNE_DRIVEADD 0x00000100 -#define SHCNE_NETSHARE 0x00000200 -#define SHCNE_NETUNSHARE 0x00000400 -#define SHCNE_ATTRIBUTES 0x00000800 -#define SHCNE_UPDATEDIR 0x00001000 -#define SHCNE_UPDATEITEM 0x00002000 -#define SHCNE_SERVERDISCONNECT 0x00004000 -#define SHCNE_UPDATEIMAGE 0x00008000 -#define SHCNE_DRIVEADDGUI 0x00010000 -#define SHCNE_RENAMEFOLDER 0x00020000 -#define SHCNE_FREESPACE 0x00040000 -#define SHCNE_EXTENDED_EVENT 0x04000000 -#define SHCNE_ASSOCCHANGED 0x08000000 -#define SHCNE_DISKEVENTS 0x0002381F -#define SHCNE_GLOBALEVENTS 0x0C0581E0 -#define SHCNE_ALLEVENTS 0x7FFFFFFF -#define SHCNE_INTERRUPT 0x80000000 -#define SHCNEE_ORDERCHANGED 0x0002L -#define SHCNEE_MSI_CHANGE 0x0004L -#define SHCNEE_MSI_UNINSTALL 0x0005L -#define SHCNF_IDLIST 0x0000 -#define SHCNF_PATHA 0x0001 -#define SHCNF_PRINTERA 0x0002 -#define SHCNF_DWORD 0x0003 -#define SHCNF_PATHW 0x0005 -#define SHCNF_PRINTERW 0x0006 -#define SHCNF_TYPE 0x00FF -#define SHCNF_FLUSH 0x1000 -#define SHCNF_FLUSHNOWAIT 0x2000 -#ifdef UNICODE -#define SHCNF_PATH SHCNF_PATHW -#define SHCNF_PRINTER SHCNF_PRINTERW -#else -#define SHCNF_PATH SHCNF_PATHA -#define SHCNF_PRINTER SHCNF_PRINTERA -#endif -#define PCS_FATAL 0x80000000 -#define PCS_REPLACEDCHAR 0x00000001 -#define PCS_REMOVEDCHAR 0x00000002 -#define PCS_TRUNCATED 0x00000004 -#define PCS_PATHTOOLONG 0x00000008 -#define SHFMT_ERROR 0xFFFFFFFFL -#define SHFMT_CANCEL 0xFFFFFFFEL -#define SHFMT_NOFORMAT 0xFFFFFFFDL -#define EXP_SZ_LINK_SIG 0xa0000001 -#define NT_CONSOLE_PROPS_SIG 0xa0000002 -#define NT_FE_CONSOLE_PROPS_SIG 0xa0000004 -#define EXP_SPECIAL_FOLDER_SIG 0xa0000005 -#define EXP_DARWIN_ID_SIG 0xa0000006 -#define EXP_LOGO3_ID_SIG 0xa0000007 -#define EXP_SZ_ICON_SIG 0xa0000007 -#define SHOP_PRINTERNAME 0x01 -#define SHOP_FILEPATH 0x02 -#define SHOP_VOLUMEGUID 0x04 - -typedef ULONG SFGAOF; -typedef DWORD SHGDNF; +#include #ifndef HPSXA_DEFINED #define HPSXA_DEFINED DECLARE_HANDLE(HPSXA); #endif -typedef struct _IDA { - UINT cidl; +UINT WINAPI SHAddFromPropSheetExtArray(HPSXA,LPFNADDPROPSHEETPAGE,LPARAM); +LPVOID WINAPI SHAlloc(ULONG); +HRESULT WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*); +HPSXA WINAPI SHCreatePropSheetExtArray(HKEY,LPCWSTR,UINT); +DWORD WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*); +DWORD WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*); +#define SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString) +HRESULT WINAPI SHCreateStdEnumFmtEtc(DWORD,const FORMATETC *,IEnumFORMATETC**); +void WINAPI SHDestroyPropSheetExtArray(HPSXA); +BOOL WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST); +DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT); +void WINAPI SHFree(LPVOID); +BOOL WINAPI GetFileNameFromBrowse(HWND,LPSTR,DWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR); +HRESULT WINAPI SHGetInstanceExplorer(IUnknown**); +BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR); +BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR); +#define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList) +INT WINAPI SHHandleUpdateImage(LPCITEMIDLIST); +HRESULT WINAPI SHILCreateFromPath(LPCWSTR,LPITEMIDLIST*,DWORD*); +HRESULT WINAPI SHLoadOLE(LPARAM); +UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA,UINT,LPFNADDPROPSHEETPAGE,LPARAM); +LPITEMIDLIST WINAPI SHSimpleIDListFromPath(LPCWSTR); +int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*); +HRESULT WINAPI SHStartNetConnectionDialog(HWND,LPCSTR,DWORD); +VOID WINAPI SHUpdateImageA(LPCSTR,INT,UINT,INT); +VOID WINAPI SHUpdateImageW(LPCWSTR,INT,UINT,INT); +#define SHUpdateImage WINELIB_NAME_AW(SHUpdateImage) +int WINAPI RestartDialog(HWND,LPCWSTR,DWORD); +int WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD); + +#define SHFMT_ERROR 0xFFFFFFFFL /* Error on last format, drive may be formatable */ +#define SHFMT_CANCEL 0xFFFFFFFEL /* Last format was canceled */ +#define SHFMT_NOFORMAT 0xFFFFFFFDL /* Drive is not formatable */ + +/* SHFormatDrive flags */ +#define SHFMT_ID_DEFAULT 0xFFFF +#define SHFMT_OPT_FULL 1 +#define SHFMT_OPT_SYSONLY 2 + +/* SHObjectProperties flags */ +#define SHOP_PRINTERNAME 0x01 +#define SHOP_FILEPATH 0x02 +#define SHOP_VOLUMEGUID 0x04 + +BOOL WINAPI SHObjectProperties(HWND,DWORD,LPCWSTR,LPCWSTR); + +#define PCS_FATAL 0x80000000 +#define PCS_REPLACEDCHAR 0x00000001 +#define PCS_REMOVEDCHAR 0x00000002 +#define PCS_TRUNCATED 0x00000004 +#define PCS_PATHTOOLONG 0x00000008 + +int WINAPI PathCleanupSpec(LPCWSTR,LPWSTR); + +/***************************************************************************** + * IContextMenu interface + */ + + +/* DATAOBJECT_InitShellIDList*/ +#define CFSTR_SHELLIDLIST "Shell IDList Array" /* CF_IDLIST */ + +typedef struct +{ UINT cidl; UINT aoffset[1]; -} CIDA,*LPIDA; -typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM); -typedef struct _browseinfoA { - HWND hwndOwner; - LPCITEMIDLIST pidlRoot; - LPSTR pszDisplayName; - LPCSTR lpszTitle; - UINT ulFlags; - BFFCALLBACK lpfn; - LPARAM lParam; - int iImage; -} BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA; -typedef struct _browseinfoW { - HWND hwndOwner; - LPCITEMIDLIST pidlRoot; - LPWSTR pszDisplayName; - LPCWSTR lpszTitle; - UINT ulFlags; - BFFCALLBACK lpfn; - LPARAM lParam; - int iImage; -} BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW; -typedef struct _CMInvokeCommandInfo { - DWORD cbSize; - DWORD fMask; - HWND hwnd; - LPCSTR lpVerb; - LPCSTR lpParameters; - LPCSTR lpDirectory; - int nShow; - DWORD dwHotKey; - HANDLE hIcon; -} CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO; -typedef struct _CMInvokeCommandInfoEx { - DWORD cbSize; - DWORD fMask; - HWND hwnd; - LPCSTR lpVerb; - LPCSTR lpParameters; - LPCSTR lpDirectory; - INT nShow; - DWORD dwHotKey; - HANDLE hIcon; - LPCSTR lpTitle; - LPCWSTR lpVerbW; - LPCWSTR lpParametersW; - LPCWSTR lpDirectoryW; - LPCWSTR lpTitleW; - POINT ptInvoke; -} CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX; -typedef struct _DROPFILES { - DWORD pFiles; - POINT pt; - BOOL fNC; - BOOL fWide; -} DROPFILES,*LPDROPFILES; -typedef enum tagSHGDN { - SHGDN_NORMAL=0, - SHGDN_INFOLDER, - SHGDN_FOREDITING=0x1000, - SHGDN_INCLUDE_NONFILESYS=0x2000, - SHGDN_FORADDRESSBAR=0x4000, - SHGDN_FORPARSING=0x8000 -} SHGNO; -typedef enum { - SHGFP_TYPE_CURRENT = 0, - SHGFP_TYPE_DEFAULT = 1 -} SHGFP_TYPE; -typedef enum tagSHCONTF { - SHCONTF_FOLDERS = 32, - SHCONTF_NONFOLDERS = 64, - SHCONTF_INCLUDEHIDDEN = 128, - SHCONTF_INIT_ON_FIRST_NEXT = 256, - SHCONTF_NETPRINTERSRCH = 512, - SHCONTF_SHAREABLE = 1024, - SHCONTF_STORAGE = 2048 -} SHCONTF; -typedef enum { - FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16, - FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000 -} FD_FLAGS; -typedef struct _FILEDESCRIPTOR { - DWORD dwFlags; - CLSID clsid; - SIZEL sizel; - POINTL pointl; - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - CHAR cFileName[MAX_PATH]; -} FILEDESCRIPTOR,*LPFILEDESCRIPTOR; -typedef struct _FILEGROUPDESCRIPTOR { - UINT cItems; - FILEDESCRIPTOR fgd[1]; -} FILEGROUPDESCRIPTOR,*LPFILEGROUPDESCRIPTOR; -typedef enum { - SLR_NO_UI=1, - SLR_ANY_MATCH=2, - SLR_UPDATE=4, - SLR_NOUPDATE=8, - SLR_NOSEARCH=16, - SLR_NOTRACK=32, - SLR_NOLINKINFO=64, - SLR_INVOKE_MSI=128 -} SLR_FLAGS; -typedef enum { - SLGP_SHORTPATH=0x1, - SLGP_UNCPRIORITY=0x2, - SLGP_RAWPATH=0x4 -} SLGP_FLAGS; -typedef PBYTE LPVIEWSETTINGS; -typedef enum { - FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8, - FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128, - FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800, - FWF_SINGLECLICKACTIVATE=0x8000 -} FOLDERFLAGS; -typedef enum { - FVM_ICON=1, - FVM_SMALLICON, - FVM_LIST, - FVM_DETAILS -} FOLDERVIEWMODE; -typedef struct { - UINT ViewMode; - UINT fFlags; -} FOLDERSETTINGS,*LPFOLDERSETTINGS; -typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS; -typedef struct { - DWORD cbSize; - HWND hwndOwner; - int iShow; - DWORD dwFlags; - RECT rect; - LPUNKNOWN punkRel; - OLECHAR strNewFile[MAX_PATH]; -} FVSHOWINFO,*LPFVSHOWINFO; -typedef struct _NRESARRAY { - UINT cItems; - NETRESOURCE nr[1]; -} NRESARRAY, *LPNRESARRAY; -enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY }; -enum { - SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION, - SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS -}; -typedef enum { - SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS, - SVUIA_INPLACEACTIVATE -} SVUIA_STATUS; -#if (_WIN32_IE >= 0x0500) -typedef struct tagEXTRASEARCH -{ - GUID guidSearch; - WCHAR wszFriendlyName[80]; - WCHAR wszUrl[2084]; -} EXTRASEARCH, *LPEXTRASEARCH; -typedef DWORD SHCOLSTATEF; -typedef struct -{ - GUID fmtid; - DWORD pid; -} SHCOLUMNID, *LPSHCOLUMNID; -typedef const SHCOLUMNID *LPCSHCOLUMNID; -typedef struct -{ - LPITEMIDLIST pidlTargetFolder; - WCHAR szTargetParsingName[MAX_PATH]; - WCHAR szNetworkProvider[MAX_PATH]; - DWORD dwAttributes; - int csidl; -} PERSIST_FOLDER_TARGET_INFO; +} CIDA, *LPIDA; + +#define CFSTR_SHELLIDLISTOFFSET "Shell Object Offsets" /* CF_OBJECTPOSITIONS */ +#define CFSTR_NETRESOURCES "Net Resource" /* CF_NETRESOURCE */ + +/* DATAOBJECT_InitFileGroupDesc */ +#define CFSTR_FILEDESCRIPTORA "FileGroupDescriptor" /* CF_FILEGROUPDESCRIPTORA */ + +#define CFSTR_FILEDESCRIPTORW "FileGroupDescriptorW" /* CF_FILEGROUPDESCRIPTORW */ + +/* DATAOBJECT_InitFileContents*/ +#define CFSTR_FILECONTENTS "FileContents" /* CF_FILECONTENTS */ + +#ifdef UNICODE +#define CFSTR_FILENAME L"FileNameW" +#define CFSTR_FILENAMEMAP L"FileNameMapW" +#define CFSTR_FILEDESCRIPTOR L"FileGroupDescriptorW" +#define CFSTR_SHELLURL L"UniformResourceLocatorW" +#else +#define CFSTR_FILENAME "FileName" +#define CFSTR_FILENAMEMAP "FileNameMap" +#define CFSTR_FILEDESCRIPTOR "FileGroupDescriptor" +#define CFSTR_SHELLURL "UniformResourceLocator" #endif -typedef struct _SHChangeNotifyEntry + +#define CFSTR_FILENAMEW L"FileNameW" +#define CFSTR_FILENAMEA "FileName" +#define CFSTR_FILENAMEMAPA "FileNameMap" /* CF_FILENAMEMAPA */ +#define CFSTR_FILENAMEMAPW "FileNameMapW" /* CF_FILENAMEMAPW */ + +#define CFSTR_PRINTERGROUP "PrinterFriendlyName" /* CF_PRINTERS */ +#define CFSTR_PREFERREDDROPEFFECT "Preferred DropEffect" +#define CFSTR_PERFORMEDDROPEFFECT "Performed DropEffect" +#define CFSTR_PASTESUCCEEDED "Paste Succeeded" +#define CFSTR_INDRAGLOOP "InShellDragLoop" + +/************************************************************************ +* IShellView interface +*/ + +typedef GUID SHELLVIEWID; +#define SV_CLASS_NAME ("SHELLDLL_DefView") + +#define FCIDM_SHVIEWFIRST 0x0000 +/* undocumented */ +#define FCIDM_SHVIEW_ARRANGE 0x7001 +#define FCIDM_SHVIEW_DELETE 0x7011 +#define FCIDM_SHVIEW_PROPERTIES 0x7013 +#define FCIDM_SHVIEW_CUT 0x7018 +#define FCIDM_SHVIEW_COPY 0x7019 +#define FCIDM_SHVIEW_INSERT 0x701A +#define FCIDM_SHVIEW_UNDO 0x701B +#define FCIDM_SHVIEW_INSERTLINK 0x701C +#define FCIDM_SHVIEW_SELECTALL 0x7021 +#define FCIDM_SHVIEW_INVERTSELECTION 0x7022 + +#define FCIDM_SHVIEW_BIGICON 0x7029 +#define FCIDM_SHVIEW_SMALLICON 0x702A +#define FCIDM_SHVIEW_LISTVIEW 0x702B +#define FCIDM_SHVIEW_REPORTVIEW 0x702C +/* 0x7030-0x703f are used by the shellbrowser */ +#define FCIDM_SHVIEW_AUTOARRANGE 0x7031 +#define FCIDM_SHVIEW_SNAPTOGRID 0x7032 + +#define FCIDM_SHVIEW_HELP 0x7041 +#define FCIDM_SHVIEW_RENAME 0x7050 +#define FCIDM_SHVIEW_CREATELINK 0x7051 +#define FCIDM_SHVIEW_NEWLINK 0x7052 +#define FCIDM_SHVIEW_NEWFOLDER 0x7053 + +#define FCIDM_SHVIEW_REFRESH 0x7100 /* FIXME */ +#define FCIDM_SHVIEW_EXPLORE 0x7101 /* FIXME */ +#define FCIDM_SHVIEW_OPEN 0x7102 /* FIXME */ + +#define FCIDM_SHVIEWLAST 0x7fff +#define FCIDM_BROWSERFIRST 0xA000 +/* undocumented toolbar items from stddlg's*/ +#define FCIDM_TB_UPFOLDER 0xA001 +#define FCIDM_TB_NEWFOLDER 0xA002 +#define FCIDM_TB_SMALLICON 0xA003 +#define FCIDM_TB_REPORTVIEW 0xA004 +#define FCIDM_TB_DESKTOP 0xA005 /* FIXME */ + +#define FCIDM_BROWSERLAST 0xbf00 +#define FCIDM_GLOBALFIRST 0x8000 +#define FCIDM_GLOBALLAST 0x9fff + +/* +* Global submenu IDs and separator IDs +*/ +#define FCIDM_MENU_FILE (FCIDM_GLOBALFIRST+0x0000) +#define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040) +#define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080) +#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081) +#define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0) +#define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1) +#define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100) +#define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140) +#define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150) +#define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170) + +/* control IDs known to the view */ +#define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0) +#define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1) + + +/**************************************************************************** + * IShellIcon interface + */ + +#define INTERFACE IShellIcon +DECLARE_INTERFACE_(IShellIcon,IUnknown) { - LPCITEMIDLIST pidl; - BOOL fRecursive; -} SHChangeNotifyEntry; -#define NUM_POINTS 3 + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IShellIcon methods ***/ + STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl, UINT flags, LPINT lpIconIndex) PURE; +}; +#undef INTERFACE + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IShellIcon_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IShellIcon_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IShellIcon_Release(p) (p)->lpVtbl->Release(p) +/*** IShellIcon methods ***/ +#define IShellIcon_GetIconOf(p,a,b,c) (p)->lpVtbl->GetIconOf(p,a,b,c) +#endif + +typedef IShellIcon *LPSHELLICON; + +/* IQueryInfo interface */ +#define INTERFACE IQueryInfo +DECLARE_INTERFACE_(IQueryInfo,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IQueryInfo methods ***/ + STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, WCHAR** lppTips) PURE; + STDMETHOD(GetInfoFlags)(THIS_ DWORD* lpFlags) PURE; +}; +#undef INTERFACE + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IQueryInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IQueryInfo_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IQueryInfo_Release(p) (p)->lpVtbl->Release(p) +/*** IQueryInfo methods ***/ +#define IQueryInfo_GetInfoTip(p,a,b) (p)->lpVtbl->GetInfoTip(p,a,b) +#define IQueryInfo_GetInfoFlags(p,a) (p)->lpVtbl->GetInfoFlags(p,a) +#endif + +/* IInputObject interface */ +#define INTERFACE IInputObject +DECLARE_INTERFACE_(IInputObject,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IInputObject methods ***/ + STDMETHOD(UIActivateIO)(THIS_ BOOL bActivating, LPMSG lpMsg) PURE; + STDMETHOD(HasFocusIO)(THIS) PURE; + STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE; +}; +#undef INTERFACE + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IInputObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IInputObject_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IInputObject_Release(p) (p)->lpVtbl->Release(p) +/*** IInputObject methods ***/ +#define IInputObject_UIActivateIO(p,a,b) (p)->lpVtbl->UIActivateIO(p,a,b) +#define IInputObject_HasFocusIO(p) (p)->lpVtbl->HasFocusIO(p) +#define IInputObject_TranslateAcceleratorIO(p,a) (p)->lpVtbl->TranslateAcceleratorIO(p,a) +#endif + +/* IInputObjectSite interface */ +#define INTERFACE IInputObjectSite +DECLARE_INTERFACE_(IInputObjectSite,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IInputObjectSite methods ***/ + STDMETHOD(OnFocusChangeIS)(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) PURE; +}; +#undef INTERFACE + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IInputObjectSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IInputObjectSite_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IInputObjectSite_Release(p) (p)->lpVtbl->Release(p) +/*** IInputObject methods ***/ +#define IInputObjectSite_OnFocusChangeIS(p,a,b) (p)->lpVtbl->OnFocusChangeIS(p,a,b) +#endif + +/* IObjMgr interface */ +#define INTERFACE IObjMgr +DECLARE_INTERFACE_(IObjMgr,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IObjMgr methods ***/ + STDMETHOD(Append)(THIS_ LPUNKNOWN punk) PURE; + STDMETHOD(Remove)(THIS_ LPUNKNOWN punk) PURE; +}; +#undef INTERFACE + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IObjMgr_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IObjMgr_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IObjMgr_Release(p) (p)->lpVtbl->Release(p) +/*** IObjMgr methods ***/ +#define IObjMgr_Append(p,a) (p)->lpVtbl->Append(p,a) +#define IObjMgr_Remove(p,a) (p)->lpVtbl->Remove(p,a) +#endif + +/* IACList interface */ +#define INTERFACE IACList +DECLARE_INTERFACE_(IACList,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + /*** IACList methods ***/ + STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE; +}; +#undef INTERFACE + +#if !defined(__cplusplus) || defined(CINTERFACE) +/*** IUnknown methods ***/ +#define IACList_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IACList_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IACList_Release(p) (p)->lpVtbl->Release(p) +/*** IACList methods ***/ +#define IACList_Expand(p,a) (p)->lpVtbl->Expand(p,a) +#endif + + +/**************************************************************************** +* SHAddToRecentDocs API +*/ +#define SHARD_PIDL 0x00000001L +#define SHARD_PATHA 0x00000002L +#define SHARD_PATHW 0x00000003L +#define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH) + +void WINAPI SHAddToRecentDocs(UINT,LPCVOID); + +/**************************************************************************** + * SHBrowseForFolder API + */ +typedef INT (CALLBACK *BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM); + +#include + +typedef struct tagBROWSEINFOA { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPSTR pszDisplayName; + LPCSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + INT iImage; +} BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA; + +typedef struct tagBROWSEINFOW { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPWSTR pszDisplayName; + LPCWSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + INT iImage; +} BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW; + +#define BROWSEINFO WINELIB_NAME_AW(BROWSEINFO) +#define PBROWSEINFO WINELIB_NAME_AW(PBROWSEINFO) +#define LPBROWSEINFO WINELIB_NAME_AW(LPBROWSEINFO) + +#include + +/* Browsing for directory. */ +#define BIF_RETURNONLYFSDIRS 0x0001 +#define BIF_DONTGOBELOWDOMAIN 0x0002 +#define BIF_STATUSTEXT 0x0004 +#define BIF_RETURNFSANCESTORS 0x0008 +#define BIF_EDITBOX 0x0010 +#define BIF_VALIDATE 0x0020 +#define BIF_NEWDIALOGSTYLE 0x0040 + +#define BIF_BROWSEFORCOMPUTER 0x1000 +#define BIF_BROWSEFORPRINTER 0x2000 +#define BIF_BROWSEINCLUDEFILES 0x4000 + +/* message from browser */ +#define BFFM_INITIALIZED 1 +#define BFFM_SELCHANGED 2 +#define BFFM_VALIDATEFAILEDA 3 /* lParam:szPath ret:1(cont),0(EndDialog) */ +#define BFFM_VALIDATEFAILEDW 4 /* lParam:wzPath ret:1(cont),0(EndDialog) */ + +/* messages to browser */ +#define BFFM_SETSTATUSTEXTA (WM_USER+100) +#define BFFM_ENABLEOK (WM_USER+101) +#define BFFM_SETSELECTIONA (WM_USER+102) +#define BFFM_SETSELECTIONW (WM_USER+103) +#define BFFM_SETSTATUSTEXTW (WM_USER+104) +#define BFFM_SETOKTEXT (WM_USER+105) +#define BFFM_SETEXPANDED (WM_USER+106) + +LPITEMIDLIST WINAPI SHBrowseForFolderA(LPBROWSEINFOA lpbi); +LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi); +#define SHBrowseForFolder WINELIB_NAME_AW(SHBrowseForFolder) +#define BFFM_SETSTATUSTEXT WINELIB_NAME_AW(BFFM_SETSTATUSTEXT) +#define BFFM_SETSELECTION WINELIB_NAME_AW(BFFM_SETSELECTION) +#define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED) + +/********************************************************************** + * SHCreateShellFolderViewEx API + */ + +typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)( + IShellView* dwUser, + IShellFolder* pshf, + HWND hWnd, + UINT uMsg, + WPARAM wParam, + LPARAM lParam); + +typedef struct _CSFV +{ + UINT cbSize; + IShellFolder* pshf; + IShellView* psvOuter; + LPCITEMIDLIST pidl; + LONG lEvents; + LPFNVIEWCALLBACK pfnCallback; + FOLDERVIEWMODE fvm; +} CSFV, *LPCSFV; + +HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv); + +/* SHCreateShellFolderViewEx callback messages */ +#define SFVM_MERGEMENU 1 +#define SFVM_INVOKECOMMAND 2 +#define SFVM_GETHELPTEXT 3 +#define SFVM_GETTOOLTIPTEXT 4 +#define SFVM_GETBUTTONINFO 5 +#define SFVM_GETBUTTONS 6 +#define SFVM_INITMENUPOPUP 7 +#define SFVM_SELECTIONCHANGED 8 /* undocumented */ +#define SFVM_DRAWMENUITEM 9 /* undocumented */ +#define SFVM_MEASUREMENUITEM 10 /* undocumented */ +#define SFVM_EXITMENULOOP 11 /* undocumented */ +#define SFVM_VIEWRELEASE 12 /* undocumented */ +#define SFVM_GETNAMELENGTH 13 /* undocumented */ +#define SFVM_FSNOTIFY 14 +#define SFVM_WINDOWCREATED 15 +#define SFVM_WINDOWCLOSING 16 /* undocumented */ +#define SFVM_LISTREFRESHED 17 /* undocumented */ +#define SFVM_WINDOWFOCUSED 18 /* undocumented */ +#define SFVM_REGISTERCOPYHOOK 20 /* undocumented */ +#define SFVM_COPYHOOKCALLBACK 21 /* undocumented */ +#define SFVM_GETDETAILSOF 23 +#define SFVM_COLUMNCLICK 24 +#define SFVM_QUERYFSNOTIFY 25 +#define SFVM_DEFITEMCOUNT 26 +#define SFVM_DEFVIEWMODE 27 +#define SFVM_UNMERGEFROMMENU 28 +#define SFVM_ADDINGOBJECT 29 /* undocumented */ +#define SFVM_REMOVINGOBJECT 30 /* undocumented */ +#define SFVM_UPDATESTATUSBAR 31 +#define SFVM_BACKGROUNDENUM 32 +#define SFVM_GETCOMMANDDIR 33 /* undocumented */ +#define SFVM_GETCOLUMNSTREAM 34 /* undocumented */ +#define SFVM_CANSELECTALL 35 /* undocumented */ +#define SFVM_DIDDRAGDROP 36 +#define SFVM_ISSTRICTREFRESH 37 /* undocumented */ +#define SFVM_ISCHILDOBJECT 38 /* undocumented */ +#define SFVM_SETISFV 39 +#define SFVM_GETEXTVIEWS 40 /* undocumented */ +#define SFVM_THISIDLIST 41 +#define SFVM_ADDPROPERTYPAGES 47 +#define SFVM_BACKGROUNDENUMDONE 48 +#define SFVM_GETNOTIFY 49 +#define SFVM_GETSORTDEFAULTS 53 +#define SFVM_SIZE 57 +#define SFVM_GETZONE 58 +#define SFVM_GETPANE 59 +#define SFVM_GETHELPTOPIC 63 +#define SFVM_GETANIMATION 68 +#define SFVM_GET_CUSTOMVIEWINFO 77 /* undocumented */ +#define SFVM_ENUMERATEDITEMS 79 /* undocumented */ +#define SFVM_GET_VIEW_DATA 80 /* undocumented */ +#define SFVM_GET_WEBVIEW_LAYOUT 82 /* undocumented */ +#define SFVM_GET_WEBVIEW_CONTENT 83 /* undocumented */ +#define SFVM_GET_WEBVIEW_TASKS 84 /* undocumented */ +#define SFVM_GET_WEBVIEW_THEME 86 /* undocumented */ +#define SFVM_GETDEFERREDVIEWSETTINGS 92 /* undocumented */ + +/* Types and definitions for the SFM_* parameters */ +#include + +#define QCMINFO_PLACE_BEFORE 0 +#define QCMINFO_PLACE_AFTER 1 +typedef struct _QCMINFO_IDMAP_PLACEMENT +{ + UINT id; + UINT fFlags; +} QCMINFO_IDMAP_PLACEMENT; + +typedef struct _QCMINFO_IDMAP +{ + UINT nMaxIds; + QCMINFO_IDMAP_PLACEMENT pIdList[1]; +} QCMINFO_IDMAP; + +typedef struct _QCMINFO +{ + HMENU hmenu; + UINT indexMenu; + UINT idCmdFirst; + UINT idCmdLast; + QCMINFO_IDMAP const* pIdMap; +} QCMINFO, *LPQCMINFO; + +#define TBIF_DEFAULT 0x00000000 +#define TBIF_APPEND 0x00000000 +#define TBIF_PREPEND 0x00000001 +#define TBIF_REPLACE 0x00000002 +#define TBIF_INTERNETBAR 0x00010000 +#define TBIF_STANDARDTOOLBAR 0x00020000 +#define TBIF_NOTOOLBAR 0x00030000 + +typedef struct _TBINFO +{ + UINT cbuttons; + UINT uFlags; +} TBINFO, *LPTBINFO; + +#include + +/**************************************************************************** +* SHShellFolderView_Message API +*/ + +LRESULT WINAPI SHShellFolderView_Message( + HWND hwndCabinet, + UINT uMessage, + LPARAM lParam); + +/* SHShellFolderView_Message messages */ +#define SFVM_REARRANGE 0x0001 +#define SFVM_GETARRANGECOLUMN 0x0002 /* undocumented */ +#define SFVM_ADDOBJECT 0x0003 +#define SFVM_GETITEMCOUNT 0x0004 /* undocumented */ +#define SFVM_GETITEMPIDL 0x0005 /* undocumented */ +#define SFVM_REMOVEOBJECT 0x0006 +#define SFVM_UPDATEOBJECT 0x0007 +#define SFVM_SETREDRAW 0x0008 /* undocumented */ +#define SFVM_GETSELECTEDOBJECTS 0x0009 +#define SFVM_ISDROPONSOURCE 0x000A /* undocumented */ +#define SFVM_MOVEICONS 0x000B /* undocumented */ +#define SFVM_GETDRAGPOINT 0x000C /* undocumented */ +#define SFVM_GETDROPPOINT 0x000D /* undocumented */ +#define SFVM_SETITEMPOS 0x000E +#define SFVM_ISDROPONBACKGROUND 0x000F /* undocumented */ +#define SFVM_SETCLIPBOARD 0x0010 +#define SFVM_TOGGLEAUTOARRANGE 0x0011 /* undocumented */ +#define SFVM_LINEUPICONS 0x0012 /* undocumented */ +#define SFVM_GETAUTOARRANGE 0x0013 /* undocumented */ +#define SFVM_GETSELECTEDCOUNT 0x0014 /* undocumented */ +#define SFVM_GETITEMSPACING 0x0015 /* undocumented */ +#define SFVM_REFRESHOBJECT 0x0016 /* undocumented */ +#define SFVM_SETPOINTS 0x0017 + +/**************************************************************************** +* SHGetDataFromIDList API +*/ +#define SHGDFIL_FINDDATA 1 +#define SHGDFIL_NETRESOURCE 2 +#define SHGDFIL_DESCRIPTIONID 3 + +#define SHDID_ROOT_REGITEM 1 +#define SHDID_FS_FILE 2 +#define SHDID_FS_DIRECTORY 3 +#define SHDID_FS_OTHER 4 +#define SHDID_COMPUTER_DRIVE35 5 +#define SHDID_COMPUTER_DRIVE525 6 +#define SHDID_COMPUTER_REMOVABLE 7 +#define SHDID_COMPUTER_FIXED 8 +#define SHDID_COMPUTER_NETDRIVE 9 +#define SHDID_COMPUTER_CDROM 10 +#define SHDID_COMPUTER_RAMDISK 11 +#define SHDID_COMPUTER_OTHER 12 +#define SHDID_NET_DOMAIN 13 +#define SHDID_NET_SERVER 14 +#define SHDID_NET_SHARE 15 +#define SHDID_NET_RESTOFNET 16 +#define SHDID_NET_OTHER 17 +#define SHDID_COMPUTER_IMAGING 18 +#define SHDID_COMPUTER_AUDIO 19 +#define SHDID_COMPUTER_SHAREDDOCS 20 + +#include + +typedef struct _SHDESCRIPTIONID +{ DWORD dwDescriptionId; + CLSID clsid; +} SHDESCRIPTIONID, *LPSHDESCRIPTIONID; + +#include + +HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb); +HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb); +#define SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList) + +BOOL WINAPI SHGetSpecialFolderPathA (HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate); +BOOL WINAPI SHGetSpecialFolderPathW (HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate); +#define SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath) + +HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal) ; + +/********************************************************************** + * SHGetSetSettings () + */ + typedef struct { - int iNextSample; - DWORD dwLastScroll; - BOOL bFull; - POINT pts[NUM_POINTS]; - DWORD dwTimes[NUM_POINTS]; -} AUTO_SCROLL_DATA; + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + BOOL fWebView : 1; + BOOL fFilter : 1; + BOOL fShowSuperHidden : 1; + BOOL fNoNetCrawling : 1; + + UINT :15; /* Required for proper binary layout with gcc */ + DWORD dwWin95Unused; + UINT uWin95Unused; + LONG lParamSort; + int iSortDirection; + UINT version; + UINT uNotUsed; + BOOL fSepProcess: 1; + BOOL fStartPanelOn: 1; + BOOL fShowStartPage: 1; + UINT fSpareFlags : 13; + UINT :15; /* Required for proper binary layout with gcc */ +} SHELLSTATE, *LPSHELLSTATE; + +/********************************************************************** + * SHGetSettings () + */ typedef struct -{ - WORD cLength; - WORD nVersion; - BOOL fFullPathTitle:1; - BOOL fSaveLocalView:1; - BOOL fNotShell:1; - BOOL fSimpleDefault:1; - BOOL fDontShowDescBar:1; - BOOL fNewWindowMode:1; - BOOL fShowCompColor:1; - BOOL fDontPrettyNames:1; - BOOL fAdminsCreateCommonGroups:1; - UINT fUnusedFlags:7; - UINT fMenuEnumFilter; -} CABINETSTATE, *LPCABINETSTATE; +{ BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + + BOOL fHideIcons : 1; + UINT fRestFlags : 3; + UINT :15; /* Required for proper binary layout with gcc */ +} SHELLFLAGSTATE, * LPSHELLFLAGSTATE; + +VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask); + +#define SSF_SHOWALLOBJECTS 0x0001 +#define SSF_SHOWEXTENSIONS 0x0002 +#define SSF_SHOWCOMPCOLOR 0x0008 +#define SSF_SHOWSYSFILES 0x0020 +#define SSF_DOUBLECLICKINWEBVIEW 0x0080 +#define SSF_SHOWATTRIBCOL 0x0100 +#define SSF_DESKTOPHTML 0x0200 +#define SSF_WIN95CLASSIC 0x0400 +#define SSF_DONTPRETTYPATH 0x0800 +#define SSF_SHOWINFOTIP 0x2000 +#define SSF_MAPNETDRVBUTTON 0x1000 +#define SSF_NOCONFIRMRECYCLE 0x8000 +#define SSF_HIDEICONS 0x4000 + +/**************************************************************************** +* SHRestricted API +*/ typedef enum RESTRICTIONS { REST_NONE = 0x00000000, @@ -815,6 +894,63 @@ typedef enum RESTRICTIONS REST_NOFILEASSOCIATE, /* 0x41000003 */ } RESTRICTIONS; +DWORD WINAPI SHRestricted(RESTRICTIONS rest); + +/**************************************************************************** +* SHChangeNotify API +*/ +typedef struct _SHChangeNotifyEntry +{ + LPCITEMIDLIST pidl; + BOOL fRecursive; +} SHChangeNotifyEntry; + +#define SHCNE_RENAMEITEM 0x00000001 +#define SHCNE_CREATE 0x00000002 +#define SHCNE_DELETE 0x00000004 +#define SHCNE_MKDIR 0x00000008 +#define SHCNE_RMDIR 0x00000010 +#define SHCNE_MEDIAINSERTED 0x00000020 +#define SHCNE_MEDIAREMOVED 0x00000040 +#define SHCNE_DRIVEREMOVED 0x00000080 +#define SHCNE_DRIVEADD 0x00000100 +#define SHCNE_NETSHARE 0x00000200 +#define SHCNE_NETUNSHARE 0x00000400 +#define SHCNE_ATTRIBUTES 0x00000800 +#define SHCNE_UPDATEDIR 0x00001000 +#define SHCNE_UPDATEITEM 0x00002000 +#define SHCNE_SERVERDISCONNECT 0x00004000 +#define SHCNE_UPDATEIMAGE 0x00008000 +#define SHCNE_DRIVEADDGUI 0x00010000 +#define SHCNE_RENAMEFOLDER 0x00020000 +#define SHCNE_FREESPACE 0x00040000 + +#define SHCNE_EXTENDED_EVENT 0x04000000 +#define SHCNE_ASSOCCHANGED 0x08000000 +#define SHCNE_DISKEVENTS 0x0002381F +#define SHCNE_GLOBALEVENTS 0x0C0581E0 +#define SHCNE_ALLEVENTS 0x7FFFFFFF +#define SHCNE_INTERRUPT 0x80000000 + +#define SHCNEE_ORDERCHANGED 0x0002L +#define SHCNEE_MSI_CHANGE 0x0004L +#define SHCNEE_MSI_UNINSTALL 0x0005L + +#define SHCNF_IDLIST 0x0000 +#define SHCNF_PATHA 0x0001 +#define SHCNF_PRINTERA 0x0002 +#define SHCNF_DWORD 0x0003 +#define SHCNF_PATHW 0x0005 +#define SHCNF_PRINTERW 0x0006 +#define SHCNF_TYPE 0x00FF +#define SHCNF_FLUSH 0x1000 +#define SHCNF_FLUSHNOWAIT 0x2000 + +#define SHCNF_PATH WINELIB_NAME_AW(SHCNF_PATH) +#define SHCNF_PRINTER WINELIB_NAME_AW(SHCNF_PRINTER) + +void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2); + typedef enum { SLDF_HAS_ID_LIST = 0x00000001, SLDF_HAS_LINK_INFO = 0x00000002, @@ -826,7 +962,7 @@ typedef enum { SLDF_UNICODE = 0x00000080, SLDF_FORCE_NO_LINKINFO = 0x00000100, SLDF_HAS_EXP_SZ = 0x00000200, - SLDF_RUN_IN_SEPERATE = 0x00000400, + SLDF_RUN_IN_SEPARATE = 0x00000400, SLDF_HAS_LOGO3ID = 0x00000800, SLDF_HAS_DARWINID = 0x00001000, SLDF_RUNAS_USER = 0x00002000, @@ -849,1162 +985,299 @@ typedef struct { WCHAR szwDarwinID[MAX_PATH]; } EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK; -DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST); -typedef IEnumIDList *LPENUMIDLIST; - -#ifdef COBJMACROS -#define IEnumIDList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IEnumIDList_Release(T) (T)->lpVtbl->AddRef(T) -#define IEnumIDList_AddRef(T) (T)->lpVtbl->Release(T) -#define IEnumIDList_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c) -#define IEnumIDList_Skip(T,a) (T)->lpVtbl->Skip(T,a) -#define IEnumIDList_Reset(T) (T)->lpVtbl->Reset(T) -#define IEnumIDList_Clone(T,a) (T)->lpVtbl->Clone(T,a) -#endif - -#define INTERFACE IContextMenu -DECLARE_INTERFACE_(IContextMenu,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE; - STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE; - STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE; -}; -typedef IContextMenu *LPCONTEXTMENU; - -#ifdef COBJMACROS -#define IContextMenu_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IContextMenu_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IContextMenu_Release(T) (T)->lpVtbl->Release(T) -#define IContextMenu_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e) -#define IContextMenu_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a) -#define IContextMenu_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e) -#endif - -#define INTERFACE IContextMenu2 -DECLARE_INTERFACE_(IContextMenu2,IContextMenu) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE; - STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE; - STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE; - STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE; -}; -#undef INTERFACE -typedef IContextMenu2 *LPCONTEXTMENU2; - -#if (_WIN32_IE >= 0x0500) -#pragma pack(push,8) typedef struct { - ULONG dwFlags; - ULONG dwReserved; - WCHAR wszFolder[MAX_PATH]; -} SHCOLUMNINIT,*LPSHCOLUMNINIT; -typedef const SHCOLUMNINIT* LPCSHCOLUMNINIT; + DWORD cbSize; + DWORD cbSignature; + CHAR szTarget[MAX_PATH]; + WCHAR szwTarget[MAX_PATH]; +} EXP_SZ_LINK, *LPEXP_SZ_LINK; + typedef struct { - ULONG dwFlags; - DWORD dwFileAttributes; - ULONG dwReserved; - WCHAR *pwszExt; - WCHAR wszFile[MAX_PATH]; -} SHCOLUMNDATA,*LPSHCOLUMNDATA; -typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA; -#pragma pack(pop) + DWORD cbSize; + DWORD dwSignature; + DWORD idSpecialFolder; + DWORD cbOffset; +} EXP_SPECIAL_FOLDER, *LPEXP_SPECIAL_FOLDER; -#define MAX_COLUMN_NAME_LEN 80 -#define MAX_COLUMN_DESC_LEN 128 +#define EXP_SZ_LINK_SIG 0xa0000001 +#define NT_CONSOLE_PROPS_SIG 0xa0000002 +#define NT_FE_CONSOLE_PROPS_SIG 0xa0000004 +#define EXP_SPECIAL_FOLDER_SIG 0xa0000005 +#define EXP_DARWIN_ID_SIG 0xa0000006 +#define EXP_LOGO3_ID_SIG 0xa0000007 +#define EXP_SZ_ICON_SIG 0xa0000007 -#pragma pack(push,1) -typedef struct { - SHCOLUMNID scid; - VARTYPE vt; - DWORD fmt; - UINT cChars; - DWORD csFlags; - WCHAR wszTitle[MAX_COLUMN_NAME_LEN]; - WCHAR wszDescription[MAX_COLUMN_DESC_LEN]; -} SHCOLUMNINFO,*LPSHCOLUMNINFO; -typedef const SHCOLUMNINFO* LPCSHCOLUMNINFO; -#pragma pack(pop) +typedef struct _SHChangeDWORDAsIDList { + USHORT cb; + DWORD dwItem1; + DWORD dwItem2; + USHORT cbZero; +} SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList; +typedef struct _SHChangeProductKeyAsIDList { + USHORT cb; + WCHAR wszProductKey[39]; + USHORT cbZero; +} SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList; + +ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, UINT wMsg, + int cEntries, SHChangeNotifyEntry *pshcne); +BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID); +HANDLE WINAPI SHChangeNotification_Lock(HANDLE hChangeNotification, DWORD dwProcessId, + LPITEMIDLIST **pppidl, LONG *plEvent); +BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock); + +HRESULT WINAPI SHGetRealIDL(IShellFolder *psf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST * ppidlReal); + +/**************************************************************************** +* SHCreateDirectory API +*/ +DWORD WINAPI SHCreateDirectory(HWND, LPCVOID); +int WINAPI SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES); +int WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES); + +/**************************************************************************** +* SHGetSpecialFolderLocation API +*/ +HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl); +HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl); + +/**************************************************************************** +* SHGetFolderPath API +*/ typedef enum { - SHCOLSTATE_TYPE_STR = 0x00000001, - SHCOLSTATE_TYPE_INT = 0x00000002, - SHCOLSTATE_TYPE_DATE = 0x00000003, - SHCOLSTATE_TYPEMASK = 0x0000000f, - SHCOLSTATE_ONBYDEFAULT = 0x00000010, - SHCOLSTATE_SLOW = 0x00000020, - SHCOLSTATE_EXTENDED = 0x00000040, - SHCOLSTATE_SECONDARYUI = 0x00000080, - SHCOLSTATE_HIDDEN = 0x00000100, - SHCOLSTATE_PREFER_VARCMP = 0x00000200 -} SHCOLSTATE; + SHGFP_TYPE_CURRENT = 0, + SHGFP_TYPE_DEFAULT = 1 +} SHGFP_TYPE; -#ifdef COBJMACROS -#define IContextMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IContextMenu2_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IContextMenu2_Release(T) (T)->lpVtbl->Release(T) -#define IContextMenu2_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e) -#define IContextMenu2_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a) -#define IContextMenu2_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e) -#define IContextMenu2_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c) -#endif +HRESULT WINAPI SHGetFolderPathA(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPSTR pszPath); +HRESULT WINAPI SHGetFolderPathW(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath); +#define SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath) -#define INTERFACE IColumnProvider -DECLARE_INTERFACE_(IColumnProvider,IUnknown) +#define CSIDL_DESKTOP 0x0000 +#define CSIDL_INTERNET 0x0001 +#define CSIDL_PROGRAMS 0x0002 +#define CSIDL_CONTROLS 0x0003 +#define CSIDL_PRINTERS 0x0004 +#define CSIDL_PERSONAL 0x0005 +#define CSIDL_FAVORITES 0x0006 +#define CSIDL_STARTUP 0x0007 +#define CSIDL_RECENT 0x0008 +#define CSIDL_SENDTO 0x0009 +#define CSIDL_BITBUCKET 0x000a +#define CSIDL_STARTMENU 0x000b +#define CSIDL_MYDOCUMENTS 0x000c +#define CSIDL_MYMUSIC 0x000d +#define CSIDL_MYVIDEO 0x000e +#define CSIDL_DESKTOPDIRECTORY 0x0010 +#define CSIDL_DRIVES 0x0011 +#define CSIDL_NETWORK 0x0012 +#define CSIDL_NETHOOD 0x0013 +#define CSIDL_FONTS 0x0014 +#define CSIDL_TEMPLATES 0x0015 +#define CSIDL_COMMON_STARTMENU 0x0016 +#define CSIDL_COMMON_PROGRAMS 0X0017 +#define CSIDL_COMMON_STARTUP 0x0018 +#define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019 +#define CSIDL_APPDATA 0x001a +#define CSIDL_PRINTHOOD 0x001b +#define CSIDL_LOCAL_APPDATA 0x001c +#define CSIDL_ALTSTARTUP 0x001d +#define CSIDL_COMMON_ALTSTARTUP 0x001e +#define CSIDL_COMMON_FAVORITES 0x001f +#define CSIDL_INTERNET_CACHE 0x0020 +#define CSIDL_COOKIES 0x0021 +#define CSIDL_HISTORY 0x0022 +#define CSIDL_COMMON_APPDATA 0x0023 +#define CSIDL_WINDOWS 0x0024 +#define CSIDL_SYSTEM 0x0025 +#define CSIDL_PROGRAM_FILES 0x0026 +#define CSIDL_MYPICTURES 0x0027 +#define CSIDL_PROFILE 0x0028 +#define CSIDL_SYSTEMX86 0x0029 +#define CSIDL_PROGRAM_FILESX86 0x002a +#define CSIDL_PROGRAM_FILES_COMMON 0x002b +#define CSIDL_PROGRAM_FILES_COMMONX86 0x002c +#define CSIDL_COMMON_TEMPLATES 0x002d +#define CSIDL_COMMON_DOCUMENTS 0x002e +#define CSIDL_COMMON_ADMINTOOLS 0x002f +#define CSIDL_ADMINTOOLS 0x0030 +#define CSIDL_CONNECTIONS 0x0031 +#define CSIDL_COMMON_MUSIC 0x0035 +#define CSIDL_COMMON_PICTURES 0x0036 +#define CSIDL_COMMON_VIDEO 0x0037 +#define CSIDL_RESOURCES 0x0038 +#define CSIDL_RESOURCES_LOCALIZED 0x0039 +#define CSIDL_COMMON_OEM_LINKS 0x003a +#define CSIDL_CDBURN_AREA 0x003b +#define CSIDL_COMPUTERSNEARME 0x003d +#define CSIDL_PROFILES 0x003e +#define CSIDL_FOLDER_MASK 0x00ff +#define CSIDL_FLAG_PER_USER_INIT 0x0800 +#define CSIDL_FLAG_NO_ALIAS 0x1000 +#define CSIDL_FLAG_DONT_VERIFY 0x4000 +#define CSIDL_FLAG_CREATE 0x8000 + +#define CSIDL_FLAG_MASK 0xff00 + +/**************************************************************************** + * SHGetDesktopFolder API + */ +HRESULT WINAPI SHGetDesktopFolder(IShellFolder * *); + +/**************************************************************************** + * SHBindToParent API + */ +HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast); + +/**************************************************************************** +* SHDefExtractIcon API +*/ +HRESULT WINAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags, + HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize); +HRESULT WINAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags, + HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize); +#define SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon) + +/* + * DROPFILES for CF_HDROP and CF_PRINTERS + */ +typedef struct _DROPFILES { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Initialize)(THIS_ LPCSHCOLUMNINIT) PURE; - STDMETHOD(GetColumnInfo)(THIS_ DWORD,SHCOLUMNINFO*) PURE; - STDMETHOD(GetItemData)(THIS_ LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*) PURE; -}; -#undef INTERFACE -#endif /* _WIN32_IE >= 0x0500 */ + DWORD pFiles; + POINT pt; + BOOL fNC; + BOOL fWide; +} DROPFILES, *LPDROPFILES; -#define INTERFACE IQueryInfo -DECLARE_INTERFACE_(IQueryInfo,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetInfoTip)(THIS_ DWORD,WCHAR**) PURE; - STDMETHOD(GetInfoFlags)(THIS_ DWORD*) PURE; -}; -#undef INTERFACE +/* + * Properties of a file in the clipboard + */ +typedef struct _FILEDESCRIPTORA { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + CHAR cFileName[MAX_PATH]; +} FILEDESCRIPTORA, *LPFILEDESCRIPTORA; -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IQueryInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IQueryInfo_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IQueryInfo_Release(p) (p)->lpVtbl->Release(p) -/*** IQueryInfo methods ***/ -#define IQueryInfo_GetInfoTip(p,a,b) (p)->lpVtbl->GetInfoTip(p,a,b) -#define IQueryInfo_GetInfoFlags(p,a) (p)->lpVtbl->GetInfoFlags(p,a) -#endif +typedef struct _FILEDESCRIPTORW { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + WCHAR cFileName[MAX_PATH]; +} FILEDESCRIPTORW, *LPFILEDESCRIPTORW; -#define INTERFACE IShellExtInit -DECLARE_INTERFACE_(IShellExtInit, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE; -}; -#undef INTERFACE -typedef IShellExtInit *LPSHELLEXTINIT; +DECL_WINELIB_TYPE_AW(FILEDESCRIPTOR) +DECL_WINELIB_TYPE_AW(LPFILEDESCRIPTOR) -#if defined(COBJMACROS) -/*** IUnknown methods ***/ -#define IShellExtInit_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IShellExtInit_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IShellExtInit_Release(p) (p)->lpVtbl->Release(p) -/*** IShellExtInit methods ***/ -#define IShellExtInit_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#endif +/* + * CF_FILEGROUPDESCRIPTOR clipboard format + */ +typedef struct _FILEGROUPDESCRIPTORA { + UINT cItems; + FILEDESCRIPTORA fgd[1]; +} FILEGROUPDESCRIPTORA, *LPFILEGROUPDESCRIPTORA; -#define INTERFACE IShellPropSheetExt -DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE; - STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE; -}; -#undef INTERFACE -typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT; +typedef struct _FILEGROUPDESCRIPTORW { + UINT cItems; + FILEDESCRIPTORW fgd[1]; +} FILEGROUPDESCRIPTORW, *LPFILEGROUPDESCRIPTORW; -#if defined(COBJMACROS) -/*** IUnknown methods ***/ -#define IShellPropSheetExt_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IShellPropSheetExt_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IShellPropSheetExt_Release(p) (p)->lpVtbl->Release(p) -/*** IShellPropSheetExt methods ***/ -#define IShellPropSheetExt_AddPage(p,a,b) (p)->lpVtbl->AddPage(p,a,b) -#define IShellPropSheetExt_ReplacePage(p,a,b,c) (p)->lpVtbl->ReplacePage(p,a,b,c) -#endif +DECL_WINELIB_TYPE_AW(FILEGROUPDESCRIPTOR) +DECL_WINELIB_TYPE_AW(LPFILEGROUPDESCRIPTOR) - -#define INTERFACE IExtractIconA -DECLARE_INTERFACE_(IExtractIconA, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE; - STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE; -}; -#undef INTERFACE -typedef IExtractIconA *LPEXTRACTICONA; - -#ifdef COBJMACROS -#define IExtractIconA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IExtractIconA_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IExtractIconA_Release(T) (T)->lpVtbl->Release(T) -#define IExtractIconA_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e) -#define IExtractIconA_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e) -#endif - -#define INTERFACE IExtractIconW -DECLARE_INTERFACE_(IExtractIconW, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetIconLocation)(THIS_ UINT,LPWSTR,UINT,int*,PUINT) PURE; - STDMETHOD(Extract)(THIS_ LPCWSTR,UINT,HICON*,HICON*,UINT) PURE; -}; -#undef INTERFACE -typedef IExtractIconW *LPEXTRACTICONW; - -#ifdef COBJMACROS -#define IExtractIconW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IExtractIconW_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IExtractIconW_Release(T) (T)->lpVtbl->Release(T) -#define IExtractIconW_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e) -#define IExtractIconW_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e) -#endif - -#ifdef UNICODE -#define IExtractIcon IExtractIconW -#define LPEXTRACTICON LPEXTRACTICONW -#else -#define IExtractIcon IExtractIconA -#define LPEXTRACTICON LPEXTRACTICONA -#endif - -#define INTERFACE IShellLinkA -DECLARE_INTERFACE_(IShellLinkA, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE; - STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE; - STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE; - STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE; - STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE; - STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE; - STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE; - STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE; - STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE; - STDMETHOD(GetHotkey)(THIS_ PWORD) PURE; - STDMETHOD(SetHotkey)(THIS_ WORD) PURE; - STDMETHOD(GetShowCmd)(THIS_ int*) PURE; - STDMETHOD(SetShowCmd)(THIS_ int) PURE; - STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE; - STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE; - STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE; - STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE; - STDMETHOD(SetPath)(THIS_ LPCSTR) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IShellLinkA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IShellLinkA_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IShellLinkA_Release(T) (T)->lpVtbl->Release(T) -#define IShellLinkA_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d) -#define IShellLinkA_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a) -#define IShellLinkA_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a) -#define IShellLinkA_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b) -#define IShellLinkA_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a) -#define IShellLinkA_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b) -#define IShellLinkA_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a) -#define IShellLinkA_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b) -#define IShellLinkA_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a) -#define IShellLinkA_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a) -#define IShellLinkA_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a) -#define IShellLinkA_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a) -#define IShellLinkA_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a) -#define IShellLinkA_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c) -#define IShellLinkA_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b) -#define IShellLinkA_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b) -#define IShellLinkA_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b) -#define IShellLinkA_SetPath(T,a) (T)->lpVtbl->SetPath(T,a) -#endif - -#define INTERFACE IShellLinkW -DECLARE_INTERFACE_(IShellLinkW, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetPath)(THIS_ LPWSTR,int,WIN32_FIND_DATAW*,DWORD) PURE; - STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE; - STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE; - STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE; - STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE; - STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE; - STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE; - STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE; - STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE; - STDMETHOD(GetHotkey)(THIS_ PWORD) PURE; - STDMETHOD(SetHotkey)(THIS_ WORD) PURE; - STDMETHOD(GetShowCmd)(THIS_ int*) PURE; - STDMETHOD(SetShowCmd)(THIS_ int) PURE; - STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE; - STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE; - STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE; - STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE; - STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IShellLinkW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IShellLinkW_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IShellLinkW_Release(T) (T)->lpVtbl->Release(T) -#define IShellLinkW_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d) -#define IShellLinkW_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a) -#define IShellLinkW_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a) -#define IShellLinkW_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b) -#define IShellLinkW_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a) -#define IShellLinkW_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b) -#define IShellLinkW_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a) -#define IShellLinkW_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b) -#define IShellLinkW_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a) -#define IShellLinkW_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a) -#define IShellLinkW_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a) -#define IShellLinkW_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a) -#define IShellLinkW_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a) -#define IShellLinkW_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c) -#define IShellLinkW_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b) -#define IShellLinkW_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b) -#define IShellLinkW_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b) -#define IShellLinkW_SetPath(T,a) (T)->lpVtbl->SetPath(T,a) -#endif - -#define INTERFACE IShellLinkDataList -DECLARE_INTERFACE_(IShellLinkDataList, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(AddDataBlock)(THIS_ PVOID) PURE; - STDMETHOD(CopyDataBlock)(THIS_ DWORD,PVOID*) PURE; - STDMETHOD(RemoveDataBlock)(THIS_ DWORD) PURE; - STDMETHOD(GetFlags)(THIS_ PDWORD) PURE; - STDMETHOD(SetFlags)(THIS_ DWORD) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IShellLinkDataList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IShellLinkDataList_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IShellLinkDataList_Release(T) (T)->lpVtbl->Release(T) -#define IShellLinkDataList_AddDataBlock(T,a) (T)->lpVtbl->AddDataBlock(T,a) -#define IShellLinkDataList_CopyDataBlock(T,a,b) (T)->lpVtbl->CopyDataBlock(T,a,b) -#define IShellLinkDataList_RemoveDataBlock(T,a) (T)->lpVtbl->RemoveDataBlock(T,a) -#define IShellLinkDataList_GetFlags(T,a) (T)->lpVtbl->GetFlags(T,a) -#define IShellLinkDataList_SetFlags(T,a) (T)->lpVtbl->SetFlags(T,a) -#endif - -#define INTERFACE IShellFolder -DECLARE_INTERFACE_(IShellFolder, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE; - STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE; - STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; - STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; - STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE; - STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE; - STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE; - STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE; - STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE; - STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE; -}; -#undef INTERFACE -typedef IShellFolder *LPSHELLFOLDER; - -#ifdef COBJMACROS -#define IShellFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IShellFolder_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IShellFolder_Release(T) (T)->lpVtbl->Release(T) -#define IShellFolder_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f) -#define IShellFolder_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c) -#define IShellFolder_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d) -#define IShellFolder_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d) -#define IShellFolder_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c) -#define IShellFolder_CreateViewObject(T,a,b,c) (T)->lpVtbl->CreateViewObject(T,a,b,c) -#define IShellFolder_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c) -#define IShellFolder_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f) -#define IShellFolder_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c) -#define IShellFolder_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e) -#endif - -#if (_WIN32_IE >= 0x0500) - -DECLARE_ENUMERATOR_(IEnumExtraSearch,LPEXTRASEARCH); -typedef IEnumExtraSearch *LPENUMEXTRASEARCH; - -#define INTERFACE IShellFolder2 -DECLARE_INTERFACE_(IShellFolder2, IShellFolder) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE; - STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE; - STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; - STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; - STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE; - STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE; - STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE; - STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE; - STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE; - STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE; - STDMETHOD(GetDefaultSearchGUID)(THIS_ GUID*) PURE; - STDMETHOD(EnumSearches)(THIS_ IEnumExtraSearch**) PURE; - STDMETHOD(GetDefaultColumn)(THIS_ DWORD,ULONG*,ULONG*) PURE; - STDMETHOD(GetDefaultColumnState)(THIS_ UINT,SHCOLSTATEF*) PURE; - STDMETHOD(GetDetailsEx)(THIS_ LPCITEMIDLIST,const SHCOLUMNID*,VARIANT*) PURE; - STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST,UINT,SHELLDETAILS*) PURE; - STDMETHOD(MapColumnToSCID)(THIS_ UINT,SHCOLUMNID*) PURE; -}; -#undef INTERFACE -typedef IShellFolder2 *LPSHELLFOLDER2; - -#ifdef COBJMACROS -#define IShellFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IShellFolder2_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IShellFolder2_Release(T) (T)->lpVtbl->Release(T) -#define IShellFolder2_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f) -#define IShellFolder2_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c) -#define IShellFolder2_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d) -#define IShellFolder2_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d) -#define IShellFolder2_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c) -#define IShellFolder2_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b) -#define IShellFolder2_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c) -#define IShellFolder2_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f) -#define IShellFolder2_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c) -#define IShellFolder2_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e) -#define IShellFolder2_GetDefaultSearchGUID(T,a) (T)->lpVtbl->GetDefaultSearchGUID(T,a) -#define IShellFolder2_EnumSearches(T,a) (T)->lpVtbl->EnumSearches(T,a) -#define IShellFolder2_GetDefaultColumn(T,a,b,c) (T)->lpVtbl->GetDefaultColumn(T,a,b,c) -#define IShellFolder2_GetDefaultColumnState(T,a,b) (T)->lpVtbl->GetDefaultColumnState(T,a,b) -#define IShellFolder2_GetDetailsEx(T,a,b,c) (T)->lpVtbl->GetDetailsEx(T,a,b,c) -#define IShellFolder2_GetDetailsOf(T,a,b,c) (T)->lpVtbl->GetDetailsOf(T,a,b,c) -#define IShellFolder2_MapColumnToSCID(T,a,b) (T)->lpVtbl->MapColumnToSCID(T,a,b) -#endif - -#endif /* _WIN32_IE >= 0x0500 */ -#define INTERFACE ICopyHook -DECLARE_INTERFACE_(ICopyHook, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE; -}; -#undef INTERFACE -typedef ICopyHook *LPCOPYHOOK; - -#define INTERFACE IFileViewerSite -DECLARE_INTERFACE(IFileViewerSite) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE; - STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE; -}; -#undef INTERFACE -typedef IFileViewerSite *LPFILEVIEWERSITE; - -#define INTERFACE IFileViewer -DECLARE_INTERFACE(IFileViewer) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE; - STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE; - STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE; -}; -#undef INTERFACE -typedef IFileViewer *LPFILEVIEWER; - -#define INTERFACE IFileSystemBindData -DECLARE_INTERFACE_(IFileSystemBindData, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW*) PURE; - STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW*) PURE; -}; -#undef INTERFACE - -#define INTERFACE IPersistFolder -DECLARE_INTERFACE_(IPersistFolder,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; - STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; -}; -#undef INTERFACE -typedef IPersistFolder *LPPERSISTFOLDER; - -#ifdef COBJMACROS -#define IPersistFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IPersistFolder_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IPersistFolder_Release(T) (T)->lpVtbl->Release(T) -#define IPersistFolder_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) -#define IPersistFolder_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) -#endif - -#if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500) - -#define INTERFACE IPersistFolder2 -DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; - STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; - STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE; -}; -#undef INTERFACE -typedef IPersistFolder2 *LPPERSISTFOLDER2; - -#ifdef COBJMACROS -#define IPersistFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IPersistFolder2_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IPersistFolder2_Release(T) (T)->lpVtbl->Release(T) -#define IPersistFolder2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) -#define IPersistFolder2_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) -#define IPersistFolder2_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a) -#endif - -#endif /* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */ - -#if (_WIN32_IE >= 0x0500) - -#define INTERFACE IPersistFolder3 -DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; - STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; - STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE; - STDMETHOD(InitializeEx)(THIS_ IBindCtx*,LPCITEMIDLIST,const PERSIST_FOLDER_TARGET_INFO*) PURE; - STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO*) PURE; -}; -#undef INTERFACE -typedef IPersistFolder3 *LPPERSISTFOLDER3; - -#ifdef COBJMACROS -#define IPersistFolder3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IPersistFolder3_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IPersistFolder3_Release(T) (T)->lpVtbl->Release(T) -#define IPersistFolder3_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) -#define IPersistFolder3_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) -#define IPersistFolder3_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a) -#define IPersistFolder3_InitializeEx(T,a,b,c) (T)->lpVtbl->InitializeEx(T,a,b,c) -#define IPersistFolder3_GetFolderTargetInfo(T,a) (T)->lpVtbl->GetFolderTargetInfo(T,a) -#endif - -#endif /* _WIN32_IE >= 0x0500 */ - -typedef interface IShellBrowser *LPSHELLBROWSER; -typedef interface IShellView *LPSHELLVIEW; - -#define INTERFACE IShellBrowser -DECLARE_INTERFACE_(IShellBrowser,IOleWindow) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE; - STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE; - STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE; - STDMETHOD(SetStatusTextSB)(THIS_ LPCOLESTR) PURE; - STDMETHOD(EnableModelessSB)(THIS_ BOOL) PURE; - STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE; - STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE; - STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE; - STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE; - STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE; - STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE; - STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE; - STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IShellBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IShellBrowser_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IShellBrowser_Release(T) (T)->lpVtbl->Release(T) -#define IShellBrowser_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) -#define IShellBrowser_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) -#define IShellBrowser_InsertMenusSB(T,a,b) (T)->lpVtbl->InsertMenusSB(T,a,b) -#define IShellBrowser_SetMenuSB(T,a,b,c) (T)->lpVtbl->SetMenuSB(T,a,b,c) -#define IShellBrowser_RemoveMenusSB(T,a) (T)->lpVtbl->RemoveMenusSB(T,a) -#define IShellBrowser_SetStatusTextSB(T,a) (T)->lpVtbl->SetStatusTextSB(T,a) -#define IShellBrowser_EnableModelessSB(T,a) (T)->lpVtbl->EnableModelessSB(T,a) -#define IShellBrowser_TranslateAcceleratorSB(T,a,b) (T)->lpVtbl->TranslateAcceleratorSB(T,a,b) -#define IShellBrowser_BrowseObject(T,a,b) (T)->lpVtbl->BrowseObject(T,a,b) -#define IShellBrowser_GetViewStateStream(T,a,b) (T)->lpVtbl->GetViewStateStream(T,a,b) -#define IShellBrowser_GetControlWindow(T,a,b) (T)->lpVtbl->GetControlWindow(T,a,b) -#define IShellBrowser_SendControlMsg(T,a,b,c,d,e) (T)->lpVtbl->SendControlMsg(T,a,b,c,d,e) -#define IShellBrowser_QueryActiveShellView(T,a) (T)->lpVtbl->QueryActiveShellView(T,a) -#define IShellBrowser_OnViewWindowActive(T,a) (T)->lpVtbl->OnViewWindowActive(T,a) -#define IShellBrowser_SetToolbarItems(T,a,b,c) (T)->lpVtbl->SetToolbarItems(T,a,b,c) -#endif - -#define INTERFACE IShellView -DECLARE_INTERFACE_(IShellView,IOleWindow) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE; -#ifdef _FIX_ENABLEMODELESS_CONFLICT - STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; -#else - STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; -#endif - STDMETHOD(UIActivate)(THIS_ UINT) PURE; - STDMETHOD(Refresh) (THIS) PURE; - STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE; - STDMETHOD(DestroyViewWindow)(THIS) PURE; - STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE; - STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE; - STDMETHOD(SaveViewState)(THIS) PURE; - STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE; - STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -#define IShellView_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IShellView_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IShellView_Release(T) (T)->lpVtbl->Release(T) -#define IShellView_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) -#define IShellView_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) -#define IShellView_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a) -#ifdef _FIX_ENABLEMODELESS_CONFLICT -#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a) -#else -#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a) -#endif -#define IShellView_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a) -#define IShellView_Refresh(T) (T)->lpVtbl->Refresh(T) -#define IShellView_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e) -#define IShellView_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T) -#define IShellView_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a) -#define IShellView_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c) -#define IShellView_SaveViewState(T) (T)->lpVtbl->SaveViewState(T) -#define IShellView_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b) -#define IShellView_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c) -#endif - -#define INTERFACE ICommDlgBrowser -DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(OnDefaultCommand)(THIS_ IShellView*) PURE; - STDMETHOD(OnStateChange)(THIS_ IShellView*,ULONG) PURE; - STDMETHOD(IncludeObject)(THIS_ IShellView*,LPCITEMIDLIST) PURE; -}; -#undef INTERFACE -typedef ICommDlgBrowser *LPCOMMDLGBROWSER; - -#ifdef COBJMACROS -#define ICommDlgBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define ICommDlgBrowser_AddRef(T) (T)->lpVtbl->AddRef(T) -#define ICommDlgBrowser_Release(T) (T)->lpVtbl->Release(T) -#define ICommDlgBrowser_OnDefaultCommand(T,a) (T)->lpVtbl->OnDefaultCommand(T,a) -#define ICommDlgBrowser_OnStateChange(T,a,b) (T)->lpVtbl->OnStateChange(T,a,b) -#define ICommDlgBrowser_IncludeObject(T,a,b) (T)->lpVtbl->IncludeObject(T,a,b) -#endif - -typedef GUID SHELLVIEWID; -typedef struct _SV2CVW2_PARAMS { - DWORD cbSize; - IShellView *psvPrev; - FOLDERSETTINGS const *pfs; - IShellBrowser *psbOwner; - RECT *prcView; - SHELLVIEWID const *pvid; - HWND hwndView; -} SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS; -#define INTERFACE IShellView2 -DECLARE_INTERFACE_(IShellView2,IShellView) -{ - - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetWindow)(THIS_ HWND*) PURE; - STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; - STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE; -#ifdef _FIX_ENABLEMODELESS_CONFLICT - STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; -#else - STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; -#endif - STDMETHOD(UIActivate)(THIS_ UINT) PURE; - STDMETHOD(Refresh) (THIS) PURE; - STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE; - STDMETHOD(DestroyViewWindow)(THIS) PURE; - STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE; - STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE; - STDMETHOD(SaveViewState)(THIS) PURE; - STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE; - STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE; - STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE; - STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE; - STDMETHOD(HandleRename)(THIS_ PCUITEMID_CHILD) PURE; - STDMETHOD(SelectAndPositionItem)(THIS_ PCUITEMID_CHILD,UINT,POINT*) PURE; -}; -#undef INTERFACE -#ifdef COBJMACROS -#define IShellView2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IShellView2_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IShellView2_Release(T) (T)->lpVtbl->Release(T) -#define IShellView2_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) -#define IShellView2_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) -#define IShellView2_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a) -#ifdef _FIX_ENABLEMODELESS_CONFLICT -#define IShellView2_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a) -#else -#define IShellView2_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a) -#endif -#define IShellView2_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a) -#define IShellView2_Refresh(T) (T)->lpVtbl->Refresh(T) -#define IShellView2_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e) -#define IShellView2_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T) -#define IShellView2_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a) -#define IShellView2_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c) -#define IShellView2_SaveViewState(T) (T)->lpVtbl->SaveViewState(T) -#define IShellView2_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b) -#define IShellView2_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c) -#define IShellView2_GetView(T,a,b) (T)->lpVtbl->GetView(T,a,b) -#define IShellView2_CreateViewWindow2(T,a) (T)->lpVtbl->CreateViewWindow2(T,a) -#define IShellView2_HandleRename(T,a) (T)->lpVtbl->HandleRename(T,a) -#define IShellView2_SelectAndPositionItem(T,a,b,c) (T)->lpVtbl->SelectAndPositionItem(T,a,b,c) -#endif - -#define INTERFACE IShellExecuteHookA -DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE; -}; -#undef INTERFACE - -#define INTERFACE IShellExecuteHookW -DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE; -}; -#undef INTERFACE - -#define INTERFACE IShellIcon -DECLARE_INTERFACE_(IShellIcon,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE; -}; -#undef INTERFACE -typedef IShellIcon *LPSHELLICON; +/**************************************************************************** + * Cabinet functions + */ typedef struct { - BOOL fShowAllObjects : 1; - BOOL fShowExtensions : 1; - BOOL fNoConfirmRecycle : 1; - BOOL fShowSysFiles : 1; - BOOL fShowCompColor : 1; - BOOL fDoubleClickInWebView : 1; - BOOL fDesktopHTML : 1; - BOOL fWin95Classic : 1; - BOOL fDontPrettyPath : 1; - BOOL fShowAttribCol : 1; - BOOL fMapNetDrvBtn : 1; - BOOL fShowInfoTip : 1; - BOOL fHideIcons : 1; - UINT fRestFlags : 3; -} SHELLFLAGSTATE, * LPSHELLFLAGSTATE; + WORD cLength; + WORD nVersion; + BOOL fFullPathTitle:1; + BOOL fSaveLocalView:1; + BOOL fNotShell:1; + BOOL fSimpleDefault:1; + BOOL fDontShowDescBar:1; + BOOL fNewWindowMode:1; + BOOL fShowCompColor:1; + BOOL fDontPrettyNames:1; + BOOL fAdminsCreateCommonGroups:1; + UINT fUnusedFlags:7; + UINT :15; /* Required for proper binary layout with gcc */ + UINT fMenuEnumFilter; +} CABINETSTATE, *LPCABINETSTATE; -#define SSF_SHOWALLOBJECTS 0x1 -#define SSF_SHOWEXTENSIONS 0x2 -#define SSF_SHOWCOMPCOLOR 0x8 -#define SSF_SHOWSYSFILES 0x20 -#define SSF_DOUBLECLICKINWEBVIEW 0x80 -#define SSF_SHOWATTRIBCOL 0x100 -#define SSF_DESKTOPHTML 0x200 -#define SSF_WIN95CLASSIC 0x400 -#define SSF_DONTPRETTYPATH 0x800 -#define SSF_MAPNETDRVBUTTON 0x1000 -#define SSF_SHOWINFOTIP 0x2000 -#define SSF_HIDEICONS 0x4000 -#define SSF_NOCONFIRMRECYCLE 0x8000 +#define CABINETSTATE_VERSION 2 -#undef INTERFACE -#define INTERFACE IShellIconOverlayIdentifier -DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(IsMemberOf)(THIS_ LPCWSTR,DWORD) PURE; - STDMETHOD(GetOverlayInfo)(THIS_ LPWSTR,int,int*,DWORD*) PURE; - STDMETHOD(GetPriority)(THIS_ int*) PURE; -}; +BOOL WINAPI ReadCabinetState(CABINETSTATE *, int); +BOOL WINAPI WriteCabinetState(CABINETSTATE *); -#define ISIOI_ICONFILE 0x00000001 -#define ISIOI_ICONINDEX 0x00000002 +/**************************************************************************** + * Path Manipulation Routines + */ +VOID WINAPI PathGetShortPath(LPWSTR pszPath); +LONG WINAPI PathProcessCommand(LPCWSTR, LPWSTR, int, DWORD); -#if (_WIN32_WINNT >= 0x0500) /* W2K */ -typedef struct { - BOOL fShowAllObjects : 1; - BOOL fShowExtensions : 1; - BOOL fNoConfirmRecycle : 1; - BOOL fShowSysFiles : 1; - BOOL fShowCompColor : 1; - BOOL fDoubleClickInWebView : 1; - BOOL fDesktopHTML : 1; - BOOL fWin95Classic : 1; - BOOL fDontPrettyPath : 1; - BOOL fShowAttribCol : 1; - BOOL fMapNetDrvBtn : 1; - BOOL fShowInfoTip : 1; - BOOL fHideIcons : 1; - BOOL fWebView : 1; - BOOL fFilter : 1; - BOOL fShowSuperHidden : 1; - BOOL fNoNetCrawling : 1; - DWORD dwWin95Unused; - UINT uWin95Unused; - LONG lParamSort; - int iSortDirection; - UINT version; - UINT uNotUsed; - BOOL fSepProcess : 1; - BOOL fStartPanelOn : 1; - BOOL fShowStartPage : 1; - UINT fSpareFlags : 13; -} SHELLSTATE, *LPSHELLSTATE; -#endif /* _WIN32_WINNT >= 0x0500 */ +/**************************************************************************** + * Drag And Drop Routines + */ -#if (_WIN32_IE >= 0x0500) -#pragma pack(push,8) +/* DAD_AutoScroll sample structure */ +#define NUM_POINTS 3 typedef struct { - SIZE sizeDragImage; - POINT ptOffset; - HBITMAP hbmpDragImage; - COLORREF crColorKey; -} SHDRAGIMAGE, *LPSHDRAGIMAGE; -#pragma pack(pop) + int iNextSample; + DWORD dwLastScroll; + BOOL bFull; + POINT pts[NUM_POINTS]; + DWORD dwTimes[NUM_POINTS]; +} AUTO_SCROLL_DATA; -#define INTERFACE IDragSourceHelper -DECLARE_INTERFACE_(IDragSourceHelper, IUnknown) -{ - STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; - STDMETHOD_(ULONG, AddRef) (THIS) PURE; - STDMETHOD_(ULONG, Release) (THIS) PURE; - STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE; - STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE; -}; -#undef INTERFACE +BOOL WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT); +BOOL WINAPI DAD_DragEnterEx(HWND,POINT); +BOOL WINAPI DAD_DragEnterEx2(HWND,POINT,IDataObject*); +BOOL WINAPI DAD_DragMove(POINT); +BOOL WINAPI DAD_DragLeave(void); +BOOL WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,LPPOINT); +HRESULT WINAPI SHDoDragDrop(HWND,IDataObject*,IDropSource*,DWORD,LPDWORD); -#define INTERFACE IDropTargetHelper -DECLARE_INTERFACE_(IDropTargetHelper, IUnknown) -{ - STDMETHOD (QueryInterface)(THIS_ REFIID riid, void** ppv) PURE; - STDMETHOD_(ULONG, AddRef) (THIS) PURE; - STDMETHOD_(ULONG, Release) (THIS) PURE; - STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE; - STDMETHOD (DragLeave)(THIS) PURE; - STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE; - STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE; - STDMETHOD (Show)(THIS_ BOOL fShow) PURE; -}; -#undef INTERFACE -#endif /* _WIN32_IE >= 0x0500 */ - -#if defined(COBJMACROS) -/*** IUnknown methods ***/ -#define IDropTargetHelper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDropTargetHelper_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDropTargetHelper_Release(p) (p)->lpVtbl->Release(p) -/*** IDropTargetHelper methods ***/ -#define IDropTargetHelper_DragEnter(p,a,b,c,d) (p)->lpVtbl->DragEnter(p,a,b,c,d) -#define IDropTargetHelper_DragLeave(p) (p)->lpVtbl->DragLeave(p) -#define IDropTargetHelper_DragOver(p,a,b) (p)->lpVtbl->DragOver(p,a,b) -#define IDropTargetHelper_Drop(p,a,b,c) (p)->lpVtbl->Drop(p,a,b,c) -#define IDropTargetHelper_Show(p,a) (p)->lpVtbl->Show(p,a) -#endif - -#define INTERFACE IInputObject -DECLARE_INTERFACE_(IInputObject,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IInputObject methods ***/ - STDMETHOD(UIActivateIO)(THIS_ BOOL bActivating, LPMSG lpMsg) PURE; - STDMETHOD(HasFocusIO)(THIS) PURE; - STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE; -}; -#undef INTERFACE - -#if defined(COBJMACROS) -/*** IUnknown methods ***/ -#define IInputObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInputObject_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInputObject_Release(p) (p)->lpVtbl->Release(p) -/*** IInputObject methods ***/ -#define IInputObject_UIActivateIO(p,a,b) (p)->lpVtbl->UIActivateIO(p,a,b) -#define IInputObject_HasFocusIO(p) (p)->lpVtbl->HasFocusIO(p) -#define IInputObject_TranslateAcceleratorIO(p,a) (p)->lpVtbl->TranslateAcceleratorIO(p,a) -#endif - -#define INTERFACE IInputObjectSite -DECLARE_INTERFACE_(IInputObjectSite,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IInputObjectSite methods ***/ - STDMETHOD(OnFocusChangeIS)(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) PURE; -}; -#undef INTERFACE - -#if defined(COBJMACROS) -/*** IUnknown methods ***/ -#define IInputObjectSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInputObjectSite_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInputObjectSite_Release(p) (p)->lpVtbl->Release(p) -/*** IInputObject methods ***/ -#define IInputObjectSite_OnFocusChangeIS(p,a,b) (p)->lpVtbl->OnFocusChangeIS(p,a,b) -#endif - -typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)( - IShellView* dwUser, - IShellFolder* pshf, - HWND hWnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam); -typedef struct _CSFV -{ - UINT uSize; - IShellFolder* pshf; - IShellView* psvOuter; - LPCITEMIDLIST pidlFolder; - LONG lEvents; - LPFNVIEWCALLBACK pfnCallback; - FOLDERVIEWMODE fvm; -} CSFV, *LPCSFV; - -#define INTERFACE IShellFolderViewCB -DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - /*** IShellFolderViewCB methods ***/ - STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE; -}; -#undef INTERFACE - -#define SFVM_MERGEMENU 1 -#define SFVM_INVOKECOMMAND 2 -#define SFVM_GETHELPTEXT 3 -#define SFVM_GETTOOLTIPTEXT 4 -#define SFVM_GETBUTTONINFO 5 -#define SFVM_GETBUTTONS 6 -#define SFVM_INITMENUPOPUP 7 -#define SFVM_FSNOTIFY 14 -#define SFVM_WINDOWCREATED 15 -#define SFVM_GETDETAILSOF 23 -#define SFVM_COLUMNCLICK 24 -#define SFVM_QUERYFSNOTIFY 25 -#define SFVM_DEFITEMCOUNT 26 -#define SFVM_DEFVIEWMODE 27 -#define SFVM_UNMERGEMENU 28 -#define SFVM_UPDATESTATUSBAR 31 -#define SFVM_BACKGROUNDENUM 32 -#define SFVM_DIDDRAGDROP 36 -#define SFVM_SETISFV 39 -#define SFVM_THISIDLIST 41 -#define SFVM_ADDPROPERTYPAGES 47 -#define SFVM_BACKGROUNDENUMDONE 48 -#define SFVM_GETNOTIFY 49 -#define SFVM_GETSORTDEFAULTS 53 -#define SFVM_SIZE 57 -#define SFVM_GETZONE 58 -#define SFVM_GETPANE 59 -#define SFVM_GETHELPTOPIC 63 -#define SFVM_GETANIMATION 68 - -typedef struct _SFV_CREATE -{ - UINT cbSize; - IShellFolder *pshf; - IShellView *psvOuter; - IShellFolderViewCB *psfvcb; -} SFV_CREATE; - - -UINT WINAPI SHAddFromPropSheetExtArray(HPSXA,LPFNADDPROPSHEETPAGE,LPARAM); -void WINAPI SHAddToRecentDocs(UINT,PCVOID); -LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA); -LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW); -DWORD WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*); -DWORD WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*); -HPSXA WINAPI SHCreatePropSheetExtArray(HKEY,LPCWSTR,UINT); -HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE*,IShellView**); -HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv); -void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID); -void WINAPI SHDestroyPropSheetExtArray(HPSXA); -HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); -HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); -HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*); -HRESULT WINAPI SHGetInstanceExplorer(IUnknown **); -HRESULT WINAPI SHGetMalloc(LPMALLOC*); -BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR); -BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR); -HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*); -HRESULT WINAPI SHLoadInProc(REFCLSID); -#if (_WIN32_IE >= 0x0400) -BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL); -BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL); -#endif -/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ -HRESULT WINAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR); -HRESULT WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR); -#if (_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500) /* ME or W2K */ -HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*); -#endif -#if (_WIN32_WINNT >= 0x0500) -INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES); -INT WINAPI SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES); -HRESULT WINAPI SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*); -#endif -#if (_WIN32_WINNT >= 0x0501) /* XP */ -HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR); -HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR); -#endif -void WINAPI SHGetSettings(LPSHELLFLAGSTATE,DWORD); -#if (_WIN32_WINNT >= 0x0500) /* W2K */ -void WINAPI SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL); -#endif -UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA,UINT,LPFNADDPROPSHEETPAGE,LPARAM); - -#if (_WIN32_WINNT >= 0x0500) /* W2K */ -BOOL WINAPI ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); -BOOL WINAPI ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); -BOOL WINAPI ILRemoveLastID(LPITEMIDLIST); -HRESULT WINAPI ILLoadFromStream(IStream*, LPITEMIDLIST*); -HRESULT WINAPI ILSaveToStream(IStream*, LPCITEMIDLIST); -LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); +LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST,LPCSHITEMID,BOOL); LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST); LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST); -LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR); LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR); -#ifdef UNICODE -#define ILCreateFromPath ILCreateFromPathW -#else -#define ILCreateFromPath ILCreateFromPathA -#endif -LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); +#define ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath) +LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST,LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST,LPCITEMIDLIST); LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST); +void WINAPI ILFree(LPITEMIDLIST); LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST); -UINT WINAPI ILGetSize(LPCITEMIDLIST); -void WINAPI ILFree(LPITEMIDLIST); +UINT WINAPI ILGetSize(LPCITEMIDLIST); +BOOL WINAPI ILIsEqual(LPCITEMIDLIST,LPCITEMIDLIST); +BOOL WINAPI ILIsParent(LPCITEMIDLIST,LPCITEMIDLIST,BOOL); +HRESULT WINAPI ILLoadFromStream(LPSTREAM,LPITEMIDLIST*); +BOOL WINAPI ILRemoveLastID(LPITEMIDLIST); +HRESULT WINAPI ILSaveToStream(LPSTREAM,LPCITEMIDLIST); -void WINAPI SHFree(LPVOID); -LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND,DWORD,BOOL); -HRESULT WINAPI SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**); -BOOL WINAPI SHObjectProperties(HWND,DWORD,LPCWSTR,LPCWSTR); -#endif +#include -int WINAPI RestartDialog(HWND,LPCWSTR,DWORD); -int WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD); - -ULONG WINAPI SHChangeNotifyRegister(HWND,int,LONG,UINT,int,SHChangeNotifyEntry *); -BOOL WINAPI SHChangeNotifyDeregister(ULONG); - -#ifdef UNICODE -typedef IShellExecuteHookW IShellExecuteHook; -typedef IShellLinkW IShellLink; -typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; -#define SHBrowseForFolder SHBrowseForFolderW -#define SHCLSIDFromString SHCLSIDFromStringW -#define SHGetDataFromIDList SHGetDataFromIDListW -#define SHGetPathFromIDList SHGetPathFromIDListW -#if (_WIN32_IE >= 0x0400) -#define SHGetSpecialFolderPath SHGetSpecialFolderPathW -#endif -#define SHGetFolderPath SHGetFolderPathW -#if (_WIN32_WINNT >= 0x0500) -#define SHCreateDirectoryEx SHCreateDirectoryExW -#endif -#if (_WIN32_WINNT >= 0x0501) -#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW -#endif - -#else -typedef IShellExecuteHookA IShellExecuteHook; -typedef IShellLinkA IShellLink; -typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; -#define SHBrowseForFolder SHBrowseForFolderA -#define SHCLSIDFromString SHCLSIDFromStringA -#define SHGetDataFromIDList SHGetDataFromIDListA -#define SHGetPathFromIDList SHGetPathFromIDListA -#if (_WIN32_IE >= 0x0400) -#define SHGetSpecialFolderPath SHGetSpecialFolderPathA -#endif -#define SHGetFolderPath SHGetFolderPathA -#if (_WIN32_WINNT >= 0x0500) -#define SHCreateDirectoryEx SHCreateDirectoryExA -#endif -#if (_WIN32_WINNT >= 0x0501) -#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA -#endif -#endif /* UNICODE */ - -#pragma pack(pop) #ifdef __cplusplus -} -#endif +} /* extern "C" */ +#endif /* defined(__cplusplus) */ - -#endif /* _SHLOBJ_H */ +#endif /* __WINE_SHLOBJ_H */ diff --git a/reactos/include/psdk/shlwapi.h b/reactos/include/psdk/shlwapi.h index bf6dfd97644..638a95849d5 100644 --- a/reactos/include/psdk/shlwapi.h +++ b/reactos/include/psdk/shlwapi.h @@ -1,43 +1,1005 @@ -#ifndef _SHLWAPI_H -#define _SHLWAPI_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif +/* + * SHLWAPI.DLL functions + * + * Copyright (C) 2000 Juergen Schmied + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_SHLWAPI_H +#define __WINE_SHLWAPI_H + +/* FIXME: #include */ +#include +#include #ifdef __cplusplus extern "C" { +#endif /* defined(__cplusplus) */ + +#include + +#ifndef NO_SHLWAPI_REG + +/* Registry functions */ + +DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR); +DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR); +#define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey) + +DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR); +DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR); +#define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey) + +DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR); +DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR); +#define SHDeleteValue WINELIB_NAME_AW(SHDeleteValue) + +DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD); +DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD); +#define SHGetValue WINELIB_NAME_AW(SHGetValue) + +DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD); +DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD); +#define SHSetValue WINELIB_NAME_AW(SHSetValue) + +DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +#define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx) + +LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD); +LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD); +#define SHEnumKeyEx WINELIB_NAME_AW(SHEnumKeyEx) + +LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +#define SHEnumValue WINELIB_NAME_AW(SHEnumValue) + +LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); +LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); +#define SHQueryInfoKey WINELIB_NAME_AW(SHQueryInfoKey) + +DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD); +DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD); +#define SHRegGetPath WINELIB_NAME_AW(SHRegGetPath) + +DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD); +DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD); +#define SHRegSetPath WINELIB_NAME_AW(SHRegSetPath) + +DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD); +DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD); +#define SHCopyKey WINELIB_NAME_AW(SHCopyKey) + +/* Undocumented registry functions */ + +HKEY WINAPI SHRegDuplicateHKey(HKEY); + +DWORD WINAPI SHDeleteOrphanKeyA(HKEY,LPCSTR); +DWORD WINAPI SHDeleteOrphanKeyW(HKEY,LPCWSTR); +#define SHDeleteOrphanKey WINELIB_NAME_AW(SHDeleteOrphanKey) + + +/* User registry functions */ + +typedef enum +{ + SHREGDEL_DEFAULT = 0, + SHREGDEL_HKCU = 0x1, + SHREGDEL_HKLM = 0x10, + SHREGDEL_BOTH = SHREGDEL_HKLM | SHREGDEL_HKCU +} SHREGDEL_FLAGS; + +typedef enum +{ + SHREGENUM_DEFAULT = 0, + SHREGENUM_HKCU = 0x1, + SHREGENUM_HKLM = 0x10, + SHREGENUM_BOTH = SHREGENUM_HKLM | SHREGENUM_HKCU +} SHREGENUM_FLAGS; + +#define SHREGSET_HKCU 0x1 /* Apply to HKCU if empty */ +#define SHREGSET_FORCE_HKCU 0x2 /* Always apply to HKCU */ +#define SHREGSET_HKLM 0x4 /* Apply to HKLM if empty */ +#define SHREGSET_FORCE_HKLM 0x8 /* Always apply to HKLM */ +#define SHREGSET_DEFAULT (SHREGSET_FORCE_HKCU | SHREGSET_HKLM) + +typedef HANDLE HUSKEY; +typedef HUSKEY *PHUSKEY; + +LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); +LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); +#define SHRegCreateUSKey WINELIB_NAME_AW(SHRegCreateUSKey) + +LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); +LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); +#define SHRegOpenUSKey WINELIB_NAME_AW(SHRegOpenUSKey) + +LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD, + BOOL,LPVOID,DWORD); +LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD, + BOOL,LPVOID,DWORD); +#define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue) + +LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD); +LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); +#define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue) + +LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); +LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); +#define SHRegDeleteUSValue WINELIB_NAME_AW(SHRegDeleteUSValue) + +LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); +LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); +#define SHRegDeleteEmptyUSKey WINELIB_NAME_AW(SHRegDeleteEmptyUSKey) + +LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS); +LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS); +#define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey) + +LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD, + LPVOID,LPDWORD,SHREGENUM_FLAGS); +LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD, + LPVOID,LPDWORD,SHREGENUM_FLAGS); +#define SHRegEnumUSValue WINELIB_NAME_AW(SHRegEnumUSValue) + +LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD, + LPDWORD,SHREGENUM_FLAGS); +LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD, + LPDWORD,SHREGENUM_FLAGS); +#define SHRegQueryInfoUSKey WINELIB_NAME_AW(SHRegQueryInfoUSKey) + +LONG WINAPI SHRegCloseUSKey(HUSKEY); + +LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD, + BOOL,LPVOID,DWORD); +LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD, + BOOL,LPVOID,DWORD); +#define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue) + +LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD); +LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); +#define SHRegSetUSValue WINELIB_NAME_AW(SHRegSetUSValue) + +BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL); +BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL); +#define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue) + +int WINAPI SHRegGetIntW(HKEY,LPCWSTR,int); + +/* IQueryAssociation and helpers */ +enum +{ + ASSOCF_INIT_NOREMAPCLSID = 0x001, /* Don't map clsid->progid */ + ASSOCF_INIT_BYEXENAME = 0x002, /* .exe name given */ + ASSOCF_OPEN_BYEXENAME = 0x002, /* Synonym */ + ASSOCF_INIT_DEFAULTTOSTAR = 0x004, /* Use * as base */ + ASSOCF_INIT_DEFAULTTOFOLDER = 0x008, /* Use folder as base */ + ASSOCF_NOUSERSETTINGS = 0x010, /* No HKCU reads */ + ASSOCF_NOTRUNCATE = 0x020, /* Don't truncate return */ + ASSOCF_VERIFY = 0x040, /* Verify data */ + ASSOCF_REMAPRUNDLL = 0x080, /* Get rundll args */ + ASSOCF_NOFIXUPS = 0x100, /* Don't fixup errors */ + ASSOCF_IGNOREBASECLASS = 0x200, /* Don't read baseclass */ +}; + +typedef DWORD ASSOCF; + +typedef enum +{ + ASSOCSTR_COMMAND = 1, /* Verb command */ + ASSOCSTR_EXECUTABLE, /* .exe from command string */ + ASSOCSTR_FRIENDLYDOCNAME, /* Friendly doc type name */ + ASSOCSTR_FRIENDLYAPPNAME, /* Friendly .exe name */ + ASSOCSTR_NOOPEN, /* noopen value */ + ASSOCSTR_SHELLNEWVALUE, /* Use shellnew key */ + ASSOCSTR_DDECOMMAND, /* DDE command template */ + ASSOCSTR_DDEIFEXEC, /* DDE command for process create */ + ASSOCSTR_DDEAPPLICATION, /* DDE app name */ + ASSOCSTR_DDETOPIC, /* DDE topic */ + ASSOCSTR_INFOTIP, /* Infotip */ + ASSOCSTR_QUICKTIP, /* Quick infotip */ + ASSOCSTR_TILEINFO, /* Properties for tileview */ + ASSOCSTR_CONTENTTYPE, /* Mimetype */ + ASSOCSTR_DEFAULTICON, /* Icon */ + ASSOCSTR_SHELLEXTENSION, /* GUID for shell extension handler */ + ASSOCSTR_MAX +} ASSOCSTR; + +typedef enum +{ + ASSOCKEY_SHELLEXECCLASS = 1, /* Key for ShellExec */ + ASSOCKEY_APP, /* Application */ + ASSOCKEY_CLASS, /* Progid or class */ + ASSOCKEY_BASECLASS, /* Base class */ + ASSOCKEY_MAX +} ASSOCKEY; + +typedef enum +{ + ASSOCDATA_MSIDESCRIPTOR = 1, /* Component descriptor */ + ASSOCDATA_NOACTIVATEHANDLER, /* Don't activate */ + ASSOCDATA_QUERYCLASSSTORE, /* Look in Class Store */ + ASSOCDATA_HASPERUSERASSOC, /* Use user association */ + ASSOCDATA_EDITFLAGS, /* Edit flags */ + ASSOCDATA_VALUE, /* pszExtra is value */ + ASSOCDATA_MAX +} ASSOCDATA; + +typedef enum +{ + ASSOCENUM_NONE +} ASSOCENUM; + +typedef struct IQueryAssociations *LPQUERYASSOCIATIONS; + +#define INTERFACE IQueryAssociations +DECLARE_INTERFACE_(IQueryAssociations,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + /*** IQueryAssociations methods ***/ + STDMETHOD(Init)(THIS_ ASSOCF flags, LPCWSTR pszAssoc, HKEY hkProgid, HWND hwnd) PURE; + STDMETHOD(GetString)(THIS_ ASSOCF flags, ASSOCSTR str, LPCWSTR pszExtra, LPWSTR pszOut, DWORD * pcchOut) PURE; + STDMETHOD(GetKey)(THIS_ ASSOCF flags, ASSOCKEY key, LPCWSTR pszExtra, HKEY * phkeyOut) PURE; + STDMETHOD(GetData)(THIS_ ASSOCF flags, ASSOCDATA data, LPCWSTR pszExtra, LPVOID pvOut, DWORD * pcbOut) PURE; + STDMETHOD(GetEnum)(THIS_ ASSOCF flags, ASSOCENUM assocenum, LPCWSTR pszExtra, REFIID riid, LPVOID * ppvOut) PURE; +}; +#undef INTERFACE + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IQueryAssociations_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IQueryAssociations_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IQueryAssociations_Release(p) (p)->lpVtbl->Release(p) +#define IQueryAssociations_Init(p,a,b,c,d) (p)->lpVtbl->Init(p,a,b,c,d) +#define IQueryAssociations_GetString(p,a,b,c,d,e) (p)->lpVtbl->GetString(p,a,b,c,d,e) +#define IQueryAssociations_GetKey(p,a,b,c,d) (p)->lpVtbl->GetKey(p,a,b,c,d) +#define IQueryAssociations_GetData(p,a,b,c,d,e) (p)->lpVtbl->GetData(p,a,b,c,d,e) +#define IQueryAssociations_GetEnum(p,a,b,c,d,e) (p)->lpVtbl->GetEnum(p,a,b,c,d,e) #endif -#ifndef __OBJC__ -#include -#include -#endif +HRESULT WINAPI AssocCreate(CLSID,REFIID,LPVOID*); -#ifndef WINSHLWAPI -#define WINSHLWAPI DECLSPEC_IMPORT -#endif +HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD); +HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD); +#define AssocQueryString WINELIB_NAME_AW(AssocQueryString) -#define DLLVER_PLATFORM_WINDOWS 0x00000001 -#define DLLVER_PLATFORM_NT 0x00000002 +HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,LPDWORD); +HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,LPDWORD); +#define AssocQueryStringByKey WINELIB_NAME_AW(AssocQueryStringByKey) -#define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000 +HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,PHKEY); +HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,PHKEY); +#define AssocQueryKey WINELIB_NAME_AW(AssocQueryKey) + +BOOL WINAPI AssocIsDangerous(LPCWSTR); + +#endif /* NO_SHLWAPI_REG */ + + +/* Path functions */ +#ifndef NO_SHLWAPI_PATH + +/* GetPathCharType return flags */ +#define GCT_INVALID 0x0 +#define GCT_LFNCHAR 0x1 +#define GCT_SHORTCHAR 0x2 +#define GCT_WILD 0x4 +#define GCT_SEPARATOR 0x8 + +LPSTR WINAPI PathAddBackslashA(LPSTR); +LPWSTR WINAPI PathAddBackslashW(LPWSTR); +#define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash) + +BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR); +BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR); +#define PathAddExtension WINELIB_NAME_AW(PathAddExtension) + +BOOL WINAPI PathAppendA(LPSTR,LPCSTR); +BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR); +#define PathAppend WINELIB_NAME_AW(PathAppend) + +LPSTR WINAPI PathBuildRootA(LPSTR,int); +LPWSTR WINAPI PathBuildRootW(LPWSTR,int); +#define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot) + +BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR); +BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR); +#define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize) + +LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR); +LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR); +#define PathCombine WINELIB_NAME_AW(PathCombine) + +BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT); +BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT); +#define PathCompactPath WINELIB_NAME_AW(PathCompactPath) + +BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD); +BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD); +#define PathCompactPathEx WINELIB_NAME_AW(PathCompactPathEx) + +int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR); +int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR); +#define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix) + +HRESULT WINAPI PathCreateFromUrlA(LPCSTR pszUrl, LPSTR pszPath, LPDWORD pcchPath, DWORD dwReserved); +HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved); +#define PathCreateFromUrl WINELIB_NANE_AW(PathCreateFromUrl) + +BOOL WINAPI PathFileExistsA(LPCSTR); +BOOL WINAPI PathFileExistsW(LPCWSTR); +#define PathFileExists WINELIB_NAME_AW(PathFileExists) + +BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR lpszPath, DWORD *dwAttr); +BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr); +#define PathFileExistsAndAttributes WINELIB_NAME_AW(PathFileExistsAndAttributes) + +LPSTR WINAPI PathFindExtensionA(LPCSTR); +LPWSTR WINAPI PathFindExtensionW(LPCWSTR); +#define PathFindExtension WINELIB_NAME_AW(PathFindExtension) + +LPSTR WINAPI PathFindFileNameA(LPCSTR); +LPWSTR WINAPI PathFindFileNameW(LPCWSTR); +#define PathFindFileName WINELIB_NAME_AW(PathFindFileName) + +LPSTR WINAPI PathFindNextComponentA(LPCSTR); +LPWSTR WINAPI PathFindNextComponentW(LPCWSTR); +#define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent) + +BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*); +BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*); +#define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath) + +LPSTR WINAPI PathGetArgsA(LPCSTR); +LPWSTR WINAPI PathGetArgsW(LPCWSTR); +#define PathGetArgs WINELIB_NAME_AW(PathGetArgs) + +UINT WINAPI PathGetCharTypeA(UCHAR); +UINT WINAPI PathGetCharTypeW(WCHAR); +#define PathGetCharType WINELIB_NAME_AW(PathGetCharType) + +int WINAPI PathGetDriveNumberA(LPCSTR); +int WINAPI PathGetDriveNumberW(LPCWSTR); +#define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber) + +BOOL WINAPI PathIsDirectoryA(LPCSTR); +BOOL WINAPI PathIsDirectoryW(LPCWSTR); +#define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory) + +BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR); +BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR); +#define PathIsDirectoryEmpty WINELIB_NAME_AW(PathIsDirectoryEmpty) + +BOOL WINAPI PathIsFileSpecA(LPCSTR); +BOOL WINAPI PathIsFileSpecW(LPCWSTR); +#define PathIsFileSpec WINELIB_NAME_AW(PathIsFileSpec); + +BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR); +BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR); +#define PathIsPrefix WINELIB_NAME_AW(PathIsPrefix) + +BOOL WINAPI PathIsRelativeA(LPCSTR); +BOOL WINAPI PathIsRelativeW(LPCWSTR); +#define PathIsRelative WINELIB_NAME_AW(PathIsRelative) + +BOOL WINAPI PathIsRootA(LPCSTR); +BOOL WINAPI PathIsRootW(LPCWSTR); +#define PathIsRoot WINELIB_NAME_AW(PathIsRoot) + +BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR); +BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR); +#define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot) + +BOOL WINAPI PathIsUNCA(LPCSTR); +BOOL WINAPI PathIsUNCW(LPCWSTR); +#define PathIsUNC WINELIB_NAME_AW(PathIsUNC) + +BOOL WINAPI PathIsUNCServerA(LPCSTR); +BOOL WINAPI PathIsUNCServerW(LPCWSTR); +#define PathIsUNCServer WINELIB_NAME_AW(PathIsUNCServer) + +BOOL WINAPI PathIsUNCServerShareA(LPCSTR); +BOOL WINAPI PathIsUNCServerShareW(LPCWSTR); +#define PathIsUNCServerShare WINELIB_NAME_AW(PathIsUNCServerShare) + +BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR); +BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR); +#define PathIsContentType WINELIB_NAME_AW(PathIsContentType) + +BOOL WINAPI PathIsURLA(LPCSTR); +BOOL WINAPI PathIsURLW(LPCWSTR); +#define PathIsURL WINELIB_NAME_AW(PathIsURL) + +BOOL WINAPI PathMakePrettyA(LPSTR); +BOOL WINAPI PathMakePrettyW(LPWSTR); +#define PathMakePretty WINELIB_NAME_AW(PathMakePretty) + +BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR); +BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR); +#define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec) + +int WINAPI PathParseIconLocationA(LPSTR); +int WINAPI PathParseIconLocationW(LPWSTR); +#define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation) + +VOID WINAPI PathQuoteSpacesA(LPSTR); +VOID WINAPI PathQuoteSpacesW(LPWSTR); +#define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces) + +BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD); +BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD); +#define PathRelativePathTo WINELIB_NAME_AW(PathRelativePathTo) + +VOID WINAPI PathRemoveArgsA(LPSTR); +VOID WINAPI PathRemoveArgsW(LPWSTR); +#define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs) + +LPSTR WINAPI PathRemoveBackslashA(LPSTR); +LPWSTR WINAPI PathRemoveBackslashW(LPWSTR); +#define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash) + +VOID WINAPI PathRemoveBlanksA(LPSTR); +VOID WINAPI PathRemoveBlanksW(LPWSTR); +#define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks) + +VOID WINAPI PathRemoveExtensionA(LPSTR); +VOID WINAPI PathRemoveExtensionW(LPWSTR); +#define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension) + +BOOL WINAPI PathRemoveFileSpecA(LPSTR); +BOOL WINAPI PathRemoveFileSpecW(LPWSTR); +#define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec) + +BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR); +BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR); +#define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension) + +BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT); +BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT); +#define PathSearchAndQualify WINELIB_NAME_AW(PathSearchAndQualify) + +VOID WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR); +VOID WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR); +#define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath) + +LPSTR WINAPI PathSkipRootA(LPCSTR); +LPWSTR WINAPI PathSkipRootW(LPCWSTR); +#define PathSkipRoot WINELIB_NAME_AW(PathSkipRoot) + +VOID WINAPI PathStripPathA(LPSTR); +VOID WINAPI PathStripPathW(LPWSTR); +#define PathStripPath WINELIB_NAME_AW(PathStripPath) + +BOOL WINAPI PathStripToRootA(LPSTR); +BOOL WINAPI PathStripToRootW(LPWSTR); +#define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot) + +VOID WINAPI PathUnquoteSpacesA(LPSTR); +VOID WINAPI PathUnquoteSpacesW(LPWSTR); +#define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces) + +BOOL WINAPI PathMakeSystemFolderA(LPCSTR); +BOOL WINAPI PathMakeSystemFolderW(LPCWSTR); +#define PathMakeSystemFolder WINELIB_NAME_AW(PathMakeSystemFolder) + +BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR); +BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR); +#define PathUnmakeSystemFolder WINELIB_NAME_AW(PathUnmakeSystemFolder) + +BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD); +BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD); +#define PathIsSystemFolder WINELIB_NAME_AW(PathIsSystemFolder) + +BOOL WINAPI PathIsNetworkPathA(LPCSTR); +BOOL WINAPI PathIsNetworkPathW(LPCWSTR); +#define PathIsNetworkPath WINELIB_NAME_AW(PathIsNetworkPath) + +BOOL WINAPI PathIsLFNFileSpecA(LPCSTR); +BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR); +#define PathIsLFNFileSpec WINELIB_NAME_AW(PathIsLFNFileSpec) + +LPCSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR *,int); +LPCWSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR *,int); +#define PathFindSuffixArray WINELIB_NAME_AW(PathFindSuffixArray) + +VOID WINAPI PathUndecorateA(LPSTR); +VOID WINAPI PathUndecorateW(LPWSTR); +#define PathUndecorate WINELIB_NAME_AW(PathUndecorate) + +BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT); +BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT); +#define PathUnExpandEnvStrings WINELIB_NAME_AW(PathUnExpandEnvStrings) + +/* Url functions */ +typedef enum { + URL_SCHEME_INVALID = -1, + URL_SCHEME_UNKNOWN = 0, + URL_SCHEME_FTP, + URL_SCHEME_HTTP, + URL_SCHEME_GOPHER, + URL_SCHEME_MAILTO, + URL_SCHEME_NEWS, + URL_SCHEME_NNTP, + URL_SCHEME_TELNET, + URL_SCHEME_WAIS, + URL_SCHEME_FILE, + URL_SCHEME_MK, + URL_SCHEME_HTTPS, + URL_SCHEME_SHELL, + URL_SCHEME_SNEWS, + URL_SCHEME_LOCAL, + URL_SCHEME_JAVASCRIPT, + URL_SCHEME_VBSCRIPT, + URL_SCHEME_ABOUT, + URL_SCHEME_RES, + URL_SCHEME_MSSHELLROOTED, + URL_SCHEME_MSSHELLIDLIST, + URL_SCHEME_MSHELP, + URL_SCHEME_MAXVALUE +} URL_SCHEME; + +/* These are used by UrlGetPart routine */ +typedef enum { + URL_PART_NONE = 0, + URL_PART_SCHEME = 1, + URL_PART_HOSTNAME, + URL_PART_USERNAME, + URL_PART_PASSWORD, + URL_PART_PORT, + URL_PART_QUERY +} URL_PART; + +#define URL_PARTFLAG_KEEPSCHEME 0x00000001 + +/* These are used by the UrlIs... routines */ +typedef enum { + URLIS_URL, + URLIS_OPAQUE, + URLIS_NOHISTORY, + URLIS_FILEURL, + URLIS_APPLIABLE, + URLIS_DIRECTORY, + URLIS_HASQUERY +} URLIS; + +/* This is used by the UrlApplyScheme... routines */ +#define URL_APPLY_FORCEAPPLY 0x00000008 +#define URL_APPLY_GUESSFILE 0x00000004 +#define URL_APPLY_GUESSSCHEME 0x00000002 +#define URL_APPLY_DEFAULT 0x00000001 + +/* The following are used by UrlEscape..., UrlUnEscape..., + * UrlCanonicalize..., and UrlCombine... routines + */ +#define URL_WININET_COMPATIBILITY 0x80000000 +#define URL_PLUGGABLE_PROTOCOL 0x40000000 +#define URL_ESCAPE_UNSAFE 0x20000000 +#define URL_UNESCAPE 0x10000000 + +#define URL_DONT_SIMPLIFY 0x08000000 +#define URL_NO_META URL_DONT_SIMPLIFY +#define URL_ESCAPE_SPACES_ONLY 0x04000000 +#define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000 #define URL_DONT_UNESCAPE_EXTRA_INFO URL_DONT_ESCAPE_EXTRA_INFO -#define URL_DONT_SIMPLIFY 0x08000000 -#define URL_ESCAPE_PERCENT 0x00001000 -#define URL_ESCAPE_SEGMENT_ONLY 0x00002000 -#define URL_ESCAPE_SPACES_ONLY 0x04000000 -#define URL_ESCAPE_UNSAFE 0x20000000 -#define URL_INTERNAL_PATH 0x00800000 -#define URL_PARTFLAG_KEEPSCHEME 0x00000001 -#define URL_PLUGGABLE_PROTOCOL 0x40000000 -#define URL_UNESCAPE 0x10000000 -#define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000 -#define URL_UNESCAPE_INPLACE 0x00100000 +#define URL_BROWSER_MODE URL_DONT_ESCAPE_EXTRA_INFO -#define URL_APPLY_FORCEAPPLY 0x00000008 -#define URL_APPLY_GUESSFILE 0x00000004 -#define URL_APPLY_GUESSSCHEME 0x00000002 -#define URL_APPLY_DEFAULT 0x00000001 +#define URL_INTERNAL_PATH 0x00800000 /* Will escape #'s in paths */ +#define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000 +#define URL_CONVERT_IF_DOSPATH 0x00200000 +#define URL_UNESCAPE_INPLACE 0x00100000 + +#define URL_FILE_USE_PATHURL 0x00010000 + +#define URL_ESCAPE_SEGMENT_ONLY 0x00002000 +#define URL_ESCAPE_PERCENT 0x00001000 + +HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD); +HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +#define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme) + +HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD); +HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +#define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize) + +HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD); +HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD); +#define UrlCombine WINELIB_NAME_AW(UrlCombine) + +INT WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL); +INT WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL); +#define UrlCompare WINELIB_NAME_AW(UrlCompare) + +HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD); +HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +#define UrlEscape WINELIB_NAME_AW(UrlEscape) + +#define UrlEscapeSpacesA(x,y,z) UrlCanonicalizeA(x, y, z, \ + URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY) +#define UrlEscapeSpacesW(x,y,z) UrlCanonicalizeW(x, y, z, \ + URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY) +#define UrlEscapeSpaces WINELIB_NAME_AW(UrlEscapeSpaces) + +LPCSTR WINAPI UrlGetLocationA(LPCSTR); +LPCWSTR WINAPI UrlGetLocationW(LPCWSTR); +#define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation) + +HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD); +HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD); +#define UrlGetPart WINELIB_NAME_AW(UrlGetPart) + +HRESULT WINAPI HashData(const unsigned char *,DWORD,unsigned char *lpDest,DWORD); + +HRESULT WINAPI UrlHashA(LPCSTR,unsigned char *,DWORD); +HRESULT WINAPI UrlHashW(LPCWSTR,unsigned char *,DWORD); +#define UrlHash WINELIB_NAME_AW(UrlHash) + +BOOL WINAPI UrlIsA(LPCSTR,URLIS); +BOOL WINAPI UrlIsW(LPCWSTR,URLIS); +#define UrlIs WINELIB_NAME_AW(UrlIs) + +BOOL WINAPI UrlIsNoHistoryA(LPCSTR); +BOOL WINAPI UrlIsNoHistoryW(LPCWSTR); +#define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory) + +BOOL WINAPI UrlIsOpaqueA(LPCSTR); +BOOL WINAPI UrlIsOpaqueW(LPCWSTR); +#define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque) + +#define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL) +#define UrlIsFileUrlW(y) UrlIsW(x, URLIS_FILEURL) +#define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl) + +HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD); +HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD); +#define UrlUnescape WINELIB_AW_NAME(UrlUnescape) + +#define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \ + y | URL_UNESCAPE_INPLACE) +#define UrlUnescapeInPlaceW(x,y) UrlUnescapeW(x, NULL, NULL, \ + y | URL_UNESCAPE_INPLACE) +#define UrlUnescapeInPlace WINELIB_AW_NAME(UrlUnescapeInPlace) + +HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD); +HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +#define UrlCreateFromPath WINELIB_AW_NAME(UrlCreateFromPath) + +typedef struct tagPARSEDURLA { + DWORD cbSize; + LPCSTR pszProtocol; + UINT cchProtocol; + LPCSTR pszSuffix; + UINT cchSuffix; + UINT nScheme; +} PARSEDURLA, *PPARSEDURLA; + +typedef struct tagPARSEDURLW { + DWORD cbSize; + LPCWSTR pszProtocol; + UINT cchProtocol; + LPCWSTR pszSuffix; + UINT cchSuffix; + UINT nScheme; +} PARSEDURLW, *PPARSEDURLW; + +HRESULT WINAPI ParseURLA(LPCSTR pszUrl, PARSEDURLA *ppu); +HRESULT WINAPI ParseURLW(LPCWSTR pszUrl, PARSEDURLW *ppu); +#define ParseURL WINELIB_AW_NAME(ParseUrl) + +#endif /* NO_SHLWAPI_PATH */ + + +/* String functions */ +#ifndef NO_SHLWAPI_STRFCNS + +/* StrToIntEx flags */ +#define STIF_DEFAULT 0x0L +#define STIF_SUPPORT_HEX 0x1L + +BOOL WINAPI ChrCmpIA (WORD,WORD); +BOOL WINAPI ChrCmpIW (WCHAR,WCHAR); +#define ChrCmpI WINELIB_NAME_AW(ChrCmpI) + +INT WINAPI StrCSpnA(LPCSTR,LPCSTR); +INT WINAPI StrCSpnW(LPCWSTR,LPCWSTR); +#define StrCSpn WINELIB_NAME_AW(StrCSpn) + +INT WINAPI StrCSpnIA(LPCSTR,LPCSTR); +INT WINAPI StrCSpnIW(LPCWSTR,LPCWSTR); +#define StrCSpnI WINELIB_NAME_AW(StrCSpnI) + +#define StrCatA lstrcatA +LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR); +#define StrCat WINELIB_NAME_AW(StrCat) + +LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT); +LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT); +#define StrCatBuff WINELIB_NAME_AW(StrCatBuff) + +DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR); + +LPSTR WINAPI StrChrA(LPCSTR,WORD); +LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR); +#define StrChr WINELIB_NAME_AW(StrChr) + +LPSTR WINAPI StrChrIA(LPCSTR,WORD); +LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR); +#define StrChrI WINELIB_NAME_AW(StrChrI) + +#define StrCmpA lstrcmpA +int WINAPI StrCmpW(LPCWSTR,LPCWSTR); +#define StrCmp WINELIB_NAME_AW(StrCmp) + +#define StrCmpIA lstrcmpiA +int WINAPI StrCmpIW(LPCWSTR,LPCWSTR); +#define StrCmpI WINELIB_NAME_AW(StrCmpI) + +#define StrCpyA lstrcpyA +LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR); +#define StrCpy WINELIB_NAME_AW(StrCpy) + +#define StrCpyNA lstrcpynA +LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int); +#define StrCpyN WINELIB_NAME_AW(StrCpyN) +#define StrNCpy WINELIB_NAME_AW(StrCpyN) + +INT WINAPI StrCmpLogicalW(LPCWSTR,LPCWSTR); + +INT WINAPI StrCmpNA(LPCSTR,LPCSTR,INT); +INT WINAPI StrCmpNW(LPCWSTR,LPCWSTR,INT); +#define StrCmpN WINELIB_NAME_AW(StrCmpN) +#define StrNCmp WINELIB_NAME_AW(StrCmpN) + +INT WINAPI StrCmpNIA(LPCSTR,LPCSTR,INT); +INT WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,INT); +#define StrCmpNI WINELIB_NAME_AW(StrCmpNI) +#define StrNCmpI WINELIB_NAME_AW(StrCmpNI) + +LPSTR WINAPI StrDupA(LPCSTR); +LPWSTR WINAPI StrDupW(LPCWSTR); +#define StrDup WINELIB_NAME_AW(StrDup) + +HRESULT WINAPI SHStrDupA(LPCSTR,WCHAR**); +HRESULT WINAPI SHStrDupW(LPCWSTR,WCHAR**); +#define SHStrDup WINELIB_NAME_AW(SHStrDup) + +LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT); + +/* A/W Pairing is broken for this function */ +LPSTR WINAPI StrFormatByteSize64A (LONGLONG,LPSTR,UINT); +LPWSTR WINAPI StrFormatByteSizeW (LONGLONG,LPWSTR,UINT); +#ifndef __WINESRC__ +#ifdef UNICODE +#define StrFormatByteSize StrFormatByteSizeW +#else +#define StrFormatByteSize StrFormatByteSize64A +#endif +#endif + +LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT); +LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT); +#define StrFormatKBSize WINELIB_NAME_AW(StrFormatKBSize) + +int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int); +int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int); +#define StrFromTimeInterval WINELIB_NAME_AW(StrFromTimeInterval) + +BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int); +BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int); +#define StrIsIntlEqual WINELIB_NAME_AW(StrIsIntlEqual) + +#define StrIntlEqNA(a,b,c) StrIsIntlEqualA(TRUE,a,b,c) +#define StrIntlEqNW(a,b,c) StrIsIntlEqualW(TRUE,a,b,c) + +#define StrIntlEqNIA(a,b,c) StrIsIntlEqualA(FALSE,a,b,c) +#define StrIntlEqNIW(a,b,c) StrIsIntlEqualW(FALSE,a,b,c) + +LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int); +LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int); +#define StrNCat WINELIB_NAME_AW(StrNCat) +#define StrCatN WINELIB_NAME_AW(StrNCat) + +LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR); +LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR); +#define StrPBrk WINELIB_NAME_AW(StrPBrk) + +LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD); +LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WORD); +#define StrRChr WINELIB_NAME_AW(StrRChr) + +LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD); +LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WORD); +#define StrRChrI WINELIB_NAME_AW(StrRChrI) + +LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR); +LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR); +#define StrRStrI WINELIB_NAME_AW(StrRStrI) + +int WINAPI StrSpnA(LPCSTR,LPCSTR); +int WINAPI StrSpnW(LPCWSTR,LPCWSTR); +#define StrSpn WINELIB_NAME_AW(StrSpn) + +LPSTR WINAPI StrStrA(LPCSTR,LPCSTR); +LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR); +#define StrStr WINELIB_NAME_AW(StrStr) + +LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR); +LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR); +#define StrStrI WINELIB_NAME_AW(StrStrI) + +int WINAPI StrToIntA(LPCSTR); +int WINAPI StrToIntW(LPCWSTR); +#define StrToInt WINELIB_NAME_AW(StrToInt) +#define StrToLong WINELIB_NAME_AW(StrToInt) + +BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*); +BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*); +#define StrToIntEx WINELIB_NAME_AW(StrToIntEx) + +BOOL WINAPI StrToInt64ExA(LPCSTR,DWORD,LONGLONG*); +BOOL WINAPI StrToInt64ExW(LPCWSTR,DWORD,LONGLONG*); +#define StrToIntEx64 WINELIB_NAME_AW(StrToIntEx64) + +BOOL WINAPI StrTrimA(LPSTR,LPCSTR); +BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR); +#define StrTrim WINELIB_NAME_AW(StrTrim) + +INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,va_list); +INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,va_list); +#define wvnsprintf WINELIB_NAME_AW(wvnsprintf) + +INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...); +INT WINAPIV wnsprintfW(LPWSTR,INT,LPCWSTR, ...); +#define wnsprintf WINELIB_NAME_AW(wnsprintf) + +HRESULT WINAPI SHLoadIndirectString(LPCWSTR,LPWSTR,UINT,PVOID*); + +BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int); +BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int); +#define IntlStrEqWorker WINELIB_NAME_AW(IntlStrEqWorker) + +#define IntlStrEqNA(s1,s2,n) IntlStrEqWorkerA(TRUE,s1,s2,n) +#define IntlStrEqNW(s1,s2,n) IntlStrEqWorkerW(TRUE,s1,s2,n) +#define IntlStrEqN WINELIB_NAME_AW(IntlStrEqN) + +#define IntlStrEqNIA(s1,s2,n) IntlStrEqWorkerA(FALSE,s1,s2,n) +#define IntlStrEqNIW(s1,s2,n) IntlStrEqWorkerW(FALSE,s1,s2,n) +#define IntlStrEqNI WINELIB_NAME_AW(IntlStrEqNI) + +HRESULT WINAPI StrRetToStrA(STRRET*,LPCITEMIDLIST,LPSTR*); +HRESULT WINAPI StrRetToStrW(STRRET*,LPCITEMIDLIST,LPWSTR*); +#define StrRetToStr WINELIB_NAME_AW(StrRetToStr) + +HRESULT WINAPI StrRetToBufA(STRRET*,LPCITEMIDLIST,LPSTR,UINT); +HRESULT WINAPI StrRetToBufW(STRRET*,LPCITEMIDLIST,LPWSTR,UINT); +#define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf) + +HRESULT WINAPI StrRetToBSTR(STRRET*,LPCITEMIDLIST,BSTR*); + +#endif /* NO_SHLWAPI_STRFCNS */ + + +/* GDI functions */ +#ifndef NO_SHLWAPI_GDI + +HPALETTE WINAPI SHCreateShellPalette(HDC); + +COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD); + +COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL); + +VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD); + +#endif /* NO_SHLWAPI_GDI */ + + +/* Stream functions */ +#ifndef NO_SHLWAPI_STREAM + +struct IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD); +struct IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD); +#define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream2) /* Uses version 2 */ + +struct IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD); +struct IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD); +#define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2) + +HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**); +HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**); +#define SHCreateStreamOnFile WINELIB_NAME_AW(SHCreateStreamOnFile) + +HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR,DWORD,DWORD,BOOL,struct IStream*,struct IStream**); + +HRESULT WINAPI SHCreateStreamWrapper(LPBYTE,DWORD,DWORD,struct IStream**); + +#endif /* NO_SHLWAPI_STREAM */ + +/* SHAutoComplete flags */ +#define SHACF_DEFAULT 0x00000000 +#define SHACF_FILESYSTEM 0x00000001 +#define SHACF_URLHISTORY 0x00000002 +#define SHACF_URLMRU 0x00000004 +#define SHACF_URLALL (SHACF_URLHISTORY|SHACF_URLMRU) +#define SHACF_USETAB 0x00000008 +#define SHACF_FILESYS_ONLY 0x00000010 +#define SHACF_FILESYS_DIRS 0x00000020 +#define SHACF_AUTOSUGGEST_FORCE_ON 0x10000000 +#define SHACF_AUTOSUGGEST_FORCE_OFF 0x20000000 +#define SHACF_AUTOAPPEND_FORCE_ON 0x40000000 +#define SHACF_AUTOAPPEND_FORCE_OFF 0x80000000 + +HRESULT WINAPI SHAutoComplete(HWND,DWORD); + +/* Threads */ +HRESULT WINAPI SHGetThreadRef(IUnknown**); +HRESULT WINAPI SHSetThreadRef(IUnknown*); +HRESULT WINAPI SHReleaseThreadRef(void); + +/* SHCreateThread flags */ +#define CTF_INSIST 0x01 /* Always call */ +#define CTF_THREAD_REF 0x02 /* Hold thread ref */ +#define CTF_PROCESS_REF 0x04 /* Hold process ref */ +#define CTF_COINIT 0x08 /* Startup COM first */ +#define CTF_FREELIBANDEXIT 0x10 /* Hold DLL ref */ +#define CTF_REF_COUNTED 0x20 /* Thread is ref counted */ +#define CTF_WAIT_ALLOWCOM 0x40 /* Allow marshalling */ + +BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE); + +BOOL WINAPI SHSkipJunction(struct IBindCtx*,const CLSID*); + +/* Version Information */ + +typedef struct _DllVersionInfo { + DWORD cbSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformID; +} DLLVERSIONINFO; + +#define DLLVER_PLATFORM_WINDOWS 0x01 /* Win9x */ +#define DLLVER_PLATFORM_NT 0x02 /* WinNT */ + +typedef HRESULT (CALLBACK *DLLGETVERSIONPROC)(DLLVERSIONINFO *); + +#ifdef __WINESRC__ +/* shouldn't be here, but is nice for type checking */ +HRESULT WINAPI DllGetVersion(DLLVERSIONINFO *) DECLSPEC_HIDDEN; +#endif + +typedef struct _DLLVERSIONINFO2 { + DLLVERSIONINFO info1; + DWORD dwFlags; /* Reserved */ + ULONGLONG DECLSPEC_ALIGN(8) ullVersion; /* 16 bits each for Major, Minor, Build, QFE */ +} DLLVERSIONINFO2; + +#define DLLVER_MAJOR_MASK 0xFFFF000000000000 +#define DLLVER_MINOR_MASK 0x0000FFFF00000000 +#define DLLVER_BUILD_MASK 0x00000000FFFF0000 +#define DLLVER_QFE_MASK 0x000000000000FFFF + +#define MAKEDLLVERULL(mjr, mnr, bld, qfe) (((ULONGLONG)(mjr)<< 48)| \ + ((ULONGLONG)(mnr)<< 32) | ((ULONGLONG)(bld)<< 16) | (ULONGLONG)(qfe)) + +HRESULT WINAPI DllInstall(BOOL,LPCWSTR) DECLSPEC_HIDDEN; + + +/* IsOS definitions */ #define OS_WIN32SORGREATER 0x00 #define OS_NT 0x01 @@ -77,780 +1039,12 @@ extern "C" { #define OS_MEDIACENTER 0x23 #define OS_APPLIANCE 0x24 -#define SHREGSET_HKCU 0x1 -#define SHREGSET_FORCE_HKCU 0x2 -#define SHREGSET_HKLM 0x4 -#define SHREGSET_FORCE_HKLM 0x8 -#define SHREGSET_DEFAULT (SHREGSET_FORCE_HKCU | SHREGSET_HKLM) +BOOL WINAPI IsOS(DWORD); -#define STIF_DEFAULT 0x0L -#define STIF_SUPPORT_HEX 0x1L - -#define CTF_INSIST 0x01 -#define CTF_THREAD_REF 0x02 -#define CTF_PROCESS_REF 0x04 -#define CTF_COINIT 0x08 -#define CTF_FREELIBANDEXIT 0x10 -#define CTF_REF_COUNTED 0x20 -#define CTF_WAIT_ALLOWCOM 0x40 - -#define GCT_INVALID 0x0 -#define GCT_LFNCHAR 0x1 -#define GCT_SHORTCHAR 0x2 -#define GCT_WILD 0x4 -#define GCT_SEPARATOR 0x8 - -#ifndef RC_INVOKED -#include -typedef struct _DllVersionInfo -{ - DWORD cbSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformID; -} DLLVERSIONINFO; -typedef struct _DLLVERSIONINFO2 -{ - DLLVERSIONINFO info1; - DWORD dwFlags; - ULONGLONG ullVersion; -} DLLVERSIONINFO2; -#include - -#define MAKEDLLVERULL(major, minor, build, qfe) \ - (((ULONGLONG)(major) << 48) | \ - ((ULONGLONG)(minor) << 32) | \ - ((ULONGLONG)(build) << 16) | \ - ((ULONGLONG)( qfe) << 0)) - -typedef enum { - ASSOCSTR_COMMAND, - ASSOCSTR_EXECUTABLE, - ASSOCSTR_FRIENDLYDOCNAME, - ASSOCSTR_FRIENDLYAPPNAME, - ASSOCSTR_NOOPEN, - ASSOCSTR_SHELLNEWVALUE, - ASSOCSTR_DDECOMMAND, - ASSOCSTR_DDEIFEXEC, - ASSOCSTR_DDEAPPLICATION, - ASSOCSTR_DDETOPIC -} ASSOCSTR; -typedef enum -{ - ASSOCKEY_SHELLEXECCLASS = 1, - ASSOCKEY_APP, - ASSOCKEY_CLASS, - ASSOCKEY_BASECLASS -} ASSOCKEY; -typedef enum -{ - ASSOCDATA_MSIDESCRIPTOR = 1, - ASSOCDATA_NOACTIVATEHANDLER, - ASSOCDATA_QUERYCLASSSTORE -} ASSOCDATA; -typedef DWORD ASSOCF; -enum -{ - ASSOCF_INIT_NOREMAPCLSID = 0x001, - ASSOCF_INIT_BYEXENAME = 0x002, - ASSOCF_OPEN_BYEXENAME = 0x002, - ASSOCF_INIT_DEFAULTTOSTAR = 0x004, - ASSOCF_INIT_DEFAULTTOFOLDER = 0x008, - ASSOCF_NOUSERSETTINGS = 0x010, - ASSOCF_NOTRUNCATE = 0x020, - ASSOCF_VERIFY = 0x040, - ASSOCF_REMAPRUNDLL = 0x080, - ASSOCF_NOFIXUPS = 0x100, - ASSOCF_IGNOREBASECLASS = 0x200, -}; - -typedef enum -{ - ASSOCENUM_NONE -} ASSOCENUM; -typedef enum -{ - SHREGDEL_DEFAULT = 0x00000000, - SHREGDEL_HKCU = 0x00000001, - SHREGDEL_HKLM = 0x00000010, - SHREGDEL_BOTH = 0x00000011 -} SHREGDEL_FLAGS; -typedef enum -{ - SHREGENUM_DEFAULT = 0x00000000, - SHREGENUM_HKCU = 0x00000001, - SHREGENUM_HKLM = 0x00000010, - SHREGENUM_BOTH = 0x00000011 -} SHREGENUM_FLAGS; -typedef struct tagPARSEDURLA { - DWORD cbSize; - LPCSTR pszProtocol; - UINT cchProtocol; - LPCSTR pszSuffix; - UINT cchSuffix; - UINT nScheme; -} PARSEDURLA, *PPARSEDURLA; -typedef struct tagPARSEDURLW { - DWORD cbSize; - LPCWSTR pszProtocol; - UINT cchProtocol; - LPCWSTR pszSuffix; - UINT cchSuffix; - UINT nScheme; -} PARSEDURLW, *PPARSEDURLW; -typedef enum -{ - URLIS_URL, - URLIS_OPAQUE, - URLIS_NOHISTORY, - URLIS_FILEURL, - URLIS_APPLIABLE, - URLIS_DIRECTORY, - URLIS_HASQUERY -} URLIS; -typedef enum { - URL_SCHEME_INVALID = -1, - URL_SCHEME_UNKNOWN = 0, - URL_SCHEME_FTP, - URL_SCHEME_HTTP, - URL_SCHEME_GOPHER, - URL_SCHEME_MAILTO, - URL_SCHEME_NEWS, - URL_SCHEME_NNTP, - URL_SCHEME_TELNET, - URL_SCHEME_WAIS, - URL_SCHEME_FILE, - URL_SCHEME_MK, - URL_SCHEME_HTTPS, - URL_SCHEME_SHELL, - URL_SCHEME_SNEWS, - URL_SCHEME_LOCAL, - URL_SCHEME_JAVASCRIPT, - URL_SCHEME_VBSCRIPT, - URL_SCHEME_ABOUT, - URL_SCHEME_RES, - URL_SCHEME_MSSHELLROOTED, - URL_SCHEME_MSSHELLIDLIST, - URL_SCHEME_MSHELP, - URL_SCHEME_MAXVALUE -} URL_SCHEME; -typedef enum { - URL_PART_NONE = 0, - URL_PART_SCHEME = 1, - URL_PART_HOSTNAME, - URL_PART_USERNAME, - URL_PART_PASSWORD, - URL_PART_PORT, - URL_PART_QUERY -} URL_PART; - - -typedef HANDLE HUSKEY, *PHUSKEY; - -typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *); - -WINSHLWAPI BOOL WINAPI ChrCmpIA(WORD,WORD); -WINSHLWAPI BOOL WINAPI ChrCmpIW(WCHAR,WCHAR); -#define IntlStrEqNA(pStr1, pStr2, nChar) IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); -#define IntlStrEqNW(pStr1, pStr2, nChar) IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); -#define IntlStrEqNIA(pStr1, pStr2, nChar) IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); -#define IntlStrEqNIW(pStr1, pStr2, nChar) IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); -WINSHLWAPI BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int); -WINSHLWAPI BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int); -WINSHLWAPI BOOL WINAPI IsOS(DWORD); -WINSHLWAPI HRESULT WINAPI SHLoadIndirectString(LPCWSTR,LPWSTR,UINT,PVOID*); -WINSHLWAPI HRESULT WINAPI SHStrDupA(LPCSTR,LPWSTR*); -WINSHLWAPI HRESULT WINAPI SHStrDupW(LPCWSTR,LPWSTR*); -WINSHLWAPI LPSTR WINAPI StrCatA(LPSTR,LPCSTR); -WINSHLWAPI LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR); -WINSHLWAPI LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,int); -WINSHLWAPI LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,int); -WINSHLWAPI DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR); -WINSHLWAPI LPSTR WINAPI StrChrA(LPCSTR,WORD); -WINSHLWAPI LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR); -WINSHLWAPI LPSTR WINAPI StrChrIA(LPCSTR,WORD); -WINSHLWAPI LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR); -#define StrCmpIA lstrcmpiA -#define StrCmpA lstrcmpA -#define StrCpyA lstrcpyA -#define StrCpyNA lstrcpynA -WINSHLWAPI int WINAPI StrCmpIW(LPCWSTR,LPCWSTR); -WINSHLWAPI int WINAPI StrCmpW(LPCWSTR,LPCWSTR); -WINSHLWAPI LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR); -WINSHLWAPI LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int); -WINSHLWAPI int WINAPI StrCmpNA(LPCSTR,LPCSTR,int); -WINSHLWAPI int WINAPI StrCmpNW(LPCWSTR,LPCWSTR,int); -WINSHLWAPI int WINAPI StrCmpNIA(LPCSTR,LPCSTR,int); -WINSHLWAPI int WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,int); -WINSHLWAPI int WINAPI StrCSpnA(LPCSTR,LPCSTR); -WINSHLWAPI int WINAPI StrCSpnW(LPCWSTR,LPCWSTR); -WINSHLWAPI int WINAPI StrCSpnIA(LPCSTR,LPCSTR); -WINSHLWAPI int WINAPI StrCSpnIW(LPCWSTR,LPCWSTR); -WINSHLWAPI LPSTR WINAPI StrDupA(LPCSTR); -WINSHLWAPI LPWSTR WINAPI StrDupW(LPCWSTR); -WINSHLWAPI LPSTR WINAPI StrFormatByteSize64A(LONGLONG,LPSTR,UINT); -WINSHLWAPI LPSTR WINAPI StrFormatByteSizeA(DWORD,LPSTR,UINT); -WINSHLWAPI LPWSTR WINAPI StrFormatByteSizeW(LONGLONG,LPWSTR,UINT); -WINSHLWAPI LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT); -WINSHLWAPI LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT); -WINSHLWAPI int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int); -WINSHLWAPI int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int); -WINSHLWAPI BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int); -WINSHLWAPI BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int); -WINSHLWAPI LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int); -WINSHLWAPI LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int); -WINSHLWAPI LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR); -WINSHLWAPI LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR); -WINSHLWAPI LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD); -WINSHLWAPI LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WCHAR); -WINSHLWAPI LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD); -WINSHLWAPI LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WCHAR); -#ifndef __OBJC__ -WINSHLWAPI HRESULT WINAPI StrRetToBufA(LPSTRRET,LPCITEMIDLIST,LPSTR,UINT); -WINSHLWAPI HRESULT WINAPI StrRetToBufW(LPSTRRET,LPCITEMIDLIST,LPWSTR,UINT); -WINSHLWAPI HRESULT WINAPI StrRetToStrA(LPSTRRET,LPCITEMIDLIST,LPSTR*); -WINSHLWAPI HRESULT WINAPI StrRetToStrW(LPSTRRET,LPCITEMIDLIST,LPWSTR*); -#endif -WINSHLWAPI LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR); -WINSHLWAPI LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR); -WINSHLWAPI int WINAPI StrSpnA(LPCSTR,LPCSTR); -WINSHLWAPI int WINAPI StrSpnW(LPCWSTR,LPCWSTR); -WINSHLWAPI LPSTR WINAPI StrStrA(LPCSTR, LPCSTR); -WINSHLWAPI LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR); -WINSHLWAPI LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR); -WINSHLWAPI LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR); -WINSHLWAPI int WINAPI StrToIntA(LPCSTR); -WINSHLWAPI int WINAPI StrToIntW(LPCWSTR); -WINSHLWAPI BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*); -WINSHLWAPI BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*); -WINSHLWAPI BOOL WINAPI StrTrimA(LPSTR,LPCSTR); -WINSHLWAPI BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR); -WINSHLWAPI LPSTR WINAPI PathAddBackslashA(LPSTR); -WINSHLWAPI LPWSTR WINAPI PathAddBackslashW(LPWSTR); -WINSHLWAPI BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR); -WINSHLWAPI BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR); -WINSHLWAPI BOOL WINAPI PathAppendA(LPSTR,LPCSTR); -WINSHLWAPI BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR); -WINSHLWAPI LPSTR WINAPI PathBuildRootA(LPSTR,int); -WINSHLWAPI LPWSTR WINAPI PathBuildRootW(LPWSTR,int); -WINSHLWAPI BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR); -WINSHLWAPI BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR); -WINSHLWAPI LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR); -WINSHLWAPI LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR); -WINSHLWAPI int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR); -WINSHLWAPI int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR); -WINSHLWAPI BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT); -WINSHLWAPI BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT); -WINSHLWAPI BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD); -WINSHLWAPI BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD); -WINSHLWAPI HRESULT WINAPI PathCreateFromUrlA(LPCSTR,LPSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI PathCreateFromUrlW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -WINSHLWAPI BOOL WINAPI PathFileExistsA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathFileExistsW(LPCWSTR); -WINSHLWAPI LPSTR WINAPI PathFindExtensionA(LPCSTR); -WINSHLWAPI LPWSTR WINAPI PathFindExtensionW(LPCWSTR); -WINSHLWAPI LPSTR WINAPI PathFindFileNameA(LPCSTR); -WINSHLWAPI LPWSTR WINAPI PathFindFileNameW(LPCWSTR); -WINSHLWAPI LPSTR WINAPI PathFindNextComponentA(LPCSTR); -WINSHLWAPI LPWSTR WINAPI PathFindNextComponentW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*); -WINSHLWAPI BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*); -WINSHLWAPI LPCSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR*,int); -WINSHLWAPI LPCWSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR*,int); -WINSHLWAPI LPSTR WINAPI PathGetArgsA(LPCSTR); -WINSHLWAPI LPWSTR WINAPI PathGetArgsW(LPCWSTR); -WINSHLWAPI UINT WINAPI PathGetCharTypeA(UCHAR); -WINSHLWAPI UINT WINAPI PathGetCharTypeW(WCHAR); -WINSHLWAPI int WINAPI PathGetDriveNumberA(LPCSTR); -WINSHLWAPI int WINAPI PathGetDriveNumberW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsDirectoryA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsDirectoryW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsFileSpecA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsFileSpecW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsLFNFileSpecA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsNetworkPathA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsNetworkPathW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsRelativeA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsRelativeW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsRootA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsRootW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD); -WINSHLWAPI BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD); -WINSHLWAPI BOOL WINAPI PathIsUNCA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsUNCServerA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsUNCServerShareA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsUNCServerShareW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsUNCServerW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsUNCW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathIsURLA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathIsURLW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathMakePrettyA(LPSTR); -WINSHLWAPI BOOL WINAPI PathMakePrettyW(LPWSTR); -WINSHLWAPI BOOL WINAPI PathMakeSystemFolderA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathMakeSystemFolderW(LPCWSTR); -WINSHLWAPI BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR); -WINSHLWAPI BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR); -WINSHLWAPI int WINAPI PathParseIconLocationA(LPSTR); -WINSHLWAPI int WINAPI PathParseIconLocationW(LPWSTR); -WINSHLWAPI void WINAPI PathQuoteSpacesA(LPSTR); -WINSHLWAPI void WINAPI PathQuoteSpacesW(LPWSTR); -WINSHLWAPI BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD); -WINSHLWAPI BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD); -WINSHLWAPI void WINAPI PathRemoveArgsA(LPSTR); -WINSHLWAPI void WINAPI PathRemoveArgsW(LPWSTR); -WINSHLWAPI LPSTR WINAPI PathRemoveBackslashA(LPSTR); -WINSHLWAPI LPWSTR WINAPI PathRemoveBackslashW(LPWSTR); -WINSHLWAPI void WINAPI PathRemoveBlanksA(LPSTR); -WINSHLWAPI void WINAPI PathRemoveBlanksW(LPWSTR); -WINSHLWAPI void WINAPI PathRemoveExtensionA(LPSTR); -WINSHLWAPI void WINAPI PathRemoveExtensionW(LPWSTR); -WINSHLWAPI BOOL WINAPI PathRemoveFileSpecA(LPSTR); -WINSHLWAPI BOOL WINAPI PathRemoveFileSpecW(LPWSTR); -WINSHLWAPI BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR); -WINSHLWAPI BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR); -WINSHLWAPI BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT); -WINSHLWAPI BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT); -WINSHLWAPI void WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR); -WINSHLWAPI void WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR); -WINSHLWAPI LPSTR WINAPI PathSkipRootA(LPCSTR); -WINSHLWAPI LPWSTR WINAPI PathSkipRootW(LPCWSTR); -WINSHLWAPI void WINAPI PathStripPathA(LPSTR); -WINSHLWAPI void WINAPI PathStripPathW(LPWSTR); -WINSHLWAPI BOOL WINAPI PathStripToRootA(LPSTR); -WINSHLWAPI BOOL WINAPI PathStripToRootW(LPWSTR); -WINSHLWAPI void WINAPI PathUndecorateA(LPSTR); -WINSHLWAPI void WINAPI PathUndecorateW(LPWSTR); -WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT); -WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT); -WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR); -WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR); -WINSHLWAPI void WINAPI PathUnquoteSpacesA(LPSTR); -WINSHLWAPI void WINAPI PathUnquoteSpacesW(LPWSTR); -WINSHLWAPI HRESULT WINAPI SHAutoComplete(HWND,DWORD); -#ifndef __OBJC__ -WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**); -WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**); -WINSHLWAPI struct IStream* WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD); -WINSHLWAPI struct IStream* WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD); -WINSHLWAPI struct IStream* WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD); -WINSHLWAPI struct IStream* WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD); -#endif -WINSHLWAPI BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE); -WINSHLWAPI DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD); -WINSHLWAPI DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD); -WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR); -WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR); -WINSHLWAPI DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR); -WINSHLWAPI DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR); -WINSHLWAPI LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD); -WINSHLWAPI LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD); -WINSHLWAPI LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); -WINSHLWAPI LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); -WINSHLWAPI DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -WINSHLWAPI DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -#ifndef __OBJC__ -WINSHLWAPI HRESULT WINAPI SHGetThreadRef(IUnknown**); -WINSHLWAPI HRESULT WINAPI SHSetThreadRef(IUnknown*); -WINSHLWAPI BOOL WINAPI SHSkipJunction(IBindCtx*,const CLSID*); -#endif -WINSHLWAPI LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -WINSHLWAPI LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -WINSHLWAPI DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD); -WINSHLWAPI DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD); -WINSHLWAPI DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD); -WINSHLWAPI DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD); -WINSHLWAPI DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR); -WINSHLWAPI DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR); -WINSHLWAPI HRESULT WINAPI AssocCreate(CLSID,const IID* const,LPVOID*); -WINSHLWAPI HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,HKEY*); -WINSHLWAPI HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,HKEY*); -WINSHLWAPI HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,DWORD*); -WINSHLWAPI HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,DWORD*); -WINSHLWAPI HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,DWORD*); -WINSHLWAPI HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD*); - -WINSHLWAPI HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD); -WINSHLWAPI int WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL); -WINSHLWAPI int WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL); -WINSHLWAPI HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -WINSHLWAPI LPCSTR WINAPI UrlGetLocationA(LPCSTR); -WINSHLWAPI LPCWSTR WINAPI UrlGetLocationW(LPCWSTR); -WINSHLWAPI HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlHashA(LPCSTR,LPBYTE,DWORD); -WINSHLWAPI HRESULT WINAPI UrlHashW(LPCWSTR,LPBYTE,DWORD); -WINSHLWAPI BOOL WINAPI UrlIsA(LPCSTR,URLIS); -WINSHLWAPI BOOL WINAPI UrlIsW(LPCWSTR,URLIS); -#define UrlIsFileUrlA(pszURL) UrlIsA(pzURL, URLIS_FILEURL) -#define UrlIsFileUrlW(pszURL) UrlIsW(pszURL, URLIS_FILEURL) -WINSHLWAPI BOOL WINAPI UrlIsNoHistoryA(LPCSTR); -WINSHLWAPI BOOL WINAPI UrlIsNoHistoryW(LPCWSTR); -WINSHLWAPI BOOL WINAPI UrlIsOpaqueA(LPCSTR); -WINSHLWAPI BOOL WINAPI UrlIsOpaqueW(LPCWSTR); -WINSHLWAPI HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD); -WINSHLWAPI HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD); -#define UrlUnescapeInPlaceA(pszUrl,dwFlags )\ - UrlUnescapeA(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE) -#define UrlUnescapeInPlaceW(pszUrl,dwFlags )\ - UrlUnescapeW(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE) -WINSHLWAPI LONG WINAPI SHRegCloseUSKey(HUSKEY); -WINSHLWAPI LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); -WINSHLWAPI LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); -WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); -WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); -WINSHLWAPI LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); -WINSHLWAPI LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); -WINSHLWAPI HKEY WINAPI SHRegDuplicateHKey(HKEY); -WINSHLWAPI LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS); -WINSHLWAPI LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS); -WINSHLWAPI LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); -WINSHLWAPI LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); -WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL); -WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL); -WINSHLWAPI DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD); -WINSHLWAPI DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD); -WINSHLWAPI LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); -WINSHLWAPI LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); -WINSHLWAPI LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); -WINSHLWAPI LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); -WINSHLWAPI LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS); -WINSHLWAPI LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS); -WINSHLWAPI LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); -WINSHLWAPI LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); -WINSHLWAPI DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD); -WINSHLWAPI DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD); -WINSHLWAPI LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD); -WINSHLWAPI LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); -WINSHLWAPI LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD); -WINSHLWAPI LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); -WINSHLWAPI HRESULT WINAPI HashData(LPBYTE,DWORD,LPBYTE,DWORD); -WINSHLWAPI HPALETTE WINAPI SHCreateShellPalette(HDC); -WINSHLWAPI COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD); -WINSHLWAPI COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL); -WINSHLWAPI void WINAPI ColorRGBToHLS(COLORREF,WORD*,WORD*,WORD*); -WINSHLWAPI int __cdecl wnsprintfA(LPSTR,int,LPCSTR,...); -WINSHLWAPI int __cdecl wnsprintfW(LPWSTR,int,LPCWSTR,...); -WINSHLWAPI int WINAPI wvnsprintfA(LPSTR,int,LPCSTR,va_list); -WINSHLWAPI int WINAPI wvnsprintfW(LPWSTR,int,LPCWSTR,va_list); - -HINSTANCE WINAPI MLLoadLibraryA(LPCSTR,HMODULE,BOOL); -HINSTANCE WINAPI MLLoadLibraryW(LPCWSTR,HMODULE,BOOL); - -HRESULT WINAPI DllInstall(BOOL,LPCWSTR); - -#ifdef UNICODE -#define ChrCmpI ChrCmpIW -#define IntlStrEqN IntlStrEqNW -#define IntlStrEqNI IntlStrEqNIW -#define IntlStrEqWorker IntlStrEqWorkerW -#define SHStrDup SHStrDupW -#define StrCat StrCatW -#define StrCatBuff StrCatBuffW -#define StrChr StrChrW -#define StrChrI StrChrIW -#define StrCmp StrCmpW -#define StrCmpI StrCmpIW -#define StrCmpNI StrCmpNIW -#define StrCmpN StrCmpNW -#define StrCpyN StrCpyNW -#define StrCpy StrCpyW -#define StrCSpnI StrCSpnIW -#define StrCSpn StrCSpnW -#define StrDup StrDupW -#define StrFormatByteSize StrFormatByteSizeW -#define StrFormatKBSize StrFormatKBSizeW -#define StrFromTimeInterval StrFromTimeIntervalW -#define StrIsIntlEqual StrIsIntlEqualW -#define StrNCat StrNCatW -#define StrPBrk StrPBrkW -#define StrRChr StrRChrW -#define StrRChrI StrRChrIW -#ifndef __OBJC__ -#define StrRetToBuf StrRetToBufW -#define StrRetToStr StrRetToStrW -#endif -#define StrRStrI StrRStrIW -#define StrSpn StrSpnW -#define StrStrI StrStrIW -#define StrStr StrStrW -#define StrToInt StrToIntW -#define StrToIntEx StrToIntExW -#define StrTrim StrTrimW -#define PathAddBackslash PathAddBackslashW -#define PathAddExtension PathAddExtensionW -#define PathAppend PathAppendW -#define PathBuildRoot PathBuildRootW -#define PathCanonicalize PathCanonicalizeW -#define PathCombine PathCombineW -#define PathCommonPrefix PathCommonPrefixW -#define PathCompactPath PathCompactPathW -#define PathCompactPathEx PathCompactPathExW -#define PathCreateFromUrl PathCreateFromUrlW -#define PathFileExists PathFileExistsW -#define PathFindExtension PathFindExtensionW -#define PathFindFileName PathFindFileNameW -#define PathFindNextComponent PathFindNextComponentW -#define PathFindOnPath PathFindOnPathW -#define PathFindSuffixArray PathFindSuffixArrayW -#define PathGetArgs PathGetArgsW -#define PathGetCharType PathGetCharTypeW -#define PathGetDriveNumber PathGetDriveNumberW -#define PathIsContentType PathIsContentTypeW -#define PathIsDirectoryEmpty PathIsDirectoryEmptyW -#define PathIsDirectory PathIsDirectoryW -#define PathIsFileSpec PathIsFileSpecW -#define PathIsLFNFileSpec PathIsLFNFileSpecW -#define PathIsNetworkPath PathIsNetworkPathW -#define PathIsPrefix PathIsPrefixW -#define PathIsRelative PathIsRelativeW -#define PathIsRoot PathIsRootW -#define PathIsSameRoot PathIsSameRootW -#define PathIsSystemFolder PathIsSystemFolderW -#define PathIsUNCServerShare PathIsUNCServerShareW -#define PathIsUNCServer PathIsUNCServerW -#define PathIsUNC PathIsUNCW -#define PathIsURL PathIsURLW -#define PathMakePretty PathMakePrettyW -#define PathMakeSystemFolder PathMakeSystemFolderW -#define PathMatchSpec PathMatchSpecW -#define PathParseIconLocation PathParseIconLocationW -#define PathQuoteSpaces PathQuoteSpacesW -#define PathRelativePathTo PathRelativePathToW -#define PathRemoveArgs PathRemoveArgsW -#define PathRemoveBackslash PathRemoveBackslashW -#define PathRemoveBlanks PathRemoveBlanksW -#define PathRemoveExtension PathRemoveExtensionW -#define PathRemoveFileSpec PathRemoveFileSpecW -#define PathRenameExtension PathRenameExtensionW -#define PathSearchAndQualify PathSearchAndQualifyW -#define PathSetDlgItemPath PathSetDlgItemPathW -#define PathSkipRoot PathSkipRootW -#define PathStripPath PathStripPathW -#define PathStripToRoot PathStripToRootW -#define PathUndecorate PathUndecorateW -#define PathUnExpandEnvStrings PathUnExpandEnvStringsW -#define PathUnmakeSystemFolder PathUnmakeSystemFolderW -#define PathUnquoteSpaces PathUnquoteSpacesW -#ifndef __OBJC__ -#define SHCreateStreamOnFile SHCreateStreamOnFileW -#define SHOpenRegStream SHOpenRegStreamW -#define SHOpenRegStream2 SHOpenRegStream2W -#endif -#define SHCopyKey SHCopyKeyW -#define SHDeleteEmptyKey SHDeleteEmptyKeyW -#define SHDeleteKey SHDeleteKeyW -#define SHEnumKeyEx SHEnumKeyExW -#define SHQueryInfoKey SHRegQueryInfoKeyW -#define SHQueryValueEx SHQueryValueExW -#define SHEnumValue SHEnumValueW -#define SHGetValue SHGetValueW -#define SHSetValue SHSetValueW -#define SHDeleteValue SHDeleteValueW -#define AssocQueryKey AssocQueryKeyW -#define AssocQueryStringByKey AssocQueryStringByKeyW -#define AssocQueryString AssocQueryStringW -#define UrlApplyScheme UrlApplySchemeW -#define UrlCanonicalize UrlCanonicalizeW -#define UrlCombine UrlCombineW -#define UrlCompare UrlCompareW -#define UrlCreateFromPath UrlCreateFromPathW -#define UrlEscape UrlEscapeW -#define UrlGetLocation UrlGetLocationW -#define UrlGetPart UrlGetPartW -#define UrlHash UrlHashW -#define UrlIs UrlIsW -#define UrlIsFileUrl UrlIsFileUrlW -#define UrlIsNoHistory UrlIsNoHistoryW -#define UrlIsOpaque UrlIsOpaqueW -#define UrlUnescape UrlUnescapeW -#define UrlUnescapeInPlace UrlUnescapeInPlaceW -#define SHRegCreateUSKey SHRegCreateUSKeyW -#define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyW -#define SHRegDeleteUSValue SHRegDeleteUSValueW -#define SHRegEnumUSKey SHRegEnumUSKeyW -#define SHRegEnumUSValue SHRegEnumUSValueW -#define SHRegGetBoolUSValue SHRegGetBoolUSValueW -#define SHRegGetPath SHRegGetPathW -#define SHRegGetUSValue SHRegGetUSValueW -#define SHRegOpenUSKey SHRegOpenUSKeyW -#define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyW -#define SHRegQueryUSValue SHRegQueryUSValueW -#define SHRegSetPath SHRegSetPathW -#define SHRegSetUSValue SHRegSetUSValueW -#define SHRegWriteUSValue SHRegWriteUSValueW -#define wnsprintf wnsprintfW -#define wvnsprintf wvnsprintfW -typedef PARSEDURLW PARSEDURL; -typedef PPARSEDURLW PPARSEDURL; -#else /* UNICODE */ -#define ChrCmpI ChrCmpIA -#define IntlStrEqN IntlStrEqNA -#define IntlStrEqNI IntlStrEqNIA -#define IntlStrEqWorker IntlStrEqWorkerA -#define SHStrDup SHStrDupA -#define StrCat lstrcatA -#define StrCatBuff StrCatBuffA -#define StrChr StrChrA -#define StrChrI StrChrIA -#define StrCmp lstrcmpA -#define StrCmpI lstrcmpiA -#define StrCmpNI StrCmpNIA -#define StrCmpN StrCmpNA -#define StrCpyN lstrcpynA -#define StrCpy lstrcpyA -#define StrCSpnI StrCSpnIA -#define StrCSpn StrCSpnA -#define StrDup StrDupA -#define StrFormatByteSize StrFormatByteSizeA -#define StrFormatKBSize StrFormatKBSizeA -#define StrFromTimeInterval StrFromTimeIntervalA -#define StrIsIntlEqual StrIsIntlEqualA -#define StrNCat StrNCatA -#define StrPBrk StrPBrkA -#define StrRChr StrRChrA -#define StrRChrI StrRChrIA -#ifndef __OBJC__ -#define StrRetToBuf StrRetToBufA -#define StrRetToStr StrRetToStrA -#endif -#define StrRStrI StrRStrIA -#define StrSpn StrSpnA -#define StrStrI StrStrIA -#define StrStr StrStrA -#define StrToInt StrToIntA -#define StrToIntEx StrToIntExA -#define StrTrim StrTrimA -#define PathAddBackslash PathAddBackslashA -#define PathAddExtension PathAddExtensionA -#define PathAppend PathAppendA -#define PathBuildRoot PathBuildRootA -#define PathCanonicalize PathCanonicalizeA -#define PathCombine PathCombineA -#define PathCommonPrefix PathCommonPrefixA -#define PathCompactPath PathCompactPathA -#define PathCompactPathEx PathCompactPathExA -#define PathCreateFromUrl PathCreateFromUrlA -#define PathFileExists PathFileExistsA -#define PathFindExtension PathFindExtensionA -#define PathFindFileName PathFindFileNameA -#define PathFindNextComponent PathFindNextComponentA -#define PathFindOnPath PathFindOnPathA -#define PathFindSuffixArray PathFindSuffixArrayA -#define PathGetArgs PathGetArgsA -#define PathGetCharType PathGetCharTypeA -#define PathGetDriveNumber PathGetDriveNumberA -#define PathIsContentType PathIsContentTypeA -#define PathIsDirectoryEmpty PathIsDirectoryEmptyA -#define PathIsDirectory PathIsDirectoryA -#define PathIsFileSpec PathIsFileSpecA -#define PathIsLFNFileSpec PathIsLFNFileSpecA -#define PathIsNetworkPath PathIsNetworkPathA -#define PathIsPrefix PathIsPrefixA -#define PathIsRelative PathIsRelativeA -#define PathIsRoot PathIsRootA -#define PathIsSameRoot PathIsSameRootA -#define PathIsSystemFolder PathIsSystemFolderA -#define PathIsUNCServerShare PathIsUNCServerShareA -#define PathIsUNCServer PathIsUNCServerA -#define PathIsUNC PathIsUNCA -#define PathIsURL PathIsURLA -#define PathMakePretty PathMakePrettyA -#define PathMakeSystemFolder PathMakeSystemFolderA -#define PathMatchSpec PathMatchSpecA -#define PathParseIconLocation PathParseIconLocationA -#define PathQuoteSpaces PathQuoteSpacesA -#define PathRelativePathTo PathRelativePathToA -#define PathRemoveArgs PathRemoveArgsA -#define PathRemoveBackslash PathRemoveBackslashA -#define PathRemoveBlanks PathRemoveBlanksA -#define PathRemoveExtension PathRemoveExtensionA -#define PathRemoveFileSpec PathRemoveFileSpecA -#define PathRenameExtension PathRenameExtensionA -#define PathSearchAndQualify PathSearchAndQualifyA -#define PathSetDlgItemPath PathSetDlgItemPathA -#define PathSkipRoot PathSkipRootA -#define PathStripPath PathStripPathA -#define PathStripToRoot PathStripToRootA -#define PathUndecorate PathUndecorateA -#define PathUnExpandEnvStrings PathUnExpandEnvStringsA -#define PathUnmakeSystemFolder PathUnmakeSystemFolderA -#define PathUnquoteSpaces PathUnquoteSpacesA -#ifndef __OBJC__ -#define SHCreateStreamOnFile SHCreateStreamOnFileA -#define SHOpenRegStream SHOpenRegStreamA -#define SHOpenRegStream2 SHOpenRegStream2A -#endif -#define SHCopyKey SHCopyKeyA -#define SHDeleteEmptyKey SHDeleteEmptyKeyA -#define SHDeleteKey SHDeleteKeyA -#define SHEnumKeyEx SHEnumKeyExA -#define SHQueryInfoKey SHRegQueryInfoKeyA -#define SHQueryValueEx SHQueryValueExA -#define SHEnumValue SHEnumValueA -#define SHGetValue SHGetValueA -#define SHSetValue SHSetValueA -#define SHDeleteValue SHDeleteValueA -#define AssocQueryKey AssocQueryKeyA -#define AssocQueryStringByKey AssocQueryStringByKeyA -#define AssocQueryString AssocQueryStringA -#define UrlApplyScheme UrlApplySchemeA -#define UrlCanonicalize UrlCanonicalizeA -#define UrlCombine UrlCombineA -#define UrlCompare UrlCompareA -#define UrlCreateFromPath UrlCreateFromPathA -#define UrlEscape UrlEscapeA -#define UrlGetLocation UrlGetLocationA -#define UrlGetPart UrlGetPartA -#define UrlHash UrlHashA -#define UrlIs UrlIsA -#define UrlIsFileUrl UrlIsFileUrl -#define UrlIsNoHistory UrlIsNoHistoryA -#define UrlIsOpaque UrlIsOpaqueA -#define UrlUnescape UrlUnescapeA -#define UrlUnescapeInPlace UrlUnescapeInPlaceA -#define SHRegCreateUSKey SHRegCreateUSKeyA -#define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyA -#define SHRegDeleteUSValue SHRegDeleteUSValueA -#define SHRegEnumUSKey SHRegEnumUSKeyA -#define SHRegEnumUSValue SHRegEnumUSValueA -#define SHRegGetBoolUSValue SHRegGetBoolUSValueA -#define SHRegGetPath SHRegGetPathA -#define SHRegGetUSValue SHRegGetUSValueA -#define SHRegOpenUSKey SHRegOpenUSKeyA -#define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyA -#define SHRegQueryUSValue SHRegQueryUSValueA -#define SHRegSetPath SHRegSetPathA -#define SHRegSetUSValue SHRegSetUSValueA -#define SHRegWriteUSValue SHRegWriteUSValueA -#define wnsprintf wnsprintfA -#define wvnsprintf wvnsprintfA -typedef PARSEDURLA PARSEDURL; -typedef PPARSEDURLA PPARSEDURL; -#endif /* UNICODE */ - -#define StrToLong StrToInt - -#endif /* !RC_INVOKED */ +#include #ifdef __cplusplus -} -#endif -#endif /* ! defined _SHLWAPI_H */ +} /* extern "C" */ +#endif /* defined(__cplusplus) */ + +#endif /* __WINE_SHLWAPI_H */ diff --git a/reactos/include/psdk/shobjidl.idl b/reactos/include/psdk/shobjidl.idl new file mode 100644 index 00000000000..474b2643918 --- /dev/null +++ b/reactos/include/psdk/shobjidl.idl @@ -0,0 +1,1324 @@ +/* + * COM interfaces for shell objects + * + * Copyright (C) 1999 Juergen Schmied + * Copyright (C) 2003 Alexandre Julliard + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; +import "shtypes.idl"; +import "servprov.idl"; +import "comcat.idl"; +import "propidl.idl"; +/*import "prsht.idl";*/ +/*import "msxml.idl";*/ + + +/***************************************************************************** + * IPersistFolder interface + */ +[ + object, + uuid(000214ea-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IPersistFolder : IPersist +{ + typedef IPersistFolder *LPPERSISTFOLDER; + + HRESULT Initialize( [in] LPCITEMIDLIST pidl ); +} + + +/***************************************************************************** + * IPersistFolder2 interface + */ +[ + object, + uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f), + pointer_default(unique) +] +interface IPersistFolder2 : IPersistFolder +{ + typedef IPersistFolder2 *LPPERSISTFOLDER2; + + HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl ); +} + + +/***************************************************************************** + * IEnumIDList interface + */ +[ + object, + uuid(000214f2-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IEnumIDList : IUnknown +{ + typedef IEnumIDList *LPENUMIDLIST; + + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( [in] ULONG celt ); + HRESULT Reset(); + HRESULT Clone( [out] IEnumIDList **ppenum ); +} + +/***************************************************************************** + * IShellPropSheetExt interface + */ +cpp_quote("#if 0") + typedef LPARAM LPFNSVADDPROPSHEETPAGE; +cpp_quote("#else") +cpp_quote("#include ") +cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;") +cpp_quote("#endif") + +[ + object, + uuid(000214E9-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IShellPropSheetExt : IUnknown +{ + enum tagSHELLPROPSHEETEXTPAGEID { + EXPPS_FILETYPES = 0x1 + }; + + typedef UINT EXPPS; + + HRESULT AddPages( + [in] LPFNSVADDPROPSHEETPAGE pfnAddPage, + [in] LPARAM lParam); + HRESULT ReplacePage( + [in] EXPPS uPageID, + [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith, + [in] LPARAM lParam); +} +typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT; + +/***************************************************************************** + * IShellFolder interface + */ +[ + object, + uuid(000214e6-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellFolder : IUnknown +{ + typedef IShellFolder * LPSHELLFOLDER; + + typedef enum tagSHGDN + { + SHGDN_NORMAL = 0, + SHGDN_INFOLDER = 1, + SHGDN_FOREDITING = 0x1000, + SHGDN_INCLUDE_NONFILESYS = 0x2000, + SHGDN_FORADDRESSBAR = 0x4000, + SHGDN_FORPARSING = 0x8000 + } SHGNO; + + typedef DWORD SHGDNF; + + enum tagSHCONTF + { + SHCONTF_FOLDERS = 32, + SHCONTF_NONFOLDERS = 64, + SHCONTF_INCLUDEHIDDEN = 128, + SHCONTF_INIT_ON_FIRST_NEXT = 256, + SHCONTF_NETPRINTERSRCH = 512, + SHCONTF_SHAREABLE = 1024, + SHCONTF_STORAGE = 2048 + }; + + typedef DWORD SHCONTF; + + cpp_quote("#define SFGAO_CANCOPY DROPEFFECT_COPY") + cpp_quote("#define SFGAO_CANMOVE DROPEFFECT_MOVE") + cpp_quote("#define SFGAO_CANLINK DROPEFFECT_LINK") + cpp_quote("#define SFGAO_STORAGE 0x00000008L") + cpp_quote("#define SFGAO_CANRENAME 0x00000010L") + cpp_quote("#define SFGAO_CANDELETE 0x00000020L") + cpp_quote("#define SFGAO_HASPROPSHEET 0x00000040L") + cpp_quote("#define SFGAO_DROPTARGET 0x00000100L") + cpp_quote("#define SFGAO_CAPABILITYMASK 0x00000177L") + cpp_quote("#define SFGAO_ENCRYPTED 0x00002000L") + cpp_quote("#define SFGAO_ISSLOW 0x00004000L") + cpp_quote("#define SFGAO_GHOSTED 0x00008000L") + cpp_quote("#define SFGAO_LINK 0x00010000L") + cpp_quote("#define SFGAO_SHARE 0x00020000L") + cpp_quote("#define SFGAO_READONLY 0x00040000L") + cpp_quote("#define SFGAO_HIDDEN 0x00080000L") + cpp_quote("#define SFGAO_DISPLAYATTRMASK 0x000FC000L") + cpp_quote("#define SFGAO_FILESYSANCESTOR 0x10000000L") + cpp_quote("#define SFGAO_FOLDER 0x20000000L") + cpp_quote("#define SFGAO_FILESYSTEM 0x40000000L") + cpp_quote("#define SFGAO_HASSUBFOLDER 0x80000000L") + cpp_quote("#define SFGAO_CONTENTSMASK 0x80000000L") + cpp_quote("#define SFGAO_VALIDATE 0x01000000L") + cpp_quote("#define SFGAO_REMOVABLE 0x02000000L") + cpp_quote("#define SFGAO_COMPRESSED 0x04000000L") + cpp_quote("#define SFGAO_BROWSABLE 0x08000000L") + cpp_quote("#define SFGAO_NONENUMERATED 0x00100000L") + cpp_quote("#define SFGAO_NEWCONTENT 0x00200000L") + cpp_quote("#define SFGAO_STREAM 0x00400000L") + cpp_quote("#define SFGAO_STORAGEANCESTOR 0x00800000L") + + typedef ULONG SFGAOF; + + HRESULT ParseDisplayName( + [in] HWND hwndOwner, + [in] LPBC pbcReserved, + [in, string] LPOLESTR lpszDisplayName, + [out] ULONG *pchEaten, + [out] LPITEMIDLIST *ppidl, + [in, out, unique] ULONG *pdwAttributes); + + HRESULT EnumObjects( + [in] HWND hwndOwner, + [in] SHCONTF grfFlags, + [out] IEnumIDList **ppenumIDList); + + HRESULT BindToObject( + [in] LPCITEMIDLIST pidl, + [in] LPBC pbcReserved, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvOut); + + HRESULT BindToStorage( + [in] LPCITEMIDLIST pidl, + [in] LPBC pbcReserved, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvObj); + + HRESULT CompareIDs( + [in] LPARAM lParam, + [in] LPCITEMIDLIST pidl1, + [in] LPCITEMIDLIST pidl2); + + HRESULT CreateViewObject( + [in] HWND hwndOwner, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvOut); + + HRESULT GetAttributesOf( + [in] UINT cidl, + [in, size_is(cidl)] LPCITEMIDLIST *apidl, + [in, out] SFGAOF *rgfInOut); + + HRESULT GetUIObjectOf( + [in] HWND hwndOwner, + [in] UINT cidl, + [in, size_is(cidl)] LPCITEMIDLIST *apidl, + [in] REFIID riid, + [in, out, unique] UINT *prgfInOut, + [out, iid_is(riid)] void **ppvOut); + + HRESULT GetDisplayNameOf( + [in] LPCITEMIDLIST pidl, + [in] SHGDNF uFlags, + [out] STRRET *lpName); + + HRESULT SetNameOf( + [in] HWND hwnd, + [in] LPCITEMIDLIST pidl, + [in, string] LPCOLESTR lpszName, + [in] SHGDNF uFlags, + [out] LPITEMIDLIST *ppidlOut); +} + + +/***************************************************************************** + * IEnumExtraSearch interface + */ +[ + object, + uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13), + pointer_default(unique) +] +interface IEnumExtraSearch : IUnknown +{ + typedef IEnumExtraSearch *LPENUMEXTRASEARCH; + + typedef struct + { + GUID guidSearch; + WCHAR wszFriendlyName[80]; + /* + *WCHAR wszMenuText[80]; + *WCHAR wszHelpText[MAX_PATH]; + */ + WCHAR wszUrl[2084]; + /* + *WCHAR wszIcon[MAX_PATH+10]; + *WCHAR wszGreyIcon[MAX_PATH+10]; + *WCHAR wszClrIcon[MAX_PATH+10]; + */ + } EXTRASEARCH, *LPEXTRASEARCH; + + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( [in] ULONG celt ); + HRESULT Reset(); + HRESULT Clone( [out] IEnumExtraSearch **ppenum ); +} + + +/***************************************************************************** + * IShellFolder2 interface + */ +[ + object, + uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1), + pointer_default(unique) +] +interface IShellFolder2 : IShellFolder +{ + typedef enum + { + SHCOLSTATE_TYPE_STR = 0x00000001, + SHCOLSTATE_TYPE_INT = 0x00000002, + SHCOLSTATE_TYPE_DATE = 0x00000003, + SHCOLSTATE_TYPEMASK = 0x0000000f, + SHCOLSTATE_ONBYDEFAULT = 0x00000010, + SHCOLSTATE_SLOW = 0x00000020, + SHCOLSTATE_EXTENDED = 0x00000040, + SHCOLSTATE_SECONDARYUI = 0x00000080, + SHCOLSTATE_HIDDEN = 0x00000100, + SHCOLSTATE_PREFER_VARCMP = 0x00000200 + } SHCOLSTATE; + + typedef DWORD SHCOLSTATEF; + + typedef struct + { + GUID fmtid; + DWORD pid; + } SHCOLUMNID, *LPSHCOLUMNID; + typedef const SHCOLUMNID *LPCSHCOLUMNID; + + HRESULT GetDefaultSearchGUID( [out] GUID *lpguid ); + HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum ); + HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay ); + HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags ); + HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv); + HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd); + HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid ); +} + + + +/***************************************************************************** + * FOLDERSETTINGS + */ +typedef char *LPVIEWSETTINGS; + +typedef enum +{ + FWF_AUTOARRANGE = 0x00000001, + FWF_ABBREVIATEDNAMES = 0x00000002, + FWF_SNAPTOGRID = 0x00000004, + FWF_OWNERDATA = 0x00000008, + FWF_BESTFITWINDOW = 0x00000010, + FWF_DESKTOP = 0x00000020, + FWF_SINGLESEL = 0x00000040, + FWF_NOSUBFOLDERS = 0x00000080, + FWF_TRANSPARENT = 0x00000100, + FWF_NOCLIENTEDGE = 0x00000200, + FWF_NOSCROLL = 0x00000400, + FWF_ALIGNLEFT = 0x00000800, + FWF_NOICONS = 0x00001000, + FWF_SHOWSELALWAYS = 0x00002000, + FWF_NOVISIBLE = 0x00004000, + FWF_SINGLECLICKACTIVATE = 0x00008000, + FWF_NOWEBVIEW = 0x00010000, + FWF_HIDEFILENAMES = 0x00020000, + FWF_CHECKSELECT = 0x00040000 +} FOLDERFLAGS; + +typedef enum +{ + FVM_ICON = 1, + FVM_FIRST = FVM_ICON, + FVM_SMALLICON = 2, + FVM_LIST = 3, + FVM_DETAILS = 4, + FVM_THUMBNAIL = 5, + FVM_TILE = 6, + FVM_THUMBSTRIP = 7, + FVM_LAST = FVM_THUMBSTRIP +} FOLDERVIEWMODE; + +typedef struct +{ + UINT ViewMode; + UINT fFlags; +} FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS; +typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS; + + +/***************************************************************************** + * IShellView interface + */ +interface IShellBrowser; /* forward declaration */ +[ + object, + uuid(000214e3-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellView : IOleWindow +{ + typedef IShellView *LPSHELLVIEW; + + cpp_quote("#define SVSI_DESELECT 0x00000000") + cpp_quote("#define SVSI_SELECT 0x00000001") + cpp_quote("#define SVSI_EDIT 0x00000003") + cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004") + cpp_quote("#define SVSI_ENSUREVISIBLE 0x00000008") + cpp_quote("#define SVSI_FOCUSED 0x00000010") + cpp_quote("#define SVSI_TRANSLATEPT 0x00000020") + cpp_quote("#define SVSI_SELECTIONMARK 0x00000040") + cpp_quote("#define SVSI_POSITIONITEM 0x00000080") + cpp_quote("#define SVSI_CHECK 0x00000100") + cpp_quote("#define SVSI_NOSTATECHANGE 0x80000000") + + typedef UINT SVSIF; + + typedef enum + { + SVGIO_BACKGROUND = 0x00000000, + SVGIO_SELECTION = 0x00000001, + SVGIO_ALLVIEW = 0x00000002, + SVGIO_CHECKED = 0x00000003, + SVGIO_TYPE_MASK = 0x0000000f, + SVGIO_FLAG_VIEWORDER = 0x80000000, + } SVGIO; + + typedef enum + { + SVUIA_DEACTIVATE = 0, + SVUIA_ACTIVATE_NOFOCUS = 1, + SVUIA_ACTIVATE_FOCUS = 2, + SVUIA_INPLACEACTIVATE = 3 + } SVUIA_STATUS; + + HRESULT TranslateAccelerator( [in] MSG *pmsg ); + HRESULT EnableModeless( [in] BOOL fEnable ); + HRESULT UIActivate( [in] UINT uState ); + HRESULT Refresh(); + HRESULT CreateViewWindow( + [in] IShellView *psvPrevious, + [in] LPCFOLDERSETTINGS lpfs, + [in] IShellBrowser *psb, + [out] RECT *prcView, + [out] HWND *phWnd); + + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs ); + + [local] HRESULT AddPropertySheetPages( + [in] DWORD dwReserved, + [in] LPFNSVADDPROPSHEETPAGE pfn, + [in] LPARAM lparam); + + HRESULT SaveViewState(); + HRESULT SelectItem( + [in] LPCITEMIDLIST pidlItem, + [in] SVSIF uFlags); + HRESULT GetItemObject( + [in] UINT uItem, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); +} + + +/***************************************************************************** + * IShellBrowser interface + */ +[ + object, + uuid(000214e2-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellBrowser : IOleWindow +{ + typedef IShellBrowser *LPSHELLBROWSER; + +cpp_quote("#define SBSP_DEFBROWSER 0x00000000") +cpp_quote("#define SBSP_SAMEBROWSER 0x00000001") +cpp_quote("#define SBSP_NEWBROWSER 0x00000002") +cpp_quote("#define SBSP_DEFMODE 0x00000000") +cpp_quote("#define SBSP_OPENMODE 0x00000010") +cpp_quote("#define SBSP_EXPLOREMODE 0x00000020") +cpp_quote("#define SBSP_HELPMODE 0x00000040") +cpp_quote("#define SBSP_NOTRANSFERHIST 0x00000080") +cpp_quote("#define SBSP_ABSOLUTE 0x00000000") +cpp_quote("#define SBSP_RELATIVE 0x00001000") +cpp_quote("#define SBSP_PARENT 0x00002000") +cpp_quote("#define SBSP_NAVIGATEBACK 0x00004000") +cpp_quote("#define SBSP_NAVIGATEFORWARD 0x00008000") +cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE 0x00010000") +cpp_quote("#define SBSP_NOAUTOSELECT 0x04000000") +cpp_quote("#define SBSP_WRITENOHISTORY 0x08000000") +cpp_quote("#define SBSP_REDIRECT 0x40000000") +cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000") + +cpp_quote("#define FCW_STATUS 0x0001") +cpp_quote("#define FCW_TOOLBAR 0x0002") +cpp_quote("#define FCW_TREE 0x0003") +cpp_quote("#define FCW_INTERNETBAR 0x0006") +cpp_quote("#define FCW_PROGRESS 0x0008") + +cpp_quote("#define FCT_MERGE 0x0001") +cpp_quote("#define FCT_CONFIGABLE 0x0002") +cpp_quote("#define FCT_ADDTOEND 0x0004") + +cpp_quote("#if 0") + typedef LPARAM LPTBBUTTONSB; +cpp_quote("#else") +cpp_quote("#include ") +cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;") +cpp_quote("#endif") + + HRESULT InsertMenusSB( + [in] HMENU hmenuShared, + [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths); + + HRESULT SetMenuSB( + [in] HMENU hmenuShared, + [in] HOLEMENU holemenuReserved, + [in] HWND hwndActiveObject); + + HRESULT RemoveMenusSB( [in] HMENU hmenuShared ); + HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText ); + HRESULT EnableModelessSB( [in] BOOL fEnable ); + HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID ); + + HRESULT BrowseObject( + [in] LPCITEMIDLIST pidl, + [in] UINT wFlags); + + HRESULT GetViewStateStream( + [in] DWORD grfMode, + [out] IStream **ppStrm); + + HRESULT GetControlWindow( + [in] UINT id, + [out] HWND *phwnd); + + [local] HRESULT SendControlMsg( + [in] UINT id, + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam, + [in] LRESULT *pret); + + HRESULT QueryActiveShellView( [out] IShellView **ppshv ); + HRESULT OnViewWindowActive( [in] IShellView *pshv ); + + [local] + HRESULT SetToolbarItems( + [in] LPTBBUTTONSB lpButtons, + [in] UINT nButtons, + [in] UINT uFlags); +} + + +/***************************************************************************** + * IShellLinkA interface + */ +[ + object, + uuid(000214ee-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellLinkA : IUnknown +{ + typedef enum + { + SLR_NO_UI = 0x0001, + SLR_ANY_MATCH = 0x0002, + SLR_UPDATE = 0x0004, + SLR_NOUPDATE = 0x0008, + SLR_NOSEARCH = 0x0010, + SLR_NOTRACK = 0x0020, + SLR_NOLINKINFO = 0x0040, + SLR_INVOKE_MSI = 0x0080, + SLR_NO_UI_WITH_MSG_PUMP = 0x0101, + } SLR_FLAGS; + + typedef enum + { + SLGP_SHORTPATH = 0x0001, + SLGP_UNCPRIORITY = 0x0002, + SLGP_RAWPATH = 0x0004, + } SLGP_FLAGS; + + HRESULT GetPath( + [out, size_is(cch)] LPSTR pszFile, + [in] int cch, + [in, out] WIN32_FIND_DATAA *pfd, + [in] DWORD fFlags); + + HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); + + HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); + + HRESULT GetDescription( + [out, size_is(cch)] LPSTR pszName, + [in] int cch); + + HRESULT SetDescription( [in] LPCSTR pszName ); + + HRESULT GetWorkingDirectory( + [out, size_is(cch)] LPSTR pszDir, + [in] int cch); + + HRESULT SetWorkingDirectory( [in] LPCSTR pszDir ); + + HRESULT GetArguments( + [out, size_is(cch)] LPSTR pszArgs, + [in] int cch); + + HRESULT SetArguments( [in] LPCSTR pszArgs ); + + HRESULT GetHotkey( [out] WORD *pwHotkey ); + + HRESULT SetHotkey( [in] WORD wHotkey ); + + HRESULT GetShowCmd( [out] int *piShowCmd ); + + HRESULT SetShowCmd( [in] int iShowCmd ); + + HRESULT GetIconLocation( + [out, size_is(cch)] LPSTR pszIconPath, + [in] int cch, + [out] int *piIcon); + + HRESULT SetIconLocation( + [in] LPCSTR pszIconPath, + [in] int iIcon); + + HRESULT SetRelativePath( + [in] LPCSTR pszPathRel, + [in] DWORD dwReserved); + + HRESULT Resolve( + [in] HWND hwnd, + [in] DWORD fFlags); + + HRESULT SetPath( [in] LPCSTR pszFile ); +} + + +/***************************************************************************** + * IShellLinkW interface + */ +[ + object, + uuid(000214f9-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellLinkW : IUnknown +{ + HRESULT GetPath( + [out, size_is(cch)] LPWSTR pszFile, + [in] int cch, + [in, out] WIN32_FIND_DATAW *pfd, + [in] DWORD fFlags); + + HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); + + HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); + + HRESULT GetDescription( + [out, size_is(cch)] LPWSTR pszName, + [in] int cch); + + HRESULT SetDescription( [in] LPCWSTR pszName ); + + HRESULT GetWorkingDirectory( + [out, size_is(cch)] LPWSTR pszDir, + [in] int cch); + + HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir ); + + HRESULT GetArguments( + [out, size_is(cch)] LPWSTR pszArgs, + [in] int cch); + + HRESULT SetArguments( [in] LPCWSTR pszArgs ); + + HRESULT GetHotkey( [out] WORD *pwHotkey ); + + HRESULT SetHotkey( [in] WORD wHotkey ); + + HRESULT GetShowCmd( [out] int *piShowCmd ); + + HRESULT SetShowCmd( [in] int iShowCmd ); + + HRESULT GetIconLocation( + [out, size_is(cch)] LPWSTR pszIconPath, + [in] int cch, + [out] int *piIcon); + + HRESULT SetIconLocation( + [in] LPCWSTR pszIconPath, + [in] int iIcon); + + HRESULT SetRelativePath( + [in] LPCWSTR pszPathRel, + [in] DWORD dwReserved); + + HRESULT Resolve( + [in] HWND hwnd, + [in] DWORD fFlags); + + HRESULT SetPath( [in] LPCWSTR pszFile ); +} + +cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)") + + +/***************************************************************************** + * IShellExtInit interface + */ +[ + object, + uuid(000214e8-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellExtInit : IUnknown +{ + typedef IShellExtInit *LPSHELLEXTINIT; + + HRESULT Initialize( + [in] LPCITEMIDLIST pidlFolder, + [in] IDataObject *pdtobj, + [in] HKEY hkeyProgID); +} + + +/*******************************************************************************/ +/* Note: the following interfaces are not in shobjidl.idl under Windows, they */ +/* are declared directly in shlobj.h. It hopefully won't break anything to put */ +/* them here anyway. */ +/*******************************************************************************/ + +#ifndef MAX_PATH +#define MAX_PATH 260 +#endif + + +/***************************************************************************** + * IPersistFolder3 interface + */ +[ + object, + uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf), + pointer_default(unique) +] +interface IPersistFolder3 : IPersistFolder2 +{ + typedef struct + { + LPITEMIDLIST pidlTargetFolder; + WCHAR szTargetParsingName[MAX_PATH]; + WCHAR szNetworkProvider[MAX_PATH]; + DWORD dwAttributes; + int csidl; + } PERSIST_FOLDER_TARGET_INFO; + + HRESULT InitializeEx( + [in] IBindCtx *pbc, + [in] LPCITEMIDLIST pidlRoot, + [in] const PERSIST_FOLDER_TARGET_INFO *ppfti); + + HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti ); +} + + +/***************************************************************************** + * IExtractIconA interface + */ +[ + object, + uuid(000214eb-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IExtractIconA : IUnknown +{ +cpp_quote("#define GIL_OPENICON 0x0001") +cpp_quote("#define GIL_FORSHELL 0x0002") +cpp_quote("#define GIL_ASYNC 0x0020") +cpp_quote("#define GIL_DEFAULTICON 0x0040") +cpp_quote("#define GIL_FORSHORTCUT 0x0080") + +cpp_quote("#define GIL_SIMULATEDOC 0x0001") +cpp_quote("#define GIL_PERINSTANCE 0x0002") +cpp_quote("#define GIL_PERCLASS 0x0004") +cpp_quote("#define GIL_NOTFILENAME 0x0008") +cpp_quote("#define GIL_DONTCACHE 0x0010") + + typedef IExtractIconA *LPEXTRACTICONA; + + HRESULT GetIconLocation( + [in] UINT uFlags, + [out, size_is(cchMax)] LPSTR szIconFile, + [in] UINT cchMax, + [out] INT *piIndex, + [out] UINT *pwFlags); + + HRESULT Extract( + [in] LPCSTR pszFile, + [in] UINT nIconIndex, + [out] HICON *phiconLarge, + [out] HICON *phiconSmall, + [in] UINT nIconSize ); +} + + +/***************************************************************************** + * IExtractIconW interface + */ +[ + object, + uuid(000214fa-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IExtractIconW : IUnknown +{ + typedef IExtractIconW *LPEXTRACTICONW; + + HRESULT GetIconLocation( + [in] UINT uFlags, + [out, size_is(cchMax)] LPWSTR szIconFile, + [in] UINT cchMax, + [out] INT *piIndex, + [out] UINT *pwFlags); + + HRESULT Extract( + [in] LPCWSTR pszFile, + [in] UINT nIconIndex, + [out] HICON *phiconLarge, + [out] HICON *phiconSmall, + [in] UINT nIconSize ); +} + +cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)") +cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)") + + +/***************************************************************************** + * ICommDlgBrowser interface + */ +[ + object, + uuid(000214f1-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface ICommDlgBrowser : IUnknown +{ +cpp_quote("#define CDBOSC_SETFOCUS 0x00000000") +cpp_quote("#define CDBOSC_KILLFOCUS 0x00000001") +cpp_quote("#define CDBOSC_SELCHANGE 0x00000002") +cpp_quote("#define CDBOSC_RENAME 0x00000003") +cpp_quote("#define CDBOSC_STATECHANGE 0x00000004") + + typedef ICommDlgBrowser *LPCOMMDLGBROWSER; + + HRESULT OnDefaultCommand( [in] IShellView *shv ); + HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange ); + HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl ); +} + + +/***************************************************************************** + * IDockingWindowFrame interface + */ +[ + object, + uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8), + pointer_default(unique) +] +interface IDockingWindowFrame : IOleWindow +{ +cpp_quote("#define DWFRF_NORMAL 0x0000") +cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001") +cpp_quote("#define DWFAF_HIDDEN 0x0001") + + HRESULT AddToolbar( + [in] IUnknown *punkSrc, + [in] LPCWSTR pwszItem, + [in] DWORD dwAddFlags); + + HRESULT RemoveToolbar( + [in] IUnknown *punkSrc, + [in] DWORD dwRemoveFlags); + + HRESULT FindToolbar( + [in] LPCWSTR pwszItem, + [in] REFIID riid, + [out] LPVOID *ppvObj); +} + + +/***************************************************************************** + * IDragSourceHelper interface + */ +[ + object, + uuid(de5bf786-477a-11d2-839d-00c04fd918d0), + pointer_default(unique) +] +interface IDragSourceHelper : IUnknown +{ + typedef struct + { + SIZE sizeDragImage; + POINT ptOffset; + HBITMAP hbmpDragImage; + COLORREF crColorKey; + } SHDRAGIMAGE, *LPSHDRAGIMAGE; + + HRESULT InitializeFromBitmap( + [in] LPSHDRAGIMAGE pshdi, + [in] IDataObject *pDataObject); + + HRESULT InitializeFromWindow( + [in] HWND hwnd, + [in] POINT *ppt, + [in] IDataObject *pDataObject); +} + + +/***************************************************************************** + * IDropTargetHelper interface + */ +[ + object, + uuid(4657278b-411b-11d2-839a-00c04fd918d0), + pointer_default(unique) +] +interface IDropTargetHelper : IUnknown +{ + HRESULT DragEnter( + [in] HWND hwndTarget, + [in] IDataObject *pDataObject, + [in] POINT *ppt, + [in] DWORD dwEffect); + + HRESULT DragLeave(); + + HRESULT DragOver( + [in] POINT *ppt, + [in] DWORD dwEffect); + + HRESULT Drop( + [in] IDataObject *pDataObject, + [in] POINT *ppt, + [in] DWORD dwEffect); + + HRESULT Show( [in] BOOL fShow ); +} + + +/***************************************************************************** + * IContextMenu interface + */ +[ + object, + uuid(000214e4-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IContextMenu : IUnknown +{ +cpp_quote("#define CMF_NORMAL 0x00000000") +cpp_quote("#define CMF_DEFAULTONLY 0x00000001") +cpp_quote("#define CMF_VERBSONLY 0x00000002") +cpp_quote("#define CMF_EXPLORE 0x00000004") +cpp_quote("#define CMF_NOVERBS 0x00000008") +cpp_quote("#define CMF_CANRENAME 0x00000010") +cpp_quote("#define CMF_NODEFAULT 0x00000020") +cpp_quote("#define CMF_INCLUDESTATIC 0x00000040") +cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100") +cpp_quote("#define CMF_RESERVED 0xffff0000") + +cpp_quote("#define GCS_VERBA 0x00000000") +cpp_quote("#define GCS_HELPTEXTA 0x00000001") +cpp_quote("#define GCS_VALIDATEA 0x00000002") +cpp_quote("#define GCS_VERBW 0x00000004") +cpp_quote("#define GCS_HELPTEXTW 0x00000005") +cpp_quote("#define GCS_VALIDATEW 0x00000006") +cpp_quote("#define GCS_UNICODE 0x00000004") +cpp_quote("#define GCS_VERB WINELIB_NAME_AW(GCS_VERB)") +cpp_quote("#define GCS_HELPTEXT WINELIB_NAME_AW(GCS_HELPTEXT)") +cpp_quote("#define GCS_VALIDATE WINELIB_NAME_AW(GCS_VALIDATE)") + +cpp_quote("#define CMDSTR_NEWFOLDERA \"NewFolder\"") +cpp_quote("#define CMDSTR_VIEWLISTA \"ViewList\"") +cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"") +cpp_quote("#if defined(__GNUC__)") +cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }") +cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }") +cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }") +cpp_quote("#elif defined(_MSC_VER)") +cpp_quote("# define CMDSTR_NEWFOLDERW L\"NewFolder\"") +cpp_quote("# define CMDSTR_VIEWLISTW L\"ViewList\"") +cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"") +cpp_quote("#else") +cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};") +cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};") +cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};") +cpp_quote("#endif") +cpp_quote("#define CMDSTR_NEWFOLDER WINELIB_NAME_AW(CMDSTR_NEWFOLDER)") +cpp_quote("#define CMDSTR_VIEWLIST WINELIB_NAME_AW(CMDSTR_VIEWLIST)") +cpp_quote("#define CMDSTR_VIEWDETAILS WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)") + +cpp_quote("#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY") +cpp_quote("#define CMIC_MASK_ICON SEE_MASK_ICON") +cpp_quote("#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI") +cpp_quote("#define CMIC_MASK_UNICODE SEE_MASK_UNICODE") +cpp_quote("#define CMIC_MASK_NO_CONSOLE SEE_MASK_NO_CONSOLE") +cpp_quote("#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME") +cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM") +cpp_quote("#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE") +cpp_quote("#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK") +cpp_quote("#define CMIC_MASK_SHIFT_DOWN 0x10000000") +cpp_quote("#define CMIC_MASK_PTINVOKE 0x20000000") +cpp_quote("#define CMIC_MASK_CONTROL_DOWN 0x40000000") +cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE") +cpp_quote("#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS") + + typedef IContextMenu *LPCONTEXTMENU; + + typedef struct tagCMINVOKECOMMANDINFO + { + DWORD cbSize; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + INT nShow; + DWORD dwHotKey; + HANDLE hIcon; + } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO; + + typedef struct tagCMInvokeCommandInfoEx + { + DWORD cbSize; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + INT nShow; + DWORD dwHotKey; + HANDLE hIcon; + LPCSTR lpTitle; + LPCWSTR lpVerbW; + LPCWSTR lpParametersW; + LPCWSTR lpDirectoryW; + LPCWSTR lpTitleW; + POINT ptInvoke; + } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX; + + HRESULT QueryContextMenu( + [in] HMENU hmenu, + [in] UINT indexMenu, + [in] UINT idCmdFirst, + [in] UINT idCmdLast, + [in] UINT uFlags); + + HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici ); + + HRESULT GetCommandString( + [in] UINT_PTR idCmd, + [in] UINT uType, + [out] UINT *pwReserved, + [out, size_is(cchMax)] LPSTR pszName, + [in] UINT cchMax); +} + + +/***************************************************************************** + * IContextMenu2 interface + */ +[ + object, + uuid(000214f4-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IContextMenu2 : IContextMenu +{ + typedef IContextMenu2 *LPCONTEXTMENU2; + + HRESULT HandleMenuMsg( + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam); +} + + +/***************************************************************************** + * IContextMenu3 interface + */ +[ + object, + uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719), + pointer_default(unique) +] +interface IContextMenu3 : IContextMenu2 +{ + typedef IContextMenu3 *LPCONTEXTMENU3; + + HRESULT HandleMenuMsg2( + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam, + [out] LRESULT *plResult); +} + + +/***************************************************************************** + * IShellExecuteHookA interface + */ +[ + object, + uuid(000214f5-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellExecuteHookA : IUnknown +{ + cpp_quote("struct _SHELLEXECUTEINFOA;") + HRESULT Execute( + [in, out] struct _SHELLEXECUTEINFOA* pei); +} + + +/***************************************************************************** + * IShellExecuteHookW interface + */ +[ + object, + uuid(000214fb-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellExecuteHookW : IUnknown +{ + cpp_quote("struct _SHELLEXECUTEINFOW;") + HRESULT Execute( + [in, out] struct _SHELLEXECUTEINFOW* pei); +} + +/***************************************************************************** + * IShellLinkDataList interface + */ +[ + object, + uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1), + pointer_default(unique) +] +interface IShellLinkDataList : IUnknown +{ + HRESULT AddDataBlock( + [in] void *pDataBlock); + HRESULT CopyDataBlock( + [in] DWORD dwSig, + [out] void **ppDataBlock); + HRESULT RemoveDataBlock( + [in] DWORD dwSig); + HRESULT GetFlags( + [out] DWORD *pdwFlags); + HRESULT SetFlags( + [in] DWORD dwFlags); +} + + +/***************************************************************************** + * IResolveShellLink interface + */ +[ + object, + uuid(5cd52983-9449-11d2-963a-00c04f79adf0), + pointer_default(unique) +] +interface IResolveShellLink : IUnknown +{ + HRESULT ResolveShellLink( + [in] IUnknown *punk, + [in] HWND hwnd, + [in] DWORD fFlags); +} + + +/***************************************************************************** + * IURLSearchHook interface + */ +[ + object, + uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497), + pointer_default(unique) +] +interface IURLSearchHook : IUnknown +{ + HRESULT Translate( + [in, out] LPWSTR lpwszSearchURL, + [in] DWORD cchBufferSize); +} + + +/***************************************************************************** + * ISearchContext interface + */ +[ + object, + uuid(09f656a2-41af-480c-88f7-16cc0d164615), + pointer_default(unique) +] +interface ISearchContext : IUnknown +{ + HRESULT GetSearchUrl( + [in] BSTR *pbstrSearchUrl); + HRESULT GetSearchText( + [in] BSTR *pbstrSearchText); + HRESULT GetSearchStyle( + [in] BSTR *pdwSearchStyle); +} + + +/***************************************************************************** + * IURLSearchHook2 interface + */ +[ + object, + uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0), + pointer_default(unique) +] +interface IURLSearchHook2 : IURLSearchHook +{ + HRESULT TranslateWithSearchContext( + [in, out] LPWSTR lpwszSearchURL, + [in] DWORD cchBufferSize, + [in] ISearchContext *pSearchContext); +} + + +cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)") + +/***************************************************************************** + * INewShortcutHookA interface + */ +[ + object, + uuid(000214e1-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface INewShortcutHookA : IUnknown +{ + HRESULT SetReferent( + [in] LPCSTR pcszReferent, + [in] HWND hwnd); + HRESULT GetReferent( + [out] LPCSTR pcszReferent, + [in] int cchReferent); + HRESULT SetFolder( + [in] LPCSTR pcszReferent); + HRESULT GetFolder( + [out] LPSTR pcszReferent, + [in] int cchFolder); + HRESULT GetName( + [out] LPSTR pszName, + [in] int cchName); + HRESULT GetExtension( + [out] LPSTR pszExtension, + [in] int cchExtension); +} + + +/***************************************************************************** + * INewShortcutHookW interface + */ +[ + object, + uuid(000214f7-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface INewShortcutHookW : IUnknown +{ + HRESULT SetReferent( + [in] LPCWSTR pcszReferent, + [in] HWND hwnd); + HRESULT GetReferent( + [out] LPCWSTR pcszReferent, + [in] int cchReferent); + HRESULT SetFolder( + [in] LPCWSTR pcszReferent); + HRESULT GetFolder( + [out] LPWSTR pcszReferent, + [in] int cchFolder); + HRESULT GetName( + [out] LPWSTR pszName, + [in] int cchName); + HRESULT GetExtension( + [out] LPWSTR pszExtension, + [in] int cchExtension); +} + + +/***************************************************************************** + * IShellChangeNotify interface + */ +[ + object, + uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2), + pointer_default(unique) +] +interface IShellChangeNotify : IUnknown +{ + HRESULT OnChange( + [in] LONG lEvent, + [in] LPCITEMIDLIST pidl1, + [in] LPCITEMIDLIST pidl2); +} + +/***************************************************************************** + * IFileSystemBindData interface + */ +[ + object, + uuid(01e18d10-4d8b-11d2-855d-006008059367), + pointer_default(unique) +] +interface IFileSystemBindData : IUnknown +{ + HRESULT SetFindData( + [in] const WIN32_FIND_DATAW *pfd); + HRESULT GetFindData( + [out] WIN32_FIND_DATAW *pfd); +} diff --git a/reactos/include/psdk/shtypes.h b/reactos/include/psdk/shtypes.h deleted file mode 100644 index 3f7baa0d592..00000000000 --- a/reactos/include/psdk/shtypes.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef _SHTYPES_H -#define _SHTYPES_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif -#pragma pack(push,1) - -typedef struct _SHITEMID { - USHORT cb; - BYTE abID[1]; -} SHITEMID, * LPSHITEMID; -typedef const SHITEMID *LPCSHITEMID; -typedef struct _ITEMIDLIST { - SHITEMID mkid; -} ITEMIDLIST,*LPITEMIDLIST; -typedef const ITEMIDLIST *LPCITEMIDLIST; -typedef struct _STRRET { - UINT uType; - _ANONYMOUS_UNION union { - LPWSTR pOleStr; - UINT uOffset; - char cStr[MAX_PATH]; - } DUMMYUNIONNAME; -} STRRET,*LPSTRRET; -typedef struct _SHELLDETAILS -{ - int fmt; - int cxChar; - STRRET str; -} SHELLDETAILS, *LPSHELLDETAILS; - -typedef enum tagSTRRET_TYPE { - STRRET_WSTR = 0, - STRRET_OFFSET = 1, - STRRET_CSTR = 2 -} STRRET_TYPE; - -#define PCUITEMID_CHILD LPCITEMIDLIST - -#pragma pack(pop) -#ifdef __cplusplus -} -#endif - - -#endif /* _SHLOBJ_H */ diff --git a/reactos/include/psdk/shtypes.idl b/reactos/include/psdk/shtypes.idl new file mode 100644 index 00000000000..eb4cb57b944 --- /dev/null +++ b/reactos/include/psdk/shtypes.idl @@ -0,0 +1,74 @@ +/* + * Type definitions for shell objects + * + * Copyright (C) 1999 Juergen Schmied + * Copyright (C) 2003 Alexandre Julliard + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "wtypes.idl"; + +cpp_quote("#include ") +typedef struct +{ + WORD cb; /* nr of bytes in this item */ + BYTE abID[1]; /* first byte in this item */ +} SHITEMID, *LPSHITEMID; +typedef const SHITEMID *LPCSHITEMID; + +typedef struct _ITEMIDLIST +{ + SHITEMID mkid; /* first itemid in list */ +} ITEMIDLIST,*LPITEMIDLIST; +typedef const ITEMIDLIST *LPCITEMIDLIST; +cpp_quote("#include ") + +#ifndef MAX_PATH +#define MAX_PATH 260 +#endif + +cpp_quote("#if 0") +typedef struct { int dummy; } WIN32_FIND_DATAA, WIN32_FIND_DATAW; +cpp_quote("#endif") + +typedef enum tagSTRRET_TYPE +{ + STRRET_WSTR = 0, + STRRET_OFFSET = 1, + STRRET_CSTR = 2 +} STRRET_TYPE; + +cpp_quote("#include ") +typedef struct _STRRET +{ + UINT uType; /* STRRET_xxx */ + [switch_type(UINT), switch_is(uType)] union + { + [case(STRRET_WSTR)][string] LPWSTR pOleStr; /* OLESTR that will be freed */ + [case(STRRET_OFFSET)] UINT uOffset; /* Offset into SHITEMID (ANSI) */ + [case(STRRET_CSTR)] char cStr[MAX_PATH]; /* ANSI Buffer */ + } DUMMYUNIONNAME; +} STRRET, *LPSTRRET; +cpp_quote("#include ") + +cpp_quote("#include ") +typedef struct +{ + int fmt; + int cxChar; + STRRET str; +} SHELLDETAILS, *LPSHELLDETAILS; +cpp_quote("#include ") diff --git a/reactos/include/psdk/stdole2.idl b/reactos/include/psdk/stdole2.idl new file mode 100644 index 00000000000..187982cdf56 --- /dev/null +++ b/reactos/include/psdk/stdole2.idl @@ -0,0 +1,434 @@ +/* + * Copyright (C) 2003 Robert Shearman + * 2005 Huw Davies + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +[ + uuid(00020430-0000-0000-C000-000000000046), + version(2.0), + helpstring("OLE Automation") +] +library stdole +{ + /* typedefs aren't stored in the type library. + These type names are known by the type compiler so it + doesn't really matter what we define them as. */ + + typedef short VARIANT_BOOL; + typedef long BSTR; + typedef double CURRENCY; + typedef unsigned long HRESULT; + typedef void *VARIANT; + typedef unsigned long SCODE; + + typedef struct GUID { + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[ 8 ]; + } GUID; + + typedef struct DISPPARAMS { + VARIANT *rgvarg; + long *rgdispidNamedArgs; + unsigned int cArgs; + unsigned int cNamedArgs; + } DISPPARAMS; + + typedef struct EXCEPINFO { + unsigned short wCode; + unsigned short wReserved; + BSTR bstrSource; + BSTR bstrDescription; + BSTR bstrHelpFile; + unsigned long dwHelpContext; + void *pvReserved; + void *pfnDeferredFillIn; + SCODE scode; + } EXCEPINFO; + + [ + odl, + uuid(00000000-0000-0000-C000-000000000046) + ] + interface IUnknown + { + [restricted] + HRESULT QueryInterface( + [in] GUID *riid, + [out] void **ppvObj); + + [restricted] + unsigned long AddRef(); + + [restricted] + unsigned long Release(); + } + + [ + odl, + uuid(00020400-0000-0000-C000-000000000046) + ] + interface IDispatch : IUnknown + { + [restricted] + HRESULT GetTypeInfoCount( + [out] unsigned int *pctinfo); + + [restricted] + HRESULT GetTypeInfo( + [in] unsigned int itinfo, + [in] unsigned long lcid, + [out] void **pptinfo); + + [restricted] + HRESULT GetIDsOfNames( + [in] GUID *riid, + [in] char **rgszNames, + [in] unsigned int cNames, + [in] unsigned long lcid, + [out] long *rgdispid); + + [restricted] + HRESULT Invoke( + [in] long dispidMember, + [in] GUID *riid, + [in] unsigned long lcid, + [in] unsigned short wFlags, + [in] DISPPARAMS *pdispparams, + [out] VARIANT *pvarResult, + [out] EXCEPINFO *pexcepinfo, + [out] unsigned int *puArgErr); + + } + + [ + odl, + uuid(00020404-0000-0000-C000-000000000046) + ] + interface IEnumVARIANT : IUnknown + { + HRESULT Next( + [in] unsigned long celt, + [in] VARIANT *rgvar, + [out] unsigned long *pceltFetched); + + HRESULT Skip( + [in] unsigned long celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumVARIANT **ppenum); + } + + typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB), public] + unsigned long OLE_COLOR; + + typedef [uuid(66504302-BE0F-101A-8BBB-00AA00300CAB), public] + long OLE_XPOS_PIXELS; + + typedef [uuid(66504303-BE0F-101A-8BBB-00AA00300CAB), public] + long OLE_YPOS_PIXELS; + + typedef [uuid(66504304-BE0F-101A-8BBB-00AA00300CAB), public] + long OLE_XSIZE_PIXELS; + + typedef [uuid(66504305-BE0F-101A-8BBB-00AA00300CAB), public] + long OLE_YSIZE_PIXELS; + + typedef [uuid(66504306-BE0F-101A-8BBB-00AA00300CAB), public] + long OLE_XPOS_HIMETRIC; + + typedef [uuid(66504307-BE0F-101A-8BBB-00AA00300CAB), public] + long OLE_YPOS_HIMETRIC; + + typedef [uuid(66504308-BE0F-101A-8BBB-00AA00300CAB), public] + long OLE_XSIZE_HIMETRIC; + + typedef [uuid(66504309-BE0F-101A-8BBB-00AA00300CAB), public] + long OLE_YSIZE_HIMETRIC; + + typedef [uuid(BF030640-9069-101B-AE2D-08002B2EC713), public] + float OLE_XPOS_CONTAINER; + + typedef [uuid(BF030641-9069-101B-AE2D-08002B2EC713), public] + float OLE_YPOS_CONTAINER; + + typedef [uuid(BF030642-9069-101B-AE2D-08002B2EC713), public] + float OLE_XSIZE_CONTAINER; + + typedef [uuid(BF030643-9069-101B-AE2D-08002B2EC713), public] + float OLE_YSIZE_CONTAINER; + + typedef [uuid(66504313-BE0F-101A-8BBB-00AA00300CAB), public] + int OLE_HANDLE; + + typedef [uuid(6650430B-BE0F-101A-8BBB-00AA00300CAB), public] + VARIANT_BOOL OLE_OPTEXCLUSIVE; + + typedef [uuid(BF030644-9069-101B-AE2D-08002B2EC713), public] + VARIANT_BOOL OLE_CANCELBOOL; + + typedef [uuid(BF030645-9069-101B-AE2D-08002B2EC713), public] + VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; + + /* FIXME: widl can't cope with enum attributes yet */ + /* + [ + uuid(6650430A-BE0F-101A-8BBB-00AA00300CAB) + ] + */ + enum OLE_TRISTATE { + Unchecked = 0, + Checked = 1, + Gray = 2 + }; + + typedef [uuid(6650430D-BE0F-101A-8BBB-00AA00300CAB), public] + BSTR FONTNAME; + + typedef [uuid(6650430E-BE0F-101A-8BBB-00AA00300CAB), public] + CURRENCY FONTSIZE; + + typedef [uuid(6650430F-BE0F-101A-8BBB-00AA00300CAB), public] + VARIANT_BOOL FONTBOLD; + + typedef [uuid(66504310-BE0F-101A-8BBB-00AA00300CAB), public] + VARIANT_BOOL FONTITALIC; + + typedef [uuid(66504311-BE0F-101A-8BBB-00AA00300CAB), public] + VARIANT_BOOL FONTUNDERSCORE; + + typedef [uuid(66504312-BE0F-101A-8BBB-00AA00300CAB), public] + VARIANT_BOOL FONTSTRIKETHROUGH; + + + [ + odl, + uuid(BEF6E002-A874-101A-8BBA-00AA00300CAB), + helpstring("Font Object"), + hidden + ] + interface IFont { + [propget] HRESULT Name([out, retval] BSTR *pname); + [propput] HRESULT Name([in] BSTR pname); + + [propget] HRESULT Size([out, retval] CURRENCY *psize); + [propput] HRESULT Size([in] BSTR psize); + + [propget] HRESULT Bold([out, retval] VARIANT_BOOL *pbold); + [propput] HRESULT Bold([in] VARIANT_BOOL pbold); + + [propget] HRESULT Italic([out, retval] VARIANT_BOOL *pitalic); + [propput] HRESULT Italic([in] VARIANT_BOOL pitalic); + + [propget] HRESULT Underline([out, retval] VARIANT_BOOL *punderline); + [propput] HRESULT Underline([in] VARIANT_BOOL punderline); + + [propget] HRESULT Strikethrough([out, retval] VARIANT_BOOL *pstrikethrough); + [propput] HRESULT Strikethrough([in] VARIANT_BOOL pstrikethrough); + + [propget] HRESULT Weight([out, retval] short *pweight); + [propput] HRESULT Weight([in] short pweight); + + [propget] HRESULT Charset([out, retval] short *pcharset); + [propput] HRESULT Charset([in] short pcharset); + + [propget] HRESULT hFont([out, retval] OLE_HANDLE *phfont); + + HRESULT Clone([out] IFont **ppfont); + + HRESULT IsEqual([in] IFont *pfontOther); + + HRESULT SetRatio([in] long cyLogical, [in] long cyHimetric); + + HRESULT AddRefHfont([in] OLE_HANDLE hFont); + + HRESULT ReleaseHfont([in] OLE_HANDLE hFont); + }; + + + [ + odl, + uuid(BEF6E003-A874-101A-8BBA-00AA00300CAB) + ] + dispinterface Font { + properties: + [id(0x0)] BSTR Name; + [id(0x2)] CURRENCY Size; + [id(0x3)] VARIANT_BOOL Bold; + [id(0x4)] VARIANT_BOOL Italic; + [id(0x5)] VARIANT_BOOL Underline; + [id(0x6)] VARIANT_BOOL Strikethrough; + [id(0x7)] short Weight; + [id(0x8)] short Charset; + methods: + } + + typedef [public] Font IFontDisp; + + [ + uuid(0BE35203-8F91-11CE-9DE3-00AA004BB851) + ] + coclass StdFont { + [default] dispinterface Font; + /* FIXME: We can't reference dispinterface FontEvents here because we need it to + appear at the end of the typelib. */ +/* [default, source] dispinterface FontEvents;*/ + interface IFont; + }; + + [ + odl, + uuid(7BF80980-BF32-101A-8BBB-00AA00300CAB), + helpstring("Picture Object"), + hidden + ] + interface IPicture /*: IUnknown*/ { + [propget] HRESULT Handle([out, retval] OLE_HANDLE *phandle); + + [propget] HRESULT hPal([out, retval] OLE_HANDLE *phpal); + + [propget] HRESULT Type([out, retval] short *ptype); + + [propget] HRESULT Width([out, retval] OLE_XSIZE_HIMETRIC *pwidth); + + [propget] HRESULT Height([out, retval] OLE_YSIZE_HIMETRIC *pheight); + + HRESULT Render([in] int hdc, + [in] long x, + [in] long y, + [in] long cx, + [in] long cy, + [in] OLE_XPOS_HIMETRIC xSrc, + [in] OLE_YPOS_HIMETRIC ySrc, + [in] OLE_XSIZE_HIMETRIC cxSrc, + [in] OLE_YSIZE_HIMETRIC cySrc, + [in] void *prcWBounds); + + [propput] HRESULT hPal([in] OLE_HANDLE phpal); + + [propget] HRESULT CurDC([out, retval] int *phdcOut); + + HRESULT SelectPicture([in] int hdcIn, + [out] int *phdcOut, + [out] OLE_HANDLE *phbmpOut); + + [propget] HRESULT KeepOriginalFormat([out, retval] VARIANT_BOOL *pfkeep); + [propput] HRESULT KeepOriginalFormat([in] VARIANT_BOOL pfkeep); + + HRESULT PictureChanged(); + + HRESULT SaveAsFile([in] void *pstm, + [in] VARIANT_BOOL fSaveMemCopy, + [out] long *pcbSize); + + [propget] HRESULT Attributes([out, retval] long *pdwAttr); + + HRESULT SetHdc([in] OLE_HANDLE hdc); + }; + + [ + uuid(7BF80981-BF32-101A-8BBB-00AA00300CAB) + ] + dispinterface Picture { + properties: + [id(0x0), readonly] OLE_HANDLE Handle; + [id(0x2)] OLE_HANDLE hPal; + [id(0x3), readonly] short Type; + [id(0x4), readonly] OLE_XSIZE_HIMETRIC Width; + [id(0x5), readonly] OLE_XSIZE_HIMETRIC Height; + methods: + [id(0x6)] void Render(int hdc, + long x, + long y, + long cx, + long cy, + OLE_XPOS_HIMETRIC xSrc, + OLE_YPOS_HIMETRIC ySrc, + OLE_XSIZE_HIMETRIC cxSrc, + OLE_YSIZE_HIMETRIC cySrc, + void *prcWBounds); + }; + + typedef [public] Picture IPictureDisp; + + [ + uuid(0BE35204-8F91-11CE-9DE3-00AA004BB851) + ] + coclass StdPicture { + [default] dispinterface Picture; + interface IPicture; + }; + + /* FIXME: widl can't cope with enum attributes yet */ + /* + [ + uuid(E6C8FA08-BD9F-11D0-985E-00C04FC29993) + ] + */ + enum LoadPictureConstants { + Default = 0, + Monochrome = 1, + VgaColor = 2, + Color = 4 + }; + + [ + dllname("oleaut32.dll"), + uuid(91209AC0-60F6-11CF-9C5D-00AA00C1489E), + helpstring("Functions for Standard OLE Objects"), + helpcontext(0x2775) + ] + module StdFunctions{ + [ + entry("OleLoadPictureFileEx"), + helpstring("Loads a picture from a file"), + helpcontext(0x2775) + ] + HRESULT LoadPicture([in, optional] VARIANT filename, + [in, optional, defaultvalue(0)] int widthDesired, + [in, optional, defaultvalue(0)] int heightDesired, + [in, optional, defaultvalue(Default)] enum LoadPictureConstants flags, + [out, retval] IPictureDisp **retval); + [ + entry("OleSavePictureFile"), + helpstring("Saves a picture to a file"), + helpcontext(0x2775) + ] + HRESULT SavePicture([in] IPictureDisp *Picture, + [in] BSTR filename); + }; + + + [ + uuid(4EF6100A-AF88-11D0-9846-00C04FC29993), + helpstring("Event Interface for the Font Object"), + hidden + ] + dispinterface FontEvents { + properties: + methods: + [id(0x9)] void FontChanged([in] BSTR PropertyName); + }; + + typedef [public] FontEvents IFontEventsDisp; + + +}; diff --git a/reactos/include/psdk/strmif.h b/reactos/include/psdk/strmif.h deleted file mode 100644 index 64cd7bc1ce4..00000000000 --- a/reactos/include/psdk/strmif.h +++ /dev/null @@ -1,7956 +0,0 @@ -/*** Autogenerated by WIDL 0.1 from strmif.idl - Do not edit ***/ -#include -#include - -#ifndef __WIDL_STRMIF_H -#define __WIDL_STRMIF_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#define CDEF_CLASS_DEFAULT 0x0001 -#define CDEF_BYPASS_CLASS_MANAGER 0x0002 -#define CDEF_CLASS_LEGACY 0x0004 -#define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008 -#ifndef __ICreateDevEnum_FWD_DEFINED__ -#define __ICreateDevEnum_FWD_DEFINED__ -typedef struct ICreateDevEnum ICreateDevEnum; -#endif - -/***************************************************************************** - * ICreateDevEnum interface - */ -#ifndef __ICreateDevEnum_INTERFACE_DEFINED__ -#define __ICreateDevEnum_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ICreateDevEnum, 0x29840822, 0x5b84, 0x11d0, 0xbd,0x3b, 0x00,0xa0,0xc9,0x11,0xce,0x86); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct ICreateDevEnum : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE CreateClassEnumerator( - REFCLSID clsidDeviceClass, - IEnumMoniker** ppEnumMoniker, - DWORD dwFlags) = 0; - -}; -#else -typedef struct ICreateDevEnumVtbl ICreateDevEnumVtbl; -struct ICreateDevEnum { - const ICreateDevEnumVtbl* lpVtbl; -}; -struct ICreateDevEnumVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ICreateDevEnum* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ICreateDevEnum* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ICreateDevEnum* This); - - /*** ICreateDevEnum methods ***/ - HRESULT (STDMETHODCALLTYPE *CreateClassEnumerator)( - ICreateDevEnum* This, - REFCLSID clsidDeviceClass, - IEnumMoniker** ppEnumMoniker, - DWORD dwFlags); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ICreateDevEnum_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICreateDevEnum_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICreateDevEnum_Release(p) (p)->lpVtbl->Release(p) -/*** ICreateDevEnum methods ***/ -#define ICreateDevEnum_CreateClassEnumerator(p,a,b,c) (p)->lpVtbl->CreateClassEnumerator(p,a,b,c) -#endif - -#endif - -#define ICreateDevEnum_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** ICreateDevEnum methods ***/ \ - STDMETHOD_(HRESULT,CreateClassEnumerator)(THIS_ REFCLSID clsidDeviceClass, IEnumMoniker** ppEnumMoniker, DWORD dwFlags) PURE; - -HRESULT CALLBACK ICreateDevEnum_CreateClassEnumerator_Proxy( - ICreateDevEnum* This, - REFCLSID clsidDeviceClass, - IEnumMoniker** ppEnumMoniker, - DWORD dwFlags); -void __RPC_STUB ICreateDevEnum_CreateClassEnumerator_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ICreateDevEnum_INTERFACE_DEFINED__ */ - -#define CHARS_IN_GUID 39 -#undef GetTimeFormat -typedef struct _AMMediaType { - GUID majortype; - GUID subtype; - BOOL bFixedSizeSamples; - BOOL bTemporalCompression; - ULONG lSampleSize; - GUID formattype; - IUnknown *pUnk; - ULONG cbFormat; - BYTE *pbFormat; -} AM_MEDIA_TYPE; - -typedef enum _PinDirection { - PINDIR_INPUT, - PINDIR_OUTPUT -} PIN_DIRECTION; - -#define MAX_PIN_NAME 128 -#define MAX_FILTER_NAME 128 -typedef LONGLONG REFERENCE_TIME; - -typedef DOUBLE REFTIME; - -typedef DWORD_PTR HSEMAPHORE; - -typedef DWORD_PTR HEVENT; - -typedef struct _AllocatorProperties { - long cBuffers; - long cbBuffer; - long cbAlign; - long cbPrefix; -} ALLOCATOR_PROPERTIES; - -#ifndef __IAMovieSetup_FWD_DEFINED__ -#define __IAMovieSetup_FWD_DEFINED__ -typedef struct IAMovieSetup IAMovieSetup; -#endif - -#ifndef __IEnumFilters_FWD_DEFINED__ -#define __IEnumFilters_FWD_DEFINED__ -typedef struct IEnumFilters IEnumFilters; -#endif - -#ifndef __IEnumMediaTypes_FWD_DEFINED__ -#define __IEnumMediaTypes_FWD_DEFINED__ -typedef struct IEnumMediaTypes IEnumMediaTypes; -#endif - -#ifndef __IEnumPins_FWD_DEFINED__ -#define __IEnumPins_FWD_DEFINED__ -typedef struct IEnumPins IEnumPins; -#endif - -#ifndef __IBaseFilter_FWD_DEFINED__ -#define __IBaseFilter_FWD_DEFINED__ -typedef struct IBaseFilter IBaseFilter; -#endif - -#ifndef __IFilterGraph_FWD_DEFINED__ -#define __IFilterGraph_FWD_DEFINED__ -typedef struct IFilterGraph IFilterGraph; -#endif - -#ifndef __IMediaFilter_FWD_DEFINED__ -#define __IMediaFilter_FWD_DEFINED__ -typedef struct IMediaFilter IMediaFilter; -#endif - -#ifndef __IMediaSample_FWD_DEFINED__ -#define __IMediaSample_FWD_DEFINED__ -typedef struct IMediaSample IMediaSample; -#endif - -#ifndef __IMemAllocator_FWD_DEFINED__ -#define __IMemAllocator_FWD_DEFINED__ -typedef struct IMemAllocator IMemAllocator; -#endif - -#ifndef __IMemAllocatorCallbackTemp_FWD_DEFINED__ -#define __IMemAllocatorCallbackTemp_FWD_DEFINED__ -typedef struct IMemAllocatorCallbackTemp IMemAllocatorCallbackTemp; -#endif - -#ifndef __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ -#define __IMemAllocatorNotifyCallbackTemp_FWD_DEFINED__ -typedef struct IMemAllocatorNotifyCallbackTemp IMemAllocatorNotifyCallbackTemp; -#endif - -#ifndef __IMemInputPin_FWD_DEFINED__ -#define __IMemInputPin_FWD_DEFINED__ -typedef struct IMemInputPin IMemInputPin; -#endif - -#ifndef __IPin_FWD_DEFINED__ -#define __IPin_FWD_DEFINED__ -typedef struct IPin IPin; -#endif - -#ifndef __IReferenceClock_FWD_DEFINED__ -#define __IReferenceClock_FWD_DEFINED__ -typedef struct IReferenceClock IReferenceClock; -#endif - -typedef struct _PinInfo { - IBaseFilter *pFilter; - PIN_DIRECTION dir; - WCHAR achName[128]; -} PIN_INFO; - -/***************************************************************************** - * IPin interface - */ -#ifndef __IPin_INTERFACE_DEFINED__ -#define __IPin_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IPin, 0x56a86891, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IPin : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Connect( - IPin* pReceivePin, - const AM_MEDIA_TYPE* pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReceiveConnection( - IPin* pConnector, - const AM_MEDIA_TYPE* pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE Disconnect( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE ConnectedTo( - IPin** pPin) = 0; - - virtual HRESULT STDMETHODCALLTYPE ConnectionMediaType( - AM_MEDIA_TYPE* pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryPinInfo( - PIN_INFO* pInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryDirection( - PIN_DIRECTION* pPinDir) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryId( - LPWSTR* Id) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryAccept( - const AM_MEDIA_TYPE* pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumMediaTypes( - IEnumMediaTypes** ppEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryInternalConnections( - IPin** apPin, - ULONG* nPin) = 0; - - virtual HRESULT STDMETHODCALLTYPE EndOfStream( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE BeginFlush( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE EndFlush( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE NewSegment( - REFERENCE_TIME tStart, - REFERENCE_TIME tStop, - double dRate) = 0; - -}; -#else -typedef struct IPinVtbl IPinVtbl; -struct IPin { - const IPinVtbl* lpVtbl; -}; -struct IPinVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IPin* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IPin* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IPin* This); - - /*** IPin methods ***/ - HRESULT (STDMETHODCALLTYPE *Connect)( - IPin* This, - IPin* pReceivePin, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *ReceiveConnection)( - IPin* This, - IPin* pConnector, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *Disconnect)( - IPin* This); - - HRESULT (STDMETHODCALLTYPE *ConnectedTo)( - IPin* This, - IPin** pPin); - - HRESULT (STDMETHODCALLTYPE *ConnectionMediaType)( - IPin* This, - AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *QueryPinInfo)( - IPin* This, - PIN_INFO* pInfo); - - HRESULT (STDMETHODCALLTYPE *QueryDirection)( - IPin* This, - PIN_DIRECTION* pPinDir); - - HRESULT (STDMETHODCALLTYPE *QueryId)( - IPin* This, - LPWSTR* Id); - - HRESULT (STDMETHODCALLTYPE *QueryAccept)( - IPin* This, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *EnumMediaTypes)( - IPin* This, - IEnumMediaTypes** ppEnum); - - HRESULT (STDMETHODCALLTYPE *QueryInternalConnections)( - IPin* This, - IPin** apPin, - ULONG* nPin); - - HRESULT (STDMETHODCALLTYPE *EndOfStream)( - IPin* This); - - HRESULT (STDMETHODCALLTYPE *BeginFlush)( - IPin* This); - - HRESULT (STDMETHODCALLTYPE *EndFlush)( - IPin* This); - - HRESULT (STDMETHODCALLTYPE *NewSegment)( - IPin* This, - REFERENCE_TIME tStart, - REFERENCE_TIME tStop, - double dRate); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IPin_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPin_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPin_Release(p) (p)->lpVtbl->Release(p) -/*** IPin methods ***/ -#define IPin_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b) -#define IPin_ReceiveConnection(p,a,b) (p)->lpVtbl->ReceiveConnection(p,a,b) -#define IPin_Disconnect(p) (p)->lpVtbl->Disconnect(p) -#define IPin_ConnectedTo(p,a) (p)->lpVtbl->ConnectedTo(p,a) -#define IPin_ConnectionMediaType(p,a) (p)->lpVtbl->ConnectionMediaType(p,a) -#define IPin_QueryPinInfo(p,a) (p)->lpVtbl->QueryPinInfo(p,a) -#define IPin_QueryDirection(p,a) (p)->lpVtbl->QueryDirection(p,a) -#define IPin_QueryId(p,a) (p)->lpVtbl->QueryId(p,a) -#define IPin_QueryAccept(p,a) (p)->lpVtbl->QueryAccept(p,a) -#define IPin_EnumMediaTypes(p,a) (p)->lpVtbl->EnumMediaTypes(p,a) -#define IPin_QueryInternalConnections(p,a,b) (p)->lpVtbl->QueryInternalConnections(p,a,b) -#define IPin_EndOfStream(p) (p)->lpVtbl->EndOfStream(p) -#define IPin_BeginFlush(p) (p)->lpVtbl->BeginFlush(p) -#define IPin_EndFlush(p) (p)->lpVtbl->EndFlush(p) -#define IPin_NewSegment(p,a,b,c) (p)->lpVtbl->NewSegment(p,a,b,c) -#endif - -#endif - -#define IPin_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IPin methods ***/ \ - STDMETHOD_(HRESULT,Connect)(THIS_ IPin* pReceivePin, const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,ReceiveConnection)(THIS_ IPin* pConnector, const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,Disconnect)(THIS) PURE; \ - STDMETHOD_(HRESULT,ConnectedTo)(THIS_ IPin** pPin) PURE; \ - STDMETHOD_(HRESULT,ConnectionMediaType)(THIS_ AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,QueryPinInfo)(THIS_ PIN_INFO* pInfo) PURE; \ - STDMETHOD_(HRESULT,QueryDirection)(THIS_ PIN_DIRECTION* pPinDir) PURE; \ - STDMETHOD_(HRESULT,QueryId)(THIS_ LPWSTR* Id) PURE; \ - STDMETHOD_(HRESULT,QueryAccept)(THIS_ const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,EnumMediaTypes)(THIS_ IEnumMediaTypes** ppEnum) PURE; \ - STDMETHOD_(HRESULT,QueryInternalConnections)(THIS_ IPin** apPin, ULONG* nPin) PURE; \ - STDMETHOD_(HRESULT,EndOfStream)(THIS) PURE; \ - STDMETHOD_(HRESULT,BeginFlush)(THIS) PURE; \ - STDMETHOD_(HRESULT,EndFlush)(THIS) PURE; \ - STDMETHOD_(HRESULT,NewSegment)(THIS_ REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate) PURE; - -HRESULT CALLBACK IPin_Connect_Proxy( - IPin* This, - IPin* pReceivePin, - const AM_MEDIA_TYPE* pmt); -void __RPC_STUB IPin_Connect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_ReceiveConnection_Proxy( - IPin* This, - IPin* pConnector, - const AM_MEDIA_TYPE* pmt); -void __RPC_STUB IPin_ReceiveConnection_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_Disconnect_Proxy( - IPin* This); -void __RPC_STUB IPin_Disconnect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_ConnectedTo_Proxy( - IPin* This, - IPin** pPin); -void __RPC_STUB IPin_ConnectedTo_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_ConnectionMediaType_Proxy( - IPin* This, - AM_MEDIA_TYPE* pmt); -void __RPC_STUB IPin_ConnectionMediaType_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_QueryPinInfo_Proxy( - IPin* This, - PIN_INFO* pInfo); -void __RPC_STUB IPin_QueryPinInfo_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_QueryDirection_Proxy( - IPin* This, - PIN_DIRECTION* pPinDir); -void __RPC_STUB IPin_QueryDirection_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_QueryId_Proxy( - IPin* This, - LPWSTR* Id); -void __RPC_STUB IPin_QueryId_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_QueryAccept_Proxy( - IPin* This, - const AM_MEDIA_TYPE* pmt); -void __RPC_STUB IPin_QueryAccept_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_EnumMediaTypes_Proxy( - IPin* This, - IEnumMediaTypes** ppEnum); -void __RPC_STUB IPin_EnumMediaTypes_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_QueryInternalConnections_Proxy( - IPin* This, - IPin** apPin, - ULONG* nPin); -void __RPC_STUB IPin_QueryInternalConnections_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_EndOfStream_Proxy( - IPin* This); -void __RPC_STUB IPin_EndOfStream_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_BeginFlush_Proxy( - IPin* This); -void __RPC_STUB IPin_BeginFlush_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_EndFlush_Proxy( - IPin* This); -void __RPC_STUB IPin_EndFlush_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPin_NewSegment_Proxy( - IPin* This, - REFERENCE_TIME tStart, - REFERENCE_TIME tStop, - double dRate); -void __RPC_STUB IPin_NewSegment_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IPin_INTERFACE_DEFINED__ */ - -typedef IPin *PPIN; - -/***************************************************************************** - * IEnumPins interface - */ -#ifndef __IEnumPins_INTERFACE_DEFINED__ -#define __IEnumPins_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IEnumPins, 0x56a86892, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IEnumPins : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Next( - ULONG cPins, - IPin** ppPins, - ULONG* pcFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - ULONG cPins) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - IEnumPins** ppEnum) = 0; - -}; -#else -typedef struct IEnumPinsVtbl IEnumPinsVtbl; -struct IEnumPins { - const IEnumPinsVtbl* lpVtbl; -}; -struct IEnumPinsVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IEnumPins* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IEnumPins* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IEnumPins* This); - - /*** IEnumPins methods ***/ - HRESULT (STDMETHODCALLTYPE *Next)( - IEnumPins* This, - ULONG cPins, - IPin** ppPins, - ULONG* pcFetched); - - HRESULT (STDMETHODCALLTYPE *Skip)( - IEnumPins* This, - ULONG cPins); - - HRESULT (STDMETHODCALLTYPE *Reset)( - IEnumPins* This); - - HRESULT (STDMETHODCALLTYPE *Clone)( - IEnumPins* This, - IEnumPins** ppEnum); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IEnumPins_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumPins_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumPins_Release(p) (p)->lpVtbl->Release(p) -/*** IEnumPins methods ***/ -#define IEnumPins_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumPins_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumPins_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumPins_Clone(p,a) (p)->lpVtbl->Clone(p,a) -#endif - -#endif - -#define IEnumPins_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IEnumPins methods ***/ \ - STDMETHOD_(HRESULT,Next)(THIS_ ULONG cPins, IPin** ppPins, ULONG* pcFetched) PURE; \ - STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cPins) PURE; \ - STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ - STDMETHOD_(HRESULT,Clone)(THIS_ IEnumPins** ppEnum) PURE; - -HRESULT CALLBACK IEnumPins_Next_Proxy( - IEnumPins* This, - ULONG cPins, - IPin** ppPins, - ULONG* pcFetched); -void __RPC_STUB IEnumPins_Next_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumPins_Skip_Proxy( - IEnumPins* This, - ULONG cPins); -void __RPC_STUB IEnumPins_Skip_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumPins_Reset_Proxy( - IEnumPins* This); -void __RPC_STUB IEnumPins_Reset_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumPins_Clone_Proxy( - IEnumPins* This, - IEnumPins** ppEnum); -void __RPC_STUB IEnumPins_Clone_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IEnumPins_INTERFACE_DEFINED__ */ - -typedef IEnumPins *PENUMPINS; - -/***************************************************************************** - * IEnumMediaTypes interface - */ -#ifndef __IEnumMediaTypes_INTERFACE_DEFINED__ -#define __IEnumMediaTypes_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IEnumMediaTypes, 0x89c31040, 0x846b, 0x11ce, 0x97,0xd3, 0x00,0xaa,0x00,0x55,0x59,0x5a); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IEnumMediaTypes : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Next( - ULONG cMediaTypes, - AM_MEDIA_TYPE** ppMediaTypes, - ULONG* pcFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - ULONG cMediaTypes) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - IEnumMediaTypes** ppEnum) = 0; - -}; -#else -typedef struct IEnumMediaTypesVtbl IEnumMediaTypesVtbl; -struct IEnumMediaTypes { - const IEnumMediaTypesVtbl* lpVtbl; -}; -struct IEnumMediaTypesVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IEnumMediaTypes* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IEnumMediaTypes* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IEnumMediaTypes* This); - - /*** IEnumMediaTypes methods ***/ - HRESULT (STDMETHODCALLTYPE *Next)( - IEnumMediaTypes* This, - ULONG cMediaTypes, - AM_MEDIA_TYPE** ppMediaTypes, - ULONG* pcFetched); - - HRESULT (STDMETHODCALLTYPE *Skip)( - IEnumMediaTypes* This, - ULONG cMediaTypes); - - HRESULT (STDMETHODCALLTYPE *Reset)( - IEnumMediaTypes* This); - - HRESULT (STDMETHODCALLTYPE *Clone)( - IEnumMediaTypes* This, - IEnumMediaTypes** ppEnum); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IEnumMediaTypes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumMediaTypes_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumMediaTypes_Release(p) (p)->lpVtbl->Release(p) -/*** IEnumMediaTypes methods ***/ -#define IEnumMediaTypes_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumMediaTypes_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumMediaTypes_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumMediaTypes_Clone(p,a) (p)->lpVtbl->Clone(p,a) -#endif - -#endif - -#define IEnumMediaTypes_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IEnumMediaTypes methods ***/ \ - STDMETHOD_(HRESULT,Next)(THIS_ ULONG cMediaTypes, AM_MEDIA_TYPE** ppMediaTypes, ULONG* pcFetched) PURE; \ - STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cMediaTypes) PURE; \ - STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ - STDMETHOD_(HRESULT,Clone)(THIS_ IEnumMediaTypes** ppEnum) PURE; - -HRESULT CALLBACK IEnumMediaTypes_Next_Proxy( - IEnumMediaTypes* This, - ULONG cMediaTypes, - AM_MEDIA_TYPE** ppMediaTypes, - ULONG* pcFetched); -void __RPC_STUB IEnumMediaTypes_Next_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumMediaTypes_Skip_Proxy( - IEnumMediaTypes* This, - ULONG cMediaTypes); -void __RPC_STUB IEnumMediaTypes_Skip_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumMediaTypes_Reset_Proxy( - IEnumMediaTypes* This); -void __RPC_STUB IEnumMediaTypes_Reset_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumMediaTypes_Clone_Proxy( - IEnumMediaTypes* This, - IEnumMediaTypes** ppEnum); -void __RPC_STUB IEnumMediaTypes_Clone_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IEnumMediaTypes_INTERFACE_DEFINED__ */ - -typedef IEnumMediaTypes *PENUMMEDIATYPES; - -/***************************************************************************** - * IFilterGraph interface - */ -#ifndef __IFilterGraph_INTERFACE_DEFINED__ -#define __IFilterGraph_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IFilterGraph, 0x56a8689f, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IFilterGraph : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE AddFilter( - IBaseFilter* pFilter, - LPCWSTR pName) = 0; - - virtual HRESULT STDMETHODCALLTYPE RemoveFilter( - IBaseFilter* pFilter) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumFilters( - IEnumFilters** ppEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindFilterByName( - LPCWSTR pName, - IBaseFilter** ppFilter) = 0; - - virtual HRESULT STDMETHODCALLTYPE ConnectDirect( - IPin* ppinOut, - IPin* ppinIn, - const AM_MEDIA_TYPE* pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reconnect( - IPin* ppin) = 0; - - virtual HRESULT STDMETHODCALLTYPE Disconnect( - IPin* ppin) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDefaultSyncSource( - ) = 0; - -}; -#else -typedef struct IFilterGraphVtbl IFilterGraphVtbl; -struct IFilterGraph { - const IFilterGraphVtbl* lpVtbl; -}; -struct IFilterGraphVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IFilterGraph* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IFilterGraph* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IFilterGraph* This); - - /*** IFilterGraph methods ***/ - HRESULT (STDMETHODCALLTYPE *AddFilter)( - IFilterGraph* This, - IBaseFilter* pFilter, - LPCWSTR pName); - - HRESULT (STDMETHODCALLTYPE *RemoveFilter)( - IFilterGraph* This, - IBaseFilter* pFilter); - - HRESULT (STDMETHODCALLTYPE *EnumFilters)( - IFilterGraph* This, - IEnumFilters** ppEnum); - - HRESULT (STDMETHODCALLTYPE *FindFilterByName)( - IFilterGraph* This, - LPCWSTR pName, - IBaseFilter** ppFilter); - - HRESULT (STDMETHODCALLTYPE *ConnectDirect)( - IFilterGraph* This, - IPin* ppinOut, - IPin* ppinIn, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *Reconnect)( - IFilterGraph* This, - IPin* ppin); - - HRESULT (STDMETHODCALLTYPE *Disconnect)( - IFilterGraph* This, - IPin* ppin); - - HRESULT (STDMETHODCALLTYPE *SetDefaultSyncSource)( - IFilterGraph* This); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IFilterGraph_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFilterGraph_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFilterGraph_Release(p) (p)->lpVtbl->Release(p) -/*** IFilterGraph methods ***/ -#define IFilterGraph_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b) -#define IFilterGraph_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a) -#define IFilterGraph_EnumFilters(p,a) (p)->lpVtbl->EnumFilters(p,a) -#define IFilterGraph_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b) -#define IFilterGraph_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c) -#define IFilterGraph_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a) -#define IFilterGraph_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a) -#define IFilterGraph_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p) -#endif - -#endif - -#define IFilterGraph_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFilterGraph methods ***/ \ - STDMETHOD_(HRESULT,AddFilter)(THIS_ IBaseFilter* pFilter, LPCWSTR pName) PURE; \ - STDMETHOD_(HRESULT,RemoveFilter)(THIS_ IBaseFilter* pFilter) PURE; \ - STDMETHOD_(HRESULT,EnumFilters)(THIS_ IEnumFilters** ppEnum) PURE; \ - STDMETHOD_(HRESULT,FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter** ppFilter) PURE; \ - STDMETHOD_(HRESULT,ConnectDirect)(THIS_ IPin* ppinOut, IPin* ppinIn, const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* ppin) PURE; \ - STDMETHOD_(HRESULT,Disconnect)(THIS_ IPin* ppin) PURE; \ - STDMETHOD_(HRESULT,SetDefaultSyncSource)(THIS) PURE; - -HRESULT CALLBACK IFilterGraph_AddFilter_Proxy( - IFilterGraph* This, - IBaseFilter* pFilter, - LPCWSTR pName); -void __RPC_STUB IFilterGraph_AddFilter_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterGraph_RemoveFilter_Proxy( - IFilterGraph* This, - IBaseFilter* pFilter); -void __RPC_STUB IFilterGraph_RemoveFilter_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterGraph_EnumFilters_Proxy( - IFilterGraph* This, - IEnumFilters** ppEnum); -void __RPC_STUB IFilterGraph_EnumFilters_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterGraph_FindFilterByName_Proxy( - IFilterGraph* This, - LPCWSTR pName, - IBaseFilter** ppFilter); -void __RPC_STUB IFilterGraph_FindFilterByName_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterGraph_ConnectDirect_Proxy( - IFilterGraph* This, - IPin* ppinOut, - IPin* ppinIn, - const AM_MEDIA_TYPE* pmt); -void __RPC_STUB IFilterGraph_ConnectDirect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterGraph_Reconnect_Proxy( - IFilterGraph* This, - IPin* ppin); -void __RPC_STUB IFilterGraph_Reconnect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterGraph_Disconnect_Proxy( - IFilterGraph* This, - IPin* ppin); -void __RPC_STUB IFilterGraph_Disconnect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterGraph_SetDefaultSyncSource_Proxy( - IFilterGraph* This); -void __RPC_STUB IFilterGraph_SetDefaultSyncSource_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IFilterGraph_INTERFACE_DEFINED__ */ - -typedef IFilterGraph *PFILTERGRAPH; - -/***************************************************************************** - * IEnumFilters interface - */ -#ifndef __IEnumFilters_INTERFACE_DEFINED__ -#define __IEnumFilters_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IEnumFilters, 0x56a86893, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IEnumFilters : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Next( - ULONG cFilters, - IBaseFilter** ppFilter, - ULONG* pcFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - ULONG cFilters) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - IEnumFilters** ppEnum) = 0; - -}; -#else -typedef struct IEnumFiltersVtbl IEnumFiltersVtbl; -struct IEnumFilters { - const IEnumFiltersVtbl* lpVtbl; -}; -struct IEnumFiltersVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IEnumFilters* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IEnumFilters* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IEnumFilters* This); - - /*** IEnumFilters methods ***/ - HRESULT (STDMETHODCALLTYPE *Next)( - IEnumFilters* This, - ULONG cFilters, - IBaseFilter** ppFilter, - ULONG* pcFetched); - - HRESULT (STDMETHODCALLTYPE *Skip)( - IEnumFilters* This, - ULONG cFilters); - - HRESULT (STDMETHODCALLTYPE *Reset)( - IEnumFilters* This); - - HRESULT (STDMETHODCALLTYPE *Clone)( - IEnumFilters* This, - IEnumFilters** ppEnum); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IEnumFilters_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumFilters_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumFilters_Release(p) (p)->lpVtbl->Release(p) -/*** IEnumFilters methods ***/ -#define IEnumFilters_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumFilters_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumFilters_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumFilters_Clone(p,a) (p)->lpVtbl->Clone(p,a) -#endif - -#endif - -#define IEnumFilters_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IEnumFilters methods ***/ \ - STDMETHOD_(HRESULT,Next)(THIS_ ULONG cFilters, IBaseFilter** ppFilter, ULONG* pcFetched) PURE; \ - STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cFilters) PURE; \ - STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ - STDMETHOD_(HRESULT,Clone)(THIS_ IEnumFilters** ppEnum) PURE; - -HRESULT CALLBACK IEnumFilters_Next_Proxy( - IEnumFilters* This, - ULONG cFilters, - IBaseFilter** ppFilter, - ULONG* pcFetched); -void __RPC_STUB IEnumFilters_Next_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumFilters_Skip_Proxy( - IEnumFilters* This, - ULONG cFilters); -void __RPC_STUB IEnumFilters_Skip_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumFilters_Reset_Proxy( - IEnumFilters* This); -void __RPC_STUB IEnumFilters_Reset_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumFilters_Clone_Proxy( - IEnumFilters* This, - IEnumFilters** ppEnum); -void __RPC_STUB IEnumFilters_Clone_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IEnumFilters_INTERFACE_DEFINED__ */ - -typedef IEnumFilters *PENUMFILTERS; - -typedef enum _FilterState { - State_Stopped, - State_Paused, - State_Running -} FILTER_STATE; - -/***************************************************************************** - * IMediaFilter interface - */ -#ifndef __IMediaFilter_INTERFACE_DEFINED__ -#define __IMediaFilter_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMediaFilter, 0x56a86899, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMediaFilter : public IPersist -{ - virtual HRESULT STDMETHODCALLTYPE Stop( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Pause( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Run( - REFERENCE_TIME tStart) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetState( - DWORD dwMilliSecsTimeout, - FILTER_STATE* State) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSyncSource( - IReferenceClock* pClock) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSyncSource( - IReferenceClock** pClock) = 0; - -}; -#else -typedef struct IMediaFilterVtbl IMediaFilterVtbl; -struct IMediaFilter { - const IMediaFilterVtbl* lpVtbl; -}; -struct IMediaFilterVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMediaFilter* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMediaFilter* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMediaFilter* This); - - /*** IPersist methods ***/ - HRESULT (STDMETHODCALLTYPE *GetClassID)( - IMediaFilter* This, - CLSID* pClassID); - - /*** IMediaFilter methods ***/ - HRESULT (STDMETHODCALLTYPE *Stop)( - IMediaFilter* This); - - HRESULT (STDMETHODCALLTYPE *Pause)( - IMediaFilter* This); - - HRESULT (STDMETHODCALLTYPE *Run)( - IMediaFilter* This, - REFERENCE_TIME tStart); - - HRESULT (STDMETHODCALLTYPE *GetState)( - IMediaFilter* This, - DWORD dwMilliSecsTimeout, - FILTER_STATE* State); - - HRESULT (STDMETHODCALLTYPE *SetSyncSource)( - IMediaFilter* This, - IReferenceClock* pClock); - - HRESULT (STDMETHODCALLTYPE *GetSyncSource)( - IMediaFilter* This, - IReferenceClock** pClock); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMediaFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMediaFilter_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMediaFilter_Release(p) (p)->lpVtbl->Release(p) -/*** IPersist methods ***/ -#define IMediaFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) -/*** IMediaFilter methods ***/ -#define IMediaFilter_Stop(p) (p)->lpVtbl->Stop(p) -#define IMediaFilter_Pause(p) (p)->lpVtbl->Pause(p) -#define IMediaFilter_Run(p,a) (p)->lpVtbl->Run(p,a) -#define IMediaFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b) -#define IMediaFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a) -#define IMediaFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a) -#endif - -#endif - -#define IMediaFilter_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IPersist methods ***/ \ - STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \ - /*** IMediaFilter methods ***/ \ - STDMETHOD_(HRESULT,Stop)(THIS) PURE; \ - STDMETHOD_(HRESULT,Pause)(THIS) PURE; \ - STDMETHOD_(HRESULT,Run)(THIS_ REFERENCE_TIME tStart) PURE; \ - STDMETHOD_(HRESULT,GetState)(THIS_ DWORD dwMilliSecsTimeout, FILTER_STATE* State) PURE; \ - STDMETHOD_(HRESULT,SetSyncSource)(THIS_ IReferenceClock* pClock) PURE; \ - STDMETHOD_(HRESULT,GetSyncSource)(THIS_ IReferenceClock** pClock) PURE; - -HRESULT CALLBACK IMediaFilter_Stop_Proxy( - IMediaFilter* This); -void __RPC_STUB IMediaFilter_Stop_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaFilter_Pause_Proxy( - IMediaFilter* This); -void __RPC_STUB IMediaFilter_Pause_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaFilter_Run_Proxy( - IMediaFilter* This, - REFERENCE_TIME tStart); -void __RPC_STUB IMediaFilter_Run_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaFilter_GetState_Proxy( - IMediaFilter* This, - DWORD dwMilliSecsTimeout, - FILTER_STATE* State); -void __RPC_STUB IMediaFilter_GetState_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaFilter_SetSyncSource_Proxy( - IMediaFilter* This, - IReferenceClock* pClock); -void __RPC_STUB IMediaFilter_SetSyncSource_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaFilter_GetSyncSource_Proxy( - IMediaFilter* This, - IReferenceClock** pClock); -void __RPC_STUB IMediaFilter_GetSyncSource_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMediaFilter_INTERFACE_DEFINED__ */ - -typedef IMediaFilter *PMEDIAFILTER; - -typedef struct _FilterInfo { - WCHAR achName[128]; - IFilterGraph *pGraph; -} FILTER_INFO; - -/***************************************************************************** - * IBaseFilter interface - */ -#ifndef __IBaseFilter_INTERFACE_DEFINED__ -#define __IBaseFilter_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IBaseFilter, 0x56a86895, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IBaseFilter : public IMediaFilter -{ - virtual HRESULT STDMETHODCALLTYPE EnumPins( - IEnumPins** ppEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindPin( - LPCWSTR Id, - IPin** ppPin) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryFilterInfo( - FILTER_INFO* pInfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE JoinFilterGraph( - IFilterGraph* pGraph, - LPCWSTR pName) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryVendorInfo( - LPWSTR* pVendorInfo) = 0; - -}; -#else -typedef struct IBaseFilterVtbl IBaseFilterVtbl; -struct IBaseFilter { - const IBaseFilterVtbl* lpVtbl; -}; -struct IBaseFilterVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IBaseFilter* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IBaseFilter* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IBaseFilter* This); - - /*** IPersist methods ***/ - HRESULT (STDMETHODCALLTYPE *GetClassID)( - IBaseFilter* This, - CLSID* pClassID); - - /*** IMediaFilter methods ***/ - HRESULT (STDMETHODCALLTYPE *Stop)( - IBaseFilter* This); - - HRESULT (STDMETHODCALLTYPE *Pause)( - IBaseFilter* This); - - HRESULT (STDMETHODCALLTYPE *Run)( - IBaseFilter* This, - REFERENCE_TIME tStart); - - HRESULT (STDMETHODCALLTYPE *GetState)( - IBaseFilter* This, - DWORD dwMilliSecsTimeout, - FILTER_STATE* State); - - HRESULT (STDMETHODCALLTYPE *SetSyncSource)( - IBaseFilter* This, - IReferenceClock* pClock); - - HRESULT (STDMETHODCALLTYPE *GetSyncSource)( - IBaseFilter* This, - IReferenceClock** pClock); - - /*** IBaseFilter methods ***/ - HRESULT (STDMETHODCALLTYPE *EnumPins)( - IBaseFilter* This, - IEnumPins** ppEnum); - - HRESULT (STDMETHODCALLTYPE *FindPin)( - IBaseFilter* This, - LPCWSTR Id, - IPin** ppPin); - - HRESULT (STDMETHODCALLTYPE *QueryFilterInfo)( - IBaseFilter* This, - FILTER_INFO* pInfo); - - HRESULT (STDMETHODCALLTYPE *JoinFilterGraph)( - IBaseFilter* This, - IFilterGraph* pGraph, - LPCWSTR pName); - - HRESULT (STDMETHODCALLTYPE *QueryVendorInfo)( - IBaseFilter* This, - LPWSTR* pVendorInfo); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IBaseFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IBaseFilter_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IBaseFilter_Release(p) (p)->lpVtbl->Release(p) -/*** IPersist methods ***/ -#define IBaseFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) -/*** IMediaFilter methods ***/ -#define IBaseFilter_Stop(p) (p)->lpVtbl->Stop(p) -#define IBaseFilter_Pause(p) (p)->lpVtbl->Pause(p) -#define IBaseFilter_Run(p,a) (p)->lpVtbl->Run(p,a) -#define IBaseFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b) -#define IBaseFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a) -#define IBaseFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a) -/*** IBaseFilter methods ***/ -#define IBaseFilter_EnumPins(p,a) (p)->lpVtbl->EnumPins(p,a) -#define IBaseFilter_FindPin(p,a,b) (p)->lpVtbl->FindPin(p,a,b) -#define IBaseFilter_QueryFilterInfo(p,a) (p)->lpVtbl->QueryFilterInfo(p,a) -#define IBaseFilter_JoinFilterGraph(p,a,b) (p)->lpVtbl->JoinFilterGraph(p,a,b) -#define IBaseFilter_QueryVendorInfo(p,a) (p)->lpVtbl->QueryVendorInfo(p,a) -#endif - -#endif - -#define IBaseFilter_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IPersist methods ***/ \ - STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \ - /*** IMediaFilter methods ***/ \ - STDMETHOD_(HRESULT,Stop)(THIS) PURE; \ - STDMETHOD_(HRESULT,Pause)(THIS) PURE; \ - STDMETHOD_(HRESULT,Run)(THIS_ REFERENCE_TIME tStart) PURE; \ - STDMETHOD_(HRESULT,GetState)(THIS_ DWORD dwMilliSecsTimeout, FILTER_STATE* State) PURE; \ - STDMETHOD_(HRESULT,SetSyncSource)(THIS_ IReferenceClock* pClock) PURE; \ - STDMETHOD_(HRESULT,GetSyncSource)(THIS_ IReferenceClock** pClock) PURE; \ - /*** IBaseFilter methods ***/ \ - STDMETHOD_(HRESULT,EnumPins)(THIS_ IEnumPins** ppEnum) PURE; \ - STDMETHOD_(HRESULT,FindPin)(THIS_ LPCWSTR Id, IPin** ppPin) PURE; \ - STDMETHOD_(HRESULT,QueryFilterInfo)(THIS_ FILTER_INFO* pInfo) PURE; \ - STDMETHOD_(HRESULT,JoinFilterGraph)(THIS_ IFilterGraph* pGraph, LPCWSTR pName) PURE; \ - STDMETHOD_(HRESULT,QueryVendorInfo)(THIS_ LPWSTR* pVendorInfo) PURE; - -HRESULT CALLBACK IBaseFilter_EnumPins_Proxy( - IBaseFilter* This, - IEnumPins** ppEnum); -void __RPC_STUB IBaseFilter_EnumPins_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBaseFilter_FindPin_Proxy( - IBaseFilter* This, - LPCWSTR Id, - IPin** ppPin); -void __RPC_STUB IBaseFilter_FindPin_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBaseFilter_QueryFilterInfo_Proxy( - IBaseFilter* This, - FILTER_INFO* pInfo); -void __RPC_STUB IBaseFilter_QueryFilterInfo_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBaseFilter_JoinFilterGraph_Proxy( - IBaseFilter* This, - IFilterGraph* pGraph, - LPCWSTR pName); -void __RPC_STUB IBaseFilter_JoinFilterGraph_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBaseFilter_QueryVendorInfo_Proxy( - IBaseFilter* This, - LPWSTR* pVendorInfo); -void __RPC_STUB IBaseFilter_QueryVendorInfo_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IBaseFilter_INTERFACE_DEFINED__ */ - -typedef IBaseFilter *PFILTER; - -/***************************************************************************** - * IReferenceClock interface - */ -#ifndef __IReferenceClock_INTERFACE_DEFINED__ -#define __IReferenceClock_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IReferenceClock, 0x56a86897, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IReferenceClock : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE GetTime( - REFERENCE_TIME* pTime) = 0; - - virtual HRESULT STDMETHODCALLTYPE AdviseTime( - REFERENCE_TIME baseTime, - REFERENCE_TIME streamTime, - HEVENT hEvent, - DWORD_PTR* pdwAdviseCookie) = 0; - - virtual HRESULT STDMETHODCALLTYPE AdvisePeriodic( - REFERENCE_TIME startTime, - REFERENCE_TIME periodTime, - HSEMAPHORE hSemaphore, - DWORD_PTR* pdwAdviseCookie) = 0; - - virtual HRESULT STDMETHODCALLTYPE Unadvise( - DWORD_PTR dwAdviseCookie) = 0; - -}; -#else -typedef struct IReferenceClockVtbl IReferenceClockVtbl; -struct IReferenceClock { - const IReferenceClockVtbl* lpVtbl; -}; -struct IReferenceClockVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IReferenceClock* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IReferenceClock* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IReferenceClock* This); - - /*** IReferenceClock methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTime)( - IReferenceClock* This, - REFERENCE_TIME* pTime); - - HRESULT (STDMETHODCALLTYPE *AdviseTime)( - IReferenceClock* This, - REFERENCE_TIME baseTime, - REFERENCE_TIME streamTime, - HEVENT hEvent, - DWORD_PTR* pdwAdviseCookie); - - HRESULT (STDMETHODCALLTYPE *AdvisePeriodic)( - IReferenceClock* This, - REFERENCE_TIME startTime, - REFERENCE_TIME periodTime, - HSEMAPHORE hSemaphore, - DWORD_PTR* pdwAdviseCookie); - - HRESULT (STDMETHODCALLTYPE *Unadvise)( - IReferenceClock* This, - DWORD_PTR dwAdviseCookie); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IReferenceClock_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IReferenceClock_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IReferenceClock_Release(p) (p)->lpVtbl->Release(p) -/*** IReferenceClock methods ***/ -#define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) -#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d) -#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d) -#define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) -#endif - -#endif - -#define IReferenceClock_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IReferenceClock methods ***/ \ - STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTime) PURE; \ - STDMETHOD_(HRESULT,AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HEVENT hEvent, DWORD_PTR* pdwAdviseCookie) PURE; \ - STDMETHOD_(HRESULT,AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HSEMAPHORE hSemaphore, DWORD_PTR* pdwAdviseCookie) PURE; \ - STDMETHOD_(HRESULT,Unadvise)(THIS_ DWORD_PTR dwAdviseCookie) PURE; - -HRESULT CALLBACK IReferenceClock_GetTime_Proxy( - IReferenceClock* This, - REFERENCE_TIME* pTime); -void __RPC_STUB IReferenceClock_GetTime_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IReferenceClock_AdviseTime_Proxy( - IReferenceClock* This, - REFERENCE_TIME baseTime, - REFERENCE_TIME streamTime, - HEVENT hEvent, - DWORD_PTR* pdwAdviseCookie); -void __RPC_STUB IReferenceClock_AdviseTime_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IReferenceClock_AdvisePeriodic_Proxy( - IReferenceClock* This, - REFERENCE_TIME startTime, - REFERENCE_TIME periodTime, - HSEMAPHORE hSemaphore, - DWORD_PTR* pdwAdviseCookie); -void __RPC_STUB IReferenceClock_AdvisePeriodic_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IReferenceClock_Unadvise_Proxy( - IReferenceClock* This, - DWORD_PTR dwAdviseCookie); -void __RPC_STUB IReferenceClock_Unadvise_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IReferenceClock_INTERFACE_DEFINED__ */ - -typedef IReferenceClock *PREFERENCECLOCK; - -/***************************************************************************** - * IMediaSample interface - */ -#ifndef __IMediaSample_INTERFACE_DEFINED__ -#define __IMediaSample_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMediaSample, 0x56a8689a, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMediaSample : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE GetPointer( - BYTE** ppBuffer) = 0; - - virtual long STDMETHODCALLTYPE GetSize( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTime( - REFERENCE_TIME* pTimeStart, - REFERENCE_TIME* pTimeEnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetTime( - REFERENCE_TIME* pTimeStart, - REFERENCE_TIME* pTimeEnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsSyncPoint( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSyncPoint( - BOOL bIsSyncPoint) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsPreroll( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetPreroll( - BOOL bIsPreroll) = 0; - - virtual long STDMETHODCALLTYPE GetActualDataLength( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetActualDataLength( - long length) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMediaType( - AM_MEDIA_TYPE** ppMediaType) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetMediaType( - AM_MEDIA_TYPE* pMediaType) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsDiscontinuity( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDiscontinuity( - BOOL bDiscontinuity) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMediaTime( - LONGLONG* pTimeStart, - LONGLONG* pTimeEnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetMediaTime( - LONGLONG* pTimeStart, - LONGLONG* pTimeEnd) = 0; - -}; -#else -typedef struct IMediaSampleVtbl IMediaSampleVtbl; -struct IMediaSample { - const IMediaSampleVtbl* lpVtbl; -}; -struct IMediaSampleVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMediaSample* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMediaSample* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMediaSample* This); - - /*** IMediaSample methods ***/ - HRESULT (STDMETHODCALLTYPE *GetPointer)( - IMediaSample* This, - BYTE** ppBuffer); - - long (STDMETHODCALLTYPE *GetSize)( - IMediaSample* This); - - HRESULT (STDMETHODCALLTYPE *GetTime)( - IMediaSample* This, - REFERENCE_TIME* pTimeStart, - REFERENCE_TIME* pTimeEnd); - - HRESULT (STDMETHODCALLTYPE *SetTime)( - IMediaSample* This, - REFERENCE_TIME* pTimeStart, - REFERENCE_TIME* pTimeEnd); - - HRESULT (STDMETHODCALLTYPE *IsSyncPoint)( - IMediaSample* This); - - HRESULT (STDMETHODCALLTYPE *SetSyncPoint)( - IMediaSample* This, - BOOL bIsSyncPoint); - - HRESULT (STDMETHODCALLTYPE *IsPreroll)( - IMediaSample* This); - - HRESULT (STDMETHODCALLTYPE *SetPreroll)( - IMediaSample* This, - BOOL bIsPreroll); - - long (STDMETHODCALLTYPE *GetActualDataLength)( - IMediaSample* This); - - HRESULT (STDMETHODCALLTYPE *SetActualDataLength)( - IMediaSample* This, - long length); - - HRESULT (STDMETHODCALLTYPE *GetMediaType)( - IMediaSample* This, - AM_MEDIA_TYPE** ppMediaType); - - HRESULT (STDMETHODCALLTYPE *SetMediaType)( - IMediaSample* This, - AM_MEDIA_TYPE* pMediaType); - - HRESULT (STDMETHODCALLTYPE *IsDiscontinuity)( - IMediaSample* This); - - HRESULT (STDMETHODCALLTYPE *SetDiscontinuity)( - IMediaSample* This, - BOOL bDiscontinuity); - - HRESULT (STDMETHODCALLTYPE *GetMediaTime)( - IMediaSample* This, - LONGLONG* pTimeStart, - LONGLONG* pTimeEnd); - - HRESULT (STDMETHODCALLTYPE *SetMediaTime)( - IMediaSample* This, - LONGLONG* pTimeStart, - LONGLONG* pTimeEnd); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMediaSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMediaSample_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMediaSample_Release(p) (p)->lpVtbl->Release(p) -/*** IMediaSample methods ***/ -#define IMediaSample_GetPointer(p,a) (p)->lpVtbl->GetPointer(p,a) -#define IMediaSample_GetSize(p) (p)->lpVtbl->GetSize(p) -#define IMediaSample_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b) -#define IMediaSample_SetTime(p,a,b) (p)->lpVtbl->SetTime(p,a,b) -#define IMediaSample_IsSyncPoint(p) (p)->lpVtbl->IsSyncPoint(p) -#define IMediaSample_SetSyncPoint(p,a) (p)->lpVtbl->SetSyncPoint(p,a) -#define IMediaSample_IsPreroll(p) (p)->lpVtbl->IsPreroll(p) -#define IMediaSample_SetPreroll(p,a) (p)->lpVtbl->SetPreroll(p,a) -#define IMediaSample_GetActualDataLength(p) (p)->lpVtbl->GetActualDataLength(p) -#define IMediaSample_SetActualDataLength(p,a) (p)->lpVtbl->SetActualDataLength(p,a) -#define IMediaSample_GetMediaType(p,a) (p)->lpVtbl->GetMediaType(p,a) -#define IMediaSample_SetMediaType(p,a) (p)->lpVtbl->SetMediaType(p,a) -#define IMediaSample_IsDiscontinuity(p) (p)->lpVtbl->IsDiscontinuity(p) -#define IMediaSample_SetDiscontinuity(p,a) (p)->lpVtbl->SetDiscontinuity(p,a) -#define IMediaSample_GetMediaTime(p,a,b) (p)->lpVtbl->GetMediaTime(p,a,b) -#define IMediaSample_SetMediaTime(p,a,b) (p)->lpVtbl->SetMediaTime(p,a,b) -#endif - -#endif - -#define IMediaSample_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IMediaSample methods ***/ \ - STDMETHOD_(HRESULT,GetPointer)(THIS_ BYTE** ppBuffer) PURE; \ - STDMETHOD_(long,GetSize)(THIS) PURE; \ - STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \ - STDMETHOD_(HRESULT,SetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \ - STDMETHOD_(HRESULT,IsSyncPoint)(THIS) PURE; \ - STDMETHOD_(HRESULT,SetSyncPoint)(THIS_ BOOL bIsSyncPoint) PURE; \ - STDMETHOD_(HRESULT,IsPreroll)(THIS) PURE; \ - STDMETHOD_(HRESULT,SetPreroll)(THIS_ BOOL bIsPreroll) PURE; \ - STDMETHOD_(long,GetActualDataLength)(THIS) PURE; \ - STDMETHOD_(HRESULT,SetActualDataLength)(THIS_ long length) PURE; \ - STDMETHOD_(HRESULT,GetMediaType)(THIS_ AM_MEDIA_TYPE** ppMediaType) PURE; \ - STDMETHOD_(HRESULT,SetMediaType)(THIS_ AM_MEDIA_TYPE* pMediaType) PURE; \ - STDMETHOD_(HRESULT,IsDiscontinuity)(THIS) PURE; \ - STDMETHOD_(HRESULT,SetDiscontinuity)(THIS_ BOOL bDiscontinuity) PURE; \ - STDMETHOD_(HRESULT,GetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \ - STDMETHOD_(HRESULT,SetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; - -HRESULT CALLBACK IMediaSample_GetPointer_Proxy( - IMediaSample* This, - BYTE** ppBuffer); -void __RPC_STUB IMediaSample_GetPointer_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -long CALLBACK IMediaSample_GetSize_Proxy( - IMediaSample* This); -void __RPC_STUB IMediaSample_GetSize_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_GetTime_Proxy( - IMediaSample* This, - REFERENCE_TIME* pTimeStart, - REFERENCE_TIME* pTimeEnd); -void __RPC_STUB IMediaSample_GetTime_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_SetTime_Proxy( - IMediaSample* This, - REFERENCE_TIME* pTimeStart, - REFERENCE_TIME* pTimeEnd); -void __RPC_STUB IMediaSample_SetTime_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_IsSyncPoint_Proxy( - IMediaSample* This); -void __RPC_STUB IMediaSample_IsSyncPoint_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_SetSyncPoint_Proxy( - IMediaSample* This, - BOOL bIsSyncPoint); -void __RPC_STUB IMediaSample_SetSyncPoint_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_IsPreroll_Proxy( - IMediaSample* This); -void __RPC_STUB IMediaSample_IsPreroll_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_SetPreroll_Proxy( - IMediaSample* This, - BOOL bIsPreroll); -void __RPC_STUB IMediaSample_SetPreroll_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -long CALLBACK IMediaSample_GetActualDataLength_Proxy( - IMediaSample* This); -void __RPC_STUB IMediaSample_GetActualDataLength_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_SetActualDataLength_Proxy( - IMediaSample* This, - long length); -void __RPC_STUB IMediaSample_SetActualDataLength_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_GetMediaType_Proxy( - IMediaSample* This, - AM_MEDIA_TYPE** ppMediaType); -void __RPC_STUB IMediaSample_GetMediaType_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_SetMediaType_Proxy( - IMediaSample* This, - AM_MEDIA_TYPE* pMediaType); -void __RPC_STUB IMediaSample_SetMediaType_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_IsDiscontinuity_Proxy( - IMediaSample* This); -void __RPC_STUB IMediaSample_IsDiscontinuity_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_SetDiscontinuity_Proxy( - IMediaSample* This, - BOOL bDiscontinuity); -void __RPC_STUB IMediaSample_SetDiscontinuity_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_GetMediaTime_Proxy( - IMediaSample* This, - LONGLONG* pTimeStart, - LONGLONG* pTimeEnd); -void __RPC_STUB IMediaSample_GetMediaTime_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample_SetMediaTime_Proxy( - IMediaSample* This, - LONGLONG* pTimeStart, - LONGLONG* pTimeEnd); -void __RPC_STUB IMediaSample_SetMediaTime_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMediaSample_INTERFACE_DEFINED__ */ - -typedef IMediaSample *PMEDIASAMPLE; - -enum tagAM_SAMPLE_PROPERTY_FLAGS { - AM_SAMPLE_SPLICEPOINT = 0x1, - AM_SAMPLE_PREROLL = 0x2, - AM_SAMPLE_DATADISCONTINUITY = 0x4, - AM_SAMPLE_TYPECHANGED = 0x8, - AM_SAMPLE_TIMEVALID = 0x10, - AM_SAMPLE_TIMEDISCONTINUITY = 0x40, - AM_SAMPLE_FLUSH_ON_PAUSE = 0x80, - AM_SAMPLE_STOPVALID = 0x100, - AM_SAMPLE_ENDOFSTREAM = 0x200, - AM_STREAM_MEDIA = 0, - AM_STREAM_CONTROL = 1 -}; - -typedef struct tagAM_SAMPLE2_PROPERTIES { - DWORD cbData; - DWORD dwTypeSpecificFlags; - DWORD dwSampleFlags; - LONG lActual; - REFERENCE_TIME tStart; - REFERENCE_TIME tStop; - DWORD dwStreamId; - AM_MEDIA_TYPE *pMediaType; - BYTE *pbBuffer; - LONG cbBuffer; -} AM_SAMPLE2_PROPERTIES; - -#ifndef __IMediaSample2_FWD_DEFINED__ -#define __IMediaSample2_FWD_DEFINED__ -typedef struct IMediaSample2 IMediaSample2; -#endif - -/***************************************************************************** - * IMediaSample2 interface - */ -#ifndef __IMediaSample2_INTERFACE_DEFINED__ -#define __IMediaSample2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMediaSample2, 0x36b73884, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMediaSample2 : public IMediaSample -{ - virtual HRESULT STDMETHODCALLTYPE GetProperties( - DWORD cbProperties, - BYTE* pbProperties) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetProperties( - DWORD cbProperties, - const BYTE* pbProperties) = 0; - -}; -#else -typedef struct IMediaSample2Vtbl IMediaSample2Vtbl; -struct IMediaSample2 { - const IMediaSample2Vtbl* lpVtbl; -}; -struct IMediaSample2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMediaSample2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMediaSample2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMediaSample2* This); - - /*** IMediaSample methods ***/ - HRESULT (STDMETHODCALLTYPE *GetPointer)( - IMediaSample2* This, - BYTE** ppBuffer); - - long (STDMETHODCALLTYPE *GetSize)( - IMediaSample2* This); - - HRESULT (STDMETHODCALLTYPE *GetTime)( - IMediaSample2* This, - REFERENCE_TIME* pTimeStart, - REFERENCE_TIME* pTimeEnd); - - HRESULT (STDMETHODCALLTYPE *SetTime)( - IMediaSample2* This, - REFERENCE_TIME* pTimeStart, - REFERENCE_TIME* pTimeEnd); - - HRESULT (STDMETHODCALLTYPE *IsSyncPoint)( - IMediaSample2* This); - - HRESULT (STDMETHODCALLTYPE *SetSyncPoint)( - IMediaSample2* This, - BOOL bIsSyncPoint); - - HRESULT (STDMETHODCALLTYPE *IsPreroll)( - IMediaSample2* This); - - HRESULT (STDMETHODCALLTYPE *SetPreroll)( - IMediaSample2* This, - BOOL bIsPreroll); - - long (STDMETHODCALLTYPE *GetActualDataLength)( - IMediaSample2* This); - - HRESULT (STDMETHODCALLTYPE *SetActualDataLength)( - IMediaSample2* This, - long length); - - HRESULT (STDMETHODCALLTYPE *GetMediaType)( - IMediaSample2* This, - AM_MEDIA_TYPE** ppMediaType); - - HRESULT (STDMETHODCALLTYPE *SetMediaType)( - IMediaSample2* This, - AM_MEDIA_TYPE* pMediaType); - - HRESULT (STDMETHODCALLTYPE *IsDiscontinuity)( - IMediaSample2* This); - - HRESULT (STDMETHODCALLTYPE *SetDiscontinuity)( - IMediaSample2* This, - BOOL bDiscontinuity); - - HRESULT (STDMETHODCALLTYPE *GetMediaTime)( - IMediaSample2* This, - LONGLONG* pTimeStart, - LONGLONG* pTimeEnd); - - HRESULT (STDMETHODCALLTYPE *SetMediaTime)( - IMediaSample2* This, - LONGLONG* pTimeStart, - LONGLONG* pTimeEnd); - - /*** IMediaSample2 methods ***/ - HRESULT (STDMETHODCALLTYPE *GetProperties)( - IMediaSample2* This, - DWORD cbProperties, - BYTE* pbProperties); - - HRESULT (STDMETHODCALLTYPE *SetProperties)( - IMediaSample2* This, - DWORD cbProperties, - const BYTE* pbProperties); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMediaSample2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMediaSample2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMediaSample2_Release(p) (p)->lpVtbl->Release(p) -/*** IMediaSample methods ***/ -#define IMediaSample2_GetPointer(p,a) (p)->lpVtbl->GetPointer(p,a) -#define IMediaSample2_GetSize(p) (p)->lpVtbl->GetSize(p) -#define IMediaSample2_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b) -#define IMediaSample2_SetTime(p,a,b) (p)->lpVtbl->SetTime(p,a,b) -#define IMediaSample2_IsSyncPoint(p) (p)->lpVtbl->IsSyncPoint(p) -#define IMediaSample2_SetSyncPoint(p,a) (p)->lpVtbl->SetSyncPoint(p,a) -#define IMediaSample2_IsPreroll(p) (p)->lpVtbl->IsPreroll(p) -#define IMediaSample2_SetPreroll(p,a) (p)->lpVtbl->SetPreroll(p,a) -#define IMediaSample2_GetActualDataLength(p) (p)->lpVtbl->GetActualDataLength(p) -#define IMediaSample2_SetActualDataLength(p,a) (p)->lpVtbl->SetActualDataLength(p,a) -#define IMediaSample2_GetMediaType(p,a) (p)->lpVtbl->GetMediaType(p,a) -#define IMediaSample2_SetMediaType(p,a) (p)->lpVtbl->SetMediaType(p,a) -#define IMediaSample2_IsDiscontinuity(p) (p)->lpVtbl->IsDiscontinuity(p) -#define IMediaSample2_SetDiscontinuity(p,a) (p)->lpVtbl->SetDiscontinuity(p,a) -#define IMediaSample2_GetMediaTime(p,a,b) (p)->lpVtbl->GetMediaTime(p,a,b) -#define IMediaSample2_SetMediaTime(p,a,b) (p)->lpVtbl->SetMediaTime(p,a,b) -/*** IMediaSample2 methods ***/ -#define IMediaSample2_GetProperties(p,a,b) (p)->lpVtbl->GetProperties(p,a,b) -#define IMediaSample2_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b) -#endif - -#endif - -#define IMediaSample2_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IMediaSample methods ***/ \ - STDMETHOD_(HRESULT,GetPointer)(THIS_ BYTE** ppBuffer) PURE; \ - STDMETHOD_(long,GetSize)(THIS) PURE; \ - STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \ - STDMETHOD_(HRESULT,SetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \ - STDMETHOD_(HRESULT,IsSyncPoint)(THIS) PURE; \ - STDMETHOD_(HRESULT,SetSyncPoint)(THIS_ BOOL bIsSyncPoint) PURE; \ - STDMETHOD_(HRESULT,IsPreroll)(THIS) PURE; \ - STDMETHOD_(HRESULT,SetPreroll)(THIS_ BOOL bIsPreroll) PURE; \ - STDMETHOD_(long,GetActualDataLength)(THIS) PURE; \ - STDMETHOD_(HRESULT,SetActualDataLength)(THIS_ long length) PURE; \ - STDMETHOD_(HRESULT,GetMediaType)(THIS_ AM_MEDIA_TYPE** ppMediaType) PURE; \ - STDMETHOD_(HRESULT,SetMediaType)(THIS_ AM_MEDIA_TYPE* pMediaType) PURE; \ - STDMETHOD_(HRESULT,IsDiscontinuity)(THIS) PURE; \ - STDMETHOD_(HRESULT,SetDiscontinuity)(THIS_ BOOL bDiscontinuity) PURE; \ - STDMETHOD_(HRESULT,GetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \ - STDMETHOD_(HRESULT,SetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \ - /*** IMediaSample2 methods ***/ \ - STDMETHOD_(HRESULT,GetProperties)(THIS_ DWORD cbProperties, BYTE* pbProperties) PURE; \ - STDMETHOD_(HRESULT,SetProperties)(THIS_ DWORD cbProperties, const BYTE* pbProperties) PURE; - -HRESULT CALLBACK IMediaSample2_GetProperties_Proxy( - IMediaSample2* This, - DWORD cbProperties, - BYTE* pbProperties); -void __RPC_STUB IMediaSample2_GetProperties_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSample2_SetProperties_Proxy( - IMediaSample2* This, - DWORD cbProperties, - const BYTE* pbProperties); -void __RPC_STUB IMediaSample2_SetProperties_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMediaSample2_INTERFACE_DEFINED__ */ - -typedef IMediaSample2 *PMEDIASAMPLE2; - -#define AM_GBF_PREVFRAMESKIPPED 1 -#define AM_GBF_NOTASYNCPOINT 2 -#define AM_GBF_NOWAIT 4 -/***************************************************************************** - * IMemAllocator interface - */ -#ifndef __IMemAllocator_INTERFACE_DEFINED__ -#define __IMemAllocator_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMemAllocator, 0x56a8689c, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMemAllocator : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE SetProperties( - ALLOCATOR_PROPERTIES* pRequest, - ALLOCATOR_PROPERTIES* pActual) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetProperties( - ALLOCATOR_PROPERTIES* pProps) = 0; - - virtual HRESULT STDMETHODCALLTYPE Commit( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Decommit( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBuffer( - IMediaSample** ppBuffer, - REFERENCE_TIME* pStartTime, - REFERENCE_TIME* pEndTime, - DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( - IMediaSample* pBuffer) = 0; - -}; -#else -typedef struct IMemAllocatorVtbl IMemAllocatorVtbl; -struct IMemAllocator { - const IMemAllocatorVtbl* lpVtbl; -}; -struct IMemAllocatorVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMemAllocator* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMemAllocator* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMemAllocator* This); - - /*** IMemAllocator methods ***/ - HRESULT (STDMETHODCALLTYPE *SetProperties)( - IMemAllocator* This, - ALLOCATOR_PROPERTIES* pRequest, - ALLOCATOR_PROPERTIES* pActual); - - HRESULT (STDMETHODCALLTYPE *GetProperties)( - IMemAllocator* This, - ALLOCATOR_PROPERTIES* pProps); - - HRESULT (STDMETHODCALLTYPE *Commit)( - IMemAllocator* This); - - HRESULT (STDMETHODCALLTYPE *Decommit)( - IMemAllocator* This); - - HRESULT (STDMETHODCALLTYPE *GetBuffer)( - IMemAllocator* This, - IMediaSample** ppBuffer, - REFERENCE_TIME* pStartTime, - REFERENCE_TIME* pEndTime, - DWORD dwFlags); - - HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)( - IMemAllocator* This, - IMediaSample* pBuffer); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMemAllocator_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMemAllocator_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMemAllocator_Release(p) (p)->lpVtbl->Release(p) -/*** IMemAllocator methods ***/ -#define IMemAllocator_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b) -#define IMemAllocator_GetProperties(p,a) (p)->lpVtbl->GetProperties(p,a) -#define IMemAllocator_Commit(p) (p)->lpVtbl->Commit(p) -#define IMemAllocator_Decommit(p) (p)->lpVtbl->Decommit(p) -#define IMemAllocator_GetBuffer(p,a,b,c,d) (p)->lpVtbl->GetBuffer(p,a,b,c,d) -#define IMemAllocator_ReleaseBuffer(p,a) (p)->lpVtbl->ReleaseBuffer(p,a) -#endif - -#endif - -#define IMemAllocator_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IMemAllocator methods ***/ \ - STDMETHOD_(HRESULT,SetProperties)(THIS_ ALLOCATOR_PROPERTIES* pRequest, ALLOCATOR_PROPERTIES* pActual) PURE; \ - STDMETHOD_(HRESULT,GetProperties)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \ - STDMETHOD_(HRESULT,Commit)(THIS) PURE; \ - STDMETHOD_(HRESULT,Decommit)(THIS) PURE; \ - STDMETHOD_(HRESULT,GetBuffer)(THIS_ IMediaSample** ppBuffer, REFERENCE_TIME* pStartTime, REFERENCE_TIME* pEndTime, DWORD dwFlags) PURE; \ - STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ IMediaSample* pBuffer) PURE; - -HRESULT CALLBACK IMemAllocator_SetProperties_Proxy( - IMemAllocator* This, - ALLOCATOR_PROPERTIES* pRequest, - ALLOCATOR_PROPERTIES* pActual); -void __RPC_STUB IMemAllocator_SetProperties_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemAllocator_GetProperties_Proxy( - IMemAllocator* This, - ALLOCATOR_PROPERTIES* pProps); -void __RPC_STUB IMemAllocator_GetProperties_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemAllocator_Commit_Proxy( - IMemAllocator* This); -void __RPC_STUB IMemAllocator_Commit_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemAllocator_Decommit_Proxy( - IMemAllocator* This); -void __RPC_STUB IMemAllocator_Decommit_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemAllocator_GetBuffer_Proxy( - IMemAllocator* This, - IMediaSample** ppBuffer, - REFERENCE_TIME* pStartTime, - REFERENCE_TIME* pEndTime, - DWORD dwFlags); -void __RPC_STUB IMemAllocator_GetBuffer_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemAllocator_ReleaseBuffer_Proxy( - IMemAllocator* This, - IMediaSample* pBuffer); -void __RPC_STUB IMemAllocator_ReleaseBuffer_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMemAllocator_INTERFACE_DEFINED__ */ - -typedef IMemAllocator *PMEMALLOCATOR; - -/***************************************************************************** - * IMemAllocatorCallbackTemp interface - */ -#ifndef __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ -#define __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMemAllocatorCallbackTemp, 0x379a0cf0, 0xc1de, 0x11d2, 0xab,0xf5, 0x00,0xa0,0xc9,0x05,0xf3,0x75); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMemAllocatorCallbackTemp : public IMemAllocator -{ - virtual HRESULT STDMETHODCALLTYPE SetNotify( - IMemAllocatorNotifyCallbackTemp* pNotify) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFreeCount( - LONG* plBuffersFree) = 0; - -}; -#else -typedef struct IMemAllocatorCallbackTempVtbl IMemAllocatorCallbackTempVtbl; -struct IMemAllocatorCallbackTemp { - const IMemAllocatorCallbackTempVtbl* lpVtbl; -}; -struct IMemAllocatorCallbackTempVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMemAllocatorCallbackTemp* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMemAllocatorCallbackTemp* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMemAllocatorCallbackTemp* This); - - /*** IMemAllocator methods ***/ - HRESULT (STDMETHODCALLTYPE *SetProperties)( - IMemAllocatorCallbackTemp* This, - ALLOCATOR_PROPERTIES* pRequest, - ALLOCATOR_PROPERTIES* pActual); - - HRESULT (STDMETHODCALLTYPE *GetProperties)( - IMemAllocatorCallbackTemp* This, - ALLOCATOR_PROPERTIES* pProps); - - HRESULT (STDMETHODCALLTYPE *Commit)( - IMemAllocatorCallbackTemp* This); - - HRESULT (STDMETHODCALLTYPE *Decommit)( - IMemAllocatorCallbackTemp* This); - - HRESULT (STDMETHODCALLTYPE *GetBuffer)( - IMemAllocatorCallbackTemp* This, - IMediaSample** ppBuffer, - REFERENCE_TIME* pStartTime, - REFERENCE_TIME* pEndTime, - DWORD dwFlags); - - HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)( - IMemAllocatorCallbackTemp* This, - IMediaSample* pBuffer); - - /*** IMemAllocatorCallbackTemp methods ***/ - HRESULT (STDMETHODCALLTYPE *SetNotify)( - IMemAllocatorCallbackTemp* This, - IMemAllocatorNotifyCallbackTemp* pNotify); - - HRESULT (STDMETHODCALLTYPE *GetFreeCount)( - IMemAllocatorCallbackTemp* This, - LONG* plBuffersFree); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMemAllocatorCallbackTemp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMemAllocatorCallbackTemp_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMemAllocatorCallbackTemp_Release(p) (p)->lpVtbl->Release(p) -/*** IMemAllocator methods ***/ -#define IMemAllocatorCallbackTemp_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b) -#define IMemAllocatorCallbackTemp_GetProperties(p,a) (p)->lpVtbl->GetProperties(p,a) -#define IMemAllocatorCallbackTemp_Commit(p) (p)->lpVtbl->Commit(p) -#define IMemAllocatorCallbackTemp_Decommit(p) (p)->lpVtbl->Decommit(p) -#define IMemAllocatorCallbackTemp_GetBuffer(p,a,b,c,d) (p)->lpVtbl->GetBuffer(p,a,b,c,d) -#define IMemAllocatorCallbackTemp_ReleaseBuffer(p,a) (p)->lpVtbl->ReleaseBuffer(p,a) -/*** IMemAllocatorCallbackTemp methods ***/ -#define IMemAllocatorCallbackTemp_SetNotify(p,a) (p)->lpVtbl->SetNotify(p,a) -#define IMemAllocatorCallbackTemp_GetFreeCount(p,a) (p)->lpVtbl->GetFreeCount(p,a) -#endif - -#endif - -#define IMemAllocatorCallbackTemp_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IMemAllocator methods ***/ \ - STDMETHOD_(HRESULT,SetProperties)(THIS_ ALLOCATOR_PROPERTIES* pRequest, ALLOCATOR_PROPERTIES* pActual) PURE; \ - STDMETHOD_(HRESULT,GetProperties)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \ - STDMETHOD_(HRESULT,Commit)(THIS) PURE; \ - STDMETHOD_(HRESULT,Decommit)(THIS) PURE; \ - STDMETHOD_(HRESULT,GetBuffer)(THIS_ IMediaSample** ppBuffer, REFERENCE_TIME* pStartTime, REFERENCE_TIME* pEndTime, DWORD dwFlags) PURE; \ - STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ IMediaSample* pBuffer) PURE; \ - /*** IMemAllocatorCallbackTemp methods ***/ \ - STDMETHOD_(HRESULT,SetNotify)(THIS_ IMemAllocatorNotifyCallbackTemp* pNotify) PURE; \ - STDMETHOD_(HRESULT,GetFreeCount)(THIS_ LONG* plBuffersFree) PURE; - -HRESULT CALLBACK IMemAllocatorCallbackTemp_SetNotify_Proxy( - IMemAllocatorCallbackTemp* This, - IMemAllocatorNotifyCallbackTemp* pNotify); -void __RPC_STUB IMemAllocatorCallbackTemp_SetNotify_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemAllocatorCallbackTemp_GetFreeCount_Proxy( - IMemAllocatorCallbackTemp* This, - LONG* plBuffersFree); -void __RPC_STUB IMemAllocatorCallbackTemp_GetFreeCount_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMemAllocatorCallbackTemp_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * IMemAllocatorNotifyCallbackTemp interface - */ -#ifndef __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ -#define __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMemAllocatorNotifyCallbackTemp, 0x92980b30, 0xc1de, 0x11d2, 0xab,0xf5, 0x00,0xa0,0xc9,0x05,0xf3,0x75); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMemAllocatorNotifyCallbackTemp : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE NotifyRelease( - ) = 0; - -}; -#else -typedef struct IMemAllocatorNotifyCallbackTempVtbl IMemAllocatorNotifyCallbackTempVtbl; -struct IMemAllocatorNotifyCallbackTemp { - const IMemAllocatorNotifyCallbackTempVtbl* lpVtbl; -}; -struct IMemAllocatorNotifyCallbackTempVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMemAllocatorNotifyCallbackTemp* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMemAllocatorNotifyCallbackTemp* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMemAllocatorNotifyCallbackTemp* This); - - /*** IMemAllocatorNotifyCallbackTemp methods ***/ - HRESULT (STDMETHODCALLTYPE *NotifyRelease)( - IMemAllocatorNotifyCallbackTemp* This); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMemAllocatorNotifyCallbackTemp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMemAllocatorNotifyCallbackTemp_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMemAllocatorNotifyCallbackTemp_Release(p) (p)->lpVtbl->Release(p) -/*** IMemAllocatorNotifyCallbackTemp methods ***/ -#define IMemAllocatorNotifyCallbackTemp_NotifyRelease(p) (p)->lpVtbl->NotifyRelease(p) -#endif - -#endif - -#define IMemAllocatorNotifyCallbackTemp_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IMemAllocatorNotifyCallbackTemp methods ***/ \ - STDMETHOD_(HRESULT,NotifyRelease)(THIS) PURE; - -HRESULT CALLBACK IMemAllocatorNotifyCallbackTemp_NotifyRelease_Proxy( - IMemAllocatorNotifyCallbackTemp* This); -void __RPC_STUB IMemAllocatorNotifyCallbackTemp_NotifyRelease_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMemAllocatorNotifyCallbackTemp_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * IMemInputPin interface - */ -#ifndef __IMemInputPin_INTERFACE_DEFINED__ -#define __IMemInputPin_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMemInputPin, 0x56a8689d, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMemInputPin : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE GetAllocator( - IMemAllocator** ppAllocator) = 0; - - virtual HRESULT STDMETHODCALLTYPE NotifyAllocator( - IMemAllocator* pAllocator, - BOOL bReadOnly) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAllocatorRequirements( - ALLOCATOR_PROPERTIES* pProps) = 0; - - virtual HRESULT STDMETHODCALLTYPE Receive( - IMediaSample* pSample) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReceiveMultiple( - IMediaSample** pSamples, - long nSamples, - long* nSamplesProcessed) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReceiveCanBlock( - ) = 0; - -}; -#else -typedef struct IMemInputPinVtbl IMemInputPinVtbl; -struct IMemInputPin { - const IMemInputPinVtbl* lpVtbl; -}; -struct IMemInputPinVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMemInputPin* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMemInputPin* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMemInputPin* This); - - /*** IMemInputPin methods ***/ - HRESULT (STDMETHODCALLTYPE *GetAllocator)( - IMemInputPin* This, - IMemAllocator** ppAllocator); - - HRESULT (STDMETHODCALLTYPE *NotifyAllocator)( - IMemInputPin* This, - IMemAllocator* pAllocator, - BOOL bReadOnly); - - HRESULT (STDMETHODCALLTYPE *GetAllocatorRequirements)( - IMemInputPin* This, - ALLOCATOR_PROPERTIES* pProps); - - HRESULT (STDMETHODCALLTYPE *Receive)( - IMemInputPin* This, - IMediaSample* pSample); - - HRESULT (STDMETHODCALLTYPE *ReceiveMultiple)( - IMemInputPin* This, - IMediaSample** pSamples, - long nSamples, - long* nSamplesProcessed); - - HRESULT (STDMETHODCALLTYPE *ReceiveCanBlock)( - IMemInputPin* This); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMemInputPin_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMemInputPin_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMemInputPin_Release(p) (p)->lpVtbl->Release(p) -/*** IMemInputPin methods ***/ -#define IMemInputPin_GetAllocator(p,a) (p)->lpVtbl->GetAllocator(p,a) -#define IMemInputPin_NotifyAllocator(p,a,b) (p)->lpVtbl->NotifyAllocator(p,a,b) -#define IMemInputPin_GetAllocatorRequirements(p,a) (p)->lpVtbl->GetAllocatorRequirements(p,a) -#define IMemInputPin_Receive(p,a) (p)->lpVtbl->Receive(p,a) -#define IMemInputPin_ReceiveMultiple(p,a,b,c) (p)->lpVtbl->ReceiveMultiple(p,a,b,c) -#define IMemInputPin_ReceiveCanBlock(p) (p)->lpVtbl->ReceiveCanBlock(p) -#endif - -#endif - -#define IMemInputPin_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IMemInputPin methods ***/ \ - STDMETHOD_(HRESULT,GetAllocator)(THIS_ IMemAllocator** ppAllocator) PURE; \ - STDMETHOD_(HRESULT,NotifyAllocator)(THIS_ IMemAllocator* pAllocator, BOOL bReadOnly) PURE; \ - STDMETHOD_(HRESULT,GetAllocatorRequirements)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \ - STDMETHOD_(HRESULT,Receive)(THIS_ IMediaSample* pSample) PURE; \ - STDMETHOD_(HRESULT,ReceiveMultiple)(THIS_ IMediaSample** pSamples, long nSamples, long* nSamplesProcessed) PURE; \ - STDMETHOD_(HRESULT,ReceiveCanBlock)(THIS) PURE; - -HRESULT CALLBACK IMemInputPin_GetAllocator_Proxy( - IMemInputPin* This, - IMemAllocator** ppAllocator); -void __RPC_STUB IMemInputPin_GetAllocator_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemInputPin_NotifyAllocator_Proxy( - IMemInputPin* This, - IMemAllocator* pAllocator, - BOOL bReadOnly); -void __RPC_STUB IMemInputPin_NotifyAllocator_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemInputPin_GetAllocatorRequirements_Proxy( - IMemInputPin* This, - ALLOCATOR_PROPERTIES* pProps); -void __RPC_STUB IMemInputPin_GetAllocatorRequirements_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemInputPin_Receive_Proxy( - IMemInputPin* This, - IMediaSample* pSample); -void __RPC_STUB IMemInputPin_Receive_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemInputPin_ReceiveMultiple_Proxy( - IMemInputPin* This, - IMediaSample** pSamples, - long nSamples, - long* nSamplesProcessed); -void __RPC_STUB IMemInputPin_ReceiveMultiple_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMemInputPin_ReceiveCanBlock_Proxy( - IMemInputPin* This); -void __RPC_STUB IMemInputPin_ReceiveCanBlock_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMemInputPin_INTERFACE_DEFINED__ */ - -typedef IMemInputPin *PMEMINPUTPIN; - -/***************************************************************************** - * IAMovieSetup interface - */ -#ifndef __IAMovieSetup_INTERFACE_DEFINED__ -#define __IAMovieSetup_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IAMovieSetup, 0xa3d8cec0, 0x7e5a, 0x11cf, 0xbb,0xc5, 0x00,0x80,0x5f,0x6c,0xef,0x20); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IAMovieSetup : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Register( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Unregister( - ) = 0; - -}; -#else -typedef struct IAMovieSetupVtbl IAMovieSetupVtbl; -struct IAMovieSetup { - const IAMovieSetupVtbl* lpVtbl; -}; -struct IAMovieSetupVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IAMovieSetup* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IAMovieSetup* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IAMovieSetup* This); - - /*** IAMovieSetup methods ***/ - HRESULT (STDMETHODCALLTYPE *Register)( - IAMovieSetup* This); - - HRESULT (STDMETHODCALLTYPE *Unregister)( - IAMovieSetup* This); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IAMovieSetup_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IAMovieSetup_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IAMovieSetup_Release(p) (p)->lpVtbl->Release(p) -/*** IAMovieSetup methods ***/ -#define IAMovieSetup_Register(p) (p)->lpVtbl->Register(p) -#define IAMovieSetup_Unregister(p) (p)->lpVtbl->Unregister(p) -#endif - -#endif - -#define IAMovieSetup_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IAMovieSetup methods ***/ \ - STDMETHOD_(HRESULT,Register)(THIS) PURE; \ - STDMETHOD_(HRESULT,Unregister)(THIS) PURE; - -HRESULT CALLBACK IAMovieSetup_Register_Proxy( - IAMovieSetup* This); -void __RPC_STUB IAMovieSetup_Register_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAMovieSetup_Unregister_Proxy( - IAMovieSetup* This); -void __RPC_STUB IAMovieSetup_Unregister_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IAMovieSetup_INTERFACE_DEFINED__ */ - -typedef IAMovieSetup *PAMOVIESETUP; - -typedef enum AM_SEEKING_SeekingFlags { - AM_SEEKING_NoPositioning = 0x0, - AM_SEEKING_AbsolutePositioning = 0x1, - AM_SEEKING_RelativePositioning = 0x2, - AM_SEEKING_IncrementalPositioning = 0x3, - AM_SEEKING_PositioningBitsMask = 0x3, - AM_SEEKING_SeekToKeyFrame = 0x4, - AM_SEEKING_ReturnTime = 0x8, - AM_SEEKING_Segment = 0x10, - AM_SEEKING_NoFlush = 0x20 -} AM_SEEKING_SEEKING_FLAGS; - -typedef enum AM_SEEKING_SeekingCapabilities { - AM_SEEKING_CanSeekAbsolute = 0x1, - AM_SEEKING_CanSeekForwards = 0x2, - AM_SEEKING_CanSeekBackwards = 0x4, - AM_SEEKING_CanGetCurrentPos = 0x8, - AM_SEEKING_CanGetStopPos = 0x10, - AM_SEEKING_CanGetDuration = 0x20, - AM_SEEKING_CanPlayBackwards = 0x40, - AM_SEEKING_CanDoSegments = 0x80, - AM_SEEKING_Source = 0x100 -} AM_SEEKING_SEEKING_CAPABILITIES; - -#ifndef __IMediaSeeking_FWD_DEFINED__ -#define __IMediaSeeking_FWD_DEFINED__ -typedef struct IMediaSeeking IMediaSeeking; -#endif - -/***************************************************************************** - * IMediaSeeking interface - */ -#ifndef __IMediaSeeking_INTERFACE_DEFINED__ -#define __IMediaSeeking_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMediaSeeking, 0x36b73880, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMediaSeeking : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE GetCapabilities( - DWORD* pCapabilities) = 0; - - virtual HRESULT STDMETHODCALLTYPE CheckCapabilities( - DWORD* pCapabilities) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsFormatSupported( - const GUID* pFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryPreferredFormat( - GUID* pFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTimeFormat( - GUID* pFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsUsingTimeFormat( - const GUID* pFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetTimeFormat( - const GUID* pFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDuration( - LONGLONG* pDuration) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStopPosition( - LONGLONG* pStop) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition( - LONGLONG* pCurrent) = 0; - - virtual HRESULT STDMETHODCALLTYPE ConvertTimeFormat( - LONGLONG* pTarget, - const GUID* pTargetFormat, - LONGLONG Source, - const GUID* pSourceFormat) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetPositions( - LONGLONG* pCurrent, - DWORD dwCurrentFlags, - LONGLONG* pStop, - DWORD dwStopFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPositions( - LONGLONG* pCurrent, - LONGLONG* pStop) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAvailable( - LONGLONG* pEarliest, - LONGLONG* pLatest) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRate( - double dRate) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRate( - double* pdRate) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPreroll( - LONGLONG* pllPreroll) = 0; - -}; -#else -typedef struct IMediaSeekingVtbl IMediaSeekingVtbl; -struct IMediaSeeking { - const IMediaSeekingVtbl* lpVtbl; -}; -struct IMediaSeekingVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMediaSeeking* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMediaSeeking* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMediaSeeking* This); - - /*** IMediaSeeking methods ***/ - HRESULT (STDMETHODCALLTYPE *GetCapabilities)( - IMediaSeeking* This, - DWORD* pCapabilities); - - HRESULT (STDMETHODCALLTYPE *CheckCapabilities)( - IMediaSeeking* This, - DWORD* pCapabilities); - - HRESULT (STDMETHODCALLTYPE *IsFormatSupported)( - IMediaSeeking* This, - const GUID* pFormat); - - HRESULT (STDMETHODCALLTYPE *QueryPreferredFormat)( - IMediaSeeking* This, - GUID* pFormat); - - HRESULT (STDMETHODCALLTYPE *GetTimeFormat)( - IMediaSeeking* This, - GUID* pFormat); - - HRESULT (STDMETHODCALLTYPE *IsUsingTimeFormat)( - IMediaSeeking* This, - const GUID* pFormat); - - HRESULT (STDMETHODCALLTYPE *SetTimeFormat)( - IMediaSeeking* This, - const GUID* pFormat); - - HRESULT (STDMETHODCALLTYPE *GetDuration)( - IMediaSeeking* This, - LONGLONG* pDuration); - - HRESULT (STDMETHODCALLTYPE *GetStopPosition)( - IMediaSeeking* This, - LONGLONG* pStop); - - HRESULT (STDMETHODCALLTYPE *GetCurrentPosition)( - IMediaSeeking* This, - LONGLONG* pCurrent); - - HRESULT (STDMETHODCALLTYPE *ConvertTimeFormat)( - IMediaSeeking* This, - LONGLONG* pTarget, - const GUID* pTargetFormat, - LONGLONG Source, - const GUID* pSourceFormat); - - HRESULT (STDMETHODCALLTYPE *SetPositions)( - IMediaSeeking* This, - LONGLONG* pCurrent, - DWORD dwCurrentFlags, - LONGLONG* pStop, - DWORD dwStopFlags); - - HRESULT (STDMETHODCALLTYPE *GetPositions)( - IMediaSeeking* This, - LONGLONG* pCurrent, - LONGLONG* pStop); - - HRESULT (STDMETHODCALLTYPE *GetAvailable)( - IMediaSeeking* This, - LONGLONG* pEarliest, - LONGLONG* pLatest); - - HRESULT (STDMETHODCALLTYPE *SetRate)( - IMediaSeeking* This, - double dRate); - - HRESULT (STDMETHODCALLTYPE *GetRate)( - IMediaSeeking* This, - double* pdRate); - - HRESULT (STDMETHODCALLTYPE *GetPreroll)( - IMediaSeeking* This, - LONGLONG* pllPreroll); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMediaSeeking_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMediaSeeking_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMediaSeeking_Release(p) (p)->lpVtbl->Release(p) -/*** IMediaSeeking methods ***/ -#define IMediaSeeking_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IMediaSeeking_CheckCapabilities(p,a) (p)->lpVtbl->CheckCapabilities(p,a) -#define IMediaSeeking_IsFormatSupported(p,a) (p)->lpVtbl->IsFormatSupported(p,a) -#define IMediaSeeking_QueryPreferredFormat(p,a) (p)->lpVtbl->QueryPreferredFormat(p,a) -#define IMediaSeeking_GetTimeFormat(p,a) (p)->lpVtbl->GetTimeFormat(p,a) -#define IMediaSeeking_IsUsingTimeFormat(p,a) (p)->lpVtbl->IsUsingTimeFormat(p,a) -#define IMediaSeeking_SetTimeFormat(p,a) (p)->lpVtbl->SetTimeFormat(p,a) -#define IMediaSeeking_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a) -#define IMediaSeeking_GetStopPosition(p,a) (p)->lpVtbl->GetStopPosition(p,a) -#define IMediaSeeking_GetCurrentPosition(p,a) (p)->lpVtbl->GetCurrentPosition(p,a) -#define IMediaSeeking_ConvertTimeFormat(p,a,b,c,d) (p)->lpVtbl->ConvertTimeFormat(p,a,b,c,d) -#define IMediaSeeking_SetPositions(p,a,b,c,d) (p)->lpVtbl->SetPositions(p,a,b,c,d) -#define IMediaSeeking_GetPositions(p,a,b) (p)->lpVtbl->GetPositions(p,a,b) -#define IMediaSeeking_GetAvailable(p,a,b) (p)->lpVtbl->GetAvailable(p,a,b) -#define IMediaSeeking_SetRate(p,a) (p)->lpVtbl->SetRate(p,a) -#define IMediaSeeking_GetRate(p,a) (p)->lpVtbl->GetRate(p,a) -#define IMediaSeeking_GetPreroll(p,a) (p)->lpVtbl->GetPreroll(p,a) -#endif - -#endif - -#define IMediaSeeking_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IMediaSeeking methods ***/ \ - STDMETHOD_(HRESULT,GetCapabilities)(THIS_ DWORD* pCapabilities) PURE; \ - STDMETHOD_(HRESULT,CheckCapabilities)(THIS_ DWORD* pCapabilities) PURE; \ - STDMETHOD_(HRESULT,IsFormatSupported)(THIS_ const GUID* pFormat) PURE; \ - STDMETHOD_(HRESULT,QueryPreferredFormat)(THIS_ GUID* pFormat) PURE; \ - STDMETHOD_(HRESULT,GetTimeFormat)(THIS_ GUID* pFormat) PURE; \ - STDMETHOD_(HRESULT,IsUsingTimeFormat)(THIS_ const GUID* pFormat) PURE; \ - STDMETHOD_(HRESULT,SetTimeFormat)(THIS_ const GUID* pFormat) PURE; \ - STDMETHOD_(HRESULT,GetDuration)(THIS_ LONGLONG* pDuration) PURE; \ - STDMETHOD_(HRESULT,GetStopPosition)(THIS_ LONGLONG* pStop) PURE; \ - STDMETHOD_(HRESULT,GetCurrentPosition)(THIS_ LONGLONG* pCurrent) PURE; \ - STDMETHOD_(HRESULT,ConvertTimeFormat)(THIS_ LONGLONG* pTarget, const GUID* pTargetFormat, LONGLONG Source, const GUID* pSourceFormat) PURE; \ - STDMETHOD_(HRESULT,SetPositions)(THIS_ LONGLONG* pCurrent, DWORD dwCurrentFlags, LONGLONG* pStop, DWORD dwStopFlags) PURE; \ - STDMETHOD_(HRESULT,GetPositions)(THIS_ LONGLONG* pCurrent, LONGLONG* pStop) PURE; \ - STDMETHOD_(HRESULT,GetAvailable)(THIS_ LONGLONG* pEarliest, LONGLONG* pLatest) PURE; \ - STDMETHOD_(HRESULT,SetRate)(THIS_ double dRate) PURE; \ - STDMETHOD_(HRESULT,GetRate)(THIS_ double* pdRate) PURE; \ - STDMETHOD_(HRESULT,GetPreroll)(THIS_ LONGLONG* pllPreroll) PURE; - -HRESULT CALLBACK IMediaSeeking_GetCapabilities_Proxy( - IMediaSeeking* This, - DWORD* pCapabilities); -void __RPC_STUB IMediaSeeking_GetCapabilities_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_CheckCapabilities_Proxy( - IMediaSeeking* This, - DWORD* pCapabilities); -void __RPC_STUB IMediaSeeking_CheckCapabilities_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_IsFormatSupported_Proxy( - IMediaSeeking* This, - const GUID* pFormat); -void __RPC_STUB IMediaSeeking_IsFormatSupported_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_QueryPreferredFormat_Proxy( - IMediaSeeking* This, - GUID* pFormat); -void __RPC_STUB IMediaSeeking_QueryPreferredFormat_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_GetTimeFormat_Proxy( - IMediaSeeking* This, - GUID* pFormat); -void __RPC_STUB IMediaSeeking_GetTimeFormat_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_IsUsingTimeFormat_Proxy( - IMediaSeeking* This, - const GUID* pFormat); -void __RPC_STUB IMediaSeeking_IsUsingTimeFormat_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_SetTimeFormat_Proxy( - IMediaSeeking* This, - const GUID* pFormat); -void __RPC_STUB IMediaSeeking_SetTimeFormat_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_GetDuration_Proxy( - IMediaSeeking* This, - LONGLONG* pDuration); -void __RPC_STUB IMediaSeeking_GetDuration_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_GetStopPosition_Proxy( - IMediaSeeking* This, - LONGLONG* pStop); -void __RPC_STUB IMediaSeeking_GetStopPosition_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_GetCurrentPosition_Proxy( - IMediaSeeking* This, - LONGLONG* pCurrent); -void __RPC_STUB IMediaSeeking_GetCurrentPosition_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_ConvertTimeFormat_Proxy( - IMediaSeeking* This, - LONGLONG* pTarget, - const GUID* pTargetFormat, - LONGLONG Source, - const GUID* pSourceFormat); -void __RPC_STUB IMediaSeeking_ConvertTimeFormat_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_SetPositions_Proxy( - IMediaSeeking* This, - LONGLONG* pCurrent, - DWORD dwCurrentFlags, - LONGLONG* pStop, - DWORD dwStopFlags); -void __RPC_STUB IMediaSeeking_SetPositions_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_GetPositions_Proxy( - IMediaSeeking* This, - LONGLONG* pCurrent, - LONGLONG* pStop); -void __RPC_STUB IMediaSeeking_GetPositions_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_GetAvailable_Proxy( - IMediaSeeking* This, - LONGLONG* pEarliest, - LONGLONG* pLatest); -void __RPC_STUB IMediaSeeking_GetAvailable_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_SetRate_Proxy( - IMediaSeeking* This, - double dRate); -void __RPC_STUB IMediaSeeking_SetRate_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_GetRate_Proxy( - IMediaSeeking* This, - double* pdRate); -void __RPC_STUB IMediaSeeking_GetRate_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IMediaSeeking_GetPreroll_Proxy( - IMediaSeeking* This, - LONGLONG* pllPreroll); -void __RPC_STUB IMediaSeeking_GetPreroll_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMediaSeeking_INTERFACE_DEFINED__ */ - -typedef IMediaSeeking *PMEDIASEEKING; - -enum tagAM_MEDIAEVENT_FLAGS { - AM_MEDIAEVENT_NONOTIFY = 0x1 -}; - -#ifndef __IAMAnalogVideoDecoder_FWD_DEFINED__ -#define __IAMAnalogVideoDecoder_FWD_DEFINED__ -typedef struct IAMAnalogVideoDecoder IAMAnalogVideoDecoder; -#endif - -#ifndef __IAMAnalogVideoEncoder_FWD_DEFINED__ -#define __IAMAnalogVideoEncoder_FWD_DEFINED__ -typedef struct IAMAnalogVideoEncoder IAMAnalogVideoEncoder; -#endif - -#ifndef __IAMAudioInputMixer_FWD_DEFINED__ -#define __IAMAudioInputMixer_FWD_DEFINED__ -typedef struct IAMAudioInputMixer IAMAudioInputMixer; -#endif - -#ifndef __IAMAudioRendererStats_FWD_DEFINED__ -#define __IAMAudioRendererStats_FWD_DEFINED__ -typedef struct IAMAudioRendererStats IAMAudioRendererStats; -#endif - -#ifndef __IAMBufferNegotiation_FWD_DEFINED__ -#define __IAMBufferNegotiation_FWD_DEFINED__ -typedef struct IAMBufferNegotiation IAMBufferNegotiation; -#endif - -#ifndef __IAMCameraControl_FWD_DEFINED__ -#define __IAMCameraControl_FWD_DEFINED__ -typedef struct IAMCameraControl IAMCameraControl; -#endif - -#ifndef __IAMCopyCaptureFileProgress_FWD_DEFINED__ -#define __IAMCopyCaptureFileProgress_FWD_DEFINED__ -typedef struct IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress; -#endif - -#ifndef __IAMCrossbar_FWD_DEFINED__ -#define __IAMCrossbar_FWD_DEFINED__ -typedef struct IAMCrossbar IAMCrossbar; -#endif - -#ifndef __IAMDevMemoryAllocator_FWD_DEFINED__ -#define __IAMDevMemoryAllocator_FWD_DEFINED__ -typedef struct IAMDevMemoryAllocator IAMDevMemoryAllocator; -#endif - -#ifndef __IAMDevMemoryControl_FWD_DEFINED__ -#define __IAMDevMemoryControl_FWD_DEFINED__ -typedef struct IAMDevMemoryControl IAMDevMemoryControl; -#endif - -#ifndef __IAMDroppedFrames_FWD_DEFINED__ -#define __IAMDroppedFrames_FWD_DEFINED__ -typedef struct IAMDroppedFrames IAMDroppedFrames; -#endif - -#ifndef __IAMExtDevice_FWD_DEFINED__ -#define __IAMExtDevice_FWD_DEFINED__ -typedef struct IAMExtDevice IAMExtDevice; -#endif - -#ifndef __IAMExtTransport_FWD_DEFINED__ -#define __IAMExtTransport_FWD_DEFINED__ -typedef struct IAMExtTransport IAMExtTransport; -#endif - -#ifndef __IAMGraphStreams_FWD_DEFINED__ -#define __IAMGraphStreams_FWD_DEFINED__ -typedef struct IAMGraphStreams IAMGraphStreams; -#endif - -#ifndef __IAMLatency_FWD_DEFINED__ -#define __IAMLatency_FWD_DEFINED__ -typedef struct IAMLatency IAMLatency; -#endif - -#ifndef __IAMOpenProgress_FWD_DEFINED__ -#define __IAMOpenProgress_FWD_DEFINED__ -typedef struct IAMOpenProgress IAMOpenProgress; -#endif - -#ifndef __IAMOverlayFX_FWD_DEFINED__ -#define __IAMOverlayFX_FWD_DEFINED__ -typedef struct IAMOverlayFX IAMOverlayFX; -#endif - -#ifndef __IAMPhysicalPinInfo_FWD_DEFINED__ -#define __IAMPhysicalPinInfo_FWD_DEFINED__ -typedef struct IAMPhysicalPinInfo IAMPhysicalPinInfo; -#endif - -#ifndef __IAMPushSource_FWD_DEFINED__ -#define __IAMPushSource_FWD_DEFINED__ -typedef struct IAMPushSource IAMPushSource; -#endif - -#ifndef __IAMStreamConfig_FWD_DEFINED__ -#define __IAMStreamConfig_FWD_DEFINED__ -typedef struct IAMStreamConfig IAMStreamConfig; -#endif - -#ifndef __IAMTimecodeDisplay_FWD_DEFINED__ -#define __IAMTimecodeDisplay_FWD_DEFINED__ -typedef struct IAMTimecodeDisplay IAMTimecodeDisplay; -#endif - -#ifndef __IAMTimecodeGenerator_FWD_DEFINED__ -#define __IAMTimecodeGenerator_FWD_DEFINED__ -typedef struct IAMTimecodeGenerator IAMTimecodeGenerator; -#endif - -#ifndef __IAMTimecodeReader_FWD_DEFINED__ -#define __IAMTimecodeReader_FWD_DEFINED__ -typedef struct IAMTimecodeReader IAMTimecodeReader; -#endif - -#ifndef __IAMTVTuner_FWD_DEFINED__ -#define __IAMTVTuner_FWD_DEFINED__ -typedef struct IAMTVTuner IAMTVTuner; -#endif - -#ifndef __IAMVfwCaptureDialogs_FWD_DEFINED__ -#define __IAMVfwCaptureDialogs_FWD_DEFINED__ -typedef struct IAMVfwCaptureDialogs IAMVfwCaptureDialogs; -#endif - -#ifndef __IAMVfwCompressDialogs_FWD_DEFINED__ -#define __IAMVfwCompressDialogs_FWD_DEFINED__ -typedef struct IAMVfwCompressDialogs IAMVfwCompressDialogs; -#endif - -#ifndef __IAMVideoCompression_FWD_DEFINED__ -#define __IAMVideoCompression_FWD_DEFINED__ -typedef struct IAMVideoCompression IAMVideoCompression; -#endif - -#ifndef __IAMVideoDecimationProperties_FWD_DEFINED__ -#define __IAMVideoDecimationProperties_FWD_DEFINED__ -typedef struct IAMVideoDecimationProperties IAMVideoDecimationProperties; -#endif - -#ifndef __IAMVideoProcAmp_FWD_DEFINED__ -#define __IAMVideoProcAmp_FWD_DEFINED__ -typedef struct IAMVideoProcAmp IAMVideoProcAmp; -#endif - -#ifndef __ICaptureGraphBuilder_FWD_DEFINED__ -#define __ICaptureGraphBuilder_FWD_DEFINED__ -typedef struct ICaptureGraphBuilder ICaptureGraphBuilder; -#endif - -#ifndef __ICaptureGraphBuilder2_FWD_DEFINED__ -#define __ICaptureGraphBuilder2_FWD_DEFINED__ -typedef struct ICaptureGraphBuilder2 ICaptureGraphBuilder2; -#endif - -#ifndef __IConfigAviMux_FWD_DEFINED__ -#define __IConfigAviMux_FWD_DEFINED__ -typedef struct IConfigAviMux IConfigAviMux; -#endif - -#ifndef __IConfigInterleaving_FWD_DEFINED__ -#define __IConfigInterleaving_FWD_DEFINED__ -typedef struct IConfigInterleaving IConfigInterleaving; -#endif - -#ifndef __IDecimateVideoImage_FWD_DEFINED__ -#define __IDecimateVideoImage_FWD_DEFINED__ -typedef struct IDecimateVideoImage IDecimateVideoImage; -#endif - -#ifndef __IDrawVideoImage_FWD_DEFINED__ -#define __IDrawVideoImage_FWD_DEFINED__ -typedef struct IDrawVideoImage IDrawVideoImage; -#endif - -#ifndef __IEnumRegFilters_FWD_DEFINED__ -#define __IEnumRegFilters_FWD_DEFINED__ -typedef struct IEnumRegFilters IEnumRegFilters; -#endif - -#ifndef __IEnumStreamIdMap_FWD_DEFINED__ -#define __IEnumStreamIdMap_FWD_DEFINED__ -typedef struct IEnumStreamIdMap IEnumStreamIdMap; -#endif - -#ifndef __IFileSourceFilter_FWD_DEFINED__ -#define __IFileSourceFilter_FWD_DEFINED__ -typedef struct IFileSourceFilter IFileSourceFilter; -#endif - -#ifndef __IFileSinkFilter_FWD_DEFINED__ -#define __IFileSinkFilter_FWD_DEFINED__ -typedef struct IFileSinkFilter IFileSinkFilter; -#endif - -#ifndef __IFileSinkFilter2_FWD_DEFINED__ -#define __IFileSinkFilter2_FWD_DEFINED__ -typedef struct IFileSinkFilter2 IFileSinkFilter2; -#endif - -#ifndef __IFilterMapper_FWD_DEFINED__ -#define __IFilterMapper_FWD_DEFINED__ -typedef struct IFilterMapper IFilterMapper; -#endif - -#ifndef __IFilterMapper2_FWD_DEFINED__ -#define __IFilterMapper2_FWD_DEFINED__ -typedef struct IFilterMapper2 IFilterMapper2; -#endif - -#ifndef __IGraphBuilder_FWD_DEFINED__ -#define __IGraphBuilder_FWD_DEFINED__ -typedef struct IGraphBuilder IGraphBuilder; -#endif - -#ifndef __IKsPropertySet_FWD_DEFINED__ -#define __IKsPropertySet_FWD_DEFINED__ -typedef struct IKsPropertySet IKsPropertySet; -#endif - -#ifndef __IMediaEventSink_FWD_DEFINED__ -#define __IMediaEventSink_FWD_DEFINED__ -typedef struct IMediaEventSink IMediaEventSink; -#endif - -#ifndef __IMpeg2Demultiplexer_FWD_DEFINED__ -#define __IMpeg2Demultiplexer_FWD_DEFINED__ -typedef struct IMpeg2Demultiplexer IMpeg2Demultiplexer; -#endif - -#ifndef __IMPEG2StreamIdMap_FWD_DEFINED__ -#define __IMPEG2StreamIdMap_FWD_DEFINED__ -typedef struct IMPEG2StreamIdMap IMPEG2StreamIdMap; -#endif - -#ifndef __IOverlay_FWD_DEFINED__ -#define __IOverlay_FWD_DEFINED__ -typedef struct IOverlay IOverlay; -#endif - -#ifndef __IOverlayNotify_FWD_DEFINED__ -#define __IOverlayNotify_FWD_DEFINED__ -typedef struct IOverlayNotify IOverlayNotify; -#endif - -#ifndef __IOverlayNotify2_FWD_DEFINED__ -#define __IOverlayNotify2_FWD_DEFINED__ -typedef struct IOverlayNotify2 IOverlayNotify2; -#endif - -#ifndef __IQualityControl_FWD_DEFINED__ -#define __IQualityControl_FWD_DEFINED__ -typedef struct IQualityControl IQualityControl; -#endif - -#ifndef __ISeekingPassThru_FWD_DEFINED__ -#define __ISeekingPassThru_FWD_DEFINED__ -typedef struct ISeekingPassThru ISeekingPassThru; -#endif - -typedef struct { - CLSID Clsid; - LPWSTR Name; -} REGFILTER; - -/***************************************************************************** - * IEnumRegFilters interface - */ -#ifndef __IEnumRegFilters_INTERFACE_DEFINED__ -#define __IEnumRegFilters_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IEnumRegFilters, 0x56a868a4, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IEnumRegFilters : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Next( - ULONG cFilters, - REGFILTER** apRegFilter, - ULONG* pcFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - ULONG cFilters) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - IEnumRegFilters** ppEnum) = 0; - -}; -#else -typedef struct IEnumRegFiltersVtbl IEnumRegFiltersVtbl; -struct IEnumRegFilters { - const IEnumRegFiltersVtbl* lpVtbl; -}; -struct IEnumRegFiltersVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IEnumRegFilters* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IEnumRegFilters* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IEnumRegFilters* This); - - /*** IEnumRegFilters methods ***/ - HRESULT (STDMETHODCALLTYPE *Next)( - IEnumRegFilters* This, - ULONG cFilters, - REGFILTER** apRegFilter, - ULONG* pcFetched); - - HRESULT (STDMETHODCALLTYPE *Skip)( - IEnumRegFilters* This, - ULONG cFilters); - - HRESULT (STDMETHODCALLTYPE *Reset)( - IEnumRegFilters* This); - - HRESULT (STDMETHODCALLTYPE *Clone)( - IEnumRegFilters* This, - IEnumRegFilters** ppEnum); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IEnumRegFilters_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumRegFilters_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumRegFilters_Release(p) (p)->lpVtbl->Release(p) -/*** IEnumRegFilters methods ***/ -#define IEnumRegFilters_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumRegFilters_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumRegFilters_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumRegFilters_Clone(p,a) (p)->lpVtbl->Clone(p,a) -#endif - -#endif - -#define IEnumRegFilters_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IEnumRegFilters methods ***/ \ - STDMETHOD_(HRESULT,Next)(THIS_ ULONG cFilters, REGFILTER** apRegFilter, ULONG* pcFetched) PURE; \ - STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cFilters) PURE; \ - STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ - STDMETHOD_(HRESULT,Clone)(THIS_ IEnumRegFilters** ppEnum) PURE; - -HRESULT CALLBACK IEnumRegFilters_Next_Proxy( - IEnumRegFilters* This, - ULONG cFilters, - REGFILTER** apRegFilter, - ULONG* pcFetched); -void __RPC_STUB IEnumRegFilters_Next_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumRegFilters_Skip_Proxy( - IEnumRegFilters* This, - ULONG cFilters); -void __RPC_STUB IEnumRegFilters_Skip_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumRegFilters_Reset_Proxy( - IEnumRegFilters* This); -void __RPC_STUB IEnumRegFilters_Reset_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumRegFilters_Clone_Proxy( - IEnumRegFilters* This, - IEnumRegFilters** ppEnum); -void __RPC_STUB IEnumRegFilters_Clone_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IEnumRegFilters_INTERFACE_DEFINED__ */ - -typedef IEnumRegFilters *PENUMREGFILTERS; - -enum { - MERIT_PREFERRED = 0x800000, - MERIT_NORMAL = 0x600000, - MERIT_UNLIKELY = 0x400000, - MERIT_DO_NOT_USE = 0x200000, - MERIT_SW_COMPRESSOR = 0x100000, - MERIT_HW_COMPRESSOR = 0x100050 -}; - -/***************************************************************************** - * IFilterMapper interface - */ -#ifndef __IFilterMapper_INTERFACE_DEFINED__ -#define __IFilterMapper_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IFilterMapper, 0x56a868a3, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IFilterMapper : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE RegisterFilter( - CLSID clsid, - LPCWSTR Name, - DWORD dwMerit) = 0; - - virtual HRESULT STDMETHODCALLTYPE RegisterFilterInstance( - CLSID clsid, - LPCWSTR Name, - CLSID* MRId) = 0; - - virtual HRESULT STDMETHODCALLTYPE RegisterPin( - CLSID Filter, - LPCWSTR Name, - BOOL bRendered, - BOOL bOutput, - BOOL bZero, - BOOL bMany, - CLSID ConnectsToFilter, - LPCWSTR ConnectsToPin) = 0; - - virtual HRESULT STDMETHODCALLTYPE RegisterPinType( - CLSID clsFilter, - LPCWSTR strName, - CLSID clsMajorType, - CLSID clsSubType) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnregisterFilter( - CLSID Filter) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnregisterFilterInstance( - CLSID MRId) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnregisterPin( - CLSID Filter, - LPCWSTR Name) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters( - IEnumRegFilters** ppEnum, - DWORD dwMerit, - BOOL bInputNeeded, - CLSID clsInMaj, - CLSID clsInSub, - BOOL bRender, - BOOL bOututNeeded, - CLSID clsOutMaj, - CLSID clsOutSub) = 0; - -}; -#else -typedef struct IFilterMapperVtbl IFilterMapperVtbl; -struct IFilterMapper { - const IFilterMapperVtbl* lpVtbl; -}; -struct IFilterMapperVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IFilterMapper* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IFilterMapper* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IFilterMapper* This); - - /*** IFilterMapper methods ***/ - HRESULT (STDMETHODCALLTYPE *RegisterFilter)( - IFilterMapper* This, - CLSID clsid, - LPCWSTR Name, - DWORD dwMerit); - - HRESULT (STDMETHODCALLTYPE *RegisterFilterInstance)( - IFilterMapper* This, - CLSID clsid, - LPCWSTR Name, - CLSID* MRId); - - HRESULT (STDMETHODCALLTYPE *RegisterPin)( - IFilterMapper* This, - CLSID Filter, - LPCWSTR Name, - BOOL bRendered, - BOOL bOutput, - BOOL bZero, - BOOL bMany, - CLSID ConnectsToFilter, - LPCWSTR ConnectsToPin); - - HRESULT (STDMETHODCALLTYPE *RegisterPinType)( - IFilterMapper* This, - CLSID clsFilter, - LPCWSTR strName, - CLSID clsMajorType, - CLSID clsSubType); - - HRESULT (STDMETHODCALLTYPE *UnregisterFilter)( - IFilterMapper* This, - CLSID Filter); - - HRESULT (STDMETHODCALLTYPE *UnregisterFilterInstance)( - IFilterMapper* This, - CLSID MRId); - - HRESULT (STDMETHODCALLTYPE *UnregisterPin)( - IFilterMapper* This, - CLSID Filter, - LPCWSTR Name); - - HRESULT (STDMETHODCALLTYPE *EnumMatchingFilters)( - IFilterMapper* This, - IEnumRegFilters** ppEnum, - DWORD dwMerit, - BOOL bInputNeeded, - CLSID clsInMaj, - CLSID clsInSub, - BOOL bRender, - BOOL bOututNeeded, - CLSID clsOutMaj, - CLSID clsOutSub); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IFilterMapper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFilterMapper_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFilterMapper_Release(p) (p)->lpVtbl->Release(p) -/*** IFilterMapper methods ***/ -#define IFilterMapper_RegisterFilter(p,a,b,c) (p)->lpVtbl->RegisterFilter(p,a,b,c) -#define IFilterMapper_RegisterFilterInstance(p,a,b,c) (p)->lpVtbl->RegisterFilterInstance(p,a,b,c) -#define IFilterMapper_RegisterPin(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->RegisterPin(p,a,b,c,d,e,f,g,h) -#define IFilterMapper_RegisterPinType(p,a,b,c,d) (p)->lpVtbl->RegisterPinType(p,a,b,c,d) -#define IFilterMapper_UnregisterFilter(p,a) (p)->lpVtbl->UnregisterFilter(p,a) -#define IFilterMapper_UnregisterFilterInstance(p,a) (p)->lpVtbl->UnregisterFilterInstance(p,a) -#define IFilterMapper_UnregisterPin(p,a,b) (p)->lpVtbl->UnregisterPin(p,a,b) -#define IFilterMapper_EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i) -#endif - -#endif - -#define IFilterMapper_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFilterMapper methods ***/ \ - STDMETHOD_(HRESULT,RegisterFilter)(THIS_ CLSID clsid, LPCWSTR Name, DWORD dwMerit) PURE; \ - STDMETHOD_(HRESULT,RegisterFilterInstance)(THIS_ CLSID clsid, LPCWSTR Name, CLSID* MRId) PURE; \ - STDMETHOD_(HRESULT,RegisterPin)(THIS_ CLSID Filter, LPCWSTR Name, BOOL bRendered, BOOL bOutput, BOOL bZero, BOOL bMany, CLSID ConnectsToFilter, LPCWSTR ConnectsToPin) PURE; \ - STDMETHOD_(HRESULT,RegisterPinType)(THIS_ CLSID clsFilter, LPCWSTR strName, CLSID clsMajorType, CLSID clsSubType) PURE; \ - STDMETHOD_(HRESULT,UnregisterFilter)(THIS_ CLSID Filter) PURE; \ - STDMETHOD_(HRESULT,UnregisterFilterInstance)(THIS_ CLSID MRId) PURE; \ - STDMETHOD_(HRESULT,UnregisterPin)(THIS_ CLSID Filter, LPCWSTR Name) PURE; \ - STDMETHOD_(HRESULT,EnumMatchingFilters)(THIS_ IEnumRegFilters** ppEnum, DWORD dwMerit, BOOL bInputNeeded, CLSID clsInMaj, CLSID clsInSub, BOOL bRender, BOOL bOututNeeded, CLSID clsOutMaj, CLSID clsOutSub) PURE; - -HRESULT CALLBACK IFilterMapper_RegisterFilter_Proxy( - IFilterMapper* This, - CLSID clsid, - LPCWSTR Name, - DWORD dwMerit); -void __RPC_STUB IFilterMapper_RegisterFilter_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper_RegisterFilterInstance_Proxy( - IFilterMapper* This, - CLSID clsid, - LPCWSTR Name, - CLSID* MRId); -void __RPC_STUB IFilterMapper_RegisterFilterInstance_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper_RegisterPin_Proxy( - IFilterMapper* This, - CLSID Filter, - LPCWSTR Name, - BOOL bRendered, - BOOL bOutput, - BOOL bZero, - BOOL bMany, - CLSID ConnectsToFilter, - LPCWSTR ConnectsToPin); -void __RPC_STUB IFilterMapper_RegisterPin_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper_RegisterPinType_Proxy( - IFilterMapper* This, - CLSID clsFilter, - LPCWSTR strName, - CLSID clsMajorType, - CLSID clsSubType); -void __RPC_STUB IFilterMapper_RegisterPinType_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper_UnregisterFilter_Proxy( - IFilterMapper* This, - CLSID Filter); -void __RPC_STUB IFilterMapper_UnregisterFilter_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper_UnregisterFilterInstance_Proxy( - IFilterMapper* This, - CLSID MRId); -void __RPC_STUB IFilterMapper_UnregisterFilterInstance_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper_UnregisterPin_Proxy( - IFilterMapper* This, - CLSID Filter, - LPCWSTR Name); -void __RPC_STUB IFilterMapper_UnregisterPin_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper_EnumMatchingFilters_Proxy( - IFilterMapper* This, - IEnumRegFilters** ppEnum, - DWORD dwMerit, - BOOL bInputNeeded, - CLSID clsInMaj, - CLSID clsInSub, - BOOL bRender, - BOOL bOututNeeded, - CLSID clsOutMaj, - CLSID clsOutSub); -void __RPC_STUB IFilterMapper_EnumMatchingFilters_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IFilterMapper_INTERFACE_DEFINED__ */ - -typedef struct { - const CLSID *clsMajorType; - const CLSID *clsMinorType; -} REGPINTYPES; - -typedef struct { - LPWSTR strName; - BOOL bRendered; - BOOL bOutput; - BOOL bZero; - BOOL bMany; - const CLSID *clsConnectsToFilter; - const WCHAR *strConnectsToPin; - UINT nMediaTypes; - const REGPINTYPES *lpMediaType; -} REGFILTERPINS; - -typedef struct { - CLSID clsMedium; - DWORD dw1; - DWORD dw2; -} REGPINMEDIUM; - -enum { - REG_PINFLAG_B_ZERO = 0x1, - REG_PINFLAG_B_RENDERER = 0x2, - REG_PINFLAG_B_MANY = 0x4, - REG_PINFLAG_B_OUTPUT = 0x8 -}; - -typedef struct { - DWORD dwFlags; - UINT cInstances; - UINT nMediaTypes; - const REGPINTYPES *lpMediaType; - UINT nMediums; - const REGPINMEDIUM *lpMedium; - const CLSID *clsPinCategory; -} REGFILTERPINS2; - -typedef struct { - DWORD dwVersion; - DWORD dwMerit; - union { - struct { - ULONG cPins; - const REGFILTERPINS *rgPins; - } DUMMYSTRUCTNAME; - struct { - ULONG cPins2; - const REGFILTERPINS2 *rgPins2; - } DUMMYSTRUCTNAME1; - } DUMMYUNIONNAME; -} REGFILTER2; - -/***************************************************************************** - * IFilterMapper2 interface - */ -#ifndef __IFilterMapper2_INTERFACE_DEFINED__ -#define __IFilterMapper2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IFilterMapper2, 0xb79bb0b0, 0x33c1, 0x11d1, 0xab,0xe1, 0x00,0xa0,0xc9,0x05,0xf3,0x75); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IFilterMapper2 : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE CreateCategory( - REFCLSID clsidCategory, - DWORD dwCategoryMerit, - LPCWSTR Description) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnregisterFilter( - const CLSID* pclsidCategory, - const OLECHAR* szInstance, - REFCLSID Filter) = 0; - - virtual HRESULT STDMETHODCALLTYPE RegisterFilter( - REFCLSID clsidFilter, - LPCWSTR Name, - IMoniker** ppMoniker, - const CLSID* pclsidCategory, - const OLECHAR* szInstance, - const REGFILTER2* prf2) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumMatchingFilters( - IEnumMoniker** ppEnum, - DWORD dwFlags, - BOOL bExactMatch, - DWORD dwMerit, - BOOL bInputNeeded, - DWORD cInputTypes, - const GUID* pInputTypes, - const REGPINMEDIUM* pMedIn, - const CLSID* pPinCategoryIn, - BOOL bRender, - BOOL bOutputNeeded, - DWORD cOutputTypes, - const GUID* pOutputTypes, - const REGPINMEDIUM* pMedOut, - const CLSID* pPinCategoryOut) = 0; - -}; -#else -typedef struct IFilterMapper2Vtbl IFilterMapper2Vtbl; -struct IFilterMapper2 { - const IFilterMapper2Vtbl* lpVtbl; -}; -struct IFilterMapper2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IFilterMapper2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IFilterMapper2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IFilterMapper2* This); - - /*** IFilterMapper2 methods ***/ - HRESULT (STDMETHODCALLTYPE *CreateCategory)( - IFilterMapper2* This, - REFCLSID clsidCategory, - DWORD dwCategoryMerit, - LPCWSTR Description); - - HRESULT (STDMETHODCALLTYPE *UnregisterFilter)( - IFilterMapper2* This, - const CLSID* pclsidCategory, - const OLECHAR* szInstance, - REFCLSID Filter); - - HRESULT (STDMETHODCALLTYPE *RegisterFilter)( - IFilterMapper2* This, - REFCLSID clsidFilter, - LPCWSTR Name, - IMoniker** ppMoniker, - const CLSID* pclsidCategory, - const OLECHAR* szInstance, - const REGFILTER2* prf2); - - HRESULT (STDMETHODCALLTYPE *EnumMatchingFilters)( - IFilterMapper2* This, - IEnumMoniker** ppEnum, - DWORD dwFlags, - BOOL bExactMatch, - DWORD dwMerit, - BOOL bInputNeeded, - DWORD cInputTypes, - const GUID* pInputTypes, - const REGPINMEDIUM* pMedIn, - const CLSID* pPinCategoryIn, - BOOL bRender, - BOOL bOutputNeeded, - DWORD cOutputTypes, - const GUID* pOutputTypes, - const REGPINMEDIUM* pMedOut, - const CLSID* pPinCategoryOut); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IFilterMapper2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFilterMapper2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFilterMapper2_Release(p) (p)->lpVtbl->Release(p) -/*** IFilterMapper2 methods ***/ -#define IFilterMapper2_CreateCategory(p,a,b,c) (p)->lpVtbl->CreateCategory(p,a,b,c) -#define IFilterMapper2_UnregisterFilter(p,a,b,c) (p)->lpVtbl->UnregisterFilter(p,a,b,c) -#define IFilterMapper2_RegisterFilter(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterFilter(p,a,b,c,d,e,f) -#define IFilterMapper2_EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) (p)->lpVtbl->EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) -#endif - -#endif - -#define IFilterMapper2_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFilterMapper2 methods ***/ \ - STDMETHOD_(HRESULT,CreateCategory)(THIS_ REFCLSID clsidCategory, DWORD dwCategoryMerit, LPCWSTR Description) PURE; \ - STDMETHOD_(HRESULT,UnregisterFilter)(THIS_ const CLSID* pclsidCategory, const OLECHAR* szInstance, REFCLSID Filter) PURE; \ - STDMETHOD_(HRESULT,RegisterFilter)(THIS_ REFCLSID clsidFilter, LPCWSTR Name, IMoniker** ppMoniker, const CLSID* pclsidCategory, const OLECHAR* szInstance, const REGFILTER2* prf2) PURE; \ - STDMETHOD_(HRESULT,EnumMatchingFilters)(THIS_ IEnumMoniker** ppEnum, DWORD dwFlags, BOOL bExactMatch, DWORD dwMerit, BOOL bInputNeeded, DWORD cInputTypes, const GUID* pInputTypes, const REGPINMEDIUM* pMedIn, const CLSID* pPinCategoryIn, BOOL bRender, BOOL bOutputNeeded, DWORD cOutputTypes, const GUID* pOutputTypes, const REGPINMEDIUM* pMedOut, const CLSID* pPinCategoryOut) PURE; - -HRESULT CALLBACK IFilterMapper2_CreateCategory_Proxy( - IFilterMapper2* This, - REFCLSID clsidCategory, - DWORD dwCategoryMerit, - LPCWSTR Description); -void __RPC_STUB IFilterMapper2_CreateCategory_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper2_UnregisterFilter_Proxy( - IFilterMapper2* This, - const CLSID* pclsidCategory, - const OLECHAR* szInstance, - REFCLSID Filter); -void __RPC_STUB IFilterMapper2_UnregisterFilter_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper2_RegisterFilter_Proxy( - IFilterMapper2* This, - REFCLSID clsidFilter, - LPCWSTR Name, - IMoniker** ppMoniker, - const CLSID* pclsidCategory, - const OLECHAR* szInstance, - const REGFILTER2* prf2); -void __RPC_STUB IFilterMapper2_RegisterFilter_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterMapper2_EnumMatchingFilters_Proxy( - IFilterMapper2* This, - IEnumMoniker** ppEnum, - DWORD dwFlags, - BOOL bExactMatch, - DWORD dwMerit, - BOOL bInputNeeded, - DWORD cInputTypes, - const GUID* pInputTypes, - const REGPINMEDIUM* pMedIn, - const CLSID* pPinCategoryIn, - BOOL bRender, - BOOL bOutputNeeded, - DWORD cOutputTypes, - const GUID* pOutputTypes, - const REGPINMEDIUM* pMedOut, - const CLSID* pPinCategoryOut); -void __RPC_STUB IFilterMapper2_EnumMatchingFilters_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IFilterMapper2_INTERFACE_DEFINED__ */ - -#ifndef __IFilterMapper3_FWD_DEFINED__ -#define __IFilterMapper3_FWD_DEFINED__ -typedef struct IFilterMapper3 IFilterMapper3; -#endif - -/***************************************************************************** - * IFilterMapper3 interface - */ -#ifndef __IFilterMapper3_INTERFACE_DEFINED__ -#define __IFilterMapper3_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IFilterMapper3, 0xb79bb0b1, 0x33c1, 0x11d1, 0xab,0xe1, 0x00,0xa0,0xc9,0x05,0xf3,0x75); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IFilterMapper3 : public IFilterMapper2 -{ - virtual HRESULT STDMETHODCALLTYPE GetICreateDevEnum( - ICreateDevEnum** ppEnum) = 0; - -}; -#else -typedef struct IFilterMapper3Vtbl IFilterMapper3Vtbl; -struct IFilterMapper3 { - const IFilterMapper3Vtbl* lpVtbl; -}; -struct IFilterMapper3Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IFilterMapper3* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IFilterMapper3* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IFilterMapper3* This); - - /*** IFilterMapper2 methods ***/ - HRESULT (STDMETHODCALLTYPE *CreateCategory)( - IFilterMapper3* This, - REFCLSID clsidCategory, - DWORD dwCategoryMerit, - LPCWSTR Description); - - HRESULT (STDMETHODCALLTYPE *UnregisterFilter)( - IFilterMapper3* This, - const CLSID* pclsidCategory, - const OLECHAR* szInstance, - REFCLSID Filter); - - HRESULT (STDMETHODCALLTYPE *RegisterFilter)( - IFilterMapper3* This, - REFCLSID clsidFilter, - LPCWSTR Name, - IMoniker** ppMoniker, - const CLSID* pclsidCategory, - const OLECHAR* szInstance, - const REGFILTER2* prf2); - - HRESULT (STDMETHODCALLTYPE *EnumMatchingFilters)( - IFilterMapper3* This, - IEnumMoniker** ppEnum, - DWORD dwFlags, - BOOL bExactMatch, - DWORD dwMerit, - BOOL bInputNeeded, - DWORD cInputTypes, - const GUID* pInputTypes, - const REGPINMEDIUM* pMedIn, - const CLSID* pPinCategoryIn, - BOOL bRender, - BOOL bOutputNeeded, - DWORD cOutputTypes, - const GUID* pOutputTypes, - const REGPINMEDIUM* pMedOut, - const CLSID* pPinCategoryOut); - - /*** IFilterMapper3 methods ***/ - HRESULT (STDMETHODCALLTYPE *GetICreateDevEnum)( - IFilterMapper3* This, - ICreateDevEnum** ppEnum); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IFilterMapper3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFilterMapper3_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFilterMapper3_Release(p) (p)->lpVtbl->Release(p) -/*** IFilterMapper2 methods ***/ -#define IFilterMapper3_CreateCategory(p,a,b,c) (p)->lpVtbl->CreateCategory(p,a,b,c) -#define IFilterMapper3_UnregisterFilter(p,a,b,c) (p)->lpVtbl->UnregisterFilter(p,a,b,c) -#define IFilterMapper3_RegisterFilter(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterFilter(p,a,b,c,d,e,f) -#define IFilterMapper3_EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) (p)->lpVtbl->EnumMatchingFilters(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) -/*** IFilterMapper3 methods ***/ -#define IFilterMapper3_GetICreateDevEnum(p,a) (p)->lpVtbl->GetICreateDevEnum(p,a) -#endif - -#endif - -#define IFilterMapper3_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFilterMapper2 methods ***/ \ - STDMETHOD_(HRESULT,CreateCategory)(THIS_ REFCLSID clsidCategory, DWORD dwCategoryMerit, LPCWSTR Description) PURE; \ - STDMETHOD_(HRESULT,UnregisterFilter)(THIS_ const CLSID* pclsidCategory, const OLECHAR* szInstance, REFCLSID Filter) PURE; \ - STDMETHOD_(HRESULT,RegisterFilter)(THIS_ REFCLSID clsidFilter, LPCWSTR Name, IMoniker** ppMoniker, const CLSID* pclsidCategory, const OLECHAR* szInstance, const REGFILTER2* prf2) PURE; \ - STDMETHOD_(HRESULT,EnumMatchingFilters)(THIS_ IEnumMoniker** ppEnum, DWORD dwFlags, BOOL bExactMatch, DWORD dwMerit, BOOL bInputNeeded, DWORD cInputTypes, const GUID* pInputTypes, const REGPINMEDIUM* pMedIn, const CLSID* pPinCategoryIn, BOOL bRender, BOOL bOutputNeeded, DWORD cOutputTypes, const GUID* pOutputTypes, const REGPINMEDIUM* pMedOut, const CLSID* pPinCategoryOut) PURE; \ - /*** IFilterMapper3 methods ***/ \ - STDMETHOD_(HRESULT,GetICreateDevEnum)(THIS_ ICreateDevEnum** ppEnum) PURE; - -HRESULT CALLBACK IFilterMapper3_GetICreateDevEnum_Proxy( - IFilterMapper3* This, - ICreateDevEnum** ppEnum); -void __RPC_STUB IFilterMapper3_GetICreateDevEnum_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IFilterMapper3_INTERFACE_DEFINED__ */ - -typedef enum tagQualityMessageType { - Famine, - Flood -} QualityMessageType; - -typedef struct tagQuality { - QualityMessageType Type; - long Proportion; - REFERENCE_TIME Late; - REFERENCE_TIME TimeStamp; -} Quality; - -typedef IQualityControl *PQUALITYCONTROL; - -/***************************************************************************** - * IQualityControl interface - */ -#ifndef __IQualityControl_INTERFACE_DEFINED__ -#define __IQualityControl_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IQualityControl, 0x56a868a5, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IQualityControl : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Notify( - IBaseFilter* pSelf, - Quality q) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSink( - IQualityControl* piqc) = 0; - -}; -#else -typedef struct IQualityControlVtbl IQualityControlVtbl; -struct IQualityControl { - const IQualityControlVtbl* lpVtbl; -}; -struct IQualityControlVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IQualityControl* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IQualityControl* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IQualityControl* This); - - /*** IQualityControl methods ***/ - HRESULT (STDMETHODCALLTYPE *Notify)( - IQualityControl* This, - IBaseFilter* pSelf, - Quality q); - - HRESULT (STDMETHODCALLTYPE *SetSink)( - IQualityControl* This, - IQualityControl* piqc); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IQualityControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IQualityControl_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IQualityControl_Release(p) (p)->lpVtbl->Release(p) -/*** IQualityControl methods ***/ -#define IQualityControl_Notify(p,a,b) (p)->lpVtbl->Notify(p,a,b) -#define IQualityControl_SetSink(p,a) (p)->lpVtbl->SetSink(p,a) -#endif - -#endif - -#define IQualityControl_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IQualityControl methods ***/ \ - STDMETHOD_(HRESULT,Notify)(THIS_ IBaseFilter* pSelf, Quality q) PURE; \ - STDMETHOD_(HRESULT,SetSink)(THIS_ IQualityControl* piqc) PURE; - -HRESULT CALLBACK IQualityControl_Notify_Proxy( - IQualityControl* This, - IBaseFilter* pSelf, - Quality q); -void __RPC_STUB IQualityControl_Notify_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IQualityControl_SetSink_Proxy( - IQualityControl* This, - IQualityControl* piqc); -void __RPC_STUB IQualityControl_SetSink_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IQualityControl_INTERFACE_DEFINED__ */ - -enum { - CK_NOCOLORKEY = 0x0, - CK_INDEX = 0x1, - CK_RGB = 0x2 -}; - -typedef struct tagCOLORKEY { - DWORD KeyType; - DWORD PaletteIndex; - COLORREF LowColorValue; - COLORREF HighColorValue; -} COLORKEY; - -enum { - ADVISE_NONE = 0x0, - ADVISE_CLIPPING = 0x1, - ADVISE_PALETTE = 0x2, - ADVISE_COLORKEY = 0x4, - ADVISE_POSITION = 0x8, - ADVISE_DISPLAY_CHANGE = 0x10 -}; - -#define ADVISE_ALL (((ADVISE_CLIPPING | ADVISE_PALETTE) | ADVISE_COLORKEY) | ADVISE_POSITION) - -#define ADVISE_ALL2 (ADVISE_ALL | ADVISE_DISPLAY_CHANGE) - -#ifndef __W32API_VERSION -#ifndef _WINGDI_ - - - -#endif /* _WINGDI_ for wine */ -#endif -/***************************************************************************** - * IOverlayNotify interface - */ -#ifndef __IOverlayNotify_INTERFACE_DEFINED__ -#define __IOverlayNotify_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IOverlayNotify, 0x56a868a0, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IOverlayNotify : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE OnPaletteChange( - DWORD dwColors, - const PALETTEENTRY* pPalette) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnClipChange( - const RECT* pSourceRect, - const RECT* pDestinationRect, - const RGNDATA* pRgnData) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnColorKeyChange( - const COLORKEY* pColorKey) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnPositionChange( - const RECT* pSourceRect, - const RECT* pDestinationRect) = 0; - -}; -#else -typedef struct IOverlayNotifyVtbl IOverlayNotifyVtbl; -struct IOverlayNotify { - const IOverlayNotifyVtbl* lpVtbl; -}; -struct IOverlayNotifyVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IOverlayNotify* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IOverlayNotify* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IOverlayNotify* This); - - /*** IOverlayNotify methods ***/ - HRESULT (STDMETHODCALLTYPE *OnPaletteChange)( - IOverlayNotify* This, - DWORD dwColors, - const PALETTEENTRY* pPalette); - - HRESULT (STDMETHODCALLTYPE *OnClipChange)( - IOverlayNotify* This, - const RECT* pSourceRect, - const RECT* pDestinationRect, - const RGNDATA* pRgnData); - - HRESULT (STDMETHODCALLTYPE *OnColorKeyChange)( - IOverlayNotify* This, - const COLORKEY* pColorKey); - - HRESULT (STDMETHODCALLTYPE *OnPositionChange)( - IOverlayNotify* This, - const RECT* pSourceRect, - const RECT* pDestinationRect); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IOverlayNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOverlayNotify_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOverlayNotify_Release(p) (p)->lpVtbl->Release(p) -/*** IOverlayNotify methods ***/ -#define IOverlayNotify_OnPaletteChange(p,a,b) (p)->lpVtbl->OnPaletteChange(p,a,b) -#define IOverlayNotify_OnClipChange(p,a,b,c) (p)->lpVtbl->OnClipChange(p,a,b,c) -#define IOverlayNotify_OnColorKeyChange(p,a) (p)->lpVtbl->OnColorKeyChange(p,a) -#define IOverlayNotify_OnPositionChange(p,a,b) (p)->lpVtbl->OnPositionChange(p,a,b) -#endif - -#endif - -#define IOverlayNotify_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IOverlayNotify methods ***/ \ - STDMETHOD_(HRESULT,OnPaletteChange)(THIS_ DWORD dwColors, const PALETTEENTRY* pPalette) PURE; \ - STDMETHOD_(HRESULT,OnClipChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect, const RGNDATA* pRgnData) PURE; \ - STDMETHOD_(HRESULT,OnColorKeyChange)(THIS_ const COLORKEY* pColorKey) PURE; \ - STDMETHOD_(HRESULT,OnPositionChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect) PURE; - -HRESULT CALLBACK IOverlayNotify_OnPaletteChange_Proxy( - IOverlayNotify* This, - DWORD dwColors, - const PALETTEENTRY* pPalette); -void __RPC_STUB IOverlayNotify_OnPaletteChange_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlayNotify_OnClipChange_Proxy( - IOverlayNotify* This, - const RECT* pSourceRect, - const RECT* pDestinationRect, - const RGNDATA* pRgnData); -void __RPC_STUB IOverlayNotify_OnClipChange_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlayNotify_OnColorKeyChange_Proxy( - IOverlayNotify* This, - const COLORKEY* pColorKey); -void __RPC_STUB IOverlayNotify_OnColorKeyChange_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlayNotify_OnPositionChange_Proxy( - IOverlayNotify* This, - const RECT* pSourceRect, - const RECT* pDestinationRect); -void __RPC_STUB IOverlayNotify_OnPositionChange_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IOverlayNotify_INTERFACE_DEFINED__ */ - -typedef IOverlayNotify *POVERLAYNOTIFY; - -#if 0 -typedef HANDLE HMONITOR; - -#endif /* 0 */ -/***************************************************************************** - * IOverlayNotify2 interface - */ -#ifndef __IOverlayNotify2_INTERFACE_DEFINED__ -#define __IOverlayNotify2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IOverlayNotify2, 0x680efa10, 0xd535, 0x11d1, 0x87,0xc8, 0x00,0xa0,0xc9,0x22,0x31,0x96); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IOverlayNotify2 : public IOverlayNotify -{ - virtual HRESULT STDMETHODCALLTYPE OnDisplayChange( - HMONITOR hMonitor) = 0; - -}; -#else -typedef struct IOverlayNotify2Vtbl IOverlayNotify2Vtbl; -struct IOverlayNotify2 { - const IOverlayNotify2Vtbl* lpVtbl; -}; -struct IOverlayNotify2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IOverlayNotify2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IOverlayNotify2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IOverlayNotify2* This); - - /*** IOverlayNotify methods ***/ - HRESULT (STDMETHODCALLTYPE *OnPaletteChange)( - IOverlayNotify2* This, - DWORD dwColors, - const PALETTEENTRY* pPalette); - - HRESULT (STDMETHODCALLTYPE *OnClipChange)( - IOverlayNotify2* This, - const RECT* pSourceRect, - const RECT* pDestinationRect, - const RGNDATA* pRgnData); - - HRESULT (STDMETHODCALLTYPE *OnColorKeyChange)( - IOverlayNotify2* This, - const COLORKEY* pColorKey); - - HRESULT (STDMETHODCALLTYPE *OnPositionChange)( - IOverlayNotify2* This, - const RECT* pSourceRect, - const RECT* pDestinationRect); - - /*** IOverlayNotify2 methods ***/ - HRESULT (STDMETHODCALLTYPE *OnDisplayChange)( - IOverlayNotify2* This, - HMONITOR hMonitor); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IOverlayNotify2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOverlayNotify2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOverlayNotify2_Release(p) (p)->lpVtbl->Release(p) -/*** IOverlayNotify methods ***/ -#define IOverlayNotify2_OnPaletteChange(p,a,b) (p)->lpVtbl->OnPaletteChange(p,a,b) -#define IOverlayNotify2_OnClipChange(p,a,b,c) (p)->lpVtbl->OnClipChange(p,a,b,c) -#define IOverlayNotify2_OnColorKeyChange(p,a) (p)->lpVtbl->OnColorKeyChange(p,a) -#define IOverlayNotify2_OnPositionChange(p,a,b) (p)->lpVtbl->OnPositionChange(p,a,b) -/*** IOverlayNotify2 methods ***/ -#define IOverlayNotify2_OnDisplayChange(p,a) (p)->lpVtbl->OnDisplayChange(p,a) -#endif - -#endif - -#define IOverlayNotify2_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IOverlayNotify methods ***/ \ - STDMETHOD_(HRESULT,OnPaletteChange)(THIS_ DWORD dwColors, const PALETTEENTRY* pPalette) PURE; \ - STDMETHOD_(HRESULT,OnClipChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect, const RGNDATA* pRgnData) PURE; \ - STDMETHOD_(HRESULT,OnColorKeyChange)(THIS_ const COLORKEY* pColorKey) PURE; \ - STDMETHOD_(HRESULT,OnPositionChange)(THIS_ const RECT* pSourceRect, const RECT* pDestinationRect) PURE; \ - /*** IOverlayNotify2 methods ***/ \ - STDMETHOD_(HRESULT,OnDisplayChange)(THIS_ HMONITOR hMonitor) PURE; - -HRESULT CALLBACK IOverlayNotify2_OnDisplayChange_Proxy( - IOverlayNotify2* This, - HMONITOR hMonitor); -void __RPC_STUB IOverlayNotify2_OnDisplayChange_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IOverlayNotify2_INTERFACE_DEFINED__ */ - -typedef IOverlayNotify2 *POVERLAYNOTIFY2; - -/***************************************************************************** - * IOverlay interface - */ -#ifndef __IOverlay_INTERFACE_DEFINED__ -#define __IOverlay_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IOverlay, 0x56a868a1, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IOverlay : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE GetPalette( - DWORD* pdwColors, - PALETTEENTRY** ppPalette) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetPalette( - DWORD dwColors, - PALETTEENTRY* pPalette) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDefaultColorKey( - COLORKEY* pColorKey) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetColorKey( - COLORKEY* pColorKey) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetColorKey( - COLORKEY* pColorKey) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetWindowHandle( - HWND* pHwnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetClipList( - RECT* pSourceRect, - RECT* pDestinationRect, - RGNDATA** ppRgnData) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetVideoPosition( - RECT* pSourceRect, - RECT* pDestinationRect) = 0; - - virtual HRESULT STDMETHODCALLTYPE Advise( - IOverlayNotify* pOverlayNotify, - DWORD dwInterests) = 0; - - virtual HRESULT STDMETHODCALLTYPE Unadvise( - ) = 0; - -}; -#else -typedef struct IOverlayVtbl IOverlayVtbl; -struct IOverlay { - const IOverlayVtbl* lpVtbl; -}; -struct IOverlayVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IOverlay* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IOverlay* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IOverlay* This); - - /*** IOverlay methods ***/ - HRESULT (STDMETHODCALLTYPE *GetPalette)( - IOverlay* This, - DWORD* pdwColors, - PALETTEENTRY** ppPalette); - - HRESULT (STDMETHODCALLTYPE *SetPalette)( - IOverlay* This, - DWORD dwColors, - PALETTEENTRY* pPalette); - - HRESULT (STDMETHODCALLTYPE *GetDefaultColorKey)( - IOverlay* This, - COLORKEY* pColorKey); - - HRESULT (STDMETHODCALLTYPE *GetColorKey)( - IOverlay* This, - COLORKEY* pColorKey); - - HRESULT (STDMETHODCALLTYPE *SetColorKey)( - IOverlay* This, - COLORKEY* pColorKey); - - HRESULT (STDMETHODCALLTYPE *GetWindowHandle)( - IOverlay* This, - HWND* pHwnd); - - HRESULT (STDMETHODCALLTYPE *GetClipList)( - IOverlay* This, - RECT* pSourceRect, - RECT* pDestinationRect, - RGNDATA** ppRgnData); - - HRESULT (STDMETHODCALLTYPE *GetVideoPosition)( - IOverlay* This, - RECT* pSourceRect, - RECT* pDestinationRect); - - HRESULT (STDMETHODCALLTYPE *Advise)( - IOverlay* This, - IOverlayNotify* pOverlayNotify, - DWORD dwInterests); - - HRESULT (STDMETHODCALLTYPE *Unadvise)( - IOverlay* This); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IOverlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOverlay_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOverlay_Release(p) (p)->lpVtbl->Release(p) -/*** IOverlay methods ***/ -#define IOverlay_GetPalette(p,a,b) (p)->lpVtbl->GetPalette(p,a,b) -#define IOverlay_SetPalette(p,a,b) (p)->lpVtbl->SetPalette(p,a,b) -#define IOverlay_GetDefaultColorKey(p,a) (p)->lpVtbl->GetDefaultColorKey(p,a) -#define IOverlay_GetColorKey(p,a) (p)->lpVtbl->GetColorKey(p,a) -#define IOverlay_SetColorKey(p,a) (p)->lpVtbl->SetColorKey(p,a) -#define IOverlay_GetWindowHandle(p,a) (p)->lpVtbl->GetWindowHandle(p,a) -#define IOverlay_GetClipList(p,a,b,c) (p)->lpVtbl->GetClipList(p,a,b,c) -#define IOverlay_GetVideoPosition(p,a,b) (p)->lpVtbl->GetVideoPosition(p,a,b) -#define IOverlay_Advise(p,a,b) (p)->lpVtbl->Advise(p,a,b) -#define IOverlay_Unadvise(p) (p)->lpVtbl->Unadvise(p) -#endif - -#endif - -#define IOverlay_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IOverlay methods ***/ \ - STDMETHOD_(HRESULT,GetPalette)(THIS_ DWORD* pdwColors, PALETTEENTRY** ppPalette) PURE; \ - STDMETHOD_(HRESULT,SetPalette)(THIS_ DWORD dwColors, PALETTEENTRY* pPalette) PURE; \ - STDMETHOD_(HRESULT,GetDefaultColorKey)(THIS_ COLORKEY* pColorKey) PURE; \ - STDMETHOD_(HRESULT,GetColorKey)(THIS_ COLORKEY* pColorKey) PURE; \ - STDMETHOD_(HRESULT,SetColorKey)(THIS_ COLORKEY* pColorKey) PURE; \ - STDMETHOD_(HRESULT,GetWindowHandle)(THIS_ HWND* pHwnd) PURE; \ - STDMETHOD_(HRESULT,GetClipList)(THIS_ RECT* pSourceRect, RECT* pDestinationRect, RGNDATA** ppRgnData) PURE; \ - STDMETHOD_(HRESULT,GetVideoPosition)(THIS_ RECT* pSourceRect, RECT* pDestinationRect) PURE; \ - STDMETHOD_(HRESULT,Advise)(THIS_ IOverlayNotify* pOverlayNotify, DWORD dwInterests) PURE; \ - STDMETHOD_(HRESULT,Unadvise)(THIS) PURE; - -HRESULT CALLBACK IOverlay_GetPalette_Proxy( - IOverlay* This, - DWORD* pdwColors, - PALETTEENTRY** ppPalette); -void __RPC_STUB IOverlay_GetPalette_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlay_SetPalette_Proxy( - IOverlay* This, - DWORD dwColors, - PALETTEENTRY* pPalette); -void __RPC_STUB IOverlay_SetPalette_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlay_GetDefaultColorKey_Proxy( - IOverlay* This, - COLORKEY* pColorKey); -void __RPC_STUB IOverlay_GetDefaultColorKey_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlay_GetColorKey_Proxy( - IOverlay* This, - COLORKEY* pColorKey); -void __RPC_STUB IOverlay_GetColorKey_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlay_SetColorKey_Proxy( - IOverlay* This, - COLORKEY* pColorKey); -void __RPC_STUB IOverlay_SetColorKey_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlay_GetWindowHandle_Proxy( - IOverlay* This, - HWND* pHwnd); -void __RPC_STUB IOverlay_GetWindowHandle_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlay_GetClipList_Proxy( - IOverlay* This, - RECT* pSourceRect, - RECT* pDestinationRect, - RGNDATA** ppRgnData); -void __RPC_STUB IOverlay_GetClipList_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlay_GetVideoPosition_Proxy( - IOverlay* This, - RECT* pSourceRect, - RECT* pDestinationRect); -void __RPC_STUB IOverlay_GetVideoPosition_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlay_Advise_Proxy( - IOverlay* This, - IOverlayNotify* pOverlayNotify, - DWORD dwInterests); -void __RPC_STUB IOverlay_Advise_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOverlay_Unadvise_Proxy( - IOverlay* This); -void __RPC_STUB IOverlay_Unadvise_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IOverlay_INTERFACE_DEFINED__ */ - -typedef IOverlay *POVERLAY; - -/***************************************************************************** - * IMediaEventSink interface - */ -#ifndef __IMediaEventSink_INTERFACE_DEFINED__ -#define __IMediaEventSink_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMediaEventSink, 0x56a868a2, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMediaEventSink : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Notify( - long EventCode, - LONG_PTR EventParam1, - LONG_PTR EventParam2) = 0; - -}; -#else -typedef struct IMediaEventSinkVtbl IMediaEventSinkVtbl; -struct IMediaEventSink { - const IMediaEventSinkVtbl* lpVtbl; -}; -struct IMediaEventSinkVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMediaEventSink* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMediaEventSink* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMediaEventSink* This); - - /*** IMediaEventSink methods ***/ - HRESULT (STDMETHODCALLTYPE *Notify)( - IMediaEventSink* This, - long EventCode, - LONG_PTR EventParam1, - LONG_PTR EventParam2); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMediaEventSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMediaEventSink_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMediaEventSink_Release(p) (p)->lpVtbl->Release(p) -/*** IMediaEventSink methods ***/ -#define IMediaEventSink_Notify(p,a,b,c) (p)->lpVtbl->Notify(p,a,b,c) -#endif - -#endif - -#define IMediaEventSink_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IMediaEventSink methods ***/ \ - STDMETHOD_(HRESULT,Notify)(THIS_ long EventCode, LONG_PTR EventParam1, LONG_PTR EventParam2) PURE; - -HRESULT CALLBACK IMediaEventSink_Notify_Proxy( - IMediaEventSink* This, - long EventCode, - LONG_PTR EventParam1, - LONG_PTR EventParam2); -void __RPC_STUB IMediaEventSink_Notify_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMediaEventSink_INTERFACE_DEFINED__ */ - -typedef IMediaEventSink *PMEDIAEVENTSINK; - -/***************************************************************************** - * IFileSourceFilter interface - */ -#ifndef __IFileSourceFilter_INTERFACE_DEFINED__ -#define __IFileSourceFilter_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IFileSourceFilter, 0x56a868a6, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IFileSourceFilter : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Load( - LPCOLESTR pszFileName, - const AM_MEDIA_TYPE* pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurFile( - LPOLESTR* ppszFileName, - AM_MEDIA_TYPE* pmt) = 0; - -}; -#else -typedef struct IFileSourceFilterVtbl IFileSourceFilterVtbl; -struct IFileSourceFilter { - const IFileSourceFilterVtbl* lpVtbl; -}; -struct IFileSourceFilterVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IFileSourceFilter* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IFileSourceFilter* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IFileSourceFilter* This); - - /*** IFileSourceFilter methods ***/ - HRESULT (STDMETHODCALLTYPE *Load)( - IFileSourceFilter* This, - LPCOLESTR pszFileName, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *GetCurFile)( - IFileSourceFilter* This, - LPOLESTR* ppszFileName, - AM_MEDIA_TYPE* pmt); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IFileSourceFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFileSourceFilter_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFileSourceFilter_Release(p) (p)->lpVtbl->Release(p) -/*** IFileSourceFilter methods ***/ -#define IFileSourceFilter_Load(p,a,b) (p)->lpVtbl->Load(p,a,b) -#define IFileSourceFilter_GetCurFile(p,a,b) (p)->lpVtbl->GetCurFile(p,a,b) -#endif - -#endif - -#define IFileSourceFilter_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFileSourceFilter methods ***/ \ - STDMETHOD_(HRESULT,Load)(THIS_ LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt) PURE; - -HRESULT CALLBACK IFileSourceFilter_Load_Proxy( - IFileSourceFilter* This, - LPCOLESTR pszFileName, - const AM_MEDIA_TYPE* pmt); -void __RPC_STUB IFileSourceFilter_Load_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFileSourceFilter_GetCurFile_Proxy( - IFileSourceFilter* This, - LPOLESTR* ppszFileName, - AM_MEDIA_TYPE* pmt); -void __RPC_STUB IFileSourceFilter_GetCurFile_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IFileSourceFilter_INTERFACE_DEFINED__ */ - -typedef IFileSourceFilter *PFILTERFILESOURCE; - -/***************************************************************************** - * IFileSinkFilter interface - */ -#ifndef __IFileSinkFilter_INTERFACE_DEFINED__ -#define __IFileSinkFilter_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IFileSinkFilter, 0xa2104830, 0x7c70, 0x11cf, 0x8b,0xce, 0x00,0xaa,0x00,0xa3,0xf1,0xa6); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IFileSinkFilter : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE SetFileName( - LPCOLESTR pszFileName, - const AM_MEDIA_TYPE* pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurFile( - LPOLESTR* ppszFileName, - AM_MEDIA_TYPE* pmt) = 0; - -}; -#else -typedef struct IFileSinkFilterVtbl IFileSinkFilterVtbl; -struct IFileSinkFilter { - const IFileSinkFilterVtbl* lpVtbl; -}; -struct IFileSinkFilterVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IFileSinkFilter* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IFileSinkFilter* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IFileSinkFilter* This); - - /*** IFileSinkFilter methods ***/ - HRESULT (STDMETHODCALLTYPE *SetFileName)( - IFileSinkFilter* This, - LPCOLESTR pszFileName, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *GetCurFile)( - IFileSinkFilter* This, - LPOLESTR* ppszFileName, - AM_MEDIA_TYPE* pmt); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IFileSinkFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFileSinkFilter_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFileSinkFilter_Release(p) (p)->lpVtbl->Release(p) -/*** IFileSinkFilter methods ***/ -#define IFileSinkFilter_SetFileName(p,a,b) (p)->lpVtbl->SetFileName(p,a,b) -#define IFileSinkFilter_GetCurFile(p,a,b) (p)->lpVtbl->GetCurFile(p,a,b) -#endif - -#endif - -#define IFileSinkFilter_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFileSinkFilter methods ***/ \ - STDMETHOD_(HRESULT,SetFileName)(THIS_ LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt) PURE; - -HRESULT CALLBACK IFileSinkFilter_SetFileName_Proxy( - IFileSinkFilter* This, - LPCOLESTR pszFileName, - const AM_MEDIA_TYPE* pmt); -void __RPC_STUB IFileSinkFilter_SetFileName_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFileSinkFilter_GetCurFile_Proxy( - IFileSinkFilter* This, - LPOLESTR* ppszFileName, - AM_MEDIA_TYPE* pmt); -void __RPC_STUB IFileSinkFilter_GetCurFile_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IFileSinkFilter_INTERFACE_DEFINED__ */ - -typedef IFileSinkFilter *PFILTERFILESINK; - -/***************************************************************************** - * IFileSinkFilter2 interface - */ -#ifndef __IFileSinkFilter2_INTERFACE_DEFINED__ -#define __IFileSinkFilter2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IFileSinkFilter2, 0x00855b90, 0xce1b, 0x11d0, 0xbd,0x4f, 0x00,0xa0,0xc9,0x11,0xce,0x86); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IFileSinkFilter2 : public IFileSinkFilter -{ - virtual HRESULT STDMETHODCALLTYPE SetMode( - DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMode( - DWORD* pdwFlags) = 0; - -}; -#else -typedef struct IFileSinkFilter2Vtbl IFileSinkFilter2Vtbl; -struct IFileSinkFilter2 { - const IFileSinkFilter2Vtbl* lpVtbl; -}; -struct IFileSinkFilter2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IFileSinkFilter2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IFileSinkFilter2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IFileSinkFilter2* This); - - /*** IFileSinkFilter methods ***/ - HRESULT (STDMETHODCALLTYPE *SetFileName)( - IFileSinkFilter2* This, - LPCOLESTR pszFileName, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *GetCurFile)( - IFileSinkFilter2* This, - LPOLESTR* ppszFileName, - AM_MEDIA_TYPE* pmt); - - /*** IFileSinkFilter2 methods ***/ - HRESULT (STDMETHODCALLTYPE *SetMode)( - IFileSinkFilter2* This, - DWORD dwFlags); - - HRESULT (STDMETHODCALLTYPE *GetMode)( - IFileSinkFilter2* This, - DWORD* pdwFlags); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IFileSinkFilter2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFileSinkFilter2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFileSinkFilter2_Release(p) (p)->lpVtbl->Release(p) -/*** IFileSinkFilter methods ***/ -#define IFileSinkFilter2_SetFileName(p,a,b) (p)->lpVtbl->SetFileName(p,a,b) -#define IFileSinkFilter2_GetCurFile(p,a,b) (p)->lpVtbl->GetCurFile(p,a,b) -/*** IFileSinkFilter2 methods ***/ -#define IFileSinkFilter2_SetMode(p,a) (p)->lpVtbl->SetMode(p,a) -#define IFileSinkFilter2_GetMode(p,a) (p)->lpVtbl->GetMode(p,a) -#endif - -#endif - -#define IFileSinkFilter2_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFileSinkFilter methods ***/ \ - STDMETHOD_(HRESULT,SetFileName)(THIS_ LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt) PURE; \ - /*** IFileSinkFilter2 methods ***/ \ - STDMETHOD_(HRESULT,SetMode)(THIS_ DWORD dwFlags) PURE; \ - STDMETHOD_(HRESULT,GetMode)(THIS_ DWORD* pdwFlags) PURE; - -HRESULT CALLBACK IFileSinkFilter2_SetMode_Proxy( - IFileSinkFilter2* This, - DWORD dwFlags); -void __RPC_STUB IFileSinkFilter2_SetMode_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFileSinkFilter2_GetMode_Proxy( - IFileSinkFilter2* This, - DWORD* pdwFlags); -void __RPC_STUB IFileSinkFilter2_GetMode_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IFileSinkFilter2_INTERFACE_DEFINED__ */ - -typedef IFileSinkFilter2 *PFILESINKFILTER2; - -typedef enum { - AM_FILE_OVERWRITE = 0x1 -} AM_FILESINK_FLAGS; - -/***************************************************************************** - * IGraphBuilder interface - */ -#ifndef __IGraphBuilder_INTERFACE_DEFINED__ -#define __IGraphBuilder_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IGraphBuilder, 0x56a868a9, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IGraphBuilder : public IFilterGraph -{ - virtual HRESULT STDMETHODCALLTYPE Connect( - IPin* ppinOut, - IPin* ppinIn) = 0; - - virtual HRESULT STDMETHODCALLTYPE Render( - IPin* ppinOut) = 0; - - virtual HRESULT STDMETHODCALLTYPE RenderFile( - LPCWSTR lpcwstrFile, - LPCWSTR lpcwstrPlayList) = 0; - - virtual HRESULT STDMETHODCALLTYPE AddSourceFilter( - LPCWSTR lpcwstrFileName, - LPCWSTR lpcwstrFilterName, - IBaseFilter** ppFilter) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetLogFile( - DWORD_PTR hFile) = 0; - - virtual HRESULT STDMETHODCALLTYPE Abort( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE ShouldOperationContinue( - ) = 0; - -}; -#else -typedef struct IGraphBuilderVtbl IGraphBuilderVtbl; -struct IGraphBuilder { - const IGraphBuilderVtbl* lpVtbl; -}; -struct IGraphBuilderVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IGraphBuilder* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IGraphBuilder* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IGraphBuilder* This); - - /*** IFilterGraph methods ***/ - HRESULT (STDMETHODCALLTYPE *AddFilter)( - IGraphBuilder* This, - IBaseFilter* pFilter, - LPCWSTR pName); - - HRESULT (STDMETHODCALLTYPE *RemoveFilter)( - IGraphBuilder* This, - IBaseFilter* pFilter); - - HRESULT (STDMETHODCALLTYPE *EnumFilters)( - IGraphBuilder* This, - IEnumFilters** ppEnum); - - HRESULT (STDMETHODCALLTYPE *FindFilterByName)( - IGraphBuilder* This, - LPCWSTR pName, - IBaseFilter** ppFilter); - - HRESULT (STDMETHODCALLTYPE *ConnectDirect)( - IGraphBuilder* This, - IPin* ppinOut, - IPin* ppinIn, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *Reconnect)( - IGraphBuilder* This, - IPin* ppin); - - HRESULT (STDMETHODCALLTYPE *Disconnect)( - IGraphBuilder* This, - IPin* ppin); - - HRESULT (STDMETHODCALLTYPE *SetDefaultSyncSource)( - IGraphBuilder* This); - - /*** IGraphBuilder methods ***/ - HRESULT (STDMETHODCALLTYPE *Connect)( - IGraphBuilder* This, - IPin* ppinOut, - IPin* ppinIn); - - HRESULT (STDMETHODCALLTYPE *Render)( - IGraphBuilder* This, - IPin* ppinOut); - - HRESULT (STDMETHODCALLTYPE *RenderFile)( - IGraphBuilder* This, - LPCWSTR lpcwstrFile, - LPCWSTR lpcwstrPlayList); - - HRESULT (STDMETHODCALLTYPE *AddSourceFilter)( - IGraphBuilder* This, - LPCWSTR lpcwstrFileName, - LPCWSTR lpcwstrFilterName, - IBaseFilter** ppFilter); - - HRESULT (STDMETHODCALLTYPE *SetLogFile)( - IGraphBuilder* This, - DWORD_PTR hFile); - - HRESULT (STDMETHODCALLTYPE *Abort)( - IGraphBuilder* This); - - HRESULT (STDMETHODCALLTYPE *ShouldOperationContinue)( - IGraphBuilder* This); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IGraphBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IGraphBuilder_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IGraphBuilder_Release(p) (p)->lpVtbl->Release(p) -/*** IFilterGraph methods ***/ -#define IGraphBuilder_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b) -#define IGraphBuilder_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a) -#define IGraphBuilder_EnumFilters(p,a) (p)->lpVtbl->EnumFilters(p,a) -#define IGraphBuilder_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b) -#define IGraphBuilder_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c) -#define IGraphBuilder_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a) -#define IGraphBuilder_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a) -#define IGraphBuilder_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p) -/*** IGraphBuilder methods ***/ -#define IGraphBuilder_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b) -#define IGraphBuilder_Render(p,a) (p)->lpVtbl->Render(p,a) -#define IGraphBuilder_RenderFile(p,a,b) (p)->lpVtbl->RenderFile(p,a,b) -#define IGraphBuilder_AddSourceFilter(p,a,b,c) (p)->lpVtbl->AddSourceFilter(p,a,b,c) -#define IGraphBuilder_SetLogFile(p,a) (p)->lpVtbl->SetLogFile(p,a) -#define IGraphBuilder_Abort(p) (p)->lpVtbl->Abort(p) -#define IGraphBuilder_ShouldOperationContinue(p) (p)->lpVtbl->ShouldOperationContinue(p) -#endif - -#endif - -#define IGraphBuilder_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFilterGraph methods ***/ \ - STDMETHOD_(HRESULT,AddFilter)(THIS_ IBaseFilter* pFilter, LPCWSTR pName) PURE; \ - STDMETHOD_(HRESULT,RemoveFilter)(THIS_ IBaseFilter* pFilter) PURE; \ - STDMETHOD_(HRESULT,EnumFilters)(THIS_ IEnumFilters** ppEnum) PURE; \ - STDMETHOD_(HRESULT,FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter** ppFilter) PURE; \ - STDMETHOD_(HRESULT,ConnectDirect)(THIS_ IPin* ppinOut, IPin* ppinIn, const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* ppin) PURE; \ - STDMETHOD_(HRESULT,Disconnect)(THIS_ IPin* ppin) PURE; \ - STDMETHOD_(HRESULT,SetDefaultSyncSource)(THIS) PURE; \ - /*** IGraphBuilder methods ***/ \ - STDMETHOD_(HRESULT,Connect)(THIS_ IPin* ppinOut, IPin* ppinIn) PURE; \ - STDMETHOD_(HRESULT,Render)(THIS_ IPin* ppinOut) PURE; \ - STDMETHOD_(HRESULT,RenderFile)(THIS_ LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList) PURE; \ - STDMETHOD_(HRESULT,AddSourceFilter)(THIS_ LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter) PURE; \ - STDMETHOD_(HRESULT,SetLogFile)(THIS_ DWORD_PTR hFile) PURE; \ - STDMETHOD_(HRESULT,Abort)(THIS) PURE; \ - STDMETHOD_(HRESULT,ShouldOperationContinue)(THIS) PURE; - -HRESULT CALLBACK IGraphBuilder_Connect_Proxy( - IGraphBuilder* This, - IPin* ppinOut, - IPin* ppinIn); -void __RPC_STUB IGraphBuilder_Connect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphBuilder_Render_Proxy( - IGraphBuilder* This, - IPin* ppinOut); -void __RPC_STUB IGraphBuilder_Render_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphBuilder_RenderFile_Proxy( - IGraphBuilder* This, - LPCWSTR lpcwstrFile, - LPCWSTR lpcwstrPlayList); -void __RPC_STUB IGraphBuilder_RenderFile_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphBuilder_AddSourceFilter_Proxy( - IGraphBuilder* This, - LPCWSTR lpcwstrFileName, - LPCWSTR lpcwstrFilterName, - IBaseFilter** ppFilter); -void __RPC_STUB IGraphBuilder_AddSourceFilter_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphBuilder_SetLogFile_Proxy( - IGraphBuilder* This, - DWORD_PTR hFile); -void __RPC_STUB IGraphBuilder_SetLogFile_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphBuilder_Abort_Proxy( - IGraphBuilder* This); -void __RPC_STUB IGraphBuilder_Abort_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphBuilder_ShouldOperationContinue_Proxy( - IGraphBuilder* This); -void __RPC_STUB IGraphBuilder_ShouldOperationContinue_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IGraphBuilder_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * ICaptureGraphBuilder interface - */ -#ifndef __ICaptureGraphBuilder_INTERFACE_DEFINED__ -#define __ICaptureGraphBuilder_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ICaptureGraphBuilder, 0xbf87b6e0, 0x8c27, 0x11d0, 0xb3,0xf0, 0x00,0xaa,0x00,0x37,0x61,0xc5); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct ICaptureGraphBuilder : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE SetFiltergraph( - IGraphBuilder* pfg) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( - IGraphBuilder** ppfg) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOutputFileName( - const GUID* pType, - LPCOLESTR lpstrFile, - IBaseFilter** ppf, - IFileSinkFilter** ppSink) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindInterface( - const GUID* pCategory, - IBaseFilter* pf, - REFIID riid, - void** ppint) = 0; - - virtual HRESULT STDMETHODCALLTYPE RenderStream( - const GUID* pCategory, - IUnknown* pSource, - IBaseFilter* pfCompressor, - IBaseFilter* pfRenderer) = 0; - - virtual HRESULT STDMETHODCALLTYPE ControlStream( - const GUID* pCategory, - IBaseFilter* pFilter, - REFERENCE_TIME* pstart, - REFERENCE_TIME* pstop, - WORD wStartCookie, - WORD wStopCookie) = 0; - - virtual HRESULT STDMETHODCALLTYPE AllocCapFile( - LPCOLESTR lpstr, - DWORDLONG dwlSize) = 0; - - virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile( - LPOLESTR lpwstrOld, - LPOLESTR lpwstrNew, - int fAllowEscAbort, - IAMCopyCaptureFileProgress* pCallback) = 0; - -}; -#else -typedef struct ICaptureGraphBuilderVtbl ICaptureGraphBuilderVtbl; -struct ICaptureGraphBuilder { - const ICaptureGraphBuilderVtbl* lpVtbl; -}; -struct ICaptureGraphBuilderVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ICaptureGraphBuilder* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ICaptureGraphBuilder* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ICaptureGraphBuilder* This); - - /*** ICaptureGraphBuilder methods ***/ - HRESULT (STDMETHODCALLTYPE *SetFiltergraph)( - ICaptureGraphBuilder* This, - IGraphBuilder* pfg); - - HRESULT (STDMETHODCALLTYPE *GetFiltergraph)( - ICaptureGraphBuilder* This, - IGraphBuilder** ppfg); - - HRESULT (STDMETHODCALLTYPE *SetOutputFileName)( - ICaptureGraphBuilder* This, - const GUID* pType, - LPCOLESTR lpstrFile, - IBaseFilter** ppf, - IFileSinkFilter** ppSink); - - HRESULT (STDMETHODCALLTYPE *FindInterface)( - ICaptureGraphBuilder* This, - const GUID* pCategory, - IBaseFilter* pf, - REFIID riid, - void** ppint); - - HRESULT (STDMETHODCALLTYPE *RenderStream)( - ICaptureGraphBuilder* This, - const GUID* pCategory, - IUnknown* pSource, - IBaseFilter* pfCompressor, - IBaseFilter* pfRenderer); - - HRESULT (STDMETHODCALLTYPE *ControlStream)( - ICaptureGraphBuilder* This, - const GUID* pCategory, - IBaseFilter* pFilter, - REFERENCE_TIME* pstart, - REFERENCE_TIME* pstop, - WORD wStartCookie, - WORD wStopCookie); - - HRESULT (STDMETHODCALLTYPE *AllocCapFile)( - ICaptureGraphBuilder* This, - LPCOLESTR lpstr, - DWORDLONG dwlSize); - - HRESULT (STDMETHODCALLTYPE *CopyCaptureFile)( - ICaptureGraphBuilder* This, - LPOLESTR lpwstrOld, - LPOLESTR lpwstrNew, - int fAllowEscAbort, - IAMCopyCaptureFileProgress* pCallback); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ICaptureGraphBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICaptureGraphBuilder_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICaptureGraphBuilder_Release(p) (p)->lpVtbl->Release(p) -/*** ICaptureGraphBuilder methods ***/ -#define ICaptureGraphBuilder_SetFiltergraph(p,a) (p)->lpVtbl->SetFiltergraph(p,a) -#define ICaptureGraphBuilder_GetFiltergraph(p,a) (p)->lpVtbl->GetFiltergraph(p,a) -#define ICaptureGraphBuilder_SetOutputFileName(p,a,b,c,d) (p)->lpVtbl->SetOutputFileName(p,a,b,c,d) -#define ICaptureGraphBuilder_FindInterface(p,a,b,c,d) (p)->lpVtbl->FindInterface(p,a,b,c,d) -#define ICaptureGraphBuilder_RenderStream(p,a,b,c,d) (p)->lpVtbl->RenderStream(p,a,b,c,d) -#define ICaptureGraphBuilder_ControlStream(p,a,b,c,d,e,f) (p)->lpVtbl->ControlStream(p,a,b,c,d,e,f) -#define ICaptureGraphBuilder_AllocCapFile(p,a,b) (p)->lpVtbl->AllocCapFile(p,a,b) -#define ICaptureGraphBuilder_CopyCaptureFile(p,a,b,c,d) (p)->lpVtbl->CopyCaptureFile(p,a,b,c,d) -#endif - -#endif - -#define ICaptureGraphBuilder_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** ICaptureGraphBuilder methods ***/ \ - STDMETHOD_(HRESULT,SetFiltergraph)(THIS_ IGraphBuilder* pfg) PURE; \ - STDMETHOD_(HRESULT,GetFiltergraph)(THIS_ IGraphBuilder** ppfg) PURE; \ - STDMETHOD_(HRESULT,SetOutputFileName)(THIS_ const GUID* pType, LPCOLESTR lpstrFile, IBaseFilter** ppf, IFileSinkFilter** ppSink) PURE; \ - STDMETHOD_(HRESULT,FindInterface)(THIS_ const GUID* pCategory, IBaseFilter* pf, REFIID riid, void** ppint) PURE; \ - STDMETHOD_(HRESULT,RenderStream)(THIS_ const GUID* pCategory, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer) PURE; \ - STDMETHOD_(HRESULT,ControlStream)(THIS_ const GUID* pCategory, IBaseFilter* pFilter, REFERENCE_TIME* pstart, REFERENCE_TIME* pstop, WORD wStartCookie, WORD wStopCookie) PURE; \ - STDMETHOD_(HRESULT,AllocCapFile)(THIS_ LPCOLESTR lpstr, DWORDLONG dwlSize) PURE; \ - STDMETHOD_(HRESULT,CopyCaptureFile)(THIS_ LPOLESTR lpwstrOld, LPOLESTR lpwstrNew, int fAllowEscAbort, IAMCopyCaptureFileProgress* pCallback) PURE; - -HRESULT CALLBACK ICaptureGraphBuilder_SetFiltergraph_Proxy( - ICaptureGraphBuilder* This, - IGraphBuilder* pfg); -void __RPC_STUB ICaptureGraphBuilder_SetFiltergraph_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder_GetFiltergraph_Proxy( - ICaptureGraphBuilder* This, - IGraphBuilder** ppfg); -void __RPC_STUB ICaptureGraphBuilder_GetFiltergraph_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder_SetOutputFileName_Proxy( - ICaptureGraphBuilder* This, - const GUID* pType, - LPCOLESTR lpstrFile, - IBaseFilter** ppf, - IFileSinkFilter** ppSink); -void __RPC_STUB ICaptureGraphBuilder_SetOutputFileName_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder_RemoteFindInterface_Proxy( - ICaptureGraphBuilder* This, - const GUID* pCategory, - IBaseFilter* pf, - REFIID riid, - IUnknown** ppint); -void __RPC_STUB ICaptureGraphBuilder_RemoteFindInterface_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder_FindInterface_Proxy( - ICaptureGraphBuilder* This, - const GUID* pCategory, - IBaseFilter* pf, - REFIID riid, - void** ppint); -HRESULT __RPC_STUB ICaptureGraphBuilder_FindInterface_Stub( - ICaptureGraphBuilder* This, - const GUID* pCategory, - IBaseFilter* pf, - REFIID riid, - IUnknown** ppint); -HRESULT CALLBACK ICaptureGraphBuilder_RenderStream_Proxy( - ICaptureGraphBuilder* This, - const GUID* pCategory, - IUnknown* pSource, - IBaseFilter* pfCompressor, - IBaseFilter* pfRenderer); -void __RPC_STUB ICaptureGraphBuilder_RenderStream_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder_ControlStream_Proxy( - ICaptureGraphBuilder* This, - const GUID* pCategory, - IBaseFilter* pFilter, - REFERENCE_TIME* pstart, - REFERENCE_TIME* pstop, - WORD wStartCookie, - WORD wStopCookie); -void __RPC_STUB ICaptureGraphBuilder_ControlStream_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder_AllocCapFile_Proxy( - ICaptureGraphBuilder* This, - LPCOLESTR lpstr, - DWORDLONG dwlSize); -void __RPC_STUB ICaptureGraphBuilder_AllocCapFile_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder_CopyCaptureFile_Proxy( - ICaptureGraphBuilder* This, - LPOLESTR lpwstrOld, - LPOLESTR lpwstrNew, - int fAllowEscAbort, - IAMCopyCaptureFileProgress* pCallback); -void __RPC_STUB ICaptureGraphBuilder_CopyCaptureFile_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ICaptureGraphBuilder_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * IAMCopyCaptureFileProgress interface - */ -#ifndef __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ -#define __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IAMCopyCaptureFileProgress, 0x670d1d20, 0xa068, 0x11d0, 0xb3,0xf0, 0x00,0xaa,0x00,0x37,0x61,0xc5); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IAMCopyCaptureFileProgress : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Progress( - int iProgress) = 0; - -}; -#else -typedef struct IAMCopyCaptureFileProgressVtbl IAMCopyCaptureFileProgressVtbl; -struct IAMCopyCaptureFileProgress { - const IAMCopyCaptureFileProgressVtbl* lpVtbl; -}; -struct IAMCopyCaptureFileProgressVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IAMCopyCaptureFileProgress* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IAMCopyCaptureFileProgress* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IAMCopyCaptureFileProgress* This); - - /*** IAMCopyCaptureFileProgress methods ***/ - HRESULT (STDMETHODCALLTYPE *Progress)( - IAMCopyCaptureFileProgress* This, - int iProgress); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IAMCopyCaptureFileProgress_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IAMCopyCaptureFileProgress_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IAMCopyCaptureFileProgress_Release(p) (p)->lpVtbl->Release(p) -/*** IAMCopyCaptureFileProgress methods ***/ -#define IAMCopyCaptureFileProgress_Progress(p,a) (p)->lpVtbl->Progress(p,a) -#endif - -#endif - -#define IAMCopyCaptureFileProgress_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IAMCopyCaptureFileProgress methods ***/ \ - STDMETHOD_(HRESULT,Progress)(THIS_ int iProgress) PURE; - -HRESULT CALLBACK IAMCopyCaptureFileProgress_Progress_Proxy( - IAMCopyCaptureFileProgress* This, - int iProgress); -void __RPC_STUB IAMCopyCaptureFileProgress_Progress_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IAMCopyCaptureFileProgress_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * ICaptureGraphBuilder2 interface - */ -#ifndef __ICaptureGraphBuilder2_INTERFACE_DEFINED__ -#define __ICaptureGraphBuilder2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ICaptureGraphBuilder2, 0x93e5a4e0, 0x2d50, 0x11d2, 0xab,0xfa, 0x00,0xa0,0xc9,0xc6,0xe3,0x8d); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct ICaptureGraphBuilder2 : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE SetFiltergraph( - IGraphBuilder* pfg) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFiltergraph( - IGraphBuilder** ppfg) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOutputFileName( - const GUID* pType, - LPCOLESTR lpstrFile, - IBaseFilter** ppf, - IFileSinkFilter** ppSink) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindInterface( - const GUID* pCategory, - const GUID* pType, - IBaseFilter* pf, - REFIID riid, - void** ppint) = 0; - - virtual HRESULT STDMETHODCALLTYPE RenderStream( - const GUID* pCategory, - const GUID* pType, - IUnknown* pSource, - IBaseFilter* pfCompressor, - IBaseFilter* pfRenderer) = 0; - - virtual HRESULT STDMETHODCALLTYPE ControlStream( - const GUID* pCategory, - const GUID* pType, - IBaseFilter* pFilter, - REFERENCE_TIME* pstart, - REFERENCE_TIME* pstop, - WORD wStartCookie, - WORD wStopCookie) = 0; - - virtual HRESULT STDMETHODCALLTYPE AllocCapFile( - LPCOLESTR lpstr, - DWORDLONG dwlSize) = 0; - - virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile( - LPOLESTR lpwstrOld, - LPOLESTR lpwstrNew, - int fAllowEscAbort, - IAMCopyCaptureFileProgress* pCallback) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindPin( - IUnknown* pSource, - PIN_DIRECTION pindir, - const GUID* pCategory, - const GUID* pType, - BOOL fUnconnected, - int num, - IPin** ppPin) = 0; - -}; -#else -typedef struct ICaptureGraphBuilder2Vtbl ICaptureGraphBuilder2Vtbl; -struct ICaptureGraphBuilder2 { - const ICaptureGraphBuilder2Vtbl* lpVtbl; -}; -struct ICaptureGraphBuilder2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ICaptureGraphBuilder2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ICaptureGraphBuilder2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ICaptureGraphBuilder2* This); - - /*** ICaptureGraphBuilder2 methods ***/ - HRESULT (STDMETHODCALLTYPE *SetFiltergraph)( - ICaptureGraphBuilder2* This, - IGraphBuilder* pfg); - - HRESULT (STDMETHODCALLTYPE *GetFiltergraph)( - ICaptureGraphBuilder2* This, - IGraphBuilder** ppfg); - - HRESULT (STDMETHODCALLTYPE *SetOutputFileName)( - ICaptureGraphBuilder2* This, - const GUID* pType, - LPCOLESTR lpstrFile, - IBaseFilter** ppf, - IFileSinkFilter** ppSink); - - HRESULT (STDMETHODCALLTYPE *FindInterface)( - ICaptureGraphBuilder2* This, - const GUID* pCategory, - const GUID* pType, - IBaseFilter* pf, - REFIID riid, - void** ppint); - - HRESULT (STDMETHODCALLTYPE *RenderStream)( - ICaptureGraphBuilder2* This, - const GUID* pCategory, - const GUID* pType, - IUnknown* pSource, - IBaseFilter* pfCompressor, - IBaseFilter* pfRenderer); - - HRESULT (STDMETHODCALLTYPE *ControlStream)( - ICaptureGraphBuilder2* This, - const GUID* pCategory, - const GUID* pType, - IBaseFilter* pFilter, - REFERENCE_TIME* pstart, - REFERENCE_TIME* pstop, - WORD wStartCookie, - WORD wStopCookie); - - HRESULT (STDMETHODCALLTYPE *AllocCapFile)( - ICaptureGraphBuilder2* This, - LPCOLESTR lpstr, - DWORDLONG dwlSize); - - HRESULT (STDMETHODCALLTYPE *CopyCaptureFile)( - ICaptureGraphBuilder2* This, - LPOLESTR lpwstrOld, - LPOLESTR lpwstrNew, - int fAllowEscAbort, - IAMCopyCaptureFileProgress* pCallback); - - HRESULT (STDMETHODCALLTYPE *FindPin)( - ICaptureGraphBuilder2* This, - IUnknown* pSource, - PIN_DIRECTION pindir, - const GUID* pCategory, - const GUID* pType, - BOOL fUnconnected, - int num, - IPin** ppPin); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ICaptureGraphBuilder2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ICaptureGraphBuilder2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ICaptureGraphBuilder2_Release(p) (p)->lpVtbl->Release(p) -/*** ICaptureGraphBuilder2 methods ***/ -#define ICaptureGraphBuilder2_SetFiltergraph(p,a) (p)->lpVtbl->SetFiltergraph(p,a) -#define ICaptureGraphBuilder2_GetFiltergraph(p,a) (p)->lpVtbl->GetFiltergraph(p,a) -#define ICaptureGraphBuilder2_SetOutputFileName(p,a,b,c,d) (p)->lpVtbl->SetOutputFileName(p,a,b,c,d) -#define ICaptureGraphBuilder2_FindInterface(p,a,b,c,d,e) (p)->lpVtbl->FindInterface(p,a,b,c,d,e) -#define ICaptureGraphBuilder2_RenderStream(p,a,b,c,d,e) (p)->lpVtbl->RenderStream(p,a,b,c,d,e) -#define ICaptureGraphBuilder2_ControlStream(p,a,b,c,d,e,f,g) (p)->lpVtbl->ControlStream(p,a,b,c,d,e,f,g) -#define ICaptureGraphBuilder2_AllocCapFile(p,a,b) (p)->lpVtbl->AllocCapFile(p,a,b) -#define ICaptureGraphBuilder2_CopyCaptureFile(p,a,b,c,d) (p)->lpVtbl->CopyCaptureFile(p,a,b,c,d) -#define ICaptureGraphBuilder2_FindPin(p,a,b,c,d,e,f,g) (p)->lpVtbl->FindPin(p,a,b,c,d,e,f,g) -#endif - -#endif - -#define ICaptureGraphBuilder2_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** ICaptureGraphBuilder2 methods ***/ \ - STDMETHOD_(HRESULT,SetFiltergraph)(THIS_ IGraphBuilder* pfg) PURE; \ - STDMETHOD_(HRESULT,GetFiltergraph)(THIS_ IGraphBuilder** ppfg) PURE; \ - STDMETHOD_(HRESULT,SetOutputFileName)(THIS_ const GUID* pType, LPCOLESTR lpstrFile, IBaseFilter** ppf, IFileSinkFilter** ppSink) PURE; \ - STDMETHOD_(HRESULT,FindInterface)(THIS_ const GUID* pCategory, const GUID* pType, IBaseFilter* pf, REFIID riid, void** ppint) PURE; \ - STDMETHOD_(HRESULT,RenderStream)(THIS_ const GUID* pCategory, const GUID* pType, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer) PURE; \ - STDMETHOD_(HRESULT,ControlStream)(THIS_ const GUID* pCategory, const GUID* pType, IBaseFilter* pFilter, REFERENCE_TIME* pstart, REFERENCE_TIME* pstop, WORD wStartCookie, WORD wStopCookie) PURE; \ - STDMETHOD_(HRESULT,AllocCapFile)(THIS_ LPCOLESTR lpstr, DWORDLONG dwlSize) PURE; \ - STDMETHOD_(HRESULT,CopyCaptureFile)(THIS_ LPOLESTR lpwstrOld, LPOLESTR lpwstrNew, int fAllowEscAbort, IAMCopyCaptureFileProgress* pCallback) PURE; \ - STDMETHOD_(HRESULT,FindPin)(THIS_ IUnknown* pSource, PIN_DIRECTION pindir, const GUID* pCategory, const GUID* pType, BOOL fUnconnected, int num, IPin** ppPin) PURE; - -HRESULT CALLBACK ICaptureGraphBuilder2_SetFiltergraph_Proxy( - ICaptureGraphBuilder2* This, - IGraphBuilder* pfg); -void __RPC_STUB ICaptureGraphBuilder2_SetFiltergraph_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder2_GetFiltergraph_Proxy( - ICaptureGraphBuilder2* This, - IGraphBuilder** ppfg); -void __RPC_STUB ICaptureGraphBuilder2_GetFiltergraph_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder2_SetOutputFileName_Proxy( - ICaptureGraphBuilder2* This, - const GUID* pType, - LPCOLESTR lpstrFile, - IBaseFilter** ppf, - IFileSinkFilter** ppSink); -void __RPC_STUB ICaptureGraphBuilder2_SetOutputFileName_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder2_RemoteFindInterface_Proxy( - ICaptureGraphBuilder2* This, - const GUID* pCategory, - const GUID* pType, - IBaseFilter* pf, - REFIID riid, - IUnknown** ppint); -void __RPC_STUB ICaptureGraphBuilder2_RemoteFindInterface_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder2_FindInterface_Proxy( - ICaptureGraphBuilder2* This, - const GUID* pCategory, - const GUID* pType, - IBaseFilter* pf, - REFIID riid, - void** ppint); -HRESULT __RPC_STUB ICaptureGraphBuilder2_FindInterface_Stub( - ICaptureGraphBuilder2* This, - const GUID* pCategory, - const GUID* pType, - IBaseFilter* pf, - REFIID riid, - IUnknown** ppint); -HRESULT CALLBACK ICaptureGraphBuilder2_RenderStream_Proxy( - ICaptureGraphBuilder2* This, - const GUID* pCategory, - const GUID* pType, - IUnknown* pSource, - IBaseFilter* pfCompressor, - IBaseFilter* pfRenderer); -void __RPC_STUB ICaptureGraphBuilder2_RenderStream_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder2_ControlStream_Proxy( - ICaptureGraphBuilder2* This, - const GUID* pCategory, - const GUID* pType, - IBaseFilter* pFilter, - REFERENCE_TIME* pstart, - REFERENCE_TIME* pstop, - WORD wStartCookie, - WORD wStopCookie); -void __RPC_STUB ICaptureGraphBuilder2_ControlStream_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder2_AllocCapFile_Proxy( - ICaptureGraphBuilder2* This, - LPCOLESTR lpstr, - DWORDLONG dwlSize); -void __RPC_STUB ICaptureGraphBuilder2_AllocCapFile_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder2_CopyCaptureFile_Proxy( - ICaptureGraphBuilder2* This, - LPOLESTR lpwstrOld, - LPOLESTR lpwstrNew, - int fAllowEscAbort, - IAMCopyCaptureFileProgress* pCallback); -void __RPC_STUB ICaptureGraphBuilder2_CopyCaptureFile_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ICaptureGraphBuilder2_FindPin_Proxy( - ICaptureGraphBuilder2* This, - IUnknown* pSource, - PIN_DIRECTION pindir, - const GUID* pCategory, - const GUID* pType, - BOOL fUnconnected, - int num, - IPin** ppPin); -void __RPC_STUB ICaptureGraphBuilder2_FindPin_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ICaptureGraphBuilder2_INTERFACE_DEFINED__ */ - -enum _AM_RENSDEREXFLAGS { - AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x1 -}; - -#ifndef __IFilterGraph2_FWD_DEFINED__ -#define __IFilterGraph2_FWD_DEFINED__ -typedef struct IFilterGraph2 IFilterGraph2; -#endif - -/***************************************************************************** - * IFilterGraph2 interface - */ -#ifndef __IFilterGraph2_INTERFACE_DEFINED__ -#define __IFilterGraph2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IFilterGraph2, 0x36b73882, 0xc2c8, 0x11cf, 0x8b,0x46, 0x00,0x80,0x5f,0x6c,0xef,0x60); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IFilterGraph2 : public IGraphBuilder -{ - virtual HRESULT STDMETHODCALLTYPE AddSourceFilterForMoniker( - IMoniker* pMoniker, - IBindCtx* pCtx, - LPCWSTR lpcwstrFilterName, - IBaseFilter** ppFilter) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReconnectEx( - IPin* ppin, - const AM_MEDIA_TYPE* pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE RenderEx( - IPin* pPinOut, - DWORD dwFlags, - DWORD* pvContext) = 0; - -}; -#else -typedef struct IFilterGraph2Vtbl IFilterGraph2Vtbl; -struct IFilterGraph2 { - const IFilterGraph2Vtbl* lpVtbl; -}; -struct IFilterGraph2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IFilterGraph2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IFilterGraph2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IFilterGraph2* This); - - /*** IFilterGraph methods ***/ - HRESULT (STDMETHODCALLTYPE *AddFilter)( - IFilterGraph2* This, - IBaseFilter* pFilter, - LPCWSTR pName); - - HRESULT (STDMETHODCALLTYPE *RemoveFilter)( - IFilterGraph2* This, - IBaseFilter* pFilter); - - HRESULT (STDMETHODCALLTYPE *EnumFilters)( - IFilterGraph2* This, - IEnumFilters** ppEnum); - - HRESULT (STDMETHODCALLTYPE *FindFilterByName)( - IFilterGraph2* This, - LPCWSTR pName, - IBaseFilter** ppFilter); - - HRESULT (STDMETHODCALLTYPE *ConnectDirect)( - IFilterGraph2* This, - IPin* ppinOut, - IPin* ppinIn, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *Reconnect)( - IFilterGraph2* This, - IPin* ppin); - - HRESULT (STDMETHODCALLTYPE *Disconnect)( - IFilterGraph2* This, - IPin* ppin); - - HRESULT (STDMETHODCALLTYPE *SetDefaultSyncSource)( - IFilterGraph2* This); - - /*** IGraphBuilder methods ***/ - HRESULT (STDMETHODCALLTYPE *Connect)( - IFilterGraph2* This, - IPin* ppinOut, - IPin* ppinIn); - - HRESULT (STDMETHODCALLTYPE *Render)( - IFilterGraph2* This, - IPin* ppinOut); - - HRESULT (STDMETHODCALLTYPE *RenderFile)( - IFilterGraph2* This, - LPCWSTR lpcwstrFile, - LPCWSTR lpcwstrPlayList); - - HRESULT (STDMETHODCALLTYPE *AddSourceFilter)( - IFilterGraph2* This, - LPCWSTR lpcwstrFileName, - LPCWSTR lpcwstrFilterName, - IBaseFilter** ppFilter); - - HRESULT (STDMETHODCALLTYPE *SetLogFile)( - IFilterGraph2* This, - DWORD_PTR hFile); - - HRESULT (STDMETHODCALLTYPE *Abort)( - IFilterGraph2* This); - - HRESULT (STDMETHODCALLTYPE *ShouldOperationContinue)( - IFilterGraph2* This); - - /*** IFilterGraph2 methods ***/ - HRESULT (STDMETHODCALLTYPE *AddSourceFilterForMoniker)( - IFilterGraph2* This, - IMoniker* pMoniker, - IBindCtx* pCtx, - LPCWSTR lpcwstrFilterName, - IBaseFilter** ppFilter); - - HRESULT (STDMETHODCALLTYPE *ReconnectEx)( - IFilterGraph2* This, - IPin* ppin, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *RenderEx)( - IFilterGraph2* This, - IPin* pPinOut, - DWORD dwFlags, - DWORD* pvContext); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IFilterGraph2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFilterGraph2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFilterGraph2_Release(p) (p)->lpVtbl->Release(p) -/*** IFilterGraph methods ***/ -#define IFilterGraph2_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b) -#define IFilterGraph2_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a) -#define IFilterGraph2_EnumFilters(p,a) (p)->lpVtbl->EnumFilters(p,a) -#define IFilterGraph2_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b) -#define IFilterGraph2_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c) -#define IFilterGraph2_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a) -#define IFilterGraph2_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a) -#define IFilterGraph2_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p) -/*** IGraphBuilder methods ***/ -#define IFilterGraph2_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b) -#define IFilterGraph2_Render(p,a) (p)->lpVtbl->Render(p,a) -#define IFilterGraph2_RenderFile(p,a,b) (p)->lpVtbl->RenderFile(p,a,b) -#define IFilterGraph2_AddSourceFilter(p,a,b,c) (p)->lpVtbl->AddSourceFilter(p,a,b,c) -#define IFilterGraph2_SetLogFile(p,a) (p)->lpVtbl->SetLogFile(p,a) -#define IFilterGraph2_Abort(p) (p)->lpVtbl->Abort(p) -#define IFilterGraph2_ShouldOperationContinue(p) (p)->lpVtbl->ShouldOperationContinue(p) -/*** IFilterGraph2 methods ***/ -#define IFilterGraph2_AddSourceFilterForMoniker(p,a,b,c,d) (p)->lpVtbl->AddSourceFilterForMoniker(p,a,b,c,d) -#define IFilterGraph2_ReconnectEx(p,a,b) (p)->lpVtbl->ReconnectEx(p,a,b) -#define IFilterGraph2_RenderEx(p,a,b,c) (p)->lpVtbl->RenderEx(p,a,b,c) -#endif - -#endif - -#define IFilterGraph2_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFilterGraph methods ***/ \ - STDMETHOD_(HRESULT,AddFilter)(THIS_ IBaseFilter* pFilter, LPCWSTR pName) PURE; \ - STDMETHOD_(HRESULT,RemoveFilter)(THIS_ IBaseFilter* pFilter) PURE; \ - STDMETHOD_(HRESULT,EnumFilters)(THIS_ IEnumFilters** ppEnum) PURE; \ - STDMETHOD_(HRESULT,FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter** ppFilter) PURE; \ - STDMETHOD_(HRESULT,ConnectDirect)(THIS_ IPin* ppinOut, IPin* ppinIn, const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* ppin) PURE; \ - STDMETHOD_(HRESULT,Disconnect)(THIS_ IPin* ppin) PURE; \ - STDMETHOD_(HRESULT,SetDefaultSyncSource)(THIS) PURE; \ - /*** IGraphBuilder methods ***/ \ - STDMETHOD_(HRESULT,Connect)(THIS_ IPin* ppinOut, IPin* ppinIn) PURE; \ - STDMETHOD_(HRESULT,Render)(THIS_ IPin* ppinOut) PURE; \ - STDMETHOD_(HRESULT,RenderFile)(THIS_ LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList) PURE; \ - STDMETHOD_(HRESULT,AddSourceFilter)(THIS_ LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter) PURE; \ - STDMETHOD_(HRESULT,SetLogFile)(THIS_ DWORD_PTR hFile) PURE; \ - STDMETHOD_(HRESULT,Abort)(THIS) PURE; \ - STDMETHOD_(HRESULT,ShouldOperationContinue)(THIS) PURE; \ - /*** IFilterGraph2 methods ***/ \ - STDMETHOD_(HRESULT,AddSourceFilterForMoniker)(THIS_ IMoniker* pMoniker, IBindCtx* pCtx, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter) PURE; \ - STDMETHOD_(HRESULT,ReconnectEx)(THIS_ IPin* ppin, const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,RenderEx)(THIS_ IPin* pPinOut, DWORD dwFlags, DWORD* pvContext) PURE; - -HRESULT CALLBACK IFilterGraph2_AddSourceFilterForMoniker_Proxy( - IFilterGraph2* This, - IMoniker* pMoniker, - IBindCtx* pCtx, - LPCWSTR lpcwstrFilterName, - IBaseFilter** ppFilter); -void __RPC_STUB IFilterGraph2_AddSourceFilterForMoniker_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterGraph2_ReconnectEx_Proxy( - IFilterGraph2* This, - IPin* ppin, - const AM_MEDIA_TYPE* pmt); -void __RPC_STUB IFilterGraph2_ReconnectEx_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterGraph2_RenderEx_Proxy( - IFilterGraph2* This, - IPin* pPinOut, - DWORD dwFlags, - DWORD* pvContext); -void __RPC_STUB IFilterGraph2_RenderEx_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IFilterGraph2_INTERFACE_DEFINED__ */ - -#ifndef __IStreamBuilder_FWD_DEFINED__ -#define __IStreamBuilder_FWD_DEFINED__ -typedef struct IStreamBuilder IStreamBuilder; -#endif - -/***************************************************************************** - * IStreamBuilder interface - */ -#ifndef __IStreamBuilder_INTERFACE_DEFINED__ -#define __IStreamBuilder_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IStreamBuilder, 0x56a868bf, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IStreamBuilder : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Render( - IPin* ppinOut, - IGraphBuilder* pGraph) = 0; - - virtual HRESULT STDMETHODCALLTYPE Backout( - IPin* ppinOut, - IGraphBuilder* pGraph) = 0; - -}; -#else -typedef struct IStreamBuilderVtbl IStreamBuilderVtbl; -struct IStreamBuilder { - const IStreamBuilderVtbl* lpVtbl; -}; -struct IStreamBuilderVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IStreamBuilder* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IStreamBuilder* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IStreamBuilder* This); - - /*** IStreamBuilder methods ***/ - HRESULT (STDMETHODCALLTYPE *Render)( - IStreamBuilder* This, - IPin* ppinOut, - IGraphBuilder* pGraph); - - HRESULT (STDMETHODCALLTYPE *Backout)( - IStreamBuilder* This, - IPin* ppinOut, - IGraphBuilder* pGraph); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IStreamBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IStreamBuilder_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IStreamBuilder_Release(p) (p)->lpVtbl->Release(p) -/*** IStreamBuilder methods ***/ -#define IStreamBuilder_Render(p,a,b) (p)->lpVtbl->Render(p,a,b) -#define IStreamBuilder_Backout(p,a,b) (p)->lpVtbl->Backout(p,a,b) -#endif - -#endif - -#define IStreamBuilder_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IStreamBuilder methods ***/ \ - STDMETHOD_(HRESULT,Render)(THIS_ IPin* ppinOut, IGraphBuilder* pGraph) PURE; \ - STDMETHOD_(HRESULT,Backout)(THIS_ IPin* ppinOut, IGraphBuilder* pGraph) PURE; - -HRESULT CALLBACK IStreamBuilder_Render_Proxy( - IStreamBuilder* This, - IPin* ppinOut, - IGraphBuilder* pGraph); -void __RPC_STUB IStreamBuilder_Render_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IStreamBuilder_Backout_Proxy( - IStreamBuilder* This, - IPin* ppinOut, - IGraphBuilder* pGraph); -void __RPC_STUB IStreamBuilder_Backout_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IStreamBuilder_INTERFACE_DEFINED__ */ - -#ifndef __IAsyncReader_FWD_DEFINED__ -#define __IAsyncReader_FWD_DEFINED__ -typedef struct IAsyncReader IAsyncReader; -#endif - -/***************************************************************************** - * IAsyncReader interface - */ -#ifndef __IAsyncReader_INTERFACE_DEFINED__ -#define __IAsyncReader_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IAsyncReader, 0x56a868aa, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IAsyncReader : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE RequestAllocator( - IMemAllocator* pPreferred, - ALLOCATOR_PROPERTIES* pProps, - IMemAllocator** ppActual) = 0; - - virtual HRESULT STDMETHODCALLTYPE Request( - IMediaSample* pSample, - DWORD_PTR dwUser) = 0; - - virtual HRESULT STDMETHODCALLTYPE WaitForNext( - DWORD dwTimeout, - IMediaSample** ppSample, - DWORD_PTR* pdwUser) = 0; - - virtual HRESULT STDMETHODCALLTYPE SyncReadAligned( - IMediaSample* pSample) = 0; - - virtual HRESULT STDMETHODCALLTYPE SyncRead( - LONGLONG llPosition, - LONG lLength, - BYTE* pBuffer) = 0; - - virtual HRESULT STDMETHODCALLTYPE Length( - LONGLONG* pTotal, - LONGLONG* pAvailable) = 0; - - virtual HRESULT STDMETHODCALLTYPE BeginFlush( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE EndFlush( - ) = 0; - -}; -#else -typedef struct IAsyncReaderVtbl IAsyncReaderVtbl; -struct IAsyncReader { - const IAsyncReaderVtbl* lpVtbl; -}; -struct IAsyncReaderVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IAsyncReader* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IAsyncReader* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IAsyncReader* This); - - /*** IAsyncReader methods ***/ - HRESULT (STDMETHODCALLTYPE *RequestAllocator)( - IAsyncReader* This, - IMemAllocator* pPreferred, - ALLOCATOR_PROPERTIES* pProps, - IMemAllocator** ppActual); - - HRESULT (STDMETHODCALLTYPE *Request)( - IAsyncReader* This, - IMediaSample* pSample, - DWORD_PTR dwUser); - - HRESULT (STDMETHODCALLTYPE *WaitForNext)( - IAsyncReader* This, - DWORD dwTimeout, - IMediaSample** ppSample, - DWORD_PTR* pdwUser); - - HRESULT (STDMETHODCALLTYPE *SyncReadAligned)( - IAsyncReader* This, - IMediaSample* pSample); - - HRESULT (STDMETHODCALLTYPE *SyncRead)( - IAsyncReader* This, - LONGLONG llPosition, - LONG lLength, - BYTE* pBuffer); - - HRESULT (STDMETHODCALLTYPE *Length)( - IAsyncReader* This, - LONGLONG* pTotal, - LONGLONG* pAvailable); - - HRESULT (STDMETHODCALLTYPE *BeginFlush)( - IAsyncReader* This); - - HRESULT (STDMETHODCALLTYPE *EndFlush)( - IAsyncReader* This); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IAsyncReader_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IAsyncReader_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IAsyncReader_Release(p) (p)->lpVtbl->Release(p) -/*** IAsyncReader methods ***/ -#define IAsyncReader_RequestAllocator(p,a,b,c) (p)->lpVtbl->RequestAllocator(p,a,b,c) -#define IAsyncReader_Request(p,a,b) (p)->lpVtbl->Request(p,a,b) -#define IAsyncReader_WaitForNext(p,a,b,c) (p)->lpVtbl->WaitForNext(p,a,b,c) -#define IAsyncReader_SyncReadAligned(p,a) (p)->lpVtbl->SyncReadAligned(p,a) -#define IAsyncReader_SyncRead(p,a,b,c) (p)->lpVtbl->SyncRead(p,a,b,c) -#define IAsyncReader_Length(p,a,b) (p)->lpVtbl->Length(p,a,b) -#define IAsyncReader_BeginFlush(p) (p)->lpVtbl->BeginFlush(p) -#define IAsyncReader_EndFlush(p) (p)->lpVtbl->EndFlush(p) -#endif - -#endif - -#define IAsyncReader_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IAsyncReader methods ***/ \ - STDMETHOD_(HRESULT,RequestAllocator)(THIS_ IMemAllocator* pPreferred, ALLOCATOR_PROPERTIES* pProps, IMemAllocator** ppActual) PURE; \ - STDMETHOD_(HRESULT,Request)(THIS_ IMediaSample* pSample, DWORD_PTR dwUser) PURE; \ - STDMETHOD_(HRESULT,WaitForNext)(THIS_ DWORD dwTimeout, IMediaSample** ppSample, DWORD_PTR* pdwUser) PURE; \ - STDMETHOD_(HRESULT,SyncReadAligned)(THIS_ IMediaSample* pSample) PURE; \ - STDMETHOD_(HRESULT,SyncRead)(THIS_ LONGLONG llPosition, LONG lLength, BYTE* pBuffer) PURE; \ - STDMETHOD_(HRESULT,Length)(THIS_ LONGLONG* pTotal, LONGLONG* pAvailable) PURE; \ - STDMETHOD_(HRESULT,BeginFlush)(THIS) PURE; \ - STDMETHOD_(HRESULT,EndFlush)(THIS) PURE; - -HRESULT CALLBACK IAsyncReader_RequestAllocator_Proxy( - IAsyncReader* This, - IMemAllocator* pPreferred, - ALLOCATOR_PROPERTIES* pProps, - IMemAllocator** ppActual); -void __RPC_STUB IAsyncReader_RequestAllocator_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAsyncReader_Request_Proxy( - IAsyncReader* This, - IMediaSample* pSample, - DWORD_PTR dwUser); -void __RPC_STUB IAsyncReader_Request_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAsyncReader_WaitForNext_Proxy( - IAsyncReader* This, - DWORD dwTimeout, - IMediaSample** ppSample, - DWORD_PTR* pdwUser); -void __RPC_STUB IAsyncReader_WaitForNext_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAsyncReader_SyncReadAligned_Proxy( - IAsyncReader* This, - IMediaSample* pSample); -void __RPC_STUB IAsyncReader_SyncReadAligned_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAsyncReader_SyncRead_Proxy( - IAsyncReader* This, - LONGLONG llPosition, - LONG lLength, - BYTE* pBuffer); -void __RPC_STUB IAsyncReader_SyncRead_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAsyncReader_Length_Proxy( - IAsyncReader* This, - LONGLONG* pTotal, - LONGLONG* pAvailable); -void __RPC_STUB IAsyncReader_Length_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAsyncReader_BeginFlush_Proxy( - IAsyncReader* This); -void __RPC_STUB IAsyncReader_BeginFlush_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAsyncReader_EndFlush_Proxy( - IAsyncReader* This); -void __RPC_STUB IAsyncReader_EndFlush_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IAsyncReader_INTERFACE_DEFINED__ */ - -#ifndef __IGraphVersion_FWD_DEFINED__ -#define __IGraphVersion_FWD_DEFINED__ -typedef struct IGraphVersion IGraphVersion; -#endif - -/***************************************************************************** - * IGraphVersion interface - */ -#ifndef __IGraphVersion_INTERFACE_DEFINED__ -#define __IGraphVersion_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IGraphVersion, 0x56a868ab, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IGraphVersion : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE QueryVersion( - LONG* pVersion) = 0; - -}; -#else -typedef struct IGraphVersionVtbl IGraphVersionVtbl; -struct IGraphVersion { - const IGraphVersionVtbl* lpVtbl; -}; -struct IGraphVersionVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IGraphVersion* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IGraphVersion* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IGraphVersion* This); - - /*** IGraphVersion methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryVersion)( - IGraphVersion* This, - LONG* pVersion); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IGraphVersion_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IGraphVersion_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IGraphVersion_Release(p) (p)->lpVtbl->Release(p) -/*** IGraphVersion methods ***/ -#define IGraphVersion_QueryVersion(p,a) (p)->lpVtbl->QueryVersion(p,a) -#endif - -#endif - -#define IGraphVersion_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IGraphVersion methods ***/ \ - STDMETHOD_(HRESULT,QueryVersion)(THIS_ LONG* pVersion) PURE; - -HRESULT CALLBACK IGraphVersion_QueryVersion_Proxy( - IGraphVersion* This, - LONG* pVersion); -void __RPC_STUB IGraphVersion_QueryVersion_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IGraphVersion_INTERFACE_DEFINED__ */ - -#ifndef __IResourceConsumer_FWD_DEFINED__ -#define __IResourceConsumer_FWD_DEFINED__ -typedef struct IResourceConsumer IResourceConsumer; -#endif - -/***************************************************************************** - * IResourceConsumer interface - */ -#ifndef __IResourceConsumer_INTERFACE_DEFINED__ -#define __IResourceConsumer_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IResourceConsumer, 0x56a868ad, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IResourceConsumer : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE AcquireResource( - LONG idResource) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReleaseResource( - LONG idResource) = 0; - -}; -#else -typedef struct IResourceConsumerVtbl IResourceConsumerVtbl; -struct IResourceConsumer { - const IResourceConsumerVtbl* lpVtbl; -}; -struct IResourceConsumerVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IResourceConsumer* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IResourceConsumer* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IResourceConsumer* This); - - /*** IResourceConsumer methods ***/ - HRESULT (STDMETHODCALLTYPE *AcquireResource)( - IResourceConsumer* This, - LONG idResource); - - HRESULT (STDMETHODCALLTYPE *ReleaseResource)( - IResourceConsumer* This, - LONG idResource); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IResourceConsumer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IResourceConsumer_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IResourceConsumer_Release(p) (p)->lpVtbl->Release(p) -/*** IResourceConsumer methods ***/ -#define IResourceConsumer_AcquireResource(p,a) (p)->lpVtbl->AcquireResource(p,a) -#define IResourceConsumer_ReleaseResource(p,a) (p)->lpVtbl->ReleaseResource(p,a) -#endif - -#endif - -#define IResourceConsumer_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IResourceConsumer methods ***/ \ - STDMETHOD_(HRESULT,AcquireResource)(THIS_ LONG idResource) PURE; \ - STDMETHOD_(HRESULT,ReleaseResource)(THIS_ LONG idResource) PURE; - -HRESULT CALLBACK IResourceConsumer_AcquireResource_Proxy( - IResourceConsumer* This, - LONG idResource); -void __RPC_STUB IResourceConsumer_AcquireResource_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IResourceConsumer_ReleaseResource_Proxy( - IResourceConsumer* This, - LONG idResource); -void __RPC_STUB IResourceConsumer_ReleaseResource_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IResourceConsumer_INTERFACE_DEFINED__ */ - -#ifndef __IResourceManager_FWD_DEFINED__ -#define __IResourceManager_FWD_DEFINED__ -typedef struct IResourceManager IResourceManager; -#endif - -/***************************************************************************** - * IResourceManager interface - */ -#ifndef __IResourceManager_INTERFACE_DEFINED__ -#define __IResourceManager_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IResourceManager, 0x56a868ac, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IResourceManager : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Register( - LPCWSTR pName, - LONG cResource, - LONG* plToken) = 0; - - virtual HRESULT STDMETHODCALLTYPE RegisterGroup( - LPCWSTR pName, - LONG cResource, - LONG* palTokens, - LONG* plToken) = 0; - - virtual HRESULT STDMETHODCALLTYPE RequestResource( - LONG idResource, - IUnknown* pFocusObject, - IResourceConsumer* pConsumer) = 0; - - virtual HRESULT STDMETHODCALLTYPE NotifyAcquire( - LONG idResource, - IResourceConsumer* pConsumer, - HRESULT hr) = 0; - - virtual HRESULT STDMETHODCALLTYPE NotifyRelease( - LONG idResource, - IResourceConsumer* pConsumer, - BOOL bStillWant) = 0; - - virtual HRESULT STDMETHODCALLTYPE CancelRequest( - LONG idResource, - IResourceConsumer* pConsumer) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetFocus( - IUnknown* pFocusObject) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReleaseFocus( - IUnknown* pFocusObject) = 0; - -}; -#else -typedef struct IResourceManagerVtbl IResourceManagerVtbl; -struct IResourceManager { - const IResourceManagerVtbl* lpVtbl; -}; -struct IResourceManagerVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IResourceManager* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IResourceManager* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IResourceManager* This); - - /*** IResourceManager methods ***/ - HRESULT (STDMETHODCALLTYPE *Register)( - IResourceManager* This, - LPCWSTR pName, - LONG cResource, - LONG* plToken); - - HRESULT (STDMETHODCALLTYPE *RegisterGroup)( - IResourceManager* This, - LPCWSTR pName, - LONG cResource, - LONG* palTokens, - LONG* plToken); - - HRESULT (STDMETHODCALLTYPE *RequestResource)( - IResourceManager* This, - LONG idResource, - IUnknown* pFocusObject, - IResourceConsumer* pConsumer); - - HRESULT (STDMETHODCALLTYPE *NotifyAcquire)( - IResourceManager* This, - LONG idResource, - IResourceConsumer* pConsumer, - HRESULT hr); - - HRESULT (STDMETHODCALLTYPE *NotifyRelease)( - IResourceManager* This, - LONG idResource, - IResourceConsumer* pConsumer, - BOOL bStillWant); - - HRESULT (STDMETHODCALLTYPE *CancelRequest)( - IResourceManager* This, - LONG idResource, - IResourceConsumer* pConsumer); - - HRESULT (STDMETHODCALLTYPE *SetFocus)( - IResourceManager* This, - IUnknown* pFocusObject); - - HRESULT (STDMETHODCALLTYPE *ReleaseFocus)( - IResourceManager* This, - IUnknown* pFocusObject); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IResourceManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IResourceManager_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IResourceManager_Release(p) (p)->lpVtbl->Release(p) -/*** IResourceManager methods ***/ -#define IResourceManager_Register(p,a,b,c) (p)->lpVtbl->Register(p,a,b,c) -#define IResourceManager_RegisterGroup(p,a,b,c,d) (p)->lpVtbl->RegisterGroup(p,a,b,c,d) -#define IResourceManager_RequestResource(p,a,b,c) (p)->lpVtbl->RequestResource(p,a,b,c) -#define IResourceManager_NotifyAcquire(p,a,b,c) (p)->lpVtbl->NotifyAcquire(p,a,b,c) -#define IResourceManager_NotifyRelease(p,a,b,c) (p)->lpVtbl->NotifyRelease(p,a,b,c) -#define IResourceManager_CancelRequest(p,a,b) (p)->lpVtbl->CancelRequest(p,a,b) -#define IResourceManager_SetFocus(p,a) (p)->lpVtbl->SetFocus(p,a) -#define IResourceManager_ReleaseFocus(p,a) (p)->lpVtbl->ReleaseFocus(p,a) -#endif - -#endif - -#define IResourceManager_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IResourceManager methods ***/ \ - STDMETHOD_(HRESULT,Register)(THIS_ LPCWSTR pName, LONG cResource, LONG* plToken) PURE; \ - STDMETHOD_(HRESULT,RegisterGroup)(THIS_ LPCWSTR pName, LONG cResource, LONG* palTokens, LONG* plToken) PURE; \ - STDMETHOD_(HRESULT,RequestResource)(THIS_ LONG idResource, IUnknown* pFocusObject, IResourceConsumer* pConsumer) PURE; \ - STDMETHOD_(HRESULT,NotifyAcquire)(THIS_ LONG idResource, IResourceConsumer* pConsumer, HRESULT hr) PURE; \ - STDMETHOD_(HRESULT,NotifyRelease)(THIS_ LONG idResource, IResourceConsumer* pConsumer, BOOL bStillWant) PURE; \ - STDMETHOD_(HRESULT,CancelRequest)(THIS_ LONG idResource, IResourceConsumer* pConsumer) PURE; \ - STDMETHOD_(HRESULT,SetFocus)(THIS_ IUnknown* pFocusObject) PURE; \ - STDMETHOD_(HRESULT,ReleaseFocus)(THIS_ IUnknown* pFocusObject) PURE; - -HRESULT CALLBACK IResourceManager_Register_Proxy( - IResourceManager* This, - LPCWSTR pName, - LONG cResource, - LONG* plToken); -void __RPC_STUB IResourceManager_Register_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IResourceManager_RegisterGroup_Proxy( - IResourceManager* This, - LPCWSTR pName, - LONG cResource, - LONG* palTokens, - LONG* plToken); -void __RPC_STUB IResourceManager_RegisterGroup_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IResourceManager_RequestResource_Proxy( - IResourceManager* This, - LONG idResource, - IUnknown* pFocusObject, - IResourceConsumer* pConsumer); -void __RPC_STUB IResourceManager_RequestResource_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IResourceManager_NotifyAcquire_Proxy( - IResourceManager* This, - LONG idResource, - IResourceConsumer* pConsumer, - HRESULT hr); -void __RPC_STUB IResourceManager_NotifyAcquire_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IResourceManager_NotifyRelease_Proxy( - IResourceManager* This, - LONG idResource, - IResourceConsumer* pConsumer, - BOOL bStillWant); -void __RPC_STUB IResourceManager_NotifyRelease_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IResourceManager_CancelRequest_Proxy( - IResourceManager* This, - LONG idResource, - IResourceConsumer* pConsumer); -void __RPC_STUB IResourceManager_CancelRequest_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IResourceManager_SetFocus_Proxy( - IResourceManager* This, - IUnknown* pFocusObject); -void __RPC_STUB IResourceManager_SetFocus_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IResourceManager_ReleaseFocus_Proxy( - IResourceManager* This, - IUnknown* pFocusObject); -void __RPC_STUB IResourceManager_ReleaseFocus_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IResourceManager_INTERFACE_DEFINED__ */ - -#ifndef _IKsPropertySet_ -#define _IKsPropertySet_ -#define KSPROPERTY_SUPPORT_GET 1 -#define KSPROPERTY_SUPPORT_SET 2 -/***************************************************************************** - * IKsPropertySet interface - */ -#ifndef __IKsPropertySet_INTERFACE_DEFINED__ -#define __IKsPropertySet_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IKsPropertySet, 0x31efac30, 0x515c, 0x11d0, 0xa9,0xaa, 0x00,0xaa,0x00,0x61,0xbe,0x93); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IKsPropertySet : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Set( - REFGUID guidPropSet, - DWORD dwPropID, - LPVOID pInstanceData, - DWORD cbInstanceData, - LPVOID pPropData, - DWORD cbPropData) = 0; - - virtual HRESULT STDMETHODCALLTYPE Get( - REFGUID guidPropSet, - DWORD dwPropID, - LPVOID pInstanceData, - DWORD cbInstanceData, - LPVOID pPropData, - DWORD cbPropData, - DWORD* pcbReturned) = 0; - - virtual HRESULT STDMETHODCALLTYPE QuerySupported( - REFGUID guidPropSet, - DWORD dwPropID, - DWORD* pTypeSupport) = 0; - -}; -#else -typedef struct IKsPropertySetVtbl IKsPropertySetVtbl; -struct IKsPropertySet { - const IKsPropertySetVtbl* lpVtbl; -}; -struct IKsPropertySetVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IKsPropertySet* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IKsPropertySet* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IKsPropertySet* This); - - /*** IKsPropertySet methods ***/ - HRESULT (STDMETHODCALLTYPE *Set)( - IKsPropertySet* This, - REFGUID guidPropSet, - DWORD dwPropID, - LPVOID pInstanceData, - DWORD cbInstanceData, - LPVOID pPropData, - DWORD cbPropData); - - HRESULT (STDMETHODCALLTYPE *Get)( - IKsPropertySet* This, - REFGUID guidPropSet, - DWORD dwPropID, - LPVOID pInstanceData, - DWORD cbInstanceData, - LPVOID pPropData, - DWORD cbPropData, - DWORD* pcbReturned); - - HRESULT (STDMETHODCALLTYPE *QuerySupported)( - IKsPropertySet* This, - REFGUID guidPropSet, - DWORD dwPropID, - DWORD* pTypeSupport); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IKsPropertySet_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IKsPropertySet_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IKsPropertySet_Release(p) (p)->lpVtbl->Release(p) -/*** IKsPropertySet methods ***/ -#define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f) -#define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g) -#define IKsPropertySet_QuerySupported(p,a,b,c) (p)->lpVtbl->QuerySupported(p,a,b,c) -#endif - -#endif - -#define IKsPropertySet_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IKsPropertySet methods ***/ \ - STDMETHOD_(HRESULT,Set)(THIS_ REFGUID guidPropSet, DWORD dwPropID, LPVOID pInstanceData, DWORD cbInstanceData, LPVOID pPropData, DWORD cbPropData) PURE; \ - STDMETHOD_(HRESULT,Get)(THIS_ REFGUID guidPropSet, DWORD dwPropID, LPVOID pInstanceData, DWORD cbInstanceData, LPVOID pPropData, DWORD cbPropData, DWORD* pcbReturned) PURE; \ - STDMETHOD_(HRESULT,QuerySupported)(THIS_ REFGUID guidPropSet, DWORD dwPropID, DWORD* pTypeSupport) PURE; - -HRESULT CALLBACK IKsPropertySet_Set_Proxy( - IKsPropertySet* This, - REFGUID guidPropSet, - DWORD dwPropID, - LPVOID pInstanceData, - DWORD cbInstanceData, - LPVOID pPropData, - DWORD cbPropData); -void __RPC_STUB IKsPropertySet_Set_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IKsPropertySet_Get_Proxy( - IKsPropertySet* This, - REFGUID guidPropSet, - DWORD dwPropID, - LPVOID pInstanceData, - DWORD cbInstanceData, - LPVOID pPropData, - DWORD cbPropData, - DWORD* pcbReturned); -void __RPC_STUB IKsPropertySet_Get_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IKsPropertySet_QuerySupported_Proxy( - IKsPropertySet* This, - REFGUID guidPropSet, - DWORD dwPropID, - DWORD* pTypeSupport); -void __RPC_STUB IKsPropertySet_QuerySupported_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IKsPropertySet_INTERFACE_DEFINED__ */ - -#endif /* _IKsPropertySet_ */ -#ifndef __IPinConnection_FWD_DEFINED__ -#define __IPinConnection_FWD_DEFINED__ -typedef struct IPinConnection IPinConnection; -#endif - -#ifndef __IPinFlowControl_FWD_DEFINED__ -#define __IPinFlowControl_FWD_DEFINED__ -typedef struct IPinFlowControl IPinFlowControl; -#endif - -#ifndef __IGraphConfig_FWD_DEFINED__ -#define __IGraphConfig_FWD_DEFINED__ -typedef struct IGraphConfig IGraphConfig; -#endif - -#ifndef __IGraphConfigCallback_FWD_DEFINED__ -#define __IGraphConfigCallback_FWD_DEFINED__ -typedef struct IGraphConfigCallback IGraphConfigCallback; -#endif - -/***************************************************************************** - * IPinConnection interface - */ -#ifndef __IPinConnection_INTERFACE_DEFINED__ -#define __IPinConnection_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IPinConnection, 0x4a9a62d3, 0x27d4, 0x403d, 0x91,0xe9, 0x89,0xf5,0x40,0xe5,0x55,0x34); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IPinConnection : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE DynamicQueryAccept( - const AM_MEDIA_TYPE* pmt) = 0; - - virtual HRESULT STDMETHODCALLTYPE NotifyEndOfStream( - HANDLE hNotifyEvent) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsEndPin( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE DynamicDisconnect( - ) = 0; - -}; -#else -typedef struct IPinConnectionVtbl IPinConnectionVtbl; -struct IPinConnection { - const IPinConnectionVtbl* lpVtbl; -}; -struct IPinConnectionVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IPinConnection* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IPinConnection* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IPinConnection* This); - - /*** IPinConnection methods ***/ - HRESULT (STDMETHODCALLTYPE *DynamicQueryAccept)( - IPinConnection* This, - const AM_MEDIA_TYPE* pmt); - - HRESULT (STDMETHODCALLTYPE *NotifyEndOfStream)( - IPinConnection* This, - HANDLE hNotifyEvent); - - HRESULT (STDMETHODCALLTYPE *IsEndPin)( - IPinConnection* This); - - HRESULT (STDMETHODCALLTYPE *DynamicDisconnect)( - IPinConnection* This); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IPinConnection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPinConnection_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPinConnection_Release(p) (p)->lpVtbl->Release(p) -/*** IPinConnection methods ***/ -#define IPinConnection_DynamicQueryAccept(p,a) (p)->lpVtbl->DynamicQueryAccept(p,a) -#define IPinConnection_NotifyEndOfStream(p,a) (p)->lpVtbl->NotifyEndOfStream(p,a) -#define IPinConnection_IsEndPin(p) (p)->lpVtbl->IsEndPin(p) -#define IPinConnection_DynamicDisconnect(p) (p)->lpVtbl->DynamicDisconnect(p) -#endif - -#endif - -#define IPinConnection_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IPinConnection methods ***/ \ - STDMETHOD_(HRESULT,DynamicQueryAccept)(THIS_ const AM_MEDIA_TYPE* pmt) PURE; \ - STDMETHOD_(HRESULT,NotifyEndOfStream)(THIS_ HANDLE hNotifyEvent) PURE; \ - STDMETHOD_(HRESULT,IsEndPin)(THIS) PURE; \ - STDMETHOD_(HRESULT,DynamicDisconnect)(THIS) PURE; - -HRESULT CALLBACK IPinConnection_DynamicQueryAccept_Proxy( - IPinConnection* This, - const AM_MEDIA_TYPE* pmt); -void __RPC_STUB IPinConnection_DynamicQueryAccept_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPinConnection_NotifyEndOfStream_Proxy( - IPinConnection* This, - HANDLE hNotifyEvent); -void __RPC_STUB IPinConnection_NotifyEndOfStream_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPinConnection_IsEndPin_Proxy( - IPinConnection* This); -void __RPC_STUB IPinConnection_IsEndPin_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPinConnection_DynamicDisconnect_Proxy( - IPinConnection* This); -void __RPC_STUB IPinConnection_DynamicDisconnect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IPinConnection_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * IPinFlowControl interface - */ -#ifndef __IPinFlowControl_INTERFACE_DEFINED__ -#define __IPinFlowControl_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IPinFlowControl, 0xc56e9858, 0xdbf3, 0x4f6b, 0x81,0x19, 0x38,0x4a,0xf2,0x06,0x0d,0xeb); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IPinFlowControl : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Block( - DWORD dwBlockFlags, - HANDLE hEvent) = 0; - -}; -#else -typedef struct IPinFlowControlVtbl IPinFlowControlVtbl; -struct IPinFlowControl { - const IPinFlowControlVtbl* lpVtbl; -}; -struct IPinFlowControlVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IPinFlowControl* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IPinFlowControl* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IPinFlowControl* This); - - /*** IPinFlowControl methods ***/ - HRESULT (STDMETHODCALLTYPE *Block)( - IPinFlowControl* This, - DWORD dwBlockFlags, - HANDLE hEvent); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IPinFlowControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPinFlowControl_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPinFlowControl_Release(p) (p)->lpVtbl->Release(p) -/*** IPinFlowControl methods ***/ -#define IPinFlowControl_Block(p,a,b) (p)->lpVtbl->Block(p,a,b) -#endif - -#endif - -#define IPinFlowControl_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IPinFlowControl methods ***/ \ - STDMETHOD_(HRESULT,Block)(THIS_ DWORD dwBlockFlags, HANDLE hEvent) PURE; - -HRESULT CALLBACK IPinFlowControl_Block_Proxy( - IPinFlowControl* This, - DWORD dwBlockFlags, - HANDLE hEvent); -void __RPC_STUB IPinFlowControl_Block_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IPinFlowControl_INTERFACE_DEFINED__ */ - -enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS { - AM_PIN_FLOW_CONTROL_BLOCK = 0x1 -}; - -typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS { - AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x1, - AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x2, - AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x4 -} AM_GRAPH_CONFIG_RECONNECT_FLAGS; - -enum _REM_FILTER_FLAGS { - REMFILTERF_LEAVECONNECTED = 0x1 -}; - -typedef enum _AM_FILTER_FLAGS { - AM_FILTER_FLAGS_REMOVABLE = 0x1 -} AM_FILTER_FLAGS; - -/***************************************************************************** - * IGraphConfig interface - */ -#ifndef __IGraphConfig_INTERFACE_DEFINED__ -#define __IGraphConfig_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IGraphConfig, 0x03a1eb8e, 0x32bf, 0x4245, 0x85,0x02, 0x11,0x4d,0x08,0xa9,0xcb,0x88); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IGraphConfig : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Reconnect( - IPin* pOutputPin, - IPin* pInputPin, - const AM_MEDIA_TYPE* pmtFirstConnection, - IBaseFilter* pUsingFilter, - HANDLE hAbortEvent, - DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reconfigure( - IGraphConfigCallback* pCallback, - PVOID pvContext, - DWORD dwFlags, - HANDLE hAbortEvent) = 0; - - virtual HRESULT STDMETHODCALLTYPE AddFilterToCache( - IBaseFilter* pFilter) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumCacheFilter( - IEnumFilters** pEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE RemoveFilterFromCache( - IBaseFilter* pFilter) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStartTime( - REFERENCE_TIME* prtStart) = 0; - - virtual HRESULT STDMETHODCALLTYPE PushThroughData( - IPin* pOutputPin, - IPinConnection* pConnection, - HANDLE hEventAbort) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetFilterFlags( - IBaseFilter* pFilter, - DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFilterFlags( - IBaseFilter* pFilter, - DWORD* pdwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE RemoveFilterEx( - IBaseFilter* pFilter, - DWORD Flags) = 0; - -}; -#else -typedef struct IGraphConfigVtbl IGraphConfigVtbl; -struct IGraphConfig { - const IGraphConfigVtbl* lpVtbl; -}; -struct IGraphConfigVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IGraphConfig* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IGraphConfig* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IGraphConfig* This); - - /*** IGraphConfig methods ***/ - HRESULT (STDMETHODCALLTYPE *Reconnect)( - IGraphConfig* This, - IPin* pOutputPin, - IPin* pInputPin, - const AM_MEDIA_TYPE* pmtFirstConnection, - IBaseFilter* pUsingFilter, - HANDLE hAbortEvent, - DWORD dwFlags); - - HRESULT (STDMETHODCALLTYPE *Reconfigure)( - IGraphConfig* This, - IGraphConfigCallback* pCallback, - PVOID pvContext, - DWORD dwFlags, - HANDLE hAbortEvent); - - HRESULT (STDMETHODCALLTYPE *AddFilterToCache)( - IGraphConfig* This, - IBaseFilter* pFilter); - - HRESULT (STDMETHODCALLTYPE *EnumCacheFilter)( - IGraphConfig* This, - IEnumFilters** pEnum); - - HRESULT (STDMETHODCALLTYPE *RemoveFilterFromCache)( - IGraphConfig* This, - IBaseFilter* pFilter); - - HRESULT (STDMETHODCALLTYPE *GetStartTime)( - IGraphConfig* This, - REFERENCE_TIME* prtStart); - - HRESULT (STDMETHODCALLTYPE *PushThroughData)( - IGraphConfig* This, - IPin* pOutputPin, - IPinConnection* pConnection, - HANDLE hEventAbort); - - HRESULT (STDMETHODCALLTYPE *SetFilterFlags)( - IGraphConfig* This, - IBaseFilter* pFilter, - DWORD dwFlags); - - HRESULT (STDMETHODCALLTYPE *GetFilterFlags)( - IGraphConfig* This, - IBaseFilter* pFilter, - DWORD* pdwFlags); - - HRESULT (STDMETHODCALLTYPE *RemoveFilterEx)( - IGraphConfig* This, - IBaseFilter* pFilter, - DWORD Flags); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IGraphConfig_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IGraphConfig_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IGraphConfig_Release(p) (p)->lpVtbl->Release(p) -/*** IGraphConfig methods ***/ -#define IGraphConfig_Reconnect(p,a,b,c,d,e,f) (p)->lpVtbl->Reconnect(p,a,b,c,d,e,f) -#define IGraphConfig_Reconfigure(p,a,b,c,d) (p)->lpVtbl->Reconfigure(p,a,b,c,d) -#define IGraphConfig_AddFilterToCache(p,a) (p)->lpVtbl->AddFilterToCache(p,a) -#define IGraphConfig_EnumCacheFilter(p,a) (p)->lpVtbl->EnumCacheFilter(p,a) -#define IGraphConfig_RemoveFilterFromCache(p,a) (p)->lpVtbl->RemoveFilterFromCache(p,a) -#define IGraphConfig_GetStartTime(p,a) (p)->lpVtbl->GetStartTime(p,a) -#define IGraphConfig_PushThroughData(p,a,b,c) (p)->lpVtbl->PushThroughData(p,a,b,c) -#define IGraphConfig_SetFilterFlags(p,a,b) (p)->lpVtbl->SetFilterFlags(p,a,b) -#define IGraphConfig_GetFilterFlags(p,a,b) (p)->lpVtbl->GetFilterFlags(p,a,b) -#define IGraphConfig_RemoveFilterEx(p,a,b) (p)->lpVtbl->RemoveFilterEx(p,a,b) -#endif - -#endif - -#define IGraphConfig_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IGraphConfig methods ***/ \ - STDMETHOD_(HRESULT,Reconnect)(THIS_ IPin* pOutputPin, IPin* pInputPin, const AM_MEDIA_TYPE* pmtFirstConnection, IBaseFilter* pUsingFilter, HANDLE hAbortEvent, DWORD dwFlags) PURE; \ - STDMETHOD_(HRESULT,Reconfigure)(THIS_ IGraphConfigCallback* pCallback, PVOID pvContext, DWORD dwFlags, HANDLE hAbortEvent) PURE; \ - STDMETHOD_(HRESULT,AddFilterToCache)(THIS_ IBaseFilter* pFilter) PURE; \ - STDMETHOD_(HRESULT,EnumCacheFilter)(THIS_ IEnumFilters** pEnum) PURE; \ - STDMETHOD_(HRESULT,RemoveFilterFromCache)(THIS_ IBaseFilter* pFilter) PURE; \ - STDMETHOD_(HRESULT,GetStartTime)(THIS_ REFERENCE_TIME* prtStart) PURE; \ - STDMETHOD_(HRESULT,PushThroughData)(THIS_ IPin* pOutputPin, IPinConnection* pConnection, HANDLE hEventAbort) PURE; \ - STDMETHOD_(HRESULT,SetFilterFlags)(THIS_ IBaseFilter* pFilter, DWORD dwFlags) PURE; \ - STDMETHOD_(HRESULT,GetFilterFlags)(THIS_ IBaseFilter* pFilter, DWORD* pdwFlags) PURE; \ - STDMETHOD_(HRESULT,RemoveFilterEx)(THIS_ IBaseFilter* pFilter, DWORD Flags) PURE; - -HRESULT CALLBACK IGraphConfig_Reconnect_Proxy( - IGraphConfig* This, - IPin* pOutputPin, - IPin* pInputPin, - const AM_MEDIA_TYPE* pmtFirstConnection, - IBaseFilter* pUsingFilter, - HANDLE hAbortEvent, - DWORD dwFlags); -void __RPC_STUB IGraphConfig_Reconnect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphConfig_Reconfigure_Proxy( - IGraphConfig* This, - IGraphConfigCallback* pCallback, - PVOID pvContext, - DWORD dwFlags, - HANDLE hAbortEvent); -void __RPC_STUB IGraphConfig_Reconfigure_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphConfig_AddFilterToCache_Proxy( - IGraphConfig* This, - IBaseFilter* pFilter); -void __RPC_STUB IGraphConfig_AddFilterToCache_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphConfig_EnumCacheFilter_Proxy( - IGraphConfig* This, - IEnumFilters** pEnum); -void __RPC_STUB IGraphConfig_EnumCacheFilter_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphConfig_RemoveFilterFromCache_Proxy( - IGraphConfig* This, - IBaseFilter* pFilter); -void __RPC_STUB IGraphConfig_RemoveFilterFromCache_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphConfig_GetStartTime_Proxy( - IGraphConfig* This, - REFERENCE_TIME* prtStart); -void __RPC_STUB IGraphConfig_GetStartTime_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphConfig_PushThroughData_Proxy( - IGraphConfig* This, - IPin* pOutputPin, - IPinConnection* pConnection, - HANDLE hEventAbort); -void __RPC_STUB IGraphConfig_PushThroughData_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphConfig_SetFilterFlags_Proxy( - IGraphConfig* This, - IBaseFilter* pFilter, - DWORD dwFlags); -void __RPC_STUB IGraphConfig_SetFilterFlags_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphConfig_GetFilterFlags_Proxy( - IGraphConfig* This, - IBaseFilter* pFilter, - DWORD* pdwFlags); -void __RPC_STUB IGraphConfig_GetFilterFlags_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGraphConfig_RemoveFilterEx_Proxy( - IGraphConfig* This, - IBaseFilter* pFilter, - DWORD Flags); -void __RPC_STUB IGraphConfig_RemoveFilterEx_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IGraphConfig_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * IGraphConfigCallback interface - */ -#ifndef __IGraphConfigCallback_INTERFACE_DEFINED__ -#define __IGraphConfigCallback_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IGraphConfigCallback, 0xade0fd60, 0xd19d, 0x11d2, 0xab,0xf6, 0x00,0xa0,0xc9,0x05,0xf3,0x75); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IGraphConfigCallback : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Reconfigure( - PVOID pvContext, - DWORD dwFlags) = 0; - -}; -#else -typedef struct IGraphConfigCallbackVtbl IGraphConfigCallbackVtbl; -struct IGraphConfigCallback { - const IGraphConfigCallbackVtbl* lpVtbl; -}; -struct IGraphConfigCallbackVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IGraphConfigCallback* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IGraphConfigCallback* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IGraphConfigCallback* This); - - /*** IGraphConfigCallback methods ***/ - HRESULT (STDMETHODCALLTYPE *Reconfigure)( - IGraphConfigCallback* This, - PVOID pvContext, - DWORD dwFlags); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IGraphConfigCallback_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IGraphConfigCallback_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IGraphConfigCallback_Release(p) (p)->lpVtbl->Release(p) -/*** IGraphConfigCallback methods ***/ -#define IGraphConfigCallback_Reconfigure(p,a,b) (p)->lpVtbl->Reconfigure(p,a,b) -#endif - -#endif - -#define IGraphConfigCallback_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IGraphConfigCallback methods ***/ \ - STDMETHOD_(HRESULT,Reconfigure)(THIS_ PVOID pvContext, DWORD dwFlags) PURE; - -HRESULT CALLBACK IGraphConfigCallback_Reconfigure_Proxy( - IGraphConfigCallback* This, - PVOID pvContext, - DWORD dwFlags); -void __RPC_STUB IGraphConfigCallback_Reconfigure_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IGraphConfigCallback_INTERFACE_DEFINED__ */ - -#ifndef __IFilterChain_FWD_DEFINED__ -#define __IFilterChain_FWD_DEFINED__ -typedef struct IFilterChain IFilterChain; -#endif - -/***************************************************************************** - * IFilterChain interface - */ -#ifndef __IFilterChain_INTERFACE_DEFINED__ -#define __IFilterChain_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IFilterChain, 0xdcfbdcf6, 0x0dc2, 0x45f5, 0x9a,0xb2, 0x7c,0x33,0x0e,0xa0,0x9c,0x29); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IFilterChain : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE StartChain( - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter) = 0; - - virtual HRESULT STDMETHODCALLTYPE PauseChain( - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter) = 0; - - virtual HRESULT STDMETHODCALLTYPE StopChain( - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter) = 0; - - virtual HRESULT STDMETHODCALLTYPE RemoveChain( - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter) = 0; - -}; -#else -typedef struct IFilterChainVtbl IFilterChainVtbl; -struct IFilterChain { - const IFilterChainVtbl* lpVtbl; -}; -struct IFilterChainVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IFilterChain* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IFilterChain* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IFilterChain* This); - - /*** IFilterChain methods ***/ - HRESULT (STDMETHODCALLTYPE *StartChain)( - IFilterChain* This, - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter); - - HRESULT (STDMETHODCALLTYPE *PauseChain)( - IFilterChain* This, - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter); - - HRESULT (STDMETHODCALLTYPE *StopChain)( - IFilterChain* This, - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter); - - HRESULT (STDMETHODCALLTYPE *RemoveChain)( - IFilterChain* This, - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IFilterChain_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFilterChain_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFilterChain_Release(p) (p)->lpVtbl->Release(p) -/*** IFilterChain methods ***/ -#define IFilterChain_StartChain(p,a,b) (p)->lpVtbl->StartChain(p,a,b) -#define IFilterChain_PauseChain(p,a,b) (p)->lpVtbl->PauseChain(p,a,b) -#define IFilterChain_StopChain(p,a,b) (p)->lpVtbl->StopChain(p,a,b) -#define IFilterChain_RemoveChain(p,a,b) (p)->lpVtbl->RemoveChain(p,a,b) -#endif - -#endif - -#define IFilterChain_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IFilterChain methods ***/ \ - STDMETHOD_(HRESULT,StartChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; \ - STDMETHOD_(HRESULT,PauseChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; \ - STDMETHOD_(HRESULT,StopChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; \ - STDMETHOD_(HRESULT,RemoveChain)(THIS_ IBaseFilter* pStartFilter, IBaseFilter* pEndFilter) PURE; - -HRESULT CALLBACK IFilterChain_StartChain_Proxy( - IFilterChain* This, - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter); -void __RPC_STUB IFilterChain_StartChain_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterChain_PauseChain_Proxy( - IFilterChain* This, - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter); -void __RPC_STUB IFilterChain_PauseChain_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterChain_StopChain_Proxy( - IFilterChain* This, - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter); -void __RPC_STUB IFilterChain_StopChain_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IFilterChain_RemoveChain_Proxy( - IFilterChain* This, - IBaseFilter* pStartFilter, - IBaseFilter* pEndFilter); -void __RPC_STUB IFilterChain_RemoveChain_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IFilterChain_INTERFACE_DEFINED__ */ - -#ifdef __cplusplus -} -#endif -#endif /* __WIDL_STRMIF_H */ diff --git a/reactos/include/reactos/wine/cguid.h b/reactos/include/psdk/strmif.idl similarity index 66% rename from reactos/include/reactos/wine/cguid.h rename to reactos/include/psdk/strmif.idl index a9918ad3561..6ca3c175f51 100644 --- a/reactos/include/reactos/wine/cguid.h +++ b/reactos/include/psdk/strmif.idl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000 Peter Hunnisett + * Copyright (C) 2002 Robert Shearman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -13,22 +13,15 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifndef __WINE_CGUID_H__ -#define __WINE_CGUID_H__ +import "objidl.idl"; -#include_next +#include -#ifdef __cplusplus -extern "C" { -#endif +#include -extern const CLSID CLSID_StdGlobalInterfaceTable; +#include -#ifdef __cplusplus -} -#endif - -#endif /* __WINE_CGUID_H__ */ +#include diff --git a/reactos/include/psdk/textserv.h b/reactos/include/psdk/textserv.h new file mode 100644 index 00000000000..9b3cbf92f05 --- /dev/null +++ b/reactos/include/psdk/textserv.h @@ -0,0 +1,431 @@ +/* + * Copyright (C) 2005 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef _TEXTSERV_H +#define _TEXTSERV_H + +#ifdef __cplusplus +extern "C" { +#endif + +DEFINE_GUID(IID_ITextServices,0x8d33f740,0xcf58,0x11ce,0xa8,0x9d,0x00,0xaa,0x00,0x6c,0xad,0xc5); +DEFINE_GUID(IID_ITextHost, 0xc5bdd8d0,0xd26e,0x11ce,0xa8,0x9e,0x00,0xaa,0x00,0x6c,0xad,0xc5); +DEFINE_GUID(IID_ITextHost2, 0xc5bdd8d0,0xd26e,0x11ce,0xa8,0x9e,0x00,0xaa,0x00,0x6c,0xad,0xc5); + +/***************************************************************************** + * ITextServices interface + */ +#define INTERFACE ITextServices +DECLARE_INTERFACE_(ITextServices,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ + REFIID riid, + void** ppvObject) PURE; + + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** ITextServices methods ***/ + + STDMETHOD(TxSendMessage)( THIS_ + UINT msg, WPARAM wparam, LPARAM lparam, LRESULT* plresult) PURE; + + STDMETHOD(TxDraw)( THIS_ + DWORD dwDrawAspect, + LONG lindex, + void* pvAspect, + DVTARGETDEVICE* ptd, + HDC hdcDraw, + HDC hicTargetDev, + LPCRECTL lprcBounds, + LPCRECTL lprcWBounds, + LPRECT lprcUpdate, + BOOL (CALLBACK * pfnContinue)(DWORD), + DWORD dwContinue, + LONG lViewId) PURE; + + STDMETHOD(TxGetHScroll)( THIS_ + LONG* plMin, + LONG* plMax, + LONG* plPos, + LONG* plPage, + BOOL* pfEnabled) PURE; + + STDMETHOD(TxGetVScroll)( THIS_ + LONG* plMin, + LONG* plMax, + LONG* plPos, + LONG* plPage, + BOOL* pfEnabled) PURE; + + STDMETHOD(OnTxSetCursor)( THIS_ + DWORD dwDrawAspect, + LONG lindex, + void* pvAspect, + DVTARGETDEVICE* ptd, + HDC hdcDraw, + HDC hicTargetDev, + LPCRECT lprcClient, + INT x, + INT y) PURE; + + STDMETHOD(TxQueryHitPoint)( THIS_ + DWORD dwDrawAspect, + LONG lindex, + void* pvAspect, + DVTARGETDEVICE* ptd, + HDC hdcDraw, + HDC hicTargetDev, + LPCRECT lprcClient, + INT x, + INT y, + DWORD* pHitResult) PURE; + + STDMETHOD(OnTxInplaceActivate)( THIS_ + LPCRECT prcClient) PURE; + + STDMETHOD(OnTxInplaceDeactivate)( THIS ) PURE; + + STDMETHOD(OnTxUIActivate)( THIS ) PURE; + + STDMETHOD(OnTxUIDeactivate)( THIS ) PURE; + + STDMETHOD(TxGetText)( THIS_ + BSTR* pbstrText) PURE; + + STDMETHOD(TxSetText)( THIS_ + LPCWSTR pszText) PURE; + + STDMETHOD(TxGetCurrentTargetX)( THIS_ + LONG* x) PURE; + + STDMETHOD(TxGetBaseLinePos)( THIS_ + LONG* x) PURE; + + STDMETHOD(TxGetNaturalSize)( THIS_ + DWORD dwAspect, + HDC hdcDraw, + HDC hicTargetDev, + DVTARGETDEVICE* ptd, + DWORD dwMode, + const SIZEL* psizelExtent, + LONG* pwidth, + LONG* pheight) PURE; + + STDMETHOD(TxGetDropTarget)( THIS_ + IDropTarget** ppDropTarget) PURE; + + STDMETHOD(OnTxPropertyBitsChange)( THIS_ + DWORD dwMask, + DWORD dwBits) PURE; + + STDMETHOD(TxGetCachedSize)( THIS_ + DWORD* pdwWidth, + DWORD* pdwHeight) PURE; + +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define ITextServices_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ITextServices_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ITextServices_Release(p) (p)->lpVtbl->Release(p) +/*** ITextServices methods ***/ +#define ITextServices_TxSendMessage(p,a,b,c,d) (p)->lpVtbl->TxSendMessage(p,a,b,c,d) +#define ITextServices_TxDraw(p,a,b,c,d,e,f,g,h,i,j,k,l) (p)->lpVtbl->TxDraw(p,a,b,c,d,e,f,g,h,i,j,k,l) +#define ITextServices_TxGetHScroll(p,a,b,c,d,e) (p)->lpVtbl->TxGetHScroll(p,a,b,c,d,e) +#define ITextServices_TxGetVScroll(p,a,b,c,d,e) (p)->lpVtbl->TxGetVScroll(p,a,b,c,d,e) +#define ITextServices_OnTxSetCursor(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->OnTxSetCursor(p,a,b,c,d,e,f,g,h,i) +#define ITextServices_TxQueryHitPoint(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->TxQueryHitPoint(p,a,b,c,d,e,f,g,h,i,j) +#define ITextServices_OnTxInplaceActivate(p,a) (p)->lpVtbl->OnTxInplaceActivate(p,a) +#define ITextServices_OnTxInplaceDeactivate(p) (p)->lpVtbl->OnTxInplaceDeactivate(p) +#define ITextServices_OnTxUIActivate(p) (p)->lpVtbl->OnTxUIActivate(p) +#define ITextServices_OnTxUIDeactivate(p) (p)->lpVtbl->OnTxUIDeactivate(p) +#define ITextServices_TxGetText(p,a) (p)->lpVtbl->TxGetText(p,a) +#define ITextServices_TxSetText(p,a) (p)->lpVtbl->TxSetText(p,a) +#define ITextServices_TxGetCurrentTargetX(p,a) (p)->lpVtbl->TxGetCurrentTargetX(p,a) +#define ITextServices_TxGetBaseLinePos(p,a) (p)->lpVtbl->TxGetBaseLinePos(p,a) +#define ITextServices_TxGetNaturalSize(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->TxGetNaturalSize(p,a,b,c,d,e,f,g,h) +#define ITextServices_TxGetDropTarget(p,a) (p)->lpVtbl->TxGetDropTarget(p,a) +#define ITextServices_OnTxPropertyBitsChange(p,a,b) (p)->lpVtbl->OnTxPropertyBitsChange(p,a,b) +#define ITextServices_TxGetCachedSize(p,a,b) (p)->lpVtbl->TxGetCachedSize(p,a,b) +#endif + +#undef INTERFACE + +typedef enum _TXTBACKSTYLE { + TXTBACK_TRANSPARENT = 0, + TXTBACK_OPAQUE +} TXTBACKSTYLE; + +enum TXTHITRESULT { + TXTHITRESULT_NOHIT = 0, + TXTHITRESULT_TRANSPARENT = 1, + TXTHITRESULT_CLOSE = 2, + TXTHITRESULT_HIT = 3 +}; + +enum TXTNATURALSIZE { + TXTNS_FITTOCONTENT = 1, + TXTNS_ROUNDTOLINE = 2 +}; + +enum TXTVIEW { + TXTVIEW_ACTIVE = 0, + TXTVIEW_INACTIVE = 1 +}; + +#define TXTBIT_RICHTEXT 0x000001 +#define TXTBIT_MULTILINE 0x000002 +#define TXTBIT_READONLY 0x000004 +#define TXTBIT_SHOWACCELERATOR 0x000008 +#define TXTBIT_USEPASSWORD 0x000010 +#define TXTBIT_HIDESELECTION 0x000020 +#define TXTBIT_SAVESELECTION 0x000040 +#define TXTBIT_AUTOWORDSEL 0x000080 +#define TXTBIT_VERTICAL 0x000100 +#define TXTBIT_SELBARCHANGE 0x000200 +#define TXTBIT_WORDWRAP 0x000400 +#define TXTBIT_ALLOWBEEP 0x000800 +#define TXTBIT_DISABLEDRAG 0x001000 +#define TXTBIT_VIEWINSETCHANGE 0x002000 +#define TXTBIT_BACKSTYLECHANGE 0x004000 +#define TXTBIT_MAXLENGTHCHANGE 0x008000 +#define TXTBIT_SCROLLBARCHANGE 0x010000 +#define TXTBIT_CHARFORMATCHANGE 0x020000 +#define TXTBIT_PARAFORMATCHANGE 0x040000 +#define TXTBIT_EXTENTCHANGE 0x080000 +#define TXTBIT_CLIENTRECTCHANGE 0x100000 +#define TXTBIT_USECURRENTBKG 0x200000 + +/***************************************************************************** + * ITextHost interface + */ +#define INTERFACE ITextHost +DECLARE_INTERFACE_(ITextHost,IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ + REFIID riid, + void** ppvObject) PURE; + + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** ITextHost methods ***/ + STDMETHOD_(HDC,TxGetDC)( THIS + ) PURE; + + STDMETHOD_(INT,TxReleaseDC)( THIS_ + HDC hdc) PURE; + + STDMETHOD_(BOOL,TxShowScrollBar)( THIS_ + INT fnBar, + BOOL fShow) PURE; + + STDMETHOD_(BOOL,TxEnableScrollBar)( THIS_ + INT fuSBFlags, + INT fuArrowflags) PURE; + + STDMETHOD_(BOOL,TxSetScrollRange)( THIS_ + INT fnBar, + LONG nMinPos, + INT nMaxPos, + BOOL fRedraw) PURE; + + STDMETHOD_(BOOL,TxSetScrollPos)( THIS_ + INT fnBar, + INT nPos, + BOOL fRedraw) PURE; + + STDMETHOD_(void,TxInvalidateRect)( THIS_ + LPCRECT prc, + BOOL fMode) PURE; + + STDMETHOD_(void,TxViewChange)( THIS_ + BOOL fUpdate) PURE; + + STDMETHOD_(BOOL,TxCreateCaret)( THIS_ + HBITMAP hbmp, + INT xWidth, + INT yHeight) PURE; + + STDMETHOD_(BOOL,TxShowCaret)( THIS_ + BOOL fShow) PURE; + + STDMETHOD_(BOOL,TxSetCarentPos)( THIS_ + INT x, + INT y) PURE; + + STDMETHOD_(BOOL,TxSetTimer)( THIS_ + UINT idTimer, + UINT uTimeout) PURE; + + STDMETHOD_(void,TxKillTimer)( THIS_ + UINT idTimer) PURE; + + STDMETHOD_(void,TxScrollWindowEx)( THIS_ + INT dx, + INT dy, + LPCRECT lprcScroll, + LPCRECT lprcClip, + HRGN hRgnUpdate, + LPRECT lprcUpdate, + UINT fuScroll) PURE; + + STDMETHOD_(void,TxSetCapture)( THIS_ + BOOL fCapture) PURE; + + STDMETHOD_(void,TxSetFocus)( THIS + ) PURE; + + STDMETHOD_(void,TxSetCursor)( THIS_ + HCURSOR hcur, + BOOL fText) PURE; + + STDMETHOD_(BOOL,TxScreenToClient)( THIS_ + LPPOINT lppt) PURE; + + STDMETHOD_(BOOL,TxClientToScreen)( THIS_ + LPPOINT lppt) PURE; + + STDMETHOD(TxActivate)( THIS_ + LONG* plOldState) PURE; + + STDMETHOD(TxDeactivate)( THIS_ + LONG lNewState) PURE; + + STDMETHOD(TxGetClientRect)( THIS_ + LPRECT prc) PURE; + + STDMETHOD(TxGetViewInset)( THIS_ + LPRECT prc) PURE; + + STDMETHOD(TxGetCharFormat)( THIS_ + const CHARFORMATW** ppCF) PURE; + + STDMETHOD(TxGetParaFormat)( THIS_ + const PARAFORMAT** ppPF) PURE; + + STDMETHOD_(COLORREF,TxGetSysColor)( THIS_ + int nIndex) PURE; + + STDMETHOD(TxGetBackStyle)( THIS_ + TXTBACKSTYLE* pStyle) PURE; + + STDMETHOD(TxGetMaxLength)( THIS_ + DWORD* plength) PURE; + + STDMETHOD(TxGetScrollbars)( THIS_ + DWORD* pdwScrollBar) PURE; + + STDMETHOD(TxGetPasswordChar)( THIS_ + WCHAR* pch) PURE; + + STDMETHOD(TxGetAcceleratorPos)( THIS_ + LONG* pch) PURE; + + STDMETHOD(TxGetExtent)( THIS_ + LPSIZEL lpExtent) PURE; + + STDMETHOD(OnTxCharFormatChange)( THIS_ + const CHARFORMATW* pcf) PURE; + + STDMETHOD(OnTxParaFormatChange)( THIS_ + const PARAFORMAT* ppf) PURE; + + STDMETHOD(TxGetPropertyBits)( THIS_ + DWORD dwMask, + DWORD* pdwBits) PURE; + + STDMETHOD(TxNotify)( THIS_ + DWORD iNotify, + void* pv) PURE; + + STDMETHOD_(HIMC,TxImmGetContext)( THIS + ) PURE; + + STDMETHOD_(void,TxImmReleaseContext)( THIS_ + HIMC himc) PURE; + + STDMETHOD(TxGetSelectionBarWidth)( THIS_ + LONG* lSelBarWidth) PURE; + +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define ITextHost_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ITextHost_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ITextHost_Release(p) (p)->lpVtbl->Release(p) +/*** ITextHost methods ***/ +#define ITextHost_TxGetDC(p) (p)->lpVtbl->TxGetDC(p) +#define ITextHost_TxReleaseDC(p,a) (p)->lpVtbl->TxReleaseDC(p,a) +#define ITextHost_TxShowScrollBar(p,a,b) (p)->lpVtbl->TxShowScrollBar(p,a,b) +#define ITextHost_TxEnableScrollBar(p,a,b) (p)->lpVtbl->TxEnableScrollBar(p,a,b) +#define ITextHost_TxSetScrollRange(p,a,b,c,d) (p)->lpVtbl->TxSetScrollRange(p,a,b,c,d) +#define ITextHost_TxSetScrollPos(p,a,b,c) (p)->lpVtbl->TxSetScrollPos(p,a,b,c) +#define ITextHost_TxInvalidateRect(p,a,b) (p)->lpVtbl->TxInvalidateRect(p,a,b) +#define ITextHost_TxViewChange(p,a) (p)->lpVtbl->TxViewChange(p,a) +#define ITextHost_TxCreateCaret(p,a,b,c) (p)->lpVtbl->TxCreateCaret(p,a,b,c) +#define ITextHost_TxShowCaret(p,a) (p)->lpVtbl->TxShowCaret(p,a) +#define ITextHost_TxSetCarentPos(p,a,b) (p)->lpVtbl->TxSetCarentPos(p,a,b) +#define ITextHost_TxSetTimer(p,a,b) (p)->lpVtbl->TxSetTimer(p,a,b) +#define ITextHost_TxKillTimer(p,a) (p)->lpVtbl->TxKillTimer(p,a) +#define ITextHost_TxScrollWindowEx(p,a,b,c,d,e,f,g) (p)->lpVtbl->TxScrollWindowEx(p,a,b,c,d,e,f,g) +#define ITextHost_TxSetCapture(p,a) (p)->lpVtbl->TxSetCapture(p,a) +#define ITextHost_TxSetFocus(p) (p)->lpVtbl->TxSetFocus(p) +#define ITextHost_TxSetCursor(p,a,b) (p)->lpVtbl->TxSetCursor(p,a,b) +#define ITextHost_TxScreenToClient(p,a) (p)->lpVtbl->TxScreenToClient(p,a) +#define ITextHost_TxClientToScreen(p,a) (p)->lpVtbl->TxClientToScreen(p,a) +#define ITextHost_TxActivate(p,a) (p)->lpVtbl->TxActivate(p,a) +#define ITextHost_TxDeactivate(p,a) (p)->lpVtbl->TxDeactivate(p,a) +#define ITextHost_TxGetClientRect(p,a) (p)->lpVtbl->TxGetClientRect(p,a) +#define ITextHost_TxGetViewInset(p,a) (p)->lpVtbl->TxGetViewInset(p,a) +#define ITextHost_TxGetCharFormat(p,a) (p)->lpVtbl->TxGetCharFormat(p,a) +#define ITextHost_TxGetParaFormat(p,a) (p)->lpVtbl->TxGetParaFormat(p,a) +#define ITextHost_TxGetSysColor(p,a) (p)->lpVtbl->TxGetSysColor(p,a) +#define ITextHost_TxGetBackStyle(p,a) (p)->lpVtbl->TxGetBackStyle(p,a) +#define ITextHost_TxGetMaxLength(p,a) (p)->lpVtbl->TxGetMaxLength(p,a) +#define ITextHost_TxGetScrollbars(p,a) (p)->lpVtbl->TxGetScrollbars(p,a) +#define ITextHost_TxGetPasswordChar(p,a) (p)->lpVtbl->TxGetPasswordChar(p,a) +#define ITextHost_TxGetAcceleratorPos(p,a) (p)->lpVtbl->TxGetAcceleratorPos(p,a) +#define ITextHost_TxGetExtent(p,a) (p)->lpVtbl->TxGetExtent(p,a) +#define ITextHost_OnTxCharFormatChange(p,a) (p)->lpVtbl->OnTxCharFormatChange(p,a) +#define ITextHost_OnTxParaFormatChange(p,a) (p)->lpVtbl->OnTxParaFormatChange(p,a) +#define ITextHost_TxGetPropertyBits(p,a,b) (p)->lpVtbl->TxGetPropertyBits(p,a,b) +#define ITextHost_TxNotify(p,a,b) (p)->lpVtbl->TxNotify(p,a,b) +#define ITextHost_TxImmGetContext(p) (p)->lpVtbl->TxImmGetContext(p) +#define ITextHost_TxImmReleaseContext(p,a) (p)->lpVtbl->TxImmReleaseContext(p,a) +#define ITextHost_TxGetSelectionBarWidth(p,a) (p)->lpVtbl->TxGetSelectionBarWidth(p,a) +#endif + +#undef INTERFACE + +HRESULT WINAPI CreateTextServices(IUnknown*,ITextHost*,IUnknown**); + +typedef HRESULT (WINAPI *PCreateTextServices)(IUnknown*,ITextHost*,IUnknown**); + +#ifdef __cplusplus +} +#endif + +#endif /* _TEXTSERV_H */ diff --git a/reactos/include/psdk/tom.idl b/reactos/include/psdk/tom.idl new file mode 100644 index 00000000000..f4dd2f09594 --- /dev/null +++ b/reactos/include/psdk/tom.idl @@ -0,0 +1,430 @@ +/* + * Copyright 2006 Juan Lang + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "oaidl.idl"; + +typedef enum tagTomConstants +{ + tomFalse = 0, + tomTrue = -1, + tomUndefined = -9999999, + tomToggle = -9999998, + tomAutoColor = -9999997, + tomDefault = -9999996, + tomSuspend = -9999995, + tomResume = -9999994, + tomApplyNow = 0, + tomApplyLater = 1, + tomTrackParms = 2, + tomCacheParms = 3, + tomBackward = 0xc00000001, + tomForward = 0x3ffffffff, + tomMove = 0, + tomExtend = 1, + tomNoSelection = 0, + tomSelectionIP = 1, + tomSelectionNormal = 2, + tomSelectionFrame = 3, + tomSelectionColumn = 4, + tomSelectionRow = 5, + tomSelectionBlock = 6, + tomSelectionInlineShape = 7, + tomSelectionShape = 8, + tomSelStartActive = 1, + tomSelAtEOL = 2, + tomSelOvertype = 4, + tomSelActive = 8, + tomSelReplace = 16, + tomEnd = 0, + tomStart = 32, + tomCollapseEnd = 0, + tomCollapseStart = 1, + tomClientCoord = 256, + tomNone = 0, + tomSingle = 1, + tomWords = 2, + tomDouble = 3, + tomDotted = 4, + tomDash = 5, + tomDashDot = 6, + tomDashDotDot = 7, + tomWave = 8, + tomThick = 9, + tomHair = 10, + tomLineSpaceSingle = 0, + tomLineSpace1pt5 = 1, + tomLineSpaceDouble = 2, + tomLineSpaceAtLeast = 3, + tomLineSpaceExactly = 4, + tomLineSpaceMultiple = 5, + tomAlignLeft = 0, + tomAlignCenter = 1, + tomAlignRight = 2, + tomAlignJustify = 3, + tomAlignDecimal = 3, + tomAlignBar = 4, + tomAlignInterWord = 3, + tomAlignInterLetter = 4, + tomAlignScaled = 5, + tomAlignGlyphs = 6, + tomAlignSnapGrid = 7, + tomSpaces = 0, + tomDots = 1, + tomDashes = 2, + tomLines = 3, + tomThickLines = 4, + tomEquals = 5, + tomTabBack = -3, + tomTabNext = -2, + tomTabHere = -1, + tomListBullet = 1, + tomListNumberAsArabic = 2, + tomListNumberAsLCLetter = 3, + tomListNumberAsUCLetter = 4, + tomListNumberAsLCRoman = 5, + tomListNumberAsUCRoman = 6, + tomListNumberAsSequence = 7, + tomListParentheses = 0x10000, + tomListPeriod = 0x20000, + tomListPlain = 0x30000, + tomCharacter = 1, + tomWord = 2, + tomSentence = 3, + tomParagraph = 4, + tomLine = 5, + tomStory = 6, + tomScreen = 7, + tomSection = 8, + tomColumn = 9, + tomRow = 10, + tomWindow = 11, + tomCell = 12, + tomCharFormat = 13, + tomParaFormat = 14, + tomTable = 15, + tomObject = 16, + tomMatchWord = 2, + tomMatchCase = 4, + tomMatchPattern = 8, + tomUnknownStory = 0, + tomMainTextStory = 1, + tomFootnotesStory = 2, + tomEndnotesStory = 3, + tomCommentsStory = 4, + tomTextFrameStory = 5, + tomEvenPagesHeaderStory = 6, + tomPrimaryHeaderStory = 7, + tomEvenPagesFooterStory = 8, + tomPrimaryFooterStory = 9, + tomFirstPageHeaderStory = 10, + tomFirstPageFooterStory = 11, + tomNoAnimation = 0, + tomLasVegasLights = 1, + tomBlinkingBackground = 2, + tomSparkleText = 3, + tomMarchingBlackAnts = 4, + tomMarchingRedAnts = 5, + tomShimmer = 6, + tomWipeDown = 7, + tomWipeRight = 8, + tomAnimationMax = 8, + tomLowerCase = 0, + tomUpperCase = 1, + tomTitleCase = 2, + tomSentenceCase = 4, + tomToggleCase = 5, + tomReadOnly = 0x100, + tomShareDenyRead = 0x200, + tomShareDenyWrite = 0x400, + tomPasteFile = 0x1000, + tomCreateNew = 0x10, + tomCreateAlways = 0x20, + tomOpenExisting = 0x30, + tomOpenAlways = 0x40, + tomTruncateExisting = 0x50, + tomRTF = 0x1, + tomText = 0x2, + tomHTML = 0x3, + tomWordDocument = 0x4, + tomBold = 0x800000001, + tomItalic = 0x800000002, + tomUnderline = 0x800000004, + tomStrikeout = 0x800000008, + tomProtected = 0x800000010, + tomLink = 0x800000020, + tomSmallCaps = 0x800000040, + tomAllCaps = 0x800000080, + tomHidden = 0x800000100, + tomOutline = 0x800000200, + tomShadow = 0x800000400, + tomEmboss = 0x800000800, + tomImprint = 0x800001000, + tomDisabled = 0x800002000, + tomRevised = 0x800004000, + tomNormalCaret = 0, + tomKoreanBlockCaret = 0x1, + tomIncludeInset = 0x1, + tomIgnoreCurrentFont = 0, + tomMatchFontCharset = 0x1, + tomMatchFontSignature = 0x2, + tomCharset = 0x80000000, + tomRE10Mode = 0x1, + tomNoIME = 0x80000, + tomSelfIME = 0x40000 +} tomConstants; + +interface ITextRange; +interface ITextSelection; +interface ITextStoryRanges; + +[ + object, + uuid(8cc497c0-a1df-11ce-8098-00aa0047be5d) +] +interface ITextDocument : IDispatch +{ + HRESULT GetName([retval, out]BSTR *pName); + HRESULT GetSelection([retval, out]ITextSelection **ppSel); + HRESULT GetStoryCount([retval, out]long *pCount); + HRESULT GetStoryRanges([retval, out]ITextStoryRanges **ppStories); + HRESULT GetSaved([retval, out]long *pValue); + HRESULT SetSaved([in]long Value); + HRESULT GetDefaultTabStop([retval, out]float *pValue); + HRESULT SetDefaultTabStop([in]float Value); + HRESULT New(); + HRESULT Open([in]VARIANT *pVar, [in]long Flags, [in]long CodePage); + HRESULT Save([in]VARIANT *pVar, [in]long Flags, [in]long CodePage); + HRESULT Freeze([retval, out]long *pCount); + HRESULT Unfreeze([retval, out]long *pCount); + HRESULT BeginEditCollection(); + HRESULT EndEditCollection(); + HRESULT Undo([in]long Count, [retval, out]long *prop); + HRESULT Redo([in]long Count, [retval, out]long *prop); + HRESULT Range([in]long cp1, [in]long cp2, [retval, out]ITextRange**ppRange); + HRESULT RangeFromPoint([in]long x, [in]long y, [retval, out]ITextRange**ppRange); +} + +interface ITextFont; +interface ITextPara; + +[ + object, + uuid(8cc497c2-a1df-11ce-8098-00aa0047be5d) +] +interface ITextRange : IDispatch +{ + HRESULT GetText([retval, out]BSTR *pbstr); + HRESULT SetText([in]BSTR bstr); + HRESULT GetChar([retval, out]long *pch); + HRESULT SetChar([in]long ch); + HRESULT GetDuplicate([retval, out]ITextRange **ppRange); + HRESULT GetFormattedText([retval, out]ITextRange **ppRange); + HRESULT SetFormattedText([in]ITextRange *pRange); + HRESULT GetStart([retval, out]long *pcpFirst); + HRESULT SetStart([in]long cpFirst); + HRESULT GetEnd([retval, out]long *pcpLim); + HRESULT SetEnd([in]long cpLim); + HRESULT GetFont([retval, out]ITextFont **pFont); + HRESULT SetFont([in]ITextFont *pFont); + HRESULT GetPara([retval, out]ITextPara **ppPara); + HRESULT SetPara([in]ITextPara *pPara); + HRESULT GetStoryLength([retval, out]long *pcch); + HRESULT GetStoryType([retval, out]long *pValue); + HRESULT Collapse([in]long bStart); + HRESULT Expand([in]long Unit, [retval, out]long *pDelta); + HRESULT GetIndex([in]long Unit, [retval, out]long *pIndex); + HRESULT SetIndex([in]long Unit, [in]long Index, [in]long Extend); + HRESULT SetRange([in]long cpActive, [in]long cpOther); + HRESULT InRange([in]ITextRange *pRange, [retval, out]long *pb); + HRESULT InStory([in]ITextRange *pRange, [retval, out]long *pb); + HRESULT IsEqual([in]ITextRange *pRange, [retval, out]long *pb); + HRESULT Select(); + HRESULT StartOf([in]long Unit, [in]long Extend, [retval, out]long *pDelta); + HRESULT EndOf([in]long Unit, [in]long Extend, [retval, out]long *pDelta); + HRESULT Move([in]long Unit, [in]long Count, [retval, out]long *pDelta); + HRESULT MoveStart([in]long Unit, [in]long Count, [retval, out]long *pDelta); + HRESULT MoveEnd([in]long Unit, [in]long Count, [retval, out]long *pDelta); + HRESULT MoveWhile([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta); + HRESULT MoveStartWhile([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta); + HRESULT MoveEndWhile([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta); + HRESULT MoveUntil([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta); + HRESULT MoveStartUntil([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta); + HRESULT MoveEndUntil([in]VARIANT *Cset, [in]long Count, [retval, out]long *pDelta); + HRESULT FindText([in]BSTR bstr, [in]long cch, [in]long Flags, [retval, out]long *pLength); + HRESULT FindTextStart([in]BSTR bstr, [in]long cch, [in]long Flags, [retval, out]long *pLength); + HRESULT FindTextEnd([in]BSTR bstr, [in]long cch, [in]long Flags, [retval, out]long *pLength); + HRESULT Delete([in]long Unit, [in]long Count, [retval, out]long *pDelta); + HRESULT Cut([out]VARIANT *pVar); + HRESULT Copy([out]VARIANT *pVar); + HRESULT Paste([in]VARIANT *pVar, [in]long Format); + HRESULT CanPaste([in]VARIANT *pVar, [in]long Format, [retval, out]long *pb); + HRESULT CanEdit([retval, out]long *pb); + HRESULT ChangeCase([in]long Type); + HRESULT GetPoint([in]long Type, [out]long *cx, [out]long *cy); + HRESULT SetPoint([in]long x, [in]long y, [in]long Type, [in]long Extend); + HRESULT ScrollIntoView([in]long Value); + HRESULT GetEmbeddedObject([retval, out]IUnknown **ppv); +} + +[ + object, + uuid(8cc497c1-a1df-11ce-8098-00aa0047be5d) +] +interface ITextSelection : ITextRange +{ + HRESULT GetFlags([retval, out]long *pFlags); + HRESULT SetFlags([in]long Flags); + HRESULT GetType([retval, out]long *pType); + HRESULT MoveLeft([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta); + HRESULT MoveRight([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta); + HRESULT MoveUp([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta); + HRESULT MoveDown([in]long Unit, [in]long Count, [in]long Extend, [retval, out]long *pDelta); + HRESULT HomeKey([in]long Unit, [in]long Extend, [retval, out]long *pDelta); + HRESULT EndKey([in]long Unit, [in]long Extend, [retval, out]long *pDelta); + HRESULT TypeText([in]BSTR bstr); +} + +[ + object, + uuid(8cc497c3-a1df-11ce-8098-00aa0047be5d) +] +interface ITextFont : IDispatch +{ + HRESULT GetDuplicate([retval, out]ITextFont **ppFont); + HRESULT SetDuplicate([in]ITextFont *pFont); + HRESULT CanChange([out]long *pB); + HRESULT IsEqual([in]ITextFont *pFont, [retval, out]long *pB); + HRESULT Reset([in]long Value); + HRESULT GetStyle([retval, out]long *pValue); + HRESULT SetStyle([in]long Value); + HRESULT GetAllCaps([retval, out]long *pValue); + HRESULT SetAllCaps([in]long Value); + HRESULT GetAnimation([retval, out]long *pValue); + HRESULT SetAnimation([in]long Value); + HRESULT GetBackColor([retval, out]long *pValue); + HRESULT SetBackColor([in]long Value); + HRESULT GetBold([retval, out]long *pValue); + HRESULT SetBold([in]long Value); + HRESULT GetEmboss([retval, out]long *pValue); + HRESULT SetEmboss([in]long Value); + HRESULT GetForeColor([retval, out]long *pValue); + HRESULT SetForeColor([in]long Value); + HRESULT GetHidden([retval, out]long *pValue); + HRESULT SetHidden([in]long Value); + HRESULT GetEngrave([retval, out]long *pValue); + HRESULT SetEngrave([in]long Value); + HRESULT GetItalic([retval, out]long *pValue); + HRESULT SetItalic([in]long Value); + HRESULT GetKerning([retval, out]long *pValue); + HRESULT SetKerning([in]long Value); + HRESULT GetLanguageID([retval, out]long *pValue); + HRESULT SetLanguageID([in]long Value); + HRESULT GetName([retval, out]BSTR *pValue); + HRESULT SetName([in]BSTR Value); + HRESULT GetOutline([retval, out]long *pValue); + HRESULT SetOutline([in]long Value); + HRESULT GetPosition([retval, out]long *pValue); + HRESULT SetPosition([in]long Value); + HRESULT GetProtected([retval, out]long *pValue); + HRESULT SetProtected([in]long Value); + HRESULT GetShadow([retval, out]long *pValue); + HRESULT SetShadow([in]long Value); + HRESULT GetSize([retval, out]long *pValue); + HRESULT SetSize([in]long Value); + HRESULT GetSmallCaps([retval, out]long *pValue); + HRESULT SetSmallCaps([in]long Value); + HRESULT GetSpacing([retval, out]float *pValue); + HRESULT SetSpacing([in]float Value); + HRESULT GetStrikeThrough([retval, out]long *pValue); + HRESULT SetStrikeThrough([in]long Value); + HRESULT GetSubscript([retval, out]long *pValue); + HRESULT SetSubscript([in]long Value); + HRESULT GetSuperscript([retval, out]long *pValue); + HRESULT SetSuperscript([in]long Value); + HRESULT GetUnderline([retval, out]long *pValue); + HRESULT SetUnderline([in]long Value); + HRESULT GetWeight([retval, out]long *pValue); + HRESULT SetWeight([in]long Value); +} + +[ + object, + uuid(8cc497c4-a1df-11ce-8098-00aa0047be5d) +] +interface ITextPara : IDispatch +{ + HRESULT GetDuplicate([retval, out]ITextPara *ppPara); + HRESULT SetDuplicate([in]ITextPara *pPara); + HRESULT CanChange([out]long *pB); + HRESULT IsEqual([in]ITextPara *pPara, [retval, out]long *pB); + HRESULT Reset([in]long Value); + HRESULT GetStyle([retval, out]long *pValue); + HRESULT SetStyle([in]long Value); + HRESULT GetAlignment([retval, out]long *pValue); + HRESULT SetAlignment([in]long Value); + HRESULT GetHyphenation([retval, out]long *pValue); + HRESULT SetHyphenation([in]long Value); + HRESULT GetFirstLineIndent([retval, out]float *pValue); + HRESULT GetKeepTogether([retval, out]long *pValue); + HRESULT SetKeepTogether([in]long Value); + HRESULT GetKeepWithNext([retval, out]long *pValue); + HRESULT SetKeepWithNext([in]long Value); + HRESULT GetLeftIndent([retval, out]float *pValue); + HRESULT GetLineSpacing([retval, out]float *pValue); + HRESULT GetLineSpacingRule([retval, out]long *pValue); + HRESULT GetListAlignment([retval, out]long *pValue); + HRESULT SetListAlignment([in]long Value); + HRESULT GetListLevelIndex([retval, out]long *pValue); + HRESULT SetListLevelIndex([in]long Value); + HRESULT GetListStart([retval, out]long *pValue); + HRESULT SetListStart([in]long Value); + HRESULT GetListTab([retval, out]long *pValue); + HRESULT SetListTab([in]long Value); + HRESULT GetListType([retval, out]long *pValue); + HRESULT SetListType([in]long Value); + HRESULT GetNoLineNumber([retval, out]long *pValue); + HRESULT SetNoLineNumber([in]long Value); + HRESULT GetPageBreakBefore([retval, out]long *pValue); + HRESULT SetPageBreakBefore([in]long Value); + HRESULT GetRightIndent([retval, out]float *pValue); + HRESULT SetRightIndent([in]float Value); + HRESULT SetIndents([in]float StartIndent, [in]float LeftIndent, [in]float RightIndent); + HRESULT SetLineSpacing([in]long LineSpacingRule, [in]float LineSpacing); + HRESULT GetSpaceAfter([retval, out]float *pValue); + HRESULT SetSpaceAfter([in]float Value); + HRESULT GetSpaceBefore([retval, out]float *pValue); + HRESULT SetSpaceBefore([in]float Value); + HRESULT GetWindowControl([retval, out]float *pValue); + HRESULT SetWindowControl([in]float Value); + HRESULT GetTabCount([retval, out]long *pCount); + HRESULT AddTab([in]float tbPos, [in]long tbAlign, [in]long tbLeader); + HRESULT ClearAllTabs(); + HRESULT DeleteTab([in]float tbPos); + HRESULT GetTab([in]long iTab, [out]float *ptbPos, [out]long *ptbAlign, [out]long *ptbLeader); +} + +[ + object, + uuid(8cc497c5-a1df-11ce-8098-00aa0047be5d) +] +interface ITextStoryRanges : IDispatch +{ + HRESULT _NewEnum([retval, out]IUnknown **ppUnkEnum); + HRESULT Item([in]long Index, [retval, out]ITextRange **ppRange); + HRESULT GetCount([retval, out]long *pCount); +} diff --git a/reactos/include/psdk/unknwn.h b/reactos/include/psdk/unknwn.h deleted file mode 100644 index 3ce60d1921c..00000000000 --- a/reactos/include/psdk/unknwn.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef COM_NO_WINDOWS_H -#include -#endif - -#ifndef _UNKNWN_H -#define _UNKNWN_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C"{ -#endif -#include -#include - -void * __RPC_USER MIDL_user_allocate(size_t); -void __RPC_USER MIDL_user_free(void*); - -DEFINE_GUID(IID_IUnknown, 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46); -DEFINE_OLEGUID(IID_IClassFactory, 0x00000001, 0, 0); -#ifndef __IUnknown_INTERFACE_DEFINED__ -#define __IUnknown_INTERFACE_DEFINED__ -#define INTERFACE IUnknown -DECLARE_INTERFACE(IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; -}; -#undef INTERFACE -typedef IUnknown *LPUNKNOWN; -#endif -#ifndef __IClassFactory_INTERFACE_DEFINED__ -#define __IClassFactory_INTERFACE_DEFINED__ -#define INTERFACE IClassFactory -DECLARE_INTERFACE_(IClassFactory,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE; - STDMETHOD(LockServer)(THIS_ BOOL) PURE; -}; -#undef INTERFACE -typedef IClassFactory *LPCLASSFACTORY; -#endif -HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(IUnknown*,REFIID,void**); -void __RPC_STUB IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(IUnknown*); -void __RPC_STUB IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(IUnknown*); -void __RPC_STUB IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IClassFactory_RemoteCreateInstance_Proxy(IClassFactory*,REFIID,IUnknown**); -void __RPC_STUB IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); -HRESULT __stdcall IClassFactory_RemoteLockServer_Proxy(IClassFactory*,BOOL); -void __RPC_STUB IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Proxy(IClassFactory*,IUnknown*,REFIID,void**); -HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Stub(IClassFactory*,REFIID,IUnknown**); -HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Proxy(IClassFactory*,BOOL); -HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Stub(IClassFactory*,BOOL); - -#if (!defined (__cplusplus) || defined (CINTERFACE)) \ - && defined (COBJMACROS) -#define IUnknown_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O) -#define IUnknown_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IUnknown_Release(T) (T)->lpVtbl->Release(T) -#define IClassFactory_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O) -#define IClassFactory_AddRef(T) (T)->lpVtbl->AddRef(T) -#define IClassFactory_Release(T) (T)->lpVtbl->Release(T) -#define IClassFactory_CreateInstance(T,p,r,O) (T)->lpVtbl->CreateInstance(T,p,r,O) -#define IClassFactory_LockServer(T,f) (T)->lpVtbl->LockServer(T,f) -#endif /* COBJMACROS */ -#ifdef __cplusplus -} -#endif -#endif diff --git a/reactos/include/psdk/unknwn.idl b/reactos/include/psdk/unknwn.idl new file mode 100644 index 00000000000..0ae9dee9fd9 --- /dev/null +++ b/reactos/include/psdk/unknwn.idl @@ -0,0 +1,67 @@ +/* + * Copyright 2002 Ove Kaaven + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "wtypes.idl"; + +/* Interfaces */ + +[ + local, + object, + uuid(00000000-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IUnknown +{ + typedef [unique] IUnknown *LPUNKNOWN; + + HRESULT QueryInterface( + [in] REFIID riid, + [out, iid_is(riid)] void **ppvObject); + ULONG AddRef(); + ULONG Release(); +} + +[ + object, + uuid(00000001-0000-0000-C000-000000000046), + pointer_default(unique) +] +interface IClassFactory : IUnknown +{ + typedef [unique] IClassFactory *LPCLASSFACTORY; + + [local] + HRESULT CreateInstance( + [in, unique] IUnknown *pUnkOuter, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvObject); + + [call_as(CreateInstance)] + HRESULT RemoteCreateInstance( + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppvObject); + + [local] + HRESULT LockServer( + [in] BOOL fLock); + + [call_as(LockServer)] + HRESULT RemoteLockServer( + [in] BOOL fLock); +} diff --git a/reactos/include/psdk/urlhist.idl b/reactos/include/psdk/urlhist.idl new file mode 100644 index 00000000000..0dde4829aa0 --- /dev/null +++ b/reactos/include/psdk/urlhist.idl @@ -0,0 +1,139 @@ +/* + * Copyright 2006 Jacek Caban for CodeWeavers + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; +import "docobj.idl"; +import "servprov.idl"; + +typedef enum _ADDURL_FLAG +{ + ADDURL_FIRST = 0, + ADDURL_ADDTOHISTORYANDCACHE = 0, + ADDURL_ADDTOCACHE = 1, + ADDURL_Max = 0x7fffffff +} ADDURL_FLAG; + +/***************************************************************************** + * IEnumSTATURL interface + */ +[ + object, + uuid(3c374a42-bae4-11cf-bf7d-00aa006946ee), + pointer_default(unique) +] +interface IEnumSTATURL : IUnknown +{ + typedef [unique] IEnumSTATURL *LPENUMSTATURL; + + typedef struct _STATURL + { + DWORD cbSize; + LPWSTR pwcsUrl; + LPWSTR pwcsTitle; + FILETIME ftLastVisited; + FILETIME ftLastUpdated; + FILETIME ftExpires; + DWORD dwFlags; + } STATURL, *LPSTATURL; + + HRESULT Next( + [in] ULONG celt, + [in, out] LPSTATURL rgelt, + [in, out] ULONG *pceltFetched); + + HRESULT Skip([in] ULONG celt); + HRESULT Reset(); + HRESULT Clone([out] IEnumSTATURL **ppenum); + + HRESULT SetFilter( + [in] LPCOLESTR poszFilter, + [in] DWORD dwFlags); +} + +/***************************************************************************** + * IUrlHistoryStg interface + */ +[ + object, + uuid(3c374a41-bae4-11cf-bf7d-00aa006946ee), + pointer_default(unique) +] +interface IUrlHistoryStg : IUnknown +{ + typedef [unique] IUrlHistoryStg *LPURLHISTORYSTG; + + HRESULT AddUrl( + [in] LPCOLESTR pocsUrl, + [in, unique] LPCOLESTR pocsTitle, + [in] DWORD dwFlags); + + HRESULT DeleteUrl( + [in] LPCOLESTR pocsUrl, + [in] DWORD dwFlags); + + HRESULT QueryUrl( + [in] LPCOLESTR pocsUrl, + [in] DWORD dwFlags, + [in, out, unique] LPSTATURL lpSTATURL); + + HRESULT BindToObject( + [in] LPCOLESTR pocsUrl, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvOut); + + HRESULT EnumUrls( + [out] IEnumSTATURL **ppEnum); +} + +/***************************************************************************** + * IUrlHistoryStg2 interface + */ +[ + object, + uuid(afa0dc11-c313-11d0-831a-00c04fd5ae38), + pointer_default(unique) +] +interface IUrlHistoryStg2 : IUrlHistoryStg +{ + typedef [unique] IUrlHistoryStg2 *LPURLHISTORYSTG2; + + HRESULT AddUrlAndNotify( + [in] LPCOLESTR pocsUrl, + [in,unique] LPCOLESTR pocsTitle, + [in] DWORD dwFlags, + [in] BOOL fWriteHistory, + [in] IOleCommandTarget *poctNotify, + [in, unique] IUnknown *punkISFolder); + + HRESULT ClearHistory(); +} + +/***************************************************************************** + * IUrlHistoryNotify interface + */ +[ + object, + uuid(bc40bec1-c493-11d0-831b-00C04fd5ae38), + pointer_default(unique) +] +interface IUrlHistoryNotify : IOleCommandTarget +{ + typedef [unique] IUrlHistoryNotify *LPURLHISTORYNOTIFY; +} diff --git a/reactos/include/psdk/urlmon.h b/reactos/include/psdk/urlmon.h deleted file mode 100644 index 6f4572474e4..00000000000 --- a/reactos/include/psdk/urlmon.h +++ /dev/null @@ -1,3498 +0,0 @@ -/*** Autogenerated by WIDL 0.9.4 from urlmon.idl - Do not edit ***/ -#include -#include - -#ifndef __WIDL_URLMON_H -#define __WIDL_URLMON_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include -#include -#ifndef __IInternetProtocolSink_FWD_DEFINED__ -#define __IInternetProtocolSink_FWD_DEFINED__ -typedef interface IInternetProtocolSink IInternetProtocolSink; -#endif - -#ifndef __IBinding_FWD_DEFINED__ -#define __IBinding_FWD_DEFINED__ -typedef interface IBinding IBinding; -#endif - -typedef IBinding *LPBINDING; -/***************************************************************************** - * IBinding interface - */ -#ifndef __IBinding_INTERFACE_DEFINED__ -#define __IBinding_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IBinding, 0x79eac9c0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IBinding : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Abort( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Suspend( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Resume( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetPriority( - LONG nPriority) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPriority( - LONG* pnPriority) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBindResult( - CLSID* pclsidProtocol, - DWORD* pdwResult, - LPOLESTR* pszResult, - DWORD* pdwReserved) = 0; - -}; -#else -typedef struct IBindingVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IBinding* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IBinding* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IBinding* This); - - /*** IBinding methods ***/ - HRESULT (STDMETHODCALLTYPE *Abort)( - IBinding* This); - - HRESULT (STDMETHODCALLTYPE *Suspend)( - IBinding* This); - - HRESULT (STDMETHODCALLTYPE *Resume)( - IBinding* This); - - HRESULT (STDMETHODCALLTYPE *SetPriority)( - IBinding* This, - LONG nPriority); - - HRESULT (STDMETHODCALLTYPE *GetPriority)( - IBinding* This, - LONG* pnPriority); - - HRESULT (STDMETHODCALLTYPE *GetBindResult)( - IBinding* This, - CLSID* pclsidProtocol, - DWORD* pdwResult, - LPOLESTR* pszResult, - DWORD* pdwReserved); - - END_INTERFACE -} IBindingVtbl; -interface IBinding { - const IBindingVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IBinding_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IBinding_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IBinding_Release(p) (p)->lpVtbl->Release(p) -/*** IBinding methods ***/ -#define IBinding_Abort(p) (p)->lpVtbl->Abort(p) -#define IBinding_Suspend(p) (p)->lpVtbl->Suspend(p) -#define IBinding_Resume(p) (p)->lpVtbl->Resume(p) -#define IBinding_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a) -#define IBinding_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a) -#define IBinding_GetBindResult(p,a,b,c,d) (p)->lpVtbl->GetBindResult(p,a,b,c,d) -#endif - -#endif - -HRESULT CALLBACK IBinding_Abort_Proxy( - IBinding* This); -void __RPC_STUB IBinding_Abort_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBinding_Suspend_Proxy( - IBinding* This); -void __RPC_STUB IBinding_Suspend_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBinding_Resume_Proxy( - IBinding* This); -void __RPC_STUB IBinding_Resume_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBinding_SetPriority_Proxy( - IBinding* This, - LONG nPriority); -void __RPC_STUB IBinding_SetPriority_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBinding_GetPriority_Proxy( - IBinding* This, - LONG* pnPriority); -void __RPC_STUB IBinding_GetPriority_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBinding_RemoteGetBindResult_Proxy( - IBinding* This, - CLSID* pclsidProtocol, - DWORD* pdwResult, - LPOLESTR* pszResult, - DWORD dwReserved); -void __RPC_STUB IBinding_RemoteGetBindResult_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBinding_GetBindResult_Proxy( - IBinding* This, - CLSID* pclsidProtocol, - DWORD* pdwResult, - LPOLESTR* pszResult, - DWORD* pdwReserved); -HRESULT __RPC_STUB IBinding_GetBindResult_Stub( - IBinding* This, - CLSID* pclsidProtocol, - DWORD* pdwResult, - LPOLESTR* pszResult, - DWORD dwReserved); - -#endif /* __IBinding_INTERFACE_DEFINED__ */ - -#ifndef __IBindStatusCallback_FWD_DEFINED__ -#define __IBindStatusCallback_FWD_DEFINED__ -typedef interface IBindStatusCallback IBindStatusCallback; -#endif - -typedef IBindStatusCallback *LPBINDSTATUSCALLBACK; -typedef enum { - BINDVERB_GET = 0x0, - BINDVERB_POST = 0x1, - BINDVERB_PUT = 0x2, - BINDVERB_CUSTOM = 0x3 -} BINDVERB; -typedef enum -{ - BINDINFOF_URLENCODESTGMEDDATA = 0x1, - BINDINFOF_URLENCODEDEXTRAINFO = 0x2 -} BINDINFOF; -typedef enum { - BINDF_ASYNCHRONOUS = 0x1, - BINDF_ASYNCSTORAGE = 0x2, - BINDF_NOPROGRESSIVERENDERING = 0x4, - BINDF_OFFLINEOPERATION = 0x8, - BINDF_GETNEWESTVERSION = 0x10, - BINDF_NOWRITECACHE = 0x20, - BINDF_NEEDFILE = 0x40, - BINDF_PULLDATA = 0x80, - BINDF_IGNORESECURITYPROBLEM = 0x100, - BINDF_RESYNCHRONIZE = 0x200, - BINDF_HYPERLINK = 0x400, - BINDF_NO_UI = 0x800, - BINDF_SILENTOPERATION = 0x1000, - BINDF_PRAGMA_NO_CACHE = 0x2000, - BINDF_GETCLASSOBJECT = 0x4000, - BINDF_RESERVED_1 = 0x8000, - BINDF_FREE_THREADED = 0x10000, - BINDF_DIRECT_READ = 0x20000, - BINDF_FORMS_SUBMIT = 0x40000, - BINDF_GETFROMCACHE_IF_NET_FAIL = 0x80000, - BINDF_FROMURLMON = 0x100000, - BINDF_FWD_BACK = 0x200000, - BINDF_PREFERDEFAULTHANDLER = 0x400000, - BINDF_ENFORCERESTRICTED = 0x800000 -} BINDF; -typedef struct _tagBINDINFO { - ULONG cbSize; - LPWSTR szExtraInfo; - STGMEDIUM stgmedData; - DWORD grfBindInfoF; - DWORD dwBindVerb; - LPWSTR szCustomVerb; - DWORD cbStgmedData; - DWORD dwOptions; - DWORD dwOptionsFlags; - DWORD dwCodePage; - SECURITY_ATTRIBUTES securityAttributes; - IID iid; - IUnknown *pUnk; - DWORD dwReserved; -} BINDINFO; -typedef struct _REMSECURITY_ATTRIBUTES { - DWORD nLength; - DWORD lpSecurityDescriptor; - BOOL bInheritHandle; -} REMSECURITY_ATTRIBUTES, *PREMSECURITY_ATTRIBUTES, *LPREMSECURITY_ATTRIBUTES; -typedef struct _tagRemBINDINFO { - ULONG cbSize; - LPWSTR szExtraInfo; - DWORD grfBindInfoF; - DWORD dwBindVerb; - LPWSTR szCustomVerb; - DWORD cbstgmedData; - DWORD dwOptions; - DWORD dwOptionsFlags; - DWORD dwCodePage; - REMSECURITY_ATTRIBUTES securityAttributes; - IID iid; - IUnknown *pUnk; - DWORD dwReserved; -} RemBINDINFO; -typedef struct tagRemFORMATETC { - DWORD cfFormat; - DWORD ptd; - DWORD dwAspect; - LONG lindex; - DWORD tymed; -} RemFORMATETC, *LPREMFORMATETC; -typedef enum { - BSCF_FIRSTDATANOTIFICATION = 0x1, - BSCF_INTERMEDIATEDATANOTIFICATION = 0x2, - BSCF_LASTDATANOTIFICATION = 0x4, - BSCF_DATAFULLYAVAILABLE = 0x8, - BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10 -} BSCF; -typedef enum BINDSTATUS { - BINDSTATUS_FINDINGRESOURCE = 1, - BINDSTATUS_CONNECTING, - BINDSTATUS_REDIRECTING, - BINDSTATUS_BEGINDOWNLOADDATA, - BINDSTATUS_DOWNLOADINGDATA, - BINDSTATUS_ENDDOWNLOADDATA, - BINDSTATUS_BEGINDOWNLOADCOMPONENTS, - BINDSTATUS_INSTALLINGCOMPONENTS, - BINDSTATUS_ENDDOWNLOADCOMPONENTS, - BINDSTATUS_USINGCACHEDCOPY, - BINDSTATUS_SENDINGREQUEST, - BINDSTATUS_CLASSIDAVAILABLE, - BINDSTATUS_MIMETYPEAVAILABLE, - BINDSTATUS_CACHEFILENAMEAVAILABLE, - BINDSTATUS_BEGINSYNCOPERATION, - BINDSTATUS_ENDSYNCOPERATION, - BINDSTATUS_BEGINUPLOADDATA, - BINDSTATUS_UPLOADINGDATA, - BINDSTATUS_ENDUPLOADINGDATA, - BINDSTATUS_PROTOCOLCLASSID, - BINDSTATUS_ENCODING, - BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE, - BINDSTATUS_CLASSINSTALLLOCATION, - BINDSTATUS_DECODING, - BINDSTATUS_LOADINGMIMEHANDLER, - BINDSTATUS_CONTENTDISPOSITIONATTACH, - BINDSTATUS_FILTERREPORTMIMETYPE, - BINDSTATUS_CLSIDCANINSTANTIATE, - BINDSTATUS_IUNKNOWNAVAILABLE, - BINDSTATUS_DIRECTBIND, - BINDSTATUS_RAWMIMETYPE, - BINDSTATUS_PROXYDETECTING, - BINDSTATUS_ACCEPTRANGES, - BINDSTATUS_COOKIE_SENT, - BINDSTATUS_COMPACT_POLICY_RECEIVED, - BINDSTATUS_COOKIE_SUPPRESSED, - BINDSTATUS_COOKIE_STATE_UNKNOWN, - BINDSTATUS_COOKIE_STATE_ACCEPT, - BINDSTATUS_COOKIE_STATE_REJECT, - BINDSTATUS_COOKIE_STATE_PROMPT, - BINDSTATUS_COOKIE_STATE_LEASH, - BINDSTATUS_COOKIE_STATE_DOWNGRADE, - BINDSTATUS_POLICY_HREF, - BINDSTATUS_P3P_HEADER, - BINDSTATUS_SESSION_COOKIE_RECEIVED, - BINDSTATUS_PERSISTENT_COOKIE_RECEIVED, - BINDSTATUS_SESSION_COOKIES_ALLOWED, - BINDSTATUS_CACHECONTROL, - BINDSTATUS_CONTENTDISPOSITIONFILENAME, - BINDSTATUS_MIMETEXTPLAINMISMATCH, - BINDSTATUS_PUBLISHERAVAILABLE, - BINDSTATUS_DISPLAYNAMEAVAILABLE -} BINDSTATUS; -/***************************************************************************** - * IBindStatusCallback interface - */ -#ifndef __IBindStatusCallback_INTERFACE_DEFINED__ -#define __IBindStatusCallback_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IBindStatusCallback, 0x79eac9c1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IBindStatusCallback : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE OnStartBinding( - DWORD dwReserved, - IBinding* pib) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPriority( - LONG* pnPriority) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnLowResource( - DWORD reserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnProgress( - ULONG ulProgress, - ULONG ulProgressMax, - ULONG ulStatusCode, - LPCWSTR szStatusText) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnStopBinding( - HRESULT hresult, - LPCWSTR szError) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBindInfo( - DWORD* grfBINDF, - BINDINFO* pbindinfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnDataAvailable( - DWORD grfBSCF, - DWORD dwSize, - FORMATETC* pformatetc, - STGMEDIUM* pstgmed) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnObjectAvailable( - REFIID riid, - IUnknown* punk) = 0; - -}; -#else -typedef struct IBindStatusCallbackVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IBindStatusCallback* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IBindStatusCallback* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IBindStatusCallback* This); - - /*** IBindStatusCallback methods ***/ - HRESULT (STDMETHODCALLTYPE *OnStartBinding)( - IBindStatusCallback* This, - DWORD dwReserved, - IBinding* pib); - - HRESULT (STDMETHODCALLTYPE *GetPriority)( - IBindStatusCallback* This, - LONG* pnPriority); - - HRESULT (STDMETHODCALLTYPE *OnLowResource)( - IBindStatusCallback* This, - DWORD reserved); - - HRESULT (STDMETHODCALLTYPE *OnProgress)( - IBindStatusCallback* This, - ULONG ulProgress, - ULONG ulProgressMax, - ULONG ulStatusCode, - LPCWSTR szStatusText); - - HRESULT (STDMETHODCALLTYPE *OnStopBinding)( - IBindStatusCallback* This, - HRESULT hresult, - LPCWSTR szError); - - HRESULT (STDMETHODCALLTYPE *GetBindInfo)( - IBindStatusCallback* This, - DWORD* grfBINDF, - BINDINFO* pbindinfo); - - HRESULT (STDMETHODCALLTYPE *OnDataAvailable)( - IBindStatusCallback* This, - DWORD grfBSCF, - DWORD dwSize, - FORMATETC* pformatetc, - STGMEDIUM* pstgmed); - - HRESULT (STDMETHODCALLTYPE *OnObjectAvailable)( - IBindStatusCallback* This, - REFIID riid, - IUnknown* punk); - - END_INTERFACE -} IBindStatusCallbackVtbl; -interface IBindStatusCallback { - const IBindStatusCallbackVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IBindStatusCallback_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IBindStatusCallback_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IBindStatusCallback_Release(p) (p)->lpVtbl->Release(p) -/*** IBindStatusCallback methods ***/ -#define IBindStatusCallback_OnStartBinding(p,a,b) (p)->lpVtbl->OnStartBinding(p,a,b) -#define IBindStatusCallback_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a) -#define IBindStatusCallback_OnLowResource(p,a) (p)->lpVtbl->OnLowResource(p,a) -#define IBindStatusCallback_OnProgress(p,a,b,c,d) (p)->lpVtbl->OnProgress(p,a,b,c,d) -#define IBindStatusCallback_OnStopBinding(p,a,b) (p)->lpVtbl->OnStopBinding(p,a,b) -#define IBindStatusCallback_GetBindInfo(p,a,b) (p)->lpVtbl->GetBindInfo(p,a,b) -#define IBindStatusCallback_OnDataAvailable(p,a,b,c,d) (p)->lpVtbl->OnDataAvailable(p,a,b,c,d) -#define IBindStatusCallback_OnObjectAvailable(p,a,b) (p)->lpVtbl->OnObjectAvailable(p,a,b) -#endif - -#endif - -HRESULT CALLBACK IBindStatusCallback_OnStartBinding_Proxy( - IBindStatusCallback* This, - DWORD dwReserved, - IBinding* pib); -void __RPC_STUB IBindStatusCallback_OnStartBinding_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindStatusCallback_GetPriority_Proxy( - IBindStatusCallback* This, - LONG* pnPriority); -void __RPC_STUB IBindStatusCallback_GetPriority_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindStatusCallback_OnLowResource_Proxy( - IBindStatusCallback* This, - DWORD reserved); -void __RPC_STUB IBindStatusCallback_OnLowResource_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindStatusCallback_OnProgress_Proxy( - IBindStatusCallback* This, - ULONG ulProgress, - ULONG ulProgressMax, - ULONG ulStatusCode, - LPCWSTR szStatusText); -void __RPC_STUB IBindStatusCallback_OnProgress_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindStatusCallback_OnStopBinding_Proxy( - IBindStatusCallback* This, - HRESULT hresult, - LPCWSTR szError); -void __RPC_STUB IBindStatusCallback_OnStopBinding_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindStatusCallback_RemoteGetBindInfo_Proxy( - IBindStatusCallback* This, - DWORD* grfBINDF, - RemBINDINFO* pbindinfo, - RemSTGMEDIUM* pstgmed); -void __RPC_STUB IBindStatusCallback_RemoteGetBindInfo_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindStatusCallback_GetBindInfo_Proxy( - IBindStatusCallback* This, - DWORD* grfBINDF, - BINDINFO* pbindinfo); -HRESULT __RPC_STUB IBindStatusCallback_GetBindInfo_Stub( - IBindStatusCallback* This, - DWORD* grfBINDF, - RemBINDINFO* pbindinfo, - RemSTGMEDIUM* pstgmed); -HRESULT CALLBACK IBindStatusCallback_RemoteOnDataAvailable_Proxy( - IBindStatusCallback* This, - DWORD grfBSCF, - DWORD dwSize, - RemFORMATETC* pformatetc, - RemSTGMEDIUM* pstgmed); -void __RPC_STUB IBindStatusCallback_RemoteOnDataAvailable_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindStatusCallback_OnDataAvailable_Proxy( - IBindStatusCallback* This, - DWORD grfBSCF, - DWORD dwSize, - FORMATETC* pformatetc, - STGMEDIUM* pstgmed); -HRESULT __RPC_STUB IBindStatusCallback_OnDataAvailable_Stub( - IBindStatusCallback* This, - DWORD grfBSCF, - DWORD dwSize, - RemFORMATETC* pformatetc, - RemSTGMEDIUM* pstgmed); -HRESULT CALLBACK IBindStatusCallback_OnObjectAvailable_Proxy( - IBindStatusCallback* This, - REFIID riid, - IUnknown* punk); -void __RPC_STUB IBindStatusCallback_OnObjectAvailable_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IBindStatusCallback_INTERFACE_DEFINED__ */ - -#ifndef __IAuthenticate_FWD_DEFINED__ -#define __IAuthenticate_FWD_DEFINED__ -typedef interface IAuthenticate IAuthenticate; -#endif - -typedef IAuthenticate *LPAUTHENTICATION; -/***************************************************************************** - * IAuthenticate interface - */ -#ifndef __IAuthenticate_INTERFACE_DEFINED__ -#define __IAuthenticate_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IAuthenticate, 0x79eac9d0, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IAuthenticate : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Authenticate( - HWND* phwnd, - LPWSTR* pszUsername, - LPWSTR* pszPassword) = 0; - -}; -#else -typedef struct IAuthenticateVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IAuthenticate* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IAuthenticate* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IAuthenticate* This); - - /*** IAuthenticate methods ***/ - HRESULT (STDMETHODCALLTYPE *Authenticate)( - IAuthenticate* This, - HWND* phwnd, - LPWSTR* pszUsername, - LPWSTR* pszPassword); - - END_INTERFACE -} IAuthenticateVtbl; -interface IAuthenticate { - const IAuthenticateVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IAuthenticate_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IAuthenticate_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IAuthenticate_Release(p) (p)->lpVtbl->Release(p) -/*** IAuthenticate methods ***/ -#define IAuthenticate_Authenticate(p,a,b,c) (p)->lpVtbl->Authenticate(p,a,b,c) -#endif - -#endif - -HRESULT CALLBACK IAuthenticate_Authenticate_Proxy( - IAuthenticate* This, - HWND* phwnd, - LPWSTR* pszUsername, - LPWSTR* pszPassword); -void __RPC_STUB IAuthenticate_Authenticate_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IAuthenticate_INTERFACE_DEFINED__ */ - -#ifndef __IHttpNegotiate_FWD_DEFINED__ -#define __IHttpNegotiate_FWD_DEFINED__ -typedef interface IHttpNegotiate IHttpNegotiate; -#endif - -typedef IHttpNegotiate *LPHTTPNEGOTIATE; -/***************************************************************************** - * IHttpNegotiate interface - */ -#ifndef __IHttpNegotiate_INTERFACE_DEFINED__ -#define __IHttpNegotiate_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IHttpNegotiate, 0x79eac9d2, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IHttpNegotiate : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE BeginningTransaction( - LPCWSTR szURL, - LPCWSTR szHeaders, - DWORD dwReserved, - LPWSTR* pszAdditionalHeaders) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnResponse( - DWORD dwResponseCode, - LPCWSTR szResponseHeaders, - LPCWSTR szRequestHeaders, - LPWSTR* pszAdditionalRequestHeaders) = 0; - -}; -#else -typedef struct IHttpNegotiateVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IHttpNegotiate* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IHttpNegotiate* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IHttpNegotiate* This); - - /*** IHttpNegotiate methods ***/ - HRESULT (STDMETHODCALLTYPE *BeginningTransaction)( - IHttpNegotiate* This, - LPCWSTR szURL, - LPCWSTR szHeaders, - DWORD dwReserved, - LPWSTR* pszAdditionalHeaders); - - HRESULT (STDMETHODCALLTYPE *OnResponse)( - IHttpNegotiate* This, - DWORD dwResponseCode, - LPCWSTR szResponseHeaders, - LPCWSTR szRequestHeaders, - LPWSTR* pszAdditionalRequestHeaders); - - END_INTERFACE -} IHttpNegotiateVtbl; -interface IHttpNegotiate { - const IHttpNegotiateVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IHttpNegotiate_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IHttpNegotiate_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IHttpNegotiate_Release(p) (p)->lpVtbl->Release(p) -/*** IHttpNegotiate methods ***/ -#define IHttpNegotiate_BeginningTransaction(p,a,b,c,d) (p)->lpVtbl->BeginningTransaction(p,a,b,c,d) -#define IHttpNegotiate_OnResponse(p,a,b,c,d) (p)->lpVtbl->OnResponse(p,a,b,c,d) -#endif - -#endif - -HRESULT CALLBACK IHttpNegotiate_BeginningTransaction_Proxy( - IHttpNegotiate* This, - LPCWSTR szURL, - LPCWSTR szHeaders, - DWORD dwReserved, - LPWSTR* pszAdditionalHeaders); -void __RPC_STUB IHttpNegotiate_BeginningTransaction_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IHttpNegotiate_OnResponse_Proxy( - IHttpNegotiate* This, - DWORD dwResponseCode, - LPCWSTR szResponseHeaders, - LPCWSTR szRequestHeaders, - LPWSTR* pszAdditionalRequestHeaders); -void __RPC_STUB IHttpNegotiate_OnResponse_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IHttpNegotiate_INTERFACE_DEFINED__ */ - -#ifndef __IHttpNegotiate2_FWD_DEFINED__ -#define __IHttpNegotiate2_FWD_DEFINED__ -typedef interface IHttpNegotiate2 IHttpNegotiate2; -#endif - -typedef IHttpNegotiate2 *LPHTTPNEGOTIATE2; -/***************************************************************************** - * IHttpNegotiate2 interface - */ -#ifndef __IHttpNegotiate2_INTERFACE_DEFINED__ -#define __IHttpNegotiate2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IHttpNegotiate2, 0x4f9f9fcb, 0xe0f4, 0x48eb, 0xb7,0xab, 0xfa,0x2e,0xa9,0x36,0x5c,0xb4); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IHttpNegotiate2 : public IHttpNegotiate -{ - virtual HRESULT STDMETHODCALLTYPE GetRootSecurityId( - BYTE* pbSecurityId, - DWORD* pcbSecurityId, - DWORD_PTR dwReserved) = 0; - -}; -#else -typedef struct IHttpNegotiate2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IHttpNegotiate2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IHttpNegotiate2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IHttpNegotiate2* This); - - /*** IHttpNegotiate methods ***/ - HRESULT (STDMETHODCALLTYPE *BeginningTransaction)( - IHttpNegotiate2* This, - LPCWSTR szURL, - LPCWSTR szHeaders, - DWORD dwReserved, - LPWSTR* pszAdditionalHeaders); - - HRESULT (STDMETHODCALLTYPE *OnResponse)( - IHttpNegotiate2* This, - DWORD dwResponseCode, - LPCWSTR szResponseHeaders, - LPCWSTR szRequestHeaders, - LPWSTR* pszAdditionalRequestHeaders); - - /*** IHttpNegotiate2 methods ***/ - HRESULT (STDMETHODCALLTYPE *GetRootSecurityId)( - IHttpNegotiate2* This, - BYTE* pbSecurityId, - DWORD* pcbSecurityId, - DWORD_PTR dwReserved); - - END_INTERFACE -} IHttpNegotiate2Vtbl; -interface IHttpNegotiate2 { - const IHttpNegotiate2Vtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IHttpNegotiate2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IHttpNegotiate2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IHttpNegotiate2_Release(p) (p)->lpVtbl->Release(p) -/*** IHttpNegotiate methods ***/ -#define IHttpNegotiate2_BeginningTransaction(p,a,b,c,d) (p)->lpVtbl->BeginningTransaction(p,a,b,c,d) -#define IHttpNegotiate2_OnResponse(p,a,b,c,d) (p)->lpVtbl->OnResponse(p,a,b,c,d) -/*** IHttpNegotiate2 methods ***/ -#define IHttpNegotiate2_GetRootSecurityId(p,a,b,c) (p)->lpVtbl->GetRootSecurityId(p,a,b,c) -#endif - -#endif - -HRESULT CALLBACK IHttpNegotiate2_GetRootSecurityId_Proxy( - IHttpNegotiate2* This, - BYTE* pbSecurityId, - DWORD* pcbSecurityId, - DWORD_PTR dwReserved); -void __RPC_STUB IHttpNegotiate2_GetRootSecurityId_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IHttpNegotiate2_INTERFACE_DEFINED__ */ - -#define SID_IBindHost IID_IBindHost -#define SID_SBindHost IID_IBindHost -#ifndef __IBindHost_FWD_DEFINED__ -#define __IBindHost_FWD_DEFINED__ -typedef interface IBindHost IBindHost; -#endif - -typedef IBindHost *LPBINDHOST; -/***************************************************************************** - * IBindHost interface - */ -#ifndef __IBindHost_INTERFACE_DEFINED__ -#define __IBindHost_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IBindHost, 0xfc4801a1, 0x2ba9, 0x11cf, 0xa2,0x29, 0x00,0xaa,0x00,0x3d,0x73,0x52); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IBindHost : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE CreateMoniker( - LPOLESTR szName, - IBindCtx* pBC, - IMoniker** ppmk, - DWORD dwReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE MonikerBindToStorage( - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - void** ppvObj) = 0; - - virtual HRESULT STDMETHODCALLTYPE MonikerBindToObject( - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - void** ppvObj) = 0; - -}; -#else -typedef struct IBindHostVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IBindHost* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IBindHost* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IBindHost* This); - - /*** IBindHost methods ***/ - HRESULT (STDMETHODCALLTYPE *CreateMoniker)( - IBindHost* This, - LPOLESTR szName, - IBindCtx* pBC, - IMoniker** ppmk, - DWORD dwReserved); - - HRESULT (STDMETHODCALLTYPE *MonikerBindToStorage)( - IBindHost* This, - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - void** ppvObj); - - HRESULT (STDMETHODCALLTYPE *MonikerBindToObject)( - IBindHost* This, - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - void** ppvObj); - - END_INTERFACE -} IBindHostVtbl; -interface IBindHost { - const IBindHostVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IBindHost_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IBindHost_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IBindHost_Release(p) (p)->lpVtbl->Release(p) -/*** IBindHost methods ***/ -#define IBindHost_CreateMoniker(p,a,b,c,d) (p)->lpVtbl->CreateMoniker(p,a,b,c,d) -#define IBindHost_MonikerBindToStorage(p,a,b,c,d,e) (p)->lpVtbl->MonikerBindToStorage(p,a,b,c,d,e) -#define IBindHost_MonikerBindToObject(p,a,b,c,d,e) (p)->lpVtbl->MonikerBindToObject(p,a,b,c,d,e) -#endif - -#endif - -HRESULT CALLBACK IBindHost_CreateMoniker_Proxy( - IBindHost* This, - LPOLESTR szName, - IBindCtx* pBC, - IMoniker** ppmk, - DWORD dwReserved); -void __RPC_STUB IBindHost_CreateMoniker_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindHost_RemoteMonikerBindToStorage_Proxy( - IBindHost* This, - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - IUnknown** ppvObj); -void __RPC_STUB IBindHost_RemoteMonikerBindToStorage_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindHost_MonikerBindToStorage_Proxy( - IBindHost* This, - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - void** ppvObj); -HRESULT __RPC_STUB IBindHost_MonikerBindToStorage_Stub( - IBindHost* This, - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - IUnknown** ppvObj); -HRESULT CALLBACK IBindHost_RemoteMonikerBindToObject_Proxy( - IBindHost* This, - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - IUnknown** ppvObj); -void __RPC_STUB IBindHost_RemoteMonikerBindToObject_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IBindHost_MonikerBindToObject_Proxy( - IBindHost* This, - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - void** ppvObj); -HRESULT __RPC_STUB IBindHost_MonikerBindToObject_Stub( - IBindHost* This, - IMoniker* pMk, - IBindCtx* pBC, - IBindStatusCallback* pBSC, - REFIID riid, - IUnknown** ppvObj); - -#endif /* __IBindHost_INTERFACE_DEFINED__ */ - -#ifndef __IWinInetInfo_FWD_DEFINED__ -#define __IWinInetInfo_FWD_DEFINED__ -typedef interface IWinInetInfo IWinInetInfo; -#endif - -typedef IWinInetInfo *LPWININETINFO; -/***************************************************************************** - * IWinInetInfo interface - */ -#ifndef __IWinInetInfo_INTERFACE_DEFINED__ -#define __IWinInetInfo_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IWinInetInfo, 0x79eac9d6, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IWinInetInfo : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE QueryOption( - DWORD dwOption, - LPVOID pBuffer, - DWORD* pcbBuf) = 0; - -}; -#else -typedef struct IWinInetInfoVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IWinInetInfo* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IWinInetInfo* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IWinInetInfo* This); - - /*** IWinInetInfo methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryOption)( - IWinInetInfo* This, - DWORD dwOption, - LPVOID pBuffer, - DWORD* pcbBuf); - - END_INTERFACE -} IWinInetInfoVtbl; -interface IWinInetInfo { - const IWinInetInfoVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IWinInetInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IWinInetInfo_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IWinInetInfo_Release(p) (p)->lpVtbl->Release(p) -/*** IWinInetInfo methods ***/ -#define IWinInetInfo_QueryOption(p,a,b,c) (p)->lpVtbl->QueryOption(p,a,b,c) -#endif - -#endif - -HRESULT CALLBACK IWinInetInfo_RemoteQueryOption_Proxy( - IWinInetInfo* This, - DWORD dwOption, - BYTE* pBuffer, - DWORD* pcbBuf); -void __RPC_STUB IWinInetInfo_RemoteQueryOption_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWinInetInfo_QueryOption_Proxy( - IWinInetInfo* This, - DWORD dwOption, - LPVOID pBuffer, - DWORD* pcbBuf); -HRESULT __RPC_STUB IWinInetInfo_QueryOption_Stub( - IWinInetInfo* This, - DWORD dwOption, - BYTE* pBuffer, - DWORD* pcbBuf); - -#endif /* __IWinInetInfo_INTERFACE_DEFINED__ */ - -#ifndef __IWinInetHttpInfo_FWD_DEFINED__ -#define __IWinInetHttpInfo_FWD_DEFINED__ -typedef interface IWinInetHttpInfo IWinInetHttpInfo; -#endif - -typedef IWinInetHttpInfo *LPWININETHTTPINFO; -/***************************************************************************** - * IWinInetHttpInfo interface - */ -#ifndef __IWinInetHttpInfo_INTERFACE_DEFINED__ -#define __IWinInetHttpInfo_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IWinInetHttpInfo, 0x79eac9d8, 0xbafa, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IWinInetHttpInfo : public IWinInetInfo -{ - virtual HRESULT STDMETHODCALLTYPE QueryInfo( - DWORD dwOption, - LPVOID pBuffer, - DWORD* pcbBuf, - DWORD* pdwFlags, - DWORD* pdwReserved) = 0; - -}; -#else -typedef struct IWinInetHttpInfoVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IWinInetHttpInfo* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IWinInetHttpInfo* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IWinInetHttpInfo* This); - - /*** IWinInetInfo methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryOption)( - IWinInetHttpInfo* This, - DWORD dwOption, - LPVOID pBuffer, - DWORD* pcbBuf); - - /*** IWinInetHttpInfo methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInfo)( - IWinInetHttpInfo* This, - DWORD dwOption, - LPVOID pBuffer, - DWORD* pcbBuf, - DWORD* pdwFlags, - DWORD* pdwReserved); - - END_INTERFACE -} IWinInetHttpInfoVtbl; -interface IWinInetHttpInfo { - const IWinInetHttpInfoVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IWinInetHttpInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IWinInetHttpInfo_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IWinInetHttpInfo_Release(p) (p)->lpVtbl->Release(p) -/*** IWinInetInfo methods ***/ -#define IWinInetHttpInfo_QueryOption(p,a,b,c) (p)->lpVtbl->QueryOption(p,a,b,c) -/*** IWinInetHttpInfo methods ***/ -#define IWinInetHttpInfo_QueryInfo(p,a,b,c,d,e) (p)->lpVtbl->QueryInfo(p,a,b,c,d,e) -#endif - -#endif - -HRESULT CALLBACK IWinInetHttpInfo_RemoteQueryInfo_Proxy( - IWinInetHttpInfo* This, - DWORD dwOption, - BYTE* pBuffer, - DWORD* pcbBuf, - DWORD* pdwFlags, - DWORD* pdwReserved); -void __RPC_STUB IWinInetHttpInfo_RemoteQueryInfo_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWinInetHttpInfo_QueryInfo_Proxy( - IWinInetHttpInfo* This, - DWORD dwOption, - LPVOID pBuffer, - DWORD* pcbBuf, - DWORD* pdwFlags, - DWORD* pdwReserved); -HRESULT __RPC_STUB IWinInetHttpInfo_QueryInfo_Stub( - IWinInetHttpInfo* This, - DWORD dwOption, - BYTE* pBuffer, - DWORD* pcbBuf, - DWORD* pdwFlags, - DWORD* pdwReserved); - -#endif /* __IWinInetHttpInfo_INTERFACE_DEFINED__ */ - -#ifndef __IPersistMoniker_FWD_DEFINED__ -#define __IPersistMoniker_FWD_DEFINED__ -typedef interface IPersistMoniker IPersistMoniker; -#endif - -typedef IPersistMoniker *LPPERSISTMONIKER; -/***************************************************************************** - * IPersistMoniker interface - */ -#ifndef __IPersistMoniker_INTERFACE_DEFINED__ -#define __IPersistMoniker_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IPersistMoniker, 0x79eac9c9, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IPersistMoniker : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE GetClassID( - CLSID* pClassID) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsDirty( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Load( - BOOL fFullyAvailable, - IMoniker* pimkName, - LPBC pibc, - DWORD grfMode) = 0; - - virtual HRESULT STDMETHODCALLTYPE Save( - IMoniker* pimkName, - LPBC pbc, - BOOL fRemember) = 0; - - virtual HRESULT STDMETHODCALLTYPE SaveCompleted( - IMoniker* pimkName, - LPBC pibc) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCurMoniker( - IMoniker** ppimkName) = 0; - -}; -#else -typedef struct IPersistMonikerVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IPersistMoniker* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IPersistMoniker* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IPersistMoniker* This); - - /*** IPersistMoniker methods ***/ - HRESULT (STDMETHODCALLTYPE *GetClassID)( - IPersistMoniker* This, - CLSID* pClassID); - - HRESULT (STDMETHODCALLTYPE *IsDirty)( - IPersistMoniker* This); - - HRESULT (STDMETHODCALLTYPE *Load)( - IPersistMoniker* This, - BOOL fFullyAvailable, - IMoniker* pimkName, - LPBC pibc, - DWORD grfMode); - - HRESULT (STDMETHODCALLTYPE *Save)( - IPersistMoniker* This, - IMoniker* pimkName, - LPBC pbc, - BOOL fRemember); - - HRESULT (STDMETHODCALLTYPE *SaveCompleted)( - IPersistMoniker* This, - IMoniker* pimkName, - LPBC pibc); - - HRESULT (STDMETHODCALLTYPE *GetCurMoniker)( - IPersistMoniker* This, - IMoniker** ppimkName); - - END_INTERFACE -} IPersistMonikerVtbl; -interface IPersistMoniker { - const IPersistMonikerVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IPersistMoniker_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPersistMoniker_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPersistMoniker_Release(p) (p)->lpVtbl->Release(p) -/*** IPersistMoniker methods ***/ -#define IPersistMoniker_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) -#define IPersistMoniker_IsDirty(p) (p)->lpVtbl->IsDirty(p) -#define IPersistMoniker_Load(p,a,b,c,d) (p)->lpVtbl->Load(p,a,b,c,d) -#define IPersistMoniker_Save(p,a,b,c) (p)->lpVtbl->Save(p,a,b,c) -#define IPersistMoniker_SaveCompleted(p,a,b) (p)->lpVtbl->SaveCompleted(p,a,b) -#define IPersistMoniker_GetCurMoniker(p,a) (p)->lpVtbl->GetCurMoniker(p,a) -#endif - -#endif - -HRESULT CALLBACK IPersistMoniker_GetClassID_Proxy( - IPersistMoniker* This, - CLSID* pClassID); -void __RPC_STUB IPersistMoniker_GetClassID_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPersistMoniker_IsDirty_Proxy( - IPersistMoniker* This); -void __RPC_STUB IPersistMoniker_IsDirty_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPersistMoniker_Load_Proxy( - IPersistMoniker* This, - BOOL fFullyAvailable, - IMoniker* pimkName, - LPBC pibc, - DWORD grfMode); -void __RPC_STUB IPersistMoniker_Load_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPersistMoniker_Save_Proxy( - IPersistMoniker* This, - IMoniker* pimkName, - LPBC pbc, - BOOL fRemember); -void __RPC_STUB IPersistMoniker_Save_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPersistMoniker_SaveCompleted_Proxy( - IPersistMoniker* This, - IMoniker* pimkName, - LPBC pibc); -void __RPC_STUB IPersistMoniker_SaveCompleted_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPersistMoniker_GetCurMoniker_Proxy( - IPersistMoniker* This, - IMoniker** ppimkName); -void __RPC_STUB IPersistMoniker_GetCurMoniker_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IPersistMoniker_INTERFACE_DEFINED__ */ - -#ifndef __IMonikerProp_FWD_DEFINED__ -#define __IMonikerProp_FWD_DEFINED__ -typedef interface IMonikerProp IMonikerProp; -#endif - -typedef IMonikerProp *LPMONIKERPROP; -typedef enum { - MIMETYPEPROP = 0x0, - USE_SRC_URL = 0x1 -} MONIKERPROPERTY; -/***************************************************************************** - * IMonikerProp interface - */ -#ifndef __IMonikerProp_INTERFACE_DEFINED__ -#define __IMonikerProp_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IMonikerProp, 0xa5ca5f7f, 0x1847, 0x4d87, 0x9c,0x5b, 0x91,0x85,0x09,0xf7,0x51,0x1d); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IMonikerProp : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE PutProperty( - MONIKERPROPERTY mkp, - LPCWSTR val) = 0; - -}; -#else -typedef struct IMonikerPropVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMonikerProp* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMonikerProp* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMonikerProp* This); - - /*** IMonikerProp methods ***/ - HRESULT (STDMETHODCALLTYPE *PutProperty)( - IMonikerProp* This, - MONIKERPROPERTY mkp, - LPCWSTR val); - - END_INTERFACE -} IMonikerPropVtbl; -interface IMonikerProp { - const IMonikerPropVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMonikerProp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMonikerProp_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMonikerProp_Release(p) (p)->lpVtbl->Release(p) -/*** IMonikerProp methods ***/ -#define IMonikerProp_PutProperty(p,a,b) (p)->lpVtbl->PutProperty(p,a,b) -#endif - -#endif - -HRESULT CALLBACK IMonikerProp_PutProperty_Proxy( - IMonikerProp* This, - MONIKERPROPERTY mkp, - LPCWSTR val); -void __RPC_STUB IMonikerProp_PutProperty_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMonikerProp_INTERFACE_DEFINED__ */ - -#ifndef __IInternetBindInfo_FWD_DEFINED__ -#define __IInternetBindInfo_FWD_DEFINED__ -typedef interface IInternetBindInfo IInternetBindInfo; -#endif - -typedef IInternetBindInfo *LPIINTERNETBINDINFO; -typedef enum tagBINDSTRING { - BINDSTRING_HEADERS = 1, - BINDSTRING_ACCEPT_MIMES, - BINDSTRING_EXTRA_URL, - BINDSTRING_LANGUAGE, - BINDSTRING_USERNAME, - BINDSTRING_PASSWORD, - BINDSTRING_UA_PIXELS, - BINDSTRING_UA_COLOR, - BINDSTRING_OS, - BINDSTRING_USER_AGENT, - BINDSTRING_ACCEPT_ENCODINGS, - BINDSTRING_POST_COOKIE, - BINDSTRING_POST_DATA_MIME, - BINDSTRING_URL, - BINDSTRING_IID, - BINDSTRING_FLAG_BIND_TO_OBJECT, - BINDSTRING_PTR_BIND_CONTEXT -} BINDSTRING; -/***************************************************************************** - * IInternetBindInfo interface - */ -#ifndef __IInternetBindInfo_INTERFACE_DEFINED__ -#define __IInternetBindInfo_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetBindInfo, 0x79eac9e1, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetBindInfo : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE GetBindInfo( - DWORD* grfBINDF, - BINDINFO* pbindinfo) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBindString( - ULONG ulStringType, - LPOLESTR* ppwzStr, - ULONG cEl, - ULONG* pcElFetched) = 0; - -}; -#else -typedef struct IInternetBindInfoVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetBindInfo* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetBindInfo* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetBindInfo* This); - - /*** IInternetBindInfo methods ***/ - HRESULT (STDMETHODCALLTYPE *GetBindInfo)( - IInternetBindInfo* This, - DWORD* grfBINDF, - BINDINFO* pbindinfo); - - HRESULT (STDMETHODCALLTYPE *GetBindString)( - IInternetBindInfo* This, - ULONG ulStringType, - LPOLESTR* ppwzStr, - ULONG cEl, - ULONG* pcElFetched); - - END_INTERFACE -} IInternetBindInfoVtbl; -interface IInternetBindInfo { - const IInternetBindInfoVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetBindInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetBindInfo_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetBindInfo_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetBindInfo methods ***/ -#define IInternetBindInfo_GetBindInfo(p,a,b) (p)->lpVtbl->GetBindInfo(p,a,b) -#define IInternetBindInfo_GetBindString(p,a,b,c,d) (p)->lpVtbl->GetBindString(p,a,b,c,d) -#endif - -#endif - -HRESULT CALLBACK IInternetBindInfo_GetBindInfo_Proxy( - IInternetBindInfo* This, - DWORD* grfBINDF, - BINDINFO* pbindinfo); -void __RPC_STUB IInternetBindInfo_GetBindInfo_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetBindInfo_GetBindString_Proxy( - IInternetBindInfo* This, - ULONG ulStringType, - LPOLESTR* ppwzStr, - ULONG cEl, - ULONG* pcElFetched); -void __RPC_STUB IInternetBindInfo_GetBindString_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetBindInfo_INTERFACE_DEFINED__ */ - -#ifndef __IInternetPriority_FWD_DEFINED__ -#define __IInternetPriority_FWD_DEFINED__ -typedef interface IInternetPriority IInternetPriority; -#endif - -typedef IInternetPriority *LPIINTERNETPRIORITY; -/***************************************************************************** - * IInternetPriority interface - */ -#ifndef __IInternetPriority_INTERFACE_DEFINED__ -#define __IInternetPriority_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetPriority, 0x79eac9eb, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetPriority : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE SetPriority( - LONG nPriority) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPriority( - LONG* pnPriority) = 0; - -}; -#else -typedef struct IInternetPriorityVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetPriority* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetPriority* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetPriority* This); - - /*** IInternetPriority methods ***/ - HRESULT (STDMETHODCALLTYPE *SetPriority)( - IInternetPriority* This, - LONG nPriority); - - HRESULT (STDMETHODCALLTYPE *GetPriority)( - IInternetPriority* This, - LONG* pnPriority); - - END_INTERFACE -} IInternetPriorityVtbl; -interface IInternetPriority { - const IInternetPriorityVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetPriority_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetPriority_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetPriority_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetPriority methods ***/ -#define IInternetPriority_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a) -#define IInternetPriority_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a) -#endif - -#endif - -HRESULT CALLBACK IInternetPriority_SetPriority_Proxy( - IInternetPriority* This, - LONG nPriority); -void __RPC_STUB IInternetPriority_SetPriority_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetPriority_GetPriority_Proxy( - IInternetPriority* This, - LONG* pnPriority); -void __RPC_STUB IInternetPriority_GetPriority_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetPriority_INTERFACE_DEFINED__ */ - -#ifndef __IInternetProtocolRoot_FWD_DEFINED__ -#define __IInternetProtocolRoot_FWD_DEFINED__ -typedef interface IInternetProtocolRoot IInternetProtocolRoot; -#endif - -typedef IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT; -typedef enum _tagPI_FLAGS { - PI_PARSE_URL = 0x1, - PI_FILTER_MODE = 0x2, - PI_FORCE_ASYNC = 0x4, - PI_USE_WORKERTHREAD = 0x8, - PI_MIMEVERIFICATION = 0x10, - PI_CLSIDLOOKUP = 0x20, - PI_DATAPROGRESS = 0x40, - PI_SYNCHRONOUS = 0x80, - PI_APARTMENTTHREADED = 0x100, - PI_CLASSINSTALL = 0x200, - PD_FORCE_SWITCH = 0x10000 -} PI_FLAGS; -typedef struct _tagPROTOCOLDATA { - DWORD grfFlags; - DWORD dwState; - LPVOID pData; - ULONG cbData; -} PROTOCOLDATA; -/***************************************************************************** - * IInternetProtocolRoot interface - */ -#ifndef __IInternetProtocolRoot_INTERFACE_DEFINED__ -#define __IInternetProtocolRoot_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetProtocolRoot, 0x79eac9e3, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetProtocolRoot : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Start( - LPCWSTR szUrl, - IInternetProtocolSink* pOIProtSink, - IInternetBindInfo* pOIBindInfo, - DWORD grfPI, - DWORD dwReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE Continue( - PROTOCOLDATA* pProtocolData) = 0; - - virtual HRESULT STDMETHODCALLTYPE Abort( - HRESULT hrReason, - DWORD dwOptions) = 0; - - virtual HRESULT STDMETHODCALLTYPE Terminate( - DWORD dwOptions) = 0; - - virtual HRESULT STDMETHODCALLTYPE Suspend( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Resume( - ) = 0; - -}; -#else -typedef struct IInternetProtocolRootVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetProtocolRoot* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetProtocolRoot* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetProtocolRoot* This); - - /*** IInternetProtocolRoot methods ***/ - HRESULT (STDMETHODCALLTYPE *Start)( - IInternetProtocolRoot* This, - LPCWSTR szUrl, - IInternetProtocolSink* pOIProtSink, - IInternetBindInfo* pOIBindInfo, - DWORD grfPI, - DWORD dwReserved); - - HRESULT (STDMETHODCALLTYPE *Continue)( - IInternetProtocolRoot* This, - PROTOCOLDATA* pProtocolData); - - HRESULT (STDMETHODCALLTYPE *Abort)( - IInternetProtocolRoot* This, - HRESULT hrReason, - DWORD dwOptions); - - HRESULT (STDMETHODCALLTYPE *Terminate)( - IInternetProtocolRoot* This, - DWORD dwOptions); - - HRESULT (STDMETHODCALLTYPE *Suspend)( - IInternetProtocolRoot* This); - - HRESULT (STDMETHODCALLTYPE *Resume)( - IInternetProtocolRoot* This); - - END_INTERFACE -} IInternetProtocolRootVtbl; -interface IInternetProtocolRoot { - const IInternetProtocolRootVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetProtocolRoot_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetProtocolRoot_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetProtocolRoot_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetProtocolRoot methods ***/ -#define IInternetProtocolRoot_Start(p,a,b,c,d,e) (p)->lpVtbl->Start(p,a,b,c,d,e) -#define IInternetProtocolRoot_Continue(p,a) (p)->lpVtbl->Continue(p,a) -#define IInternetProtocolRoot_Abort(p,a,b) (p)->lpVtbl->Abort(p,a,b) -#define IInternetProtocolRoot_Terminate(p,a) (p)->lpVtbl->Terminate(p,a) -#define IInternetProtocolRoot_Suspend(p) (p)->lpVtbl->Suspend(p) -#define IInternetProtocolRoot_Resume(p) (p)->lpVtbl->Resume(p) -#endif - -#endif - -HRESULT CALLBACK IInternetProtocolRoot_Start_Proxy( - IInternetProtocolRoot* This, - LPCWSTR szUrl, - IInternetProtocolSink* pOIProtSink, - IInternetBindInfo* pOIBindInfo, - DWORD grfPI, - DWORD dwReserved); -void __RPC_STUB IInternetProtocolRoot_Start_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolRoot_Continue_Proxy( - IInternetProtocolRoot* This, - PROTOCOLDATA* pProtocolData); -void __RPC_STUB IInternetProtocolRoot_Continue_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolRoot_Abort_Proxy( - IInternetProtocolRoot* This, - HRESULT hrReason, - DWORD dwOptions); -void __RPC_STUB IInternetProtocolRoot_Abort_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolRoot_Terminate_Proxy( - IInternetProtocolRoot* This, - DWORD dwOptions); -void __RPC_STUB IInternetProtocolRoot_Terminate_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolRoot_Suspend_Proxy( - IInternetProtocolRoot* This); -void __RPC_STUB IInternetProtocolRoot_Suspend_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolRoot_Resume_Proxy( - IInternetProtocolRoot* This); -void __RPC_STUB IInternetProtocolRoot_Resume_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetProtocolRoot_INTERFACE_DEFINED__ */ - -typedef IInternetProtocolSink *LPIINTERNETPROTOCOLSINK; -/***************************************************************************** - * IInternetProtocolSink interface - */ -#ifndef __IInternetProtocolSink_INTERFACE_DEFINED__ -#define __IInternetProtocolSink_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetProtocolSink, 0x79eac9e5, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetProtocolSink : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Switch( - PROTOCOLDATA* pProtocolData) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReportProgress( - ULONG ulStatusCode, - LPCWSTR szStatusText) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReportData( - DWORD grfBSCF, - ULONG ulProgress, - ULONG ulProgressMax) = 0; - - virtual HRESULT STDMETHODCALLTYPE ReportResult( - HRESULT hrResult, - DWORD dwError, - LPCWSTR szResult) = 0; - -}; -#else -typedef struct IInternetProtocolSinkVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetProtocolSink* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetProtocolSink* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetProtocolSink* This); - - /*** IInternetProtocolSink methods ***/ - HRESULT (STDMETHODCALLTYPE *Switch)( - IInternetProtocolSink* This, - PROTOCOLDATA* pProtocolData); - - HRESULT (STDMETHODCALLTYPE *ReportProgress)( - IInternetProtocolSink* This, - ULONG ulStatusCode, - LPCWSTR szStatusText); - - HRESULT (STDMETHODCALLTYPE *ReportData)( - IInternetProtocolSink* This, - DWORD grfBSCF, - ULONG ulProgress, - ULONG ulProgressMax); - - HRESULT (STDMETHODCALLTYPE *ReportResult)( - IInternetProtocolSink* This, - HRESULT hrResult, - DWORD dwError, - LPCWSTR szResult); - - END_INTERFACE -} IInternetProtocolSinkVtbl; -interface IInternetProtocolSink { - const IInternetProtocolSinkVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetProtocolSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetProtocolSink_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetProtocolSink_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetProtocolSink methods ***/ -#define IInternetProtocolSink_Switch(p,a) (p)->lpVtbl->Switch(p,a) -#define IInternetProtocolSink_ReportProgress(p,a,b) (p)->lpVtbl->ReportProgress(p,a,b) -#define IInternetProtocolSink_ReportData(p,a,b,c) (p)->lpVtbl->ReportData(p,a,b,c) -#define IInternetProtocolSink_ReportResult(p,a,b,c) (p)->lpVtbl->ReportResult(p,a,b,c) -#endif - -#endif - -HRESULT CALLBACK IInternetProtocolSink_Switch_Proxy( - IInternetProtocolSink* This, - PROTOCOLDATA* pProtocolData); -void __RPC_STUB IInternetProtocolSink_Switch_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolSink_ReportProgress_Proxy( - IInternetProtocolSink* This, - ULONG ulStatusCode, - LPCWSTR szStatusText); -void __RPC_STUB IInternetProtocolSink_ReportProgress_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolSink_ReportData_Proxy( - IInternetProtocolSink* This, - DWORD grfBSCF, - ULONG ulProgress, - ULONG ulProgressMax); -void __RPC_STUB IInternetProtocolSink_ReportData_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolSink_ReportResult_Proxy( - IInternetProtocolSink* This, - HRESULT hrResult, - DWORD dwError, - LPCWSTR szResult); -void __RPC_STUB IInternetProtocolSink_ReportResult_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetProtocolSink_INTERFACE_DEFINED__ */ - -#ifndef __IInternetProtocol_FWD_DEFINED__ -#define __IInternetProtocol_FWD_DEFINED__ -typedef interface IInternetProtocol IInternetProtocol; -#endif - -typedef IInternetProtocol *LPIINTERNETPROTOCOL; -/***************************************************************************** - * IInternetProtocol interface - */ -#ifndef __IInternetProtocol_INTERFACE_DEFINED__ -#define __IInternetProtocol_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetProtocol, 0x79eac9e4, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetProtocol : public IInternetProtocolRoot -{ - virtual HRESULT STDMETHODCALLTYPE Read( - void* pv, - ULONG cb, - ULONG* pcbRead) = 0; - - virtual HRESULT STDMETHODCALLTYPE Seek( - LARGE_INTEGER dlibMove, - DWORD dwOrigin, - ULARGE_INTEGER* plibNewPosition) = 0; - - virtual HRESULT STDMETHODCALLTYPE LockRequest( - DWORD dwOptions) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnlockRequest( - ) = 0; - -}; -#else -typedef struct IInternetProtocolVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetProtocol* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetProtocol* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetProtocol* This); - - /*** IInternetProtocolRoot methods ***/ - HRESULT (STDMETHODCALLTYPE *Start)( - IInternetProtocol* This, - LPCWSTR szUrl, - IInternetProtocolSink* pOIProtSink, - IInternetBindInfo* pOIBindInfo, - DWORD grfPI, - DWORD dwReserved); - - HRESULT (STDMETHODCALLTYPE *Continue)( - IInternetProtocol* This, - PROTOCOLDATA* pProtocolData); - - HRESULT (STDMETHODCALLTYPE *Abort)( - IInternetProtocol* This, - HRESULT hrReason, - DWORD dwOptions); - - HRESULT (STDMETHODCALLTYPE *Terminate)( - IInternetProtocol* This, - DWORD dwOptions); - - HRESULT (STDMETHODCALLTYPE *Suspend)( - IInternetProtocol* This); - - HRESULT (STDMETHODCALLTYPE *Resume)( - IInternetProtocol* This); - - /*** IInternetProtocol methods ***/ - HRESULT (STDMETHODCALLTYPE *Read)( - IInternetProtocol* This, - void* pv, - ULONG cb, - ULONG* pcbRead); - - HRESULT (STDMETHODCALLTYPE *Seek)( - IInternetProtocol* This, - LARGE_INTEGER dlibMove, - DWORD dwOrigin, - ULARGE_INTEGER* plibNewPosition); - - HRESULT (STDMETHODCALLTYPE *LockRequest)( - IInternetProtocol* This, - DWORD dwOptions); - - HRESULT (STDMETHODCALLTYPE *UnlockRequest)( - IInternetProtocol* This); - - END_INTERFACE -} IInternetProtocolVtbl; -interface IInternetProtocol { - const IInternetProtocolVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetProtocol_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetProtocol_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetProtocol_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetProtocolRoot methods ***/ -#define IInternetProtocol_Start(p,a,b,c,d,e) (p)->lpVtbl->Start(p,a,b,c,d,e) -#define IInternetProtocol_Continue(p,a) (p)->lpVtbl->Continue(p,a) -#define IInternetProtocol_Abort(p,a,b) (p)->lpVtbl->Abort(p,a,b) -#define IInternetProtocol_Terminate(p,a) (p)->lpVtbl->Terminate(p,a) -#define IInternetProtocol_Suspend(p) (p)->lpVtbl->Suspend(p) -#define IInternetProtocol_Resume(p) (p)->lpVtbl->Resume(p) -/*** IInternetProtocol methods ***/ -#define IInternetProtocol_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c) -#define IInternetProtocol_Seek(p,a,b,c) (p)->lpVtbl->Seek(p,a,b,c) -#define IInternetProtocol_LockRequest(p,a) (p)->lpVtbl->LockRequest(p,a) -#define IInternetProtocol_UnlockRequest(p) (p)->lpVtbl->UnlockRequest(p) -#endif - -#endif - -HRESULT CALLBACK IInternetProtocol_Read_Proxy( - IInternetProtocol* This, - void* pv, - ULONG cb, - ULONG* pcbRead); -void __RPC_STUB IInternetProtocol_Read_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocol_Seek_Proxy( - IInternetProtocol* This, - LARGE_INTEGER dlibMove, - DWORD dwOrigin, - ULARGE_INTEGER* plibNewPosition); -void __RPC_STUB IInternetProtocol_Seek_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocol_LockRequest_Proxy( - IInternetProtocol* This, - DWORD dwOptions); -void __RPC_STUB IInternetProtocol_LockRequest_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocol_UnlockRequest_Proxy( - IInternetProtocol* This); -void __RPC_STUB IInternetProtocol_UnlockRequest_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetProtocol_INTERFACE_DEFINED__ */ - -#ifndef __IInternetProtocolInfo_FWD_DEFINED__ -#define __IInternetProtocolInfo_FWD_DEFINED__ -typedef interface IInternetProtocolInfo IInternetProtocolInfo; -#endif - -typedef IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO; -typedef enum _tagPARSEACTION { - PARSE_CANONICALIZE = 1, - PARSE_FRIENDLY, - PARSE_SECURITY_URL, - PARSE_ROOTDOCUMENT, - PARSE_DOCUMENT, - PARSE_ANCHOR, - PARSE_ENCODE, - PARSE_DECODE, - PARSE_PATH_FROM_URL, - PARSE_URL_FROM_PATH, - PARSE_MIME, - PARSE_SERVER, - PARSE_SCHEMA, - PARSE_SITE, - PARSE_DOMAIN, - PARSE_LOCATION, - PARSE_SECURITY_DOMAIN, - PARSE_ESCAPE, - PARSE_UNESCAPE -} PARSEACTION; -typedef enum _tagPSUACTION { - PSU_DEFAULT = 1, - PSU_SECURITY_URL_ONLY -} PSUACTION; -typedef enum _tagQUERYOPTION { - QUERY_EXPIRATION_DATE = 1, - QUERY_TIME_OF_LAST_CHANGE, - QUERY_CONTENT_ENCODING, - QUERY_CONTENT_TYPE, - QUERY_REFRESH, - QUERY_RECOMBINE, - QUERY_CAN_NAVIGATE, - QUERY_USES_NETWORK, - QUERY_IS_CACHED, - QUERY_IS_INSTALLEDENTRY, - QUERY_IS_CACHED_OR_MAPPED, - QUERY_USES_CACHE, - QUERY_IS_SECURE, - QUERY_IS_SAFE -} QUERYOPTION; -/***************************************************************************** - * IInternetProtocolInfo interface - */ -#ifndef __IInternetProtocolInfo_INTERFACE_DEFINED__ -#define __IInternetProtocolInfo_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetProtocolInfo, 0x79eac9ec, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetProtocolInfo : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE ParseUrl( - LPCWSTR pwzUrl, - PARSEACTION ParseAction, - DWORD dwParseFlags, - LPWSTR pwzResult, - DWORD cchResult, - DWORD* pcchResult, - DWORD dwReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE CombineUrl( - LPCWSTR pwzBaseUrl, - LPCWSTR pwzRelativeUrl, - DWORD dwCombineFlags, - LPWSTR pwzResult, - DWORD cchResult, - DWORD* pcchResult, - DWORD dwReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE CompareUrl( - LPCWSTR pwzUrl1, - LPCWSTR pwzUrl2, - DWORD dwCompareFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryInfo( - LPCWSTR pwzUrl, - QUERYOPTION OueryOption, - DWORD dwQueryFlags, - LPVOID pBuffer, - DWORD cbBuffer, - DWORD* pcbBuf, - DWORD dwReserved) = 0; - -}; -#else -typedef struct IInternetProtocolInfoVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetProtocolInfo* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetProtocolInfo* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetProtocolInfo* This); - - /*** IInternetProtocolInfo methods ***/ - HRESULT (STDMETHODCALLTYPE *ParseUrl)( - IInternetProtocolInfo* This, - LPCWSTR pwzUrl, - PARSEACTION ParseAction, - DWORD dwParseFlags, - LPWSTR pwzResult, - DWORD cchResult, - DWORD* pcchResult, - DWORD dwReserved); - - HRESULT (STDMETHODCALLTYPE *CombineUrl)( - IInternetProtocolInfo* This, - LPCWSTR pwzBaseUrl, - LPCWSTR pwzRelativeUrl, - DWORD dwCombineFlags, - LPWSTR pwzResult, - DWORD cchResult, - DWORD* pcchResult, - DWORD dwReserved); - - HRESULT (STDMETHODCALLTYPE *CompareUrl)( - IInternetProtocolInfo* This, - LPCWSTR pwzUrl1, - LPCWSTR pwzUrl2, - DWORD dwCompareFlags); - - HRESULT (STDMETHODCALLTYPE *QueryInfo)( - IInternetProtocolInfo* This, - LPCWSTR pwzUrl, - QUERYOPTION OueryOption, - DWORD dwQueryFlags, - LPVOID pBuffer, - DWORD cbBuffer, - DWORD* pcbBuf, - DWORD dwReserved); - - END_INTERFACE -} IInternetProtocolInfoVtbl; -interface IInternetProtocolInfo { - const IInternetProtocolInfoVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetProtocolInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetProtocolInfo_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetProtocolInfo_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetProtocolInfo methods ***/ -#define IInternetProtocolInfo_ParseUrl(p,a,b,c,d,e,f,g) (p)->lpVtbl->ParseUrl(p,a,b,c,d,e,f,g) -#define IInternetProtocolInfo_CombineUrl(p,a,b,c,d,e,f,g) (p)->lpVtbl->CombineUrl(p,a,b,c,d,e,f,g) -#define IInternetProtocolInfo_CompareUrl(p,a,b,c) (p)->lpVtbl->CompareUrl(p,a,b,c) -#define IInternetProtocolInfo_QueryInfo(p,a,b,c,d,e,f,g) (p)->lpVtbl->QueryInfo(p,a,b,c,d,e,f,g) -#endif - -#endif - -HRESULT CALLBACK IInternetProtocolInfo_ParseUrl_Proxy( - IInternetProtocolInfo* This, - LPCWSTR pwzUrl, - PARSEACTION ParseAction, - DWORD dwParseFlags, - LPWSTR pwzResult, - DWORD cchResult, - DWORD* pcchResult, - DWORD dwReserved); -void __RPC_STUB IInternetProtocolInfo_ParseUrl_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolInfo_CombineUrl_Proxy( - IInternetProtocolInfo* This, - LPCWSTR pwzBaseUrl, - LPCWSTR pwzRelativeUrl, - DWORD dwCombineFlags, - LPWSTR pwzResult, - DWORD cchResult, - DWORD* pcchResult, - DWORD dwReserved); -void __RPC_STUB IInternetProtocolInfo_CombineUrl_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolInfo_CompareUrl_Proxy( - IInternetProtocolInfo* This, - LPCWSTR pwzUrl1, - LPCWSTR pwzUrl2, - DWORD dwCompareFlags); -void __RPC_STUB IInternetProtocolInfo_CompareUrl_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetProtocolInfo_QueryInfo_Proxy( - IInternetProtocolInfo* This, - LPCWSTR pwzUrl, - QUERYOPTION OueryOption, - DWORD dwQueryFlags, - LPVOID pBuffer, - DWORD cbBuffer, - DWORD* pcbBuf, - DWORD dwReserved); -void __RPC_STUB IInternetProtocolInfo_QueryInfo_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetProtocolInfo_INTERFACE_DEFINED__ */ - -#ifndef __IInternetSession_FWD_DEFINED__ -#define __IInternetSession_FWD_DEFINED__ -typedef interface IInternetSession IInternetSession; -#endif - -typedef IInternetSession *LPIINTERNETSESSION; -typedef enum _tagOIBDG_FLAGS { - OIBDG_APARTMENTTHREADED = 0x100, - OIBDG_DATAONLY = 0x1000 -} OIBDG_FLAGS; -/***************************************************************************** - * IInternetSession interface - */ -#ifndef __IInternetSession_INTERFACE_DEFINED__ -#define __IInternetSession_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetSession, 0x79eac9e7, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetSession : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE RegisterNameSpace( - IClassFactory* pCF, - REFCLSID rclsid, - LPCWSTR pwzProtocol, - ULONG cPatterns, - const LPCWSTR* ppwzPatterns, - DWORD dwReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnregisterNameSpace( - IClassFactory* pCF, - LPCWSTR pszProtocol) = 0; - - virtual HRESULT STDMETHODCALLTYPE RegisterMimeFilter( - IClassFactory* pCF, - REFCLSID rclsid, - LPCWSTR pwzType) = 0; - - virtual HRESULT STDMETHODCALLTYPE UnregisterMimeFilter( - IClassFactory* pCF, - LPCWSTR pwzType) = 0; - - virtual HRESULT STDMETHODCALLTYPE CreateBinding( - LPBC pBC, - LPCWSTR szUrl, - IUnknown* pUnkOuter, - IUnknown** ppUnk, - IInternetProtocol** ppOInetProt, - DWORD dwOption) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSessionOption( - DWORD dwOption, - LPVOID pBuffer, - DWORD dwBufferLength, - DWORD dwReserved) = 0; - -}; -#else -typedef struct IInternetSessionVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetSession* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetSession* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetSession* This); - - /*** IInternetSession methods ***/ - HRESULT (STDMETHODCALLTYPE *RegisterNameSpace)( - IInternetSession* This, - IClassFactory* pCF, - REFCLSID rclsid, - LPCWSTR pwzProtocol, - ULONG cPatterns, - const LPCWSTR* ppwzPatterns, - DWORD dwReserved); - - HRESULT (STDMETHODCALLTYPE *UnregisterNameSpace)( - IInternetSession* This, - IClassFactory* pCF, - LPCWSTR pszProtocol); - - HRESULT (STDMETHODCALLTYPE *RegisterMimeFilter)( - IInternetSession* This, - IClassFactory* pCF, - REFCLSID rclsid, - LPCWSTR pwzType); - - HRESULT (STDMETHODCALLTYPE *UnregisterMimeFilter)( - IInternetSession* This, - IClassFactory* pCF, - LPCWSTR pwzType); - - HRESULT (STDMETHODCALLTYPE *CreateBinding)( - IInternetSession* This, - LPBC pBC, - LPCWSTR szUrl, - IUnknown* pUnkOuter, - IUnknown** ppUnk, - IInternetProtocol** ppOInetProt, - DWORD dwOption); - - HRESULT (STDMETHODCALLTYPE *SetSessionOption)( - IInternetSession* This, - DWORD dwOption, - LPVOID pBuffer, - DWORD dwBufferLength, - DWORD dwReserved); - - END_INTERFACE -} IInternetSessionVtbl; -interface IInternetSession { - const IInternetSessionVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetSession_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetSession_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetSession_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetSession methods ***/ -#define IInternetSession_RegisterNameSpace(p,a,b,c,d,e,f) (p)->lpVtbl->RegisterNameSpace(p,a,b,c,d,e,f) -#define IInternetSession_UnregisterNameSpace(p,a,b) (p)->lpVtbl->UnregisterNameSpace(p,a,b) -#define IInternetSession_RegisterMimeFilter(p,a,b,c) (p)->lpVtbl->RegisterMimeFilter(p,a,b,c) -#define IInternetSession_UnregisterMimeFilter(p,a,b) (p)->lpVtbl->UnregisterMimeFilter(p,a,b) -#define IInternetSession_CreateBinding(p,a,b,c,d,e,f) (p)->lpVtbl->CreateBinding(p,a,b,c,d,e,f) -#define IInternetSession_SetSessionOption(p,a,b,c,d) (p)->lpVtbl->SetSessionOption(p,a,b,c,d) -#endif - -#endif - -HRESULT CALLBACK IInternetSession_RegisterNameSpace_Proxy( - IInternetSession* This, - IClassFactory* pCF, - REFCLSID rclsid, - LPCWSTR pwzProtocol, - ULONG cPatterns, - const LPCWSTR* ppwzPatterns, - DWORD dwReserved); -void __RPC_STUB IInternetSession_RegisterNameSpace_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSession_UnregisterNameSpace_Proxy( - IInternetSession* This, - IClassFactory* pCF, - LPCWSTR pszProtocol); -void __RPC_STUB IInternetSession_UnregisterNameSpace_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSession_RegisterMimeFilter_Proxy( - IInternetSession* This, - IClassFactory* pCF, - REFCLSID rclsid, - LPCWSTR pwzType); -void __RPC_STUB IInternetSession_RegisterMimeFilter_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSession_UnregisterMimeFilter_Proxy( - IInternetSession* This, - IClassFactory* pCF, - LPCWSTR pwzType); -void __RPC_STUB IInternetSession_UnregisterMimeFilter_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSession_CreateBinding_Proxy( - IInternetSession* This, - LPBC pBC, - LPCWSTR szUrl, - IUnknown* pUnkOuter, - IUnknown** ppUnk, - IInternetProtocol** ppOInetProt, - DWORD dwOption); -void __RPC_STUB IInternetSession_CreateBinding_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSession_SetSessionOption_Proxy( - IInternetSession* This, - DWORD dwOption, - LPVOID pBuffer, - DWORD dwBufferLength, - DWORD dwReserved); -void __RPC_STUB IInternetSession_SetSessionOption_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetSession_INTERFACE_DEFINED__ */ - -#ifndef __IInternetSecurityMgrSite_FWD_DEFINED__ -#define __IInternetSecurityMgrSite_FWD_DEFINED__ -typedef interface IInternetSecurityMgrSite IInternetSecurityMgrSite; -#endif - -/***************************************************************************** - * IInternetSecurityMgrSite interface - */ -#ifndef __IInternetSecurityMgrSite_INTERFACE_DEFINED__ -#define __IInternetSecurityMgrSite_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetSecurityMgrSite, 0x79eac9ed, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetSecurityMgrSite : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE GetWindow( - HWND* phwnd) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnableModeless( - BOOL fEnable) = 0; - -}; -#else -typedef struct IInternetSecurityMgrSiteVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetSecurityMgrSite* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetSecurityMgrSite* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetSecurityMgrSite* This); - - /*** IInternetSecurityMgrSite methods ***/ - HRESULT (STDMETHODCALLTYPE *GetWindow)( - IInternetSecurityMgrSite* This, - HWND* phwnd); - - HRESULT (STDMETHODCALLTYPE *EnableModeless)( - IInternetSecurityMgrSite* This, - BOOL fEnable); - - END_INTERFACE -} IInternetSecurityMgrSiteVtbl; -interface IInternetSecurityMgrSite { - const IInternetSecurityMgrSiteVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetSecurityMgrSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetSecurityMgrSite_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetSecurityMgrSite_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetSecurityMgrSite methods ***/ -#define IInternetSecurityMgrSite_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) -#define IInternetSecurityMgrSite_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a) -#endif - -#endif - -HRESULT CALLBACK IInternetSecurityMgrSite_GetWindow_Proxy( - IInternetSecurityMgrSite* This, - HWND* phwnd); -void __RPC_STUB IInternetSecurityMgrSite_GetWindow_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSecurityMgrSite_EnableModeless_Proxy( - IInternetSecurityMgrSite* This, - BOOL fEnable); -void __RPC_STUB IInternetSecurityMgrSite_EnableModeless_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetSecurityMgrSite_INTERFACE_DEFINED__ */ - -#define SID_SInternetSecurityManager IID_IInternetSecurityManager -#ifndef __IInternetSecurityManager_FWD_DEFINED__ -#define __IInternetSecurityManager_FWD_DEFINED__ -typedef interface IInternetSecurityManager IInternetSecurityManager; -#endif - -#define MAX_SIZE_SECURITY_ID 512 -typedef enum { - PUAF_DEFAULT = 0x0, - PUAF_NOUI = 0x1, - PUAF_ISFILE = 0x2, - PUAF_WARN_IF_DENIED = 0x4, - PUAF_FORCEUI_FOREGROUND = 0x8, - PUAF_CHECK_TIPS = 0x10 -} PUAF; -typedef enum { - SZM_CREATE = 0x0, - SZM_DELETE = 0x1 -} SZM_FLAGS; -/***************************************************************************** - * IInternetSecurityManager interface - */ -#ifndef __IInternetSecurityManager_INTERFACE_DEFINED__ -#define __IInternetSecurityManager_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetSecurityManager, 0x79eac9ee, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetSecurityManager : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE SetSecuritySite( - IInternetSecurityMgrSite* pSite) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSecuritySite( - IInternetSecurityMgrSite** ppSite) = 0; - - virtual HRESULT STDMETHODCALLTYPE MapUrlToZone( - LPCWSTR pwszUrl, - DWORD* pdwZone, - DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSecurityId( - LPCWSTR pwszUrl, - BYTE* pbSecurityId, - DWORD* pcbSecurityId, - DWORD_PTR dwReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE ProcessUrlAction( - LPCWSTR pwszUrl, - DWORD dwAction, - BYTE* pPolicy, - DWORD cbPolicy, - BYTE* pContext, - DWORD cbContext, - DWORD dwFlags, - DWORD dwReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryCustomPolicy( - LPCWSTR pwszUrl, - REFGUID guidKey, - BYTE** ppPolicy, - DWORD* pcbPolicy, - BYTE* pContext, - DWORD cbContext, - DWORD dwReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetZoneMapping( - DWORD dwZone, - LPCWSTR lpszPattern, - DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetZoneMappings( - DWORD dwZone, - IEnumString** ppenumString, - DWORD dwFlags) = 0; - -}; -#else -typedef struct IInternetSecurityManagerVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetSecurityManager* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetSecurityManager* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetSecurityManager* This); - - /*** IInternetSecurityManager methods ***/ - HRESULT (STDMETHODCALLTYPE *SetSecuritySite)( - IInternetSecurityManager* This, - IInternetSecurityMgrSite* pSite); - - HRESULT (STDMETHODCALLTYPE *GetSecuritySite)( - IInternetSecurityManager* This, - IInternetSecurityMgrSite** ppSite); - - HRESULT (STDMETHODCALLTYPE *MapUrlToZone)( - IInternetSecurityManager* This, - LPCWSTR pwszUrl, - DWORD* pdwZone, - DWORD dwFlags); - - HRESULT (STDMETHODCALLTYPE *GetSecurityId)( - IInternetSecurityManager* This, - LPCWSTR pwszUrl, - BYTE* pbSecurityId, - DWORD* pcbSecurityId, - DWORD_PTR dwReserved); - - HRESULT (STDMETHODCALLTYPE *ProcessUrlAction)( - IInternetSecurityManager* This, - LPCWSTR pwszUrl, - DWORD dwAction, - BYTE* pPolicy, - DWORD cbPolicy, - BYTE* pContext, - DWORD cbContext, - DWORD dwFlags, - DWORD dwReserved); - - HRESULT (STDMETHODCALLTYPE *QueryCustomPolicy)( - IInternetSecurityManager* This, - LPCWSTR pwszUrl, - REFGUID guidKey, - BYTE** ppPolicy, - DWORD* pcbPolicy, - BYTE* pContext, - DWORD cbContext, - DWORD dwReserved); - - HRESULT (STDMETHODCALLTYPE *SetZoneMapping)( - IInternetSecurityManager* This, - DWORD dwZone, - LPCWSTR lpszPattern, - DWORD dwFlags); - - HRESULT (STDMETHODCALLTYPE *GetZoneMappings)( - IInternetSecurityManager* This, - DWORD dwZone, - IEnumString** ppenumString, - DWORD dwFlags); - - END_INTERFACE -} IInternetSecurityManagerVtbl; -interface IInternetSecurityManager { - const IInternetSecurityManagerVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetSecurityManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetSecurityManager_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetSecurityManager_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetSecurityManager methods ***/ -#define IInternetSecurityManager_SetSecuritySite(p,a) (p)->lpVtbl->SetSecuritySite(p,a) -#define IInternetSecurityManager_GetSecuritySite(p,a) (p)->lpVtbl->GetSecuritySite(p,a) -#define IInternetSecurityManager_MapUrlToZone(p,a,b,c) (p)->lpVtbl->MapUrlToZone(p,a,b,c) -#define IInternetSecurityManager_GetSecurityId(p,a,b,c,d) (p)->lpVtbl->GetSecurityId(p,a,b,c,d) -#define IInternetSecurityManager_ProcessUrlAction(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ProcessUrlAction(p,a,b,c,d,e,f,g,h) -#define IInternetSecurityManager_QueryCustomPolicy(p,a,b,c,d,e,f,g) (p)->lpVtbl->QueryCustomPolicy(p,a,b,c,d,e,f,g) -#define IInternetSecurityManager_SetZoneMapping(p,a,b,c) (p)->lpVtbl->SetZoneMapping(p,a,b,c) -#define IInternetSecurityManager_GetZoneMappings(p,a,b,c) (p)->lpVtbl->GetZoneMappings(p,a,b,c) -#endif - -#endif - -HRESULT CALLBACK IInternetSecurityManager_SetSecuritySite_Proxy( - IInternetSecurityManager* This, - IInternetSecurityMgrSite* pSite); -void __RPC_STUB IInternetSecurityManager_SetSecuritySite_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSecurityManager_GetSecuritySite_Proxy( - IInternetSecurityManager* This, - IInternetSecurityMgrSite** ppSite); -void __RPC_STUB IInternetSecurityManager_GetSecuritySite_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSecurityManager_MapUrlToZone_Proxy( - IInternetSecurityManager* This, - LPCWSTR pwszUrl, - DWORD* pdwZone, - DWORD dwFlags); -void __RPC_STUB IInternetSecurityManager_MapUrlToZone_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSecurityManager_GetSecurityId_Proxy( - IInternetSecurityManager* This, - LPCWSTR pwszUrl, - BYTE* pbSecurityId, - DWORD* pcbSecurityId, - DWORD_PTR dwReserved); -void __RPC_STUB IInternetSecurityManager_GetSecurityId_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSecurityManager_ProcessUrlAction_Proxy( - IInternetSecurityManager* This, - LPCWSTR pwszUrl, - DWORD dwAction, - BYTE* pPolicy, - DWORD cbPolicy, - BYTE* pContext, - DWORD cbContext, - DWORD dwFlags, - DWORD dwReserved); -void __RPC_STUB IInternetSecurityManager_ProcessUrlAction_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSecurityManager_QueryCustomPolicy_Proxy( - IInternetSecurityManager* This, - LPCWSTR pwszUrl, - REFGUID guidKey, - BYTE** ppPolicy, - DWORD* pcbPolicy, - BYTE* pContext, - DWORD cbContext, - DWORD dwReserved); -void __RPC_STUB IInternetSecurityManager_QueryCustomPolicy_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSecurityManager_SetZoneMapping_Proxy( - IInternetSecurityManager* This, - DWORD dwZone, - LPCWSTR lpszPattern, - DWORD dwFlags); -void __RPC_STUB IInternetSecurityManager_SetZoneMapping_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetSecurityManager_GetZoneMappings_Proxy( - IInternetSecurityManager* This, - DWORD dwZone, - IEnumString** ppenumString, - DWORD dwFlags); -void __RPC_STUB IInternetSecurityManager_GetZoneMappings_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetSecurityManager_INTERFACE_DEFINED__ */ - -#ifndef __IInternetZoneManager_FWD_DEFINED__ -#define __IInternetZoneManager_FWD_DEFINED__ -typedef interface IInternetZoneManager IInternetZoneManager; -#endif - -typedef IInternetZoneManager *LPURLZONEMANAGER; -typedef enum tagURLZONE { - URLZONE_PREDEFINED_MIN = 0, - URLZONE_LOCAL_MACHINE = 0, - URLZONE_INTRANET = 1, - URLZONE_TRUSTED = 2, - URLZONE_INTERNET = 3, - URLZONE_UNTRUSTED = 4, - URLZONE_PREDEFINED_MAX = 999, - URLZONE_USER_MIN = 1000, - URLZONE_USER_MAX = 10000 -} URLZONE; -typedef enum tagURLTEMPLATE { - URLTEMPLATE_CUSTOM = 0x0, - URLTEMPLATE_PREDEFINED_MIN = 0x10000, - URLTEMPLATE_LOW = 0x10000, - URLTEMPLATE_MEDIUM = 0x11000, - URLTEMPLATE_HIGH = 0x12000, - URLTEMPLATE_PREDEFINED_MAX = 0x20000 -} URLTEMPLATE; -typedef enum { - ZAFLAGS_CUSTOM_EDIT = 0x1, - ZAFLAGS_ADD_SITES = 0x2, - ZAFLAGS_REQUIRE_VERIFICATION = 0x4, - ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x8, - ZAFLAGS_INCLUDE_INTRANET_SITES = 0x10, - ZAFLAGS_NO_UI = 0x20, - ZAFLAGS_SUPPORTS_VERIFICATION = 0x40, - ZAFLAGS_UNC_AS_INTRANET = 0x80 -} ZAFLAGS; -enum { - MAX_ZONE_PATH = 260, - MAX_ZONE_DESCRIPTION = 200 -}; - -typedef struct _ZONEATTRIBUTES { - ULONG cbSize; - WCHAR szDisplayName[260]; - WCHAR szDescription[200]; - WCHAR szIconPath[260]; - DWORD dwTemplateMinLevel; - DWORD dwTemplateRecommended; - DWORD dwTemplateCurrentLevel; - DWORD dwFlags; -} ZONEATTRIBUTES, *LPZONEATTRIBUTES; -typedef enum _URLZONEREG { - URLZONEREG_DEFAULT, - URLZONEREG_HKLM, - URLZONEREG_HKCU -} URLZONEREG; -/***************************************************************************** - * IInternetZoneManager interface - */ -#ifndef __IInternetZoneManager_INTERFACE_DEFINED__ -#define __IInternetZoneManager_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternetZoneManager, 0x79eac9ef, 0xbaf9, 0x11ce, 0x8c,0x82, 0x00,0xaa,0x00,0x4b,0xa9,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface IInternetZoneManager : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE GetZoneAttributes( - DWORD dwZone, - ZONEATTRIBUTES* pZoneAttributes) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetZoneAttributes( - DWORD dwZone, - ZONEATTRIBUTES* pZoneAttributes) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetZoneCustomPolicy( - DWORD dwZone, - REFGUID guidKey, - BYTE** ppPolicy, - DWORD* pcbPolicy, - URLZONEREG ulrZoneReg) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetZoneCustomPolicy( - DWORD dwZone, - REFGUID guidKey, - BYTE* ppPolicy, - DWORD pcbPolicy, - URLZONEREG ulrZoneReg) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetZoneActionPolicy( - DWORD dwZone, - DWORD dwAction, - BYTE* pPolicy, - DWORD cbPolicy, - URLZONEREG urlZoneReg) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetZoneActionPolicy( - DWORD dwZone, - DWORD dwAction, - BYTE* pPolicy, - DWORD cbPolicy, - URLZONEREG urlZoneReg) = 0; - - virtual HRESULT STDMETHODCALLTYPE PromptAction( - DWORD dwAction, - HWND hwndParent, - LPCWSTR pwszUrl, - LPCWSTR pwszText, - DWORD dwPromptFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE LogAction( - DWORD dwAction, - LPCWSTR pwszUrl, - LPCWSTR pwszText, - DWORD dwLogFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE CreateZoneEnumerator( - DWORD* pdwEnum, - DWORD* pdwCount, - DWORD dwFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetZoneAt( - DWORD dwEnum, - DWORD dwIndex, - DWORD* pdwZone) = 0; - - virtual HRESULT STDMETHODCALLTYPE DestroyZoneEnumerator( - DWORD dwEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE CopyTemplatePoliciesToZone( - DWORD dwTemplate, - DWORD dwZone, - DWORD dwReserved) = 0; - -}; -#else -typedef struct IInternetZoneManagerVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternetZoneManager* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternetZoneManager* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternetZoneManager* This); - - /*** IInternetZoneManager methods ***/ - HRESULT (STDMETHODCALLTYPE *GetZoneAttributes)( - IInternetZoneManager* This, - DWORD dwZone, - ZONEATTRIBUTES* pZoneAttributes); - - HRESULT (STDMETHODCALLTYPE *SetZoneAttributes)( - IInternetZoneManager* This, - DWORD dwZone, - ZONEATTRIBUTES* pZoneAttributes); - - HRESULT (STDMETHODCALLTYPE *GetZoneCustomPolicy)( - IInternetZoneManager* This, - DWORD dwZone, - REFGUID guidKey, - BYTE** ppPolicy, - DWORD* pcbPolicy, - URLZONEREG ulrZoneReg); - - HRESULT (STDMETHODCALLTYPE *SetZoneCustomPolicy)( - IInternetZoneManager* This, - DWORD dwZone, - REFGUID guidKey, - BYTE* ppPolicy, - DWORD pcbPolicy, - URLZONEREG ulrZoneReg); - - HRESULT (STDMETHODCALLTYPE *GetZoneActionPolicy)( - IInternetZoneManager* This, - DWORD dwZone, - DWORD dwAction, - BYTE* pPolicy, - DWORD cbPolicy, - URLZONEREG urlZoneReg); - - HRESULT (STDMETHODCALLTYPE *SetZoneActionPolicy)( - IInternetZoneManager* This, - DWORD dwZone, - DWORD dwAction, - BYTE* pPolicy, - DWORD cbPolicy, - URLZONEREG urlZoneReg); - - HRESULT (STDMETHODCALLTYPE *PromptAction)( - IInternetZoneManager* This, - DWORD dwAction, - HWND hwndParent, - LPCWSTR pwszUrl, - LPCWSTR pwszText, - DWORD dwPromptFlags); - - HRESULT (STDMETHODCALLTYPE *LogAction)( - IInternetZoneManager* This, - DWORD dwAction, - LPCWSTR pwszUrl, - LPCWSTR pwszText, - DWORD dwLogFlags); - - HRESULT (STDMETHODCALLTYPE *CreateZoneEnumerator)( - IInternetZoneManager* This, - DWORD* pdwEnum, - DWORD* pdwCount, - DWORD dwFlags); - - HRESULT (STDMETHODCALLTYPE *GetZoneAt)( - IInternetZoneManager* This, - DWORD dwEnum, - DWORD dwIndex, - DWORD* pdwZone); - - HRESULT (STDMETHODCALLTYPE *DestroyZoneEnumerator)( - IInternetZoneManager* This, - DWORD dwEnum); - - HRESULT (STDMETHODCALLTYPE *CopyTemplatePoliciesToZone)( - IInternetZoneManager* This, - DWORD dwTemplate, - DWORD dwZone, - DWORD dwReserved); - - END_INTERFACE -} IInternetZoneManagerVtbl; -interface IInternetZoneManager { - const IInternetZoneManagerVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternetZoneManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternetZoneManager_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternetZoneManager_Release(p) (p)->lpVtbl->Release(p) -/*** IInternetZoneManager methods ***/ -#define IInternetZoneManager_GetZoneAttributes(p,a,b) (p)->lpVtbl->GetZoneAttributes(p,a,b) -#define IInternetZoneManager_SetZoneAttributes(p,a,b) (p)->lpVtbl->SetZoneAttributes(p,a,b) -#define IInternetZoneManager_GetZoneCustomPolicy(p,a,b,c,d,e) (p)->lpVtbl->GetZoneCustomPolicy(p,a,b,c,d,e) -#define IInternetZoneManager_SetZoneCustomPolicy(p,a,b,c,d,e) (p)->lpVtbl->SetZoneCustomPolicy(p,a,b,c,d,e) -#define IInternetZoneManager_GetZoneActionPolicy(p,a,b,c,d,e) (p)->lpVtbl->GetZoneActionPolicy(p,a,b,c,d,e) -#define IInternetZoneManager_SetZoneActionPolicy(p,a,b,c,d,e) (p)->lpVtbl->SetZoneActionPolicy(p,a,b,c,d,e) -#define IInternetZoneManager_PromptAction(p,a,b,c,d,e) (p)->lpVtbl->PromptAction(p,a,b,c,d,e) -#define IInternetZoneManager_LogAction(p,a,b,c,d) (p)->lpVtbl->LogAction(p,a,b,c,d) -#define IInternetZoneManager_CreateZoneEnumerator(p,a,b,c) (p)->lpVtbl->CreateZoneEnumerator(p,a,b,c) -#define IInternetZoneManager_GetZoneAt(p,a,b,c) (p)->lpVtbl->GetZoneAt(p,a,b,c) -#define IInternetZoneManager_DestroyZoneEnumerator(p,a) (p)->lpVtbl->DestroyZoneEnumerator(p,a) -#define IInternetZoneManager_CopyTemplatePoliciesToZone(p,a,b,c) (p)->lpVtbl->CopyTemplatePoliciesToZone(p,a,b,c) -#endif - -#endif - -HRESULT CALLBACK IInternetZoneManager_GetZoneAttributes_Proxy( - IInternetZoneManager* This, - DWORD dwZone, - ZONEATTRIBUTES* pZoneAttributes); -void __RPC_STUB IInternetZoneManager_GetZoneAttributes_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_SetZoneAttributes_Proxy( - IInternetZoneManager* This, - DWORD dwZone, - ZONEATTRIBUTES* pZoneAttributes); -void __RPC_STUB IInternetZoneManager_SetZoneAttributes_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_GetZoneCustomPolicy_Proxy( - IInternetZoneManager* This, - DWORD dwZone, - REFGUID guidKey, - BYTE** ppPolicy, - DWORD* pcbPolicy, - URLZONEREG ulrZoneReg); -void __RPC_STUB IInternetZoneManager_GetZoneCustomPolicy_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_SetZoneCustomPolicy_Proxy( - IInternetZoneManager* This, - DWORD dwZone, - REFGUID guidKey, - BYTE* ppPolicy, - DWORD pcbPolicy, - URLZONEREG ulrZoneReg); -void __RPC_STUB IInternetZoneManager_SetZoneCustomPolicy_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_GetZoneActionPolicy_Proxy( - IInternetZoneManager* This, - DWORD dwZone, - DWORD dwAction, - BYTE* pPolicy, - DWORD cbPolicy, - URLZONEREG urlZoneReg); -void __RPC_STUB IInternetZoneManager_GetZoneActionPolicy_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_SetZoneActionPolicy_Proxy( - IInternetZoneManager* This, - DWORD dwZone, - DWORD dwAction, - BYTE* pPolicy, - DWORD cbPolicy, - URLZONEREG urlZoneReg); -void __RPC_STUB IInternetZoneManager_SetZoneActionPolicy_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_PromptAction_Proxy( - IInternetZoneManager* This, - DWORD dwAction, - HWND hwndParent, - LPCWSTR pwszUrl, - LPCWSTR pwszText, - DWORD dwPromptFlags); -void __RPC_STUB IInternetZoneManager_PromptAction_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_LogAction_Proxy( - IInternetZoneManager* This, - DWORD dwAction, - LPCWSTR pwszUrl, - LPCWSTR pwszText, - DWORD dwLogFlags); -void __RPC_STUB IInternetZoneManager_LogAction_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_CreateZoneEnumerator_Proxy( - IInternetZoneManager* This, - DWORD* pdwEnum, - DWORD* pdwCount, - DWORD dwFlags); -void __RPC_STUB IInternetZoneManager_CreateZoneEnumerator_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_GetZoneAt_Proxy( - IInternetZoneManager* This, - DWORD dwEnum, - DWORD dwIndex, - DWORD* pdwZone); -void __RPC_STUB IInternetZoneManager_GetZoneAt_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_DestroyZoneEnumerator_Proxy( - IInternetZoneManager* This, - DWORD dwEnum); -void __RPC_STUB IInternetZoneManager_DestroyZoneEnumerator_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IInternetZoneManager_CopyTemplatePoliciesToZone_Proxy( - IInternetZoneManager* This, - DWORD dwTemplate, - DWORD dwZone, - DWORD dwReserved); -void __RPC_STUB IInternetZoneManager_CopyTemplatePoliciesToZone_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IInternetZoneManager_INTERFACE_DEFINED__ */ - -typedef struct _tagSOFTDISTINFO { - ULONG cbSize; - DWORD dwFlags; - DWORD dwAdState; - LPWSTR szTitle; - LPWSTR szAbstract; - LPWSTR szHREF; - DWORD dwInstalledVersionMS; - DWORD dwInstalledVersionLS; - DWORD dwUpdateVersionMS; - DWORD dwUpdateVersionLS; - DWORD dwAdvertisedVersionMS; - DWORD dwAdvertisedVersionLS; - DWORD dwReserved; -} SOFTDISTINFO, *LPSOFTDISTINFO; -typedef struct _tagCODEBASEHOLD { - DWORD cbSize; - LPWSTR szDistUnit; - LPWSTR szCodeBase; - DWORD dwVersionMS; - DWORD dwVersionLS; - DWORD dwStyle; -} CODEBASEHOLD, *LPCODEBASEHOLD; -#ifndef __ISoftDistExt_FWD_DEFINED__ -#define __ISoftDistExt_FWD_DEFINED__ -typedef interface ISoftDistExt ISoftDistExt; -#endif - -/***************************************************************************** - * ISoftDistExt interface - */ -#ifndef __ISoftDistExt_INTERFACE_DEFINED__ -#define __ISoftDistExt_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ISoftDistExt, 0xb15b8dc1, 0xc7e1, 0x11d0, 0x86,0x80, 0x00,0xaa,0x00,0xbd,0xcb,0x71); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface ISoftDistExt : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE ProcessSoftDist( - LPCWSTR szCDFURL, - IXMLElement* pSoftDistElement, - LPSOFTDISTINFO lpsdi) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFirstCodeBase( - LPWSTR* szCodeBase, - LPDWORD dwMaxSize) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNextCodeBase( - LPWSTR* szCodeBase, - LPDWORD dwMaxSize) = 0; - - virtual HRESULT STDMETHODCALLTYPE AsyncInstallDistributionUnit( - IBindCtx* pbc, - LPVOID lpReserved, - DWORD flags, - LPCODEBASEHOLD lpcbh) = 0; - -}; -#else -typedef struct ISoftDistExtVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ISoftDistExt* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ISoftDistExt* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ISoftDistExt* This); - - /*** ISoftDistExt methods ***/ - HRESULT (STDMETHODCALLTYPE *ProcessSoftDist)( - ISoftDistExt* This, - LPCWSTR szCDFURL, - IXMLElement* pSoftDistElement, - LPSOFTDISTINFO lpsdi); - - HRESULT (STDMETHODCALLTYPE *GetFirstCodeBase)( - ISoftDistExt* This, - LPWSTR* szCodeBase, - LPDWORD dwMaxSize); - - HRESULT (STDMETHODCALLTYPE *GetNextCodeBase)( - ISoftDistExt* This, - LPWSTR* szCodeBase, - LPDWORD dwMaxSize); - - HRESULT (STDMETHODCALLTYPE *AsyncInstallDistributionUnit)( - ISoftDistExt* This, - IBindCtx* pbc, - LPVOID lpReserved, - DWORD flags, - LPCODEBASEHOLD lpcbh); - - END_INTERFACE -} ISoftDistExtVtbl; -interface ISoftDistExt { - const ISoftDistExtVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ISoftDistExt_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ISoftDistExt_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ISoftDistExt_Release(p) (p)->lpVtbl->Release(p) -/*** ISoftDistExt methods ***/ -#define ISoftDistExt_ProcessSoftDist(p,a,b,c) (p)->lpVtbl->ProcessSoftDist(p,a,b,c) -#define ISoftDistExt_GetFirstCodeBase(p,a,b) (p)->lpVtbl->GetFirstCodeBase(p,a,b) -#define ISoftDistExt_GetNextCodeBase(p,a,b) (p)->lpVtbl->GetNextCodeBase(p,a,b) -#define ISoftDistExt_AsyncInstallDistributionUnit(p,a,b,c,d) (p)->lpVtbl->AsyncInstallDistributionUnit(p,a,b,c,d) -#endif - -#endif - -HRESULT CALLBACK ISoftDistExt_ProcessSoftDist_Proxy( - ISoftDistExt* This, - LPCWSTR szCDFURL, - IXMLElement* pSoftDistElement, - LPSOFTDISTINFO lpsdi); -void __RPC_STUB ISoftDistExt_ProcessSoftDist_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ISoftDistExt_GetFirstCodeBase_Proxy( - ISoftDistExt* This, - LPWSTR* szCodeBase, - LPDWORD dwMaxSize); -void __RPC_STUB ISoftDistExt_GetFirstCodeBase_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ISoftDistExt_GetNextCodeBase_Proxy( - ISoftDistExt* This, - LPWSTR* szCodeBase, - LPDWORD dwMaxSize); -void __RPC_STUB ISoftDistExt_GetNextCodeBase_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ISoftDistExt_AsyncInstallDistributionUnit_Proxy( - ISoftDistExt* This, - IBindCtx* pbc, - LPVOID lpReserved, - DWORD flags, - LPCODEBASEHOLD lpcbh); -void __RPC_STUB ISoftDistExt_AsyncInstallDistributionUnit_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ISoftDistExt_INTERFACE_DEFINED__ */ - -DEFINE_GUID(CLSID_InternetSecurityManager, 0x7b8a2d94, 0x0ac9, 0x11d1, 0x89, 0x6c, 0x00, 0xc0, 0x4f, 0xB6, 0xbf, 0xc4); -DEFINE_GUID(CLSID_InternetZoneManager, 0x7B8A2D95, 0x0AC9, 0x11D1, 0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4); -DEFINE_GUID(IID_IAsyncMoniker, 0x79EAC9D3, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B); -DEFINE_GUID(IID_IAsyncBindCtx, 0x79EAC9D4, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B); -DEFINE_GUID(CLSID_StdURLMoniker, 0x79EAC9E0, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B); -DEFINE_GUID(CLSID_CdlProtocol, 0x3dd53d40, 0x7b8b, 0x11D0, 0xb0,0x13, 0x00,0xaa,0x00,0x59,0xce,0x02); -DEFINE_GUID(CLSID_FileProtocol, 0x79EAC9E7, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B); -DEFINE_GUID(CLSID_FtpProtocol, 0x79EAC9E3, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B); -DEFINE_GUID(CLSID_GopherProtocol, 0x79EAC9E4, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B); -DEFINE_GUID(CLSID_HttpProtocol, 0x79EAC9E2, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B); -DEFINE_GUID(CLSID_HttpSProtocol, 0x79EAC9E5, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B); -DEFINE_GUID(CLSID_MkProtocol, 0x79EAC9E6, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B); -#define MK_S_ASYNCHRONOUS 0x000401E8 -#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS -#define INET_E_ERROR_FIRST 0x800C0002 -#define INET_E_INVALID_URL 0x800C0002 -#define INET_E_NO_SESSION 0x800C0003 -#define INET_E_CANNOT_CONNECT 0x800C0004 -#define INET_E_RESOURCE_NOT_FOUND 0x800C0005 -#define INET_E_OBJECT_NOT_FOUND 0x800C0006 -#define INET_E_DATA_NOT_AVAILABLE 0x800C0007 -#define INET_E_DOWNLOAD_FAILURE 0x800C0008 -#define INET_E_AUTHENTICATION_REQUIRED 0x800C0009 -#define INET_E_NO_VALID_MEDIA 0x800C000A -#define INET_E_CONNECTION_TIMEOUT 0x800C000B -#define INET_E_INVALID_REQUEST 0x800C000C -#define INET_E_UNKNOWN_PROTOCOL 0x800C000D -#define INET_E_SECURITY_PROBLEM 0x800C000E -#define INET_E_CANNOT_LOAD_DATA 0x800C000F -#define INET_E_CANNOT_INSTANTIATE_OBJECT 0x800C0010 -#define INET_E_USE_DEFAULT_PROTOCOLHANDLER 0x800C0011 -#define INET_E_QUERYOPTION_UNKNOWN 0x800C0013 -#define INET_E_REDIRECT_FAILED 0x800C0014 -#define INET_E_REDIRECT_TO_DIR 0x800C0015 -#define INET_E_CANNOT_LOCK_REQUEST 0x800C0016 -#define INET_E_ERROR_LAST INET_E_REDIRECT_TO_DIR -#define INET_E_DEFAULT_ACTION INET_E_USE_DEFAULT_PROTOCOLHANDLER -HRESULT WINAPI CoGetClassObjectFromURL(REFCLSID, LPCWSTR, DWORD, DWORD, LPCWSTR, LPBINDCTX, DWORD, LPVOID, REFIID, LPVOID*); -HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk); -HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved); -HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD); -HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK); -HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); -HRESULT WINAPI URLDownloadToCacheFileA(LPUNKNOWN,LPCSTR,LPSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK); -HRESULT WINAPI URLDownloadToCacheFileW(LPUNKNOWN,LPCWSTR,LPWSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK); -HRESULT WINAPI CoInternetGetSession(DWORD,IInternetSession**,DWORD); -HRESULT WINAPI MkParseDisplayNameEx(IBindCtx*,LPCWSTR,ULONG*,IMoniker**); -HRESULT WINAPI IsAsyncMoniker(IMoniker* pmk); -HRESULT WINAPI CreateAsyncBindCtx(DWORD, IBindStatusCallback*, IEnumFORMATETC*, IBindCtx**); -HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx*,DWORD,IBindStatusCallback*,IEnumFORMATETC*,IBindCtx**,DWORD); -HRESULT WINAPI CoInternetCreateSecurityManager(IServiceProvider*,IInternetSecurityManager**,DWORD); -HRESULT WINAPI CoInternetCombineUrl(LPCWSTR,LPCWSTR,DWORD,LPWSTR,DWORD,DWORD*,DWORD); -HRESULT WINAPI CoInternetCompareUrl(LPCWSTR,LPCWSTR,DWORD); -HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider*, IInternetZoneManager**, DWORD); -HRESULT WINAPI CoInternetParseUrl(LPCWSTR,PARSEACTION,DWORD,LPWSTR,DWORD,DWORD*,DWORD); -HRESULT WINAPI CoInternetQueryInfo(LPCWSTR,QUERYOPTION,DWORD,LPVOID,DWORD,DWORD*,DWORD); -HRESULT WINAPI CreateFormatEnumerator(UINT,FORMATETC*,IEnumFORMATETC**); -HRESULT WINAPI GetSoftwareUpdateInfo( LPCWSTR szDistUnit, LPSOFTDISTINFO psdi); -HRESULT WINAPI FaultInIEFeature(HWND,uCLSSPEC*,QUERYCONTEXT*,DWORD); -HRESULT WINAPI FindMimeFromData(LPBC,LPCWSTR,LPVOID,DWORD,LPCWSTR,DWORD,LPWSTR*,DWORD); -HRESULT WINAPI HlinkGoBack(IUnknown*); -HRESULT WINAPI HlinkGoForward(IUnknown*); -HRESULT WINAPI HlinkNavigateMoniker(IUnknown*,IMoniker*); -HRESULT WINAPI HlinkNavigateString(IUnknown*,LPCWSTR); -HRESULT WINAPI HlinkSimpleNavigateToMoniker(IMoniker*,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD); -HRESULT WINAPI HlinkSimpleNavigateToString(LPCWSTR,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD); -HRESULT WINAPI IsValidURL(LPBC,LPCWSTR,DWORD); -HRESULT WINAPI ObtainUserAgentString(DWORD,LPSTR,DWORD*); -HRESULT WINAPI RegisterFormatEnumerator(LPBC,IEnumFORMATETC*,DWORD); -HRESULT WINAPI RevokeFormatEnumerator(LPBC,IEnumFORMATETC*); -HRESULT WINAPI RevokeBindStatusCallback(LPBC,IBindStatusCallback*); -void WINAPI ReleaseBindInfo(BINDINFO*); -HRESULT WINAPI UrlMkGetSessionOption(DWORD,LPVOID,DWORD,DWORD*,DWORD); -HRESULT WINAPI UrlMkSetSessionOption(DWORD,LPVOID,DWORD,DWORD); -#define OInetCombineUrl CoInternetCombineUrl -#define OInetCompareUrl CoInternetCompareUrl -#define OInetGetSession CoInternetGetSession -#define MKSYS_URLMONIKER 6 -/* Begin additional prototypes for all interfaces */ - -unsigned long __RPC_USER STGMEDIUM_UserSize (unsigned long *, unsigned long, STGMEDIUM *); -unsigned char * __RPC_USER STGMEDIUM_UserMarshal (unsigned long *, unsigned char *, STGMEDIUM *); -unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long *, unsigned char *, STGMEDIUM *); -void __RPC_USER STGMEDIUM_UserFree (unsigned long *, STGMEDIUM *); -unsigned long __RPC_USER HWND_UserSize (unsigned long *, unsigned long, HWND *); -unsigned char * __RPC_USER HWND_UserMarshal (unsigned long *, unsigned char *, HWND *); -unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND *); -void __RPC_USER HWND_UserFree (unsigned long *, HWND *); - -/* End additional prototypes */ - -#ifdef __cplusplus -} -#endif -#endif /* __WIDL_URLMON_H */ diff --git a/reactos/include/psdk/urlmon.idl b/reactos/include/psdk/urlmon.idl new file mode 100644 index 00000000000..da068684cb8 --- /dev/null +++ b/reactos/include/psdk/urlmon.idl @@ -0,0 +1,1286 @@ +/* + * Copyright (C) 2000 Ulrich Czekalla + * Copyright (C) 2003 Alexandre Julliard + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; +import "oleidl.idl"; +import "servprov.idl"; +import "msxml.idl"; + +interface IInternetProtocolSink; + +/***************************************************************************** + * IBinding interface + */ +[ + object, + uuid(79eac9c0-baf9-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IBinding : IUnknown +{ + typedef [unique] IBinding *LPBINDING; + + HRESULT Abort(); + HRESULT Suspend(); + HRESULT Resume(); + + HRESULT SetPriority( + [in] LONG nPriority); + + HRESULT GetPriority( + [out] LONG * pnPriority); + + [local] + HRESULT GetBindResult( + [out] CLSID *pclsidProtocol, + [out] DWORD *pdwResult, + [out] LPOLESTR *pszResult, + [in, out] DWORD *pdwReserved); + + [call_as(GetBindResult)] + HRESULT RemoteGetBindResult( + [out] CLSID *pclsidProtocol, + [out] DWORD *pdwResult, + [out] LPOLESTR *pszResult, + [in] DWORD dwReserved); +} + + +/***************************************************************************** + * IBindStatusCallback interface + */ +[ + object, + uuid(79eac9c1-baf9-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IBindStatusCallback : IUnknown +{ + typedef [unique] IBindStatusCallback *LPBINDSTATUSCALLBACK; + + typedef enum + { + BINDVERB_GET = 0x00000000, + BINDVERB_POST = 0x00000001, + BINDVERB_PUT = 0x00000002, + BINDVERB_CUSTOM = 0x00000003 + } BINDVERB; + + typedef enum + { + BINDINFOF_URLENCODESTGMEDDATA = 0x00000001, + BINDINFOF_URLENCODEDEXTRAINFO = 0x00000002 + } BINDINFOF; + + typedef enum + { + BINDF_ASYNCHRONOUS = 0x00000001, + BINDF_ASYNCSTORAGE = 0x00000002, + BINDF_NOPROGRESSIVERENDERING = 0x00000004, + BINDF_OFFLINEOPERATION = 0x00000008, + BINDF_GETNEWESTVERSION = 0x00000010, + BINDF_NOWRITECACHE = 0x00000020, + BINDF_NEEDFILE = 0x00000040, + BINDF_PULLDATA = 0x00000080, + BINDF_IGNORESECURITYPROBLEM = 0x00000100, + BINDF_RESYNCHRONIZE = 0x00000200, + BINDF_HYPERLINK = 0x00000400, + BINDF_NO_UI = 0x00000800, + BINDF_SILENTOPERATION = 0x00001000, + BINDF_PRAGMA_NO_CACHE = 0x00002000, + BINDF_GETCLASSOBJECT = 0x00004000, + BINDF_RESERVED_1 = 0x00008000, + BINDF_FREE_THREADED = 0x00010000, + BINDF_DIRECT_READ = 0x00020000, + BINDF_FORMS_SUBMIT = 0x00040000, + BINDF_GETFROMCACHE_IF_NET_FAIL = 0x00080000, + BINDF_FROMURLMON = 0x00100000, + BINDF_FWD_BACK = 0x00200000, + BINDF_PREFERDEFAULTHANDLER = 0x00400000, + BINDF_ENFORCERESTRICTED = 0x00800000 + } BINDF; + + typedef enum + { + URL_ENCODING_NONE = 0x00000000, + URL_ENCODING_ENABLE_UTF8 = 0x10000000, + URL_ENCODING_DISABLE_UTF8 = 0x20000000 + } URL_ENCODING; + + typedef struct _tagBINDINFO + { + ULONG cbSize; + LPWSTR szExtraInfo; + STGMEDIUM stgmedData; + DWORD grfBindInfoF; + DWORD dwBindVerb; + LPWSTR szCustomVerb; + DWORD cbstgmedData; + DWORD dwOptions; + DWORD dwOptionsFlags; + DWORD dwCodePage; + SECURITY_ATTRIBUTES securityAttributes; + IID iid; + IUnknown *pUnk; + DWORD dwReserved; + } BINDINFO; + + typedef struct _REMSECURITY_ATTRIBUTES + { + DWORD nLength; + DWORD lpSecurityDescriptor; + BOOL bInheritHandle; + } REMSECURITY_ATTRIBUTES, *PREMSECURITY_ATTRIBUTES, *LPREMSECURITY_ATTRIBUTES; + + typedef struct _tagRemBINDINFO + { + ULONG cbSize; + LPWSTR szExtraInfo; + DWORD grfBindInfoF; + DWORD dwBindVerb; + LPWSTR szCustomVerb; + DWORD cbstgmedData; + DWORD dwOptions; + DWORD dwOptionsFlags; + DWORD dwCodePage; + REMSECURITY_ATTRIBUTES securityAttributes; + IID iid; + IUnknown *pUnk; + DWORD dwReserved; + } RemBINDINFO; + + typedef struct tagRemFORMATETC + { + DWORD cfFormat; + DWORD ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; + } RemFORMATETC, *LPREMFORMATETC; + + typedef enum + { + BSCF_FIRSTDATANOTIFICATION = 0x01, + BSCF_INTERMEDIATEDATANOTIFICATION = 0x02, + BSCF_LASTDATANOTIFICATION = 0x04, + BSCF_DATAFULLYAVAILABLE = 0x08, + BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10 + } BSCF; + + typedef enum BINDSTATUS + { + BINDSTATUS_FINDINGRESOURCE = 1, + BINDSTATUS_CONNECTING, + BINDSTATUS_REDIRECTING, + BINDSTATUS_BEGINDOWNLOADDATA, + BINDSTATUS_DOWNLOADINGDATA, + BINDSTATUS_ENDDOWNLOADDATA, + BINDSTATUS_BEGINDOWNLOADCOMPONENTS, + BINDSTATUS_INSTALLINGCOMPONENTS, + BINDSTATUS_ENDDOWNLOADCOMPONENTS, + BINDSTATUS_USINGCACHEDCOPY, + BINDSTATUS_SENDINGREQUEST, + BINDSTATUS_CLASSIDAVAILABLE, + BINDSTATUS_MIMETYPEAVAILABLE, + BINDSTATUS_CACHEFILENAMEAVAILABLE, + BINDSTATUS_BEGINSYNCOPERATION, + BINDSTATUS_ENDSYNCOPERATION, + BINDSTATUS_BEGINUPLOADDATA, + BINDSTATUS_UPLOADINGDATA, + BINDSTATUS_ENDUPLOADINGDATA, + BINDSTATUS_PROTOCOLCLASSID, + BINDSTATUS_ENCODING, + BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE, + BINDSTATUS_CLASSINSTALLLOCATION, + BINDSTATUS_DECODING, + BINDSTATUS_LOADINGMIMEHANDLER, + BINDSTATUS_CONTENTDISPOSITIONATTACH, + BINDSTATUS_FILTERREPORTMIMETYPE, + BINDSTATUS_CLSIDCANINSTANTIATE, + BINDSTATUS_IUNKNOWNAVAILABLE, + BINDSTATUS_DIRECTBIND, + BINDSTATUS_RAWMIMETYPE, + BINDSTATUS_PROXYDETECTING, + BINDSTATUS_ACCEPTRANGES, + BINDSTATUS_COOKIE_SENT, + BINDSTATUS_COMPACT_POLICY_RECEIVED, + BINDSTATUS_COOKIE_SUPPRESSED, + BINDSTATUS_COOKIE_STATE_UNKNOWN, + BINDSTATUS_COOKIE_STATE_ACCEPT, + BINDSTATUS_COOKIE_STATE_REJECT, + BINDSTATUS_COOKIE_STATE_PROMPT, + BINDSTATUS_COOKIE_STATE_LEASH, + BINDSTATUS_COOKIE_STATE_DOWNGRADE, + BINDSTATUS_POLICY_HREF, + BINDSTATUS_P3P_HEADER, + BINDSTATUS_SESSION_COOKIE_RECEIVED, + BINDSTATUS_PERSISTENT_COOKIE_RECEIVED, + BINDSTATUS_SESSION_COOKIES_ALLOWED, + BINDSTATUS_CACHECONTROL, + BINDSTATUS_CONTENTDISPOSITIONFILENAME, + BINDSTATUS_MIMETEXTPLAINMISMATCH, + BINDSTATUS_PUBLISHERAVAILABLE, + BINDSTATUS_DISPLAYNAMEAVAILABLE + } BINDSTATUS; + + + HRESULT OnStartBinding( + [in] DWORD dwReserved, + [in] IBinding * pib); + + HRESULT GetPriority( + [out] LONG * pnPriority); + + HRESULT OnLowResource( + [in] DWORD reserved); + + HRESULT OnProgress( + [in] ULONG ulProgress, + [in] ULONG ulProgressMax, + [in] ULONG ulStatusCode, + [in] LPCWSTR szStatusText); + + HRESULT OnStopBinding( + [in] HRESULT hresult, + [in, unique] LPCWSTR szError); + + [local] + HRESULT GetBindInfo( + [out] DWORD *grfBINDF, + [in, out, unique] BINDINFO * pbindinfo); + + [call_as(GetBindInfo)] + HRESULT RemoteGetBindInfo( + [out] DWORD *grfBINDF, + [in, out, unique] RemBINDINFO * pbindinfo, + [in, out, unique] RemSTGMEDIUM* pstgmed); + + [local] + HRESULT OnDataAvailable( + [in] DWORD grfBSCF, + [in] DWORD dwSize, + [in] FORMATETC* pformatetc, + [in] STGMEDIUM* pstgmed); + + [call_as(OnDataAvailable)] + HRESULT RemoteOnDataAvailable( + [in] DWORD grfBSCF, + [in] DWORD dwSize, + [in] RemFORMATETC *pformatetc, + [in] RemSTGMEDIUM* pstgmed); + + HRESULT OnObjectAvailable( + [in] REFIID riid, + [in, iid_is(riid)] IUnknown* punk); +} + +/***************************************************************************** + * IAuthenticate interface + */ +[ + local, + object, + uuid(79EAC9D0-BAf9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IAuthenticate : IUnknown +{ + typedef [unique] IAuthenticate *LPAUTHENTICATION; + + HRESULT Authenticate( + [out] HWND* phwnd, + [out] LPWSTR *pszUsername, + [out] LPWSTR *pszPassword); +} + +/***************************************************************************** + * IHttpNegotiate interface + */ +[ + object, + uuid(79EAC9D2-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IHttpNegotiate : IUnknown +{ + typedef [unique] IHttpNegotiate *LPHTTPNEGOTIATE; + + HRESULT BeginningTransaction( + [in] LPCWSTR szURL, + [in, unique] LPCWSTR szHeaders, + [in] DWORD dwReserved, + [out] LPWSTR *pszAdditionalHeaders); + + HRESULT OnResponse( + [in] DWORD dwResponseCode, + [in, unique] LPCWSTR szResponseHeaders, + [in, unique] LPCWSTR szRequestHeaders, + [out] LPWSTR *pszAdditionalRequestHeaders); +} + +/***************************************************************************** + * IHttpNegotiate2 interface + */ +[ + object, + uuid(4F9F9FCB-E0F4-48eb-B7AB-FA2EA9365CB4), + pointer_default(unique) +] +interface IHttpNegotiate2 : IHttpNegotiate +{ + typedef [unique] IHttpNegotiate2 *LPHTTPNEGOTIATE2; + + HRESULT GetRootSecurityId( + [out, size_is(*pcbSecurityId)] BYTE *pbSecurityId, + [in, out] DWORD *pcbSecurityId, + [in] DWORD_PTR dwReserved); +} + +/***************************************************************************** + * IBindHost interface + */ +cpp_quote("#define SID_IBindHost IID_IBindHost") +cpp_quote("#define SID_SBindHost IID_IBindHost") +[ + object, + uuid(fc4801a1-2ba9-11cf-a229-00aa003d7352), + pointer_default(unique) +] +interface IBindHost : IUnknown +{ + typedef [unique] IBindHost *LPBINDHOST; + + HRESULT CreateMoniker( + [in] LPOLESTR szName, + [in] IBindCtx *pBC, + [out] IMoniker** ppmk, + [in] DWORD dwReserved); + + [local] + HRESULT MonikerBindToStorage( + [in] IMoniker *pMk, + [in] IBindCtx *pBC, + [in] IBindStatusCallback *pBSC, + [in] REFIID riid, + [out] void **ppvObj); + + [call_as(MonikerBindToStorage)] + HRESULT RemoteMonikerBindToStorage( + [in, unique] IMoniker *pMk, + [in, unique] IBindCtx *pBC, + [in, unique] IBindStatusCallback *pBSC, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppvObj); + + [local] + HRESULT MonikerBindToObject( + [in] IMoniker *pMk, + [in] IBindCtx *pBC, + [in] IBindStatusCallback *pBSC, + [in] REFIID riid, + [out] void **ppvObj); + + [call_as(MonikerBindToObject)] + HRESULT RemoteMonikerBindToObject( + [in, unique] IMoniker *pMk, + [in, unique] IBindCtx *pBC, + [in, unique] IBindStatusCallback *pBSC, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppvObj); +} + + +/***************************************************************************** + * IWinInetInfo interface + */ +[ + object, + uuid(79eac9d6-bafa-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IWinInetInfo : IUnknown +{ + typedef [unique] IWinInetInfo *LPWININETINFO; + + [local] + HRESULT QueryOption( + [in] DWORD dwOption, + [in, out, size_is(*pcbBuf)] LPVOID pBuffer, + [in, out] DWORD *pcbBuf); + + [call_as(QueryOption)] + HRESULT RemoteQueryOption( + [in] DWORD dwOption, + [in, out, size_is(*pcbBuf)] BYTE *pBuffer, + [in, out] DWORD *pcbBuf); +} + + + +/***************************************************************************** + * IWinInetHttpInfo interface + */ +[ + object, + uuid(79eac9d8-bafa-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IWinInetHttpInfo : IWinInetInfo +{ + typedef [unique] IWinInetHttpInfo *LPWININETHTTPINFO; + + [local] + HRESULT QueryInfo( + [in] DWORD dwOption, + [in, out,size_is(*pcbBuf)] LPVOID pBuffer, + [in, out] DWORD *pcbBuf, + [in, out] DWORD *pdwFlags, + [in, out] DWORD *pdwReserved); + + [call_as(QueryInfo)] + HRESULT RemoteQueryInfo( + [in] DWORD dwOption, + [in,out,size_is(*pcbBuf)] BYTE *pBuffer, + [in, out] DWORD *pcbBuf, + [in, out] DWORD *pdwFlags, + [in, out] DWORD *pdwReserved); +} + +/***************************************************************************** + * IWindowForBindingUI interface + */ +[ + local, + object, + uuid(79eac9d5-bafa-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IWindowForBindingUI : IUnknown +{ + typedef [unique] IWindowForBindingUI *LPWINDOWFORBINDINGUI; + + HRESULT GetWindow( + [in] REFGUID rguidReason, + [out] HWND *phwnd); +} + +/***************************************************************************** + * IHttpSecurity interface + */ +[ + object, + uuid(79eac9d7-bafa-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IHttpSecurity : IWindowForBindingUI +{ + typedef [unique] IHttpSecurity *LPHTTPSECURITY; + + HRESULT OnSecurityProblem( + [in] DWORD dwProblem); +} + + +/***************************************************************************** + * IPersistMoniker interface + */ +[ + object, + uuid(79eac9c9-baf9-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IPersistMoniker : IUnknown +{ + typedef [unique] IPersistMoniker *LPPERSISTMONIKER; + + HRESULT GetClassID( + [out] CLSID *pClassID); + + HRESULT IsDirty(); + + HRESULT Load( + [in] BOOL fFullyAvailable, + [in] IMoniker *pimkName, + [in] LPBC pibc, + [in] DWORD grfMode); + + HRESULT Save( + [in] IMoniker *pimkName, + [in] LPBC pbc, + [in] BOOL fRemember); + + HRESULT SaveCompleted( + [in] IMoniker *pimkName, + [in] LPBC pibc); + + HRESULT GetCurMoniker( + [out] IMoniker **ppimkName); +} + +/***************************************************************************** + * IMonikerProp interface + */ +[ + object, + uuid(A5CA5F7F-1847-4D87-9C5B-918509F7511D), + pointer_default(unique) +] +interface IMonikerProp : IUnknown +{ + typedef [unique] IMonikerProp *LPMONIKERPROP; + + typedef enum { + MIMETYPEPROP = 0x00000000, + USE_SRC_URL = 0x00000001 + } MONIKERPROPERTY; + + HRESULT PutProperty( + [in] MONIKERPROPERTY mkp, + [in] LPCWSTR val); +} + +cpp_quote("#ifndef _LPBINDPROTOCOL_DEFINED") +cpp_quote("#define _LPBINDPROTOCOL_DEFINED") + +/***************************************************************************** + * IBindProtocol interface + */ +[ + local, + object, + uuid(79EAC9CD-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IBindProtocol : IUnknown +{ + typedef [unique] IBindProtocol *LPBINDPROTOCOL; + + HRESULT CreateBinding( + [in] LPCWSTR szUrl, + [in] IBindCtx *pbc, + [out] IBinding **ppb); +} + +cpp_quote("#endif /* !defined _LPBINDPROTOCOL_DEFINED */") + +/***************************************************************************** + * IInternetBindInfo interface + */ +[ + local, + object, + uuid(79EAC9E1-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IInternetBindInfo : IUnknown +{ + typedef [unique] IInternetBindInfo *LPIINTERNETBINDINFO; + + typedef enum tagBINDSTRING + { + BINDSTRING_HEADERS = 1, + BINDSTRING_ACCEPT_MIMES, + BINDSTRING_EXTRA_URL, + BINDSTRING_LANGUAGE, + BINDSTRING_USERNAME, + BINDSTRING_PASSWORD, + BINDSTRING_UA_PIXELS, + BINDSTRING_UA_COLOR, + BINDSTRING_OS, + BINDSTRING_USER_AGENT, + BINDSTRING_ACCEPT_ENCODINGS, + BINDSTRING_POST_COOKIE, + BINDSTRING_POST_DATA_MIME, + BINDSTRING_URL, + BINDSTRING_IID, + BINDSTRING_FLAG_BIND_TO_OBJECT, + BINDSTRING_PTR_BIND_CONTEXT + } BINDSTRING; + + HRESULT GetBindInfo( + [out] DWORD *grfBINDF, + [in, out, unique] BINDINFO *pbindinfo); + + HRESULT GetBindString( + [in] ULONG ulStringType, + [in, out] LPOLESTR *ppwzStr, + [in] ULONG cEl, + [in, out] ULONG *pcElFetched); +} + +/***************************************************************************** + * IInternetPriority interface + */ +[ + local, + object, + uuid(79EAC9EB-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IInternetPriority : IUnknown +{ + typedef [unique] IInternetPriority *LPIINTERNETPRIORITY; + + HRESULT SetPriority([in] LONG nPriority); + HRESULT GetPriority([out] LONG *pnPriority); +} + +/***************************************************************************** + * IInternetProtocolRoot interface + */ +[ + local, + object, + uuid(79EAC9E3-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IInternetProtocolRoot : IUnknown +{ + typedef [unique] IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT; + + typedef enum _tagPI_FLAGS + { + PI_PARSE_URL = 0x00000001, + PI_FILTER_MODE = 0x00000002, + PI_FORCE_ASYNC = 0x00000004, + PI_USE_WORKERTHREAD = 0x00000008, + PI_MIMEVERIFICATION = 0x00000010, + PI_CLSIDLOOKUP = 0x00000020, + PI_DATAPROGRESS = 0x00000040, + PI_SYNCHRONOUS = 0x00000080, + PI_APARTMENTTHREADED = 0x00000100, + PI_CLASSINSTALL = 0x00000200, + PD_FORCE_SWITCH = 0x00010000 + } PI_FLAGS; + + typedef struct _tagPROTOCOLDATA + { + DWORD grfFlags; + DWORD dwState; + LPVOID pData; + ULONG cbData; + } PROTOCOLDATA; + + HRESULT Start( + [in] LPCWSTR szUrl, + [in] IInternetProtocolSink *pOIProtSink, + [in] IInternetBindInfo *pOIBindInfo, + [in] DWORD grfPI, + [in] DWORD dwReserved); + + HRESULT Continue( + [in] PROTOCOLDATA *pProtocolData); + + HRESULT Abort( + [in] HRESULT hrReason, + [in] DWORD dwOptions); + + HRESULT Terminate( + [in] DWORD dwOptions); + + HRESULT Suspend(); + + HRESULT Resume(); +} + +/***************************************************************************** + * IInternetProtocolSink interface + */ +[ + local, + object, + uuid(79EAC9E5-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IInternetProtocolSink : IUnknown +{ + typedef [unique] IInternetProtocolSink *LPIINTERNETPROTOCOLSINK; + + HRESULT Switch( + [in] PROTOCOLDATA *pProtocolData); + + HRESULT ReportProgress( + [in] ULONG ulStatusCode, + [in] LPCWSTR szStatusText); + + HRESULT ReportData( + [in] DWORD grfBSCF, + [in] ULONG ulProgress, + [in] ULONG ulProgressMax); + + HRESULT ReportResult( + [in] HRESULT hrResult, + [in] DWORD dwError, + [in] LPCWSTR szResult); +} + +/***************************************************************************** + * IInternetProtocol interface + */ +[ + local, + object, + uuid(79EAC9E4-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IInternetProtocol : IInternetProtocolRoot +{ + typedef [unique] IInternetProtocol *LPIINTERNETPROTOCOL; + + HRESULT Read( + [in,out, size_is(cb), length_is(*pcbRead)] void *pv, + [in] ULONG cb, + [out] ULONG *pcbRead); + + HRESULT Seek( + [in] LARGE_INTEGER dlibMove, + [in] DWORD dwOrigin, + [out] ULARGE_INTEGER *plibNewPosition); + + HRESULT LockRequest( + [in] DWORD dwOptions); + + HRESULT UnlockRequest(); +} + +/***************************************************************************** + * IInternetProtocolInfo interface + */ +[ + local, + object, + uuid(79eac9ec-baf9-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IInternetProtocolInfo : IUnknown +{ + typedef [unique] IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO; + + typedef enum _tagPARSEACTION + { + PARSE_CANONICALIZE = 1, + PARSE_FRIENDLY, + PARSE_SECURITY_URL, + PARSE_ROOTDOCUMENT, + PARSE_DOCUMENT, + PARSE_ANCHOR, + PARSE_ENCODE, + PARSE_DECODE, + PARSE_PATH_FROM_URL, + PARSE_URL_FROM_PATH, + PARSE_MIME, + PARSE_SERVER, + PARSE_SCHEMA, + PARSE_SITE, + PARSE_DOMAIN, + PARSE_LOCATION, + PARSE_SECURITY_DOMAIN, + PARSE_ESCAPE, + PARSE_UNESCAPE + } PARSEACTION; + + typedef enum _tagPSUACTION + { + PSU_DEFAULT = 1, + PSU_SECURITY_URL_ONLY + } PSUACTION; + + typedef enum _tagQUERYOPTION + { + QUERY_EXPIRATION_DATE = 1, + QUERY_TIME_OF_LAST_CHANGE, + QUERY_CONTENT_ENCODING, + QUERY_CONTENT_TYPE, + QUERY_REFRESH, + QUERY_RECOMBINE, + QUERY_CAN_NAVIGATE, + QUERY_USES_NETWORK, + QUERY_IS_CACHED, + QUERY_IS_INSTALLEDENTRY, + QUERY_IS_CACHED_OR_MAPPED, + QUERY_USES_CACHE, + QUERY_IS_SECURE, + QUERY_IS_SAFE + } QUERYOPTION; + + HRESULT ParseUrl( + [in] LPCWSTR pwzUrl, + [in] PARSEACTION ParseAction, + [in] DWORD dwParseFlags, + [out] LPWSTR pwzResult, + [in] DWORD cchResult, + [out] DWORD *pcchResult, + [in] DWORD dwReserved); + + HRESULT CombineUrl( + [in] LPCWSTR pwzBaseUrl, + [in] LPCWSTR pwzRelativeUrl, + [in] DWORD dwCombineFlags, + [out] LPWSTR pwzResult, + [in] DWORD cchResult, + [out] DWORD *pcchResult, + [in] DWORD dwReserved); + + HRESULT CompareUrl( + [in] LPCWSTR pwzUrl1, + [in] LPCWSTR pwzUrl2, + [in] DWORD dwCompareFlags); + + HRESULT QueryInfo( + [in] LPCWSTR pwzUrl, + [in] QUERYOPTION OueryOption, + [in] DWORD dwQueryFlags, + [in, out,size_is(*pcbBuf)] LPVOID pBuffer, + [in] DWORD cbBuffer, + [in, out] DWORD *pcbBuf, + [in] DWORD dwReserved); +} + +/***************************************************************************** + * IInternetSession interface + */ +[ + local, + object, + uuid(79eac9e7-baf9-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IInternetSession : IUnknown +{ + typedef [unique] IInternetSession *LPIINTERNETSESSION; + + typedef enum _tagOIBDG_FLAGS + { + OIBDG_APARTMENTTHREADED = 0x0100, + OIBDG_DATAONLY = 0x1000 + } OIBDG_FLAGS; + + HRESULT RegisterNameSpace( + [in] IClassFactory *pCF, + [in] REFCLSID rclsid, + [in] LPCWSTR pwzProtocol, + [in] ULONG cPatterns, + [in] const LPCWSTR *ppwzPatterns, + [in] DWORD dwReserved); + + HRESULT UnregisterNameSpace( + [in] IClassFactory *pCF, + [in] LPCWSTR pszProtocol); + + HRESULT RegisterMimeFilter( + [in] IClassFactory *pCF, + [in] REFCLSID rclsid, + [in] LPCWSTR pwzType); + + HRESULT UnregisterMimeFilter( + [in] IClassFactory *pCF, + [in] LPCWSTR pwzType); + + HRESULT CreateBinding( + [in] LPBC pBC, + [in] LPCWSTR szUrl, + [in] IUnknown *pUnkOuter, + [out, unique] IUnknown **ppUnk, + [out, unique] IInternetProtocol **ppOInetProt, + [in] DWORD dwOption); + + HRESULT SetSessionOption( + [in] DWORD dwOption, + [in] LPVOID pBuffer, + [in] DWORD dwBufferLength, + [in] DWORD dwReserved); +} + +/***************************************************************************** + * IInternetSecurityMgrSite interface + */ +[ + local, + object, + uuid(79eac9ed-baf9-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IInternetSecurityMgrSite : IUnknown +{ + HRESULT GetWindow( + [out] HWND *phwnd); + + HRESULT EnableModeless( + [in] BOOL fEnable); +} + + +/***************************************************************************** + * IInternetSecurityManager interface + */ +cpp_quote("#define SID_SInternetSecurityManager IID_IInternetSecurityManager") + +[ + object, + uuid(79eac9ee-baf9-11ce-8c82-00aa004ba90b), + pointer_default(unique) +] +interface IInternetSecurityManager : IUnknown +{ + HRESULT SetSecuritySite( + [in, unique] IInternetSecurityMgrSite *pSite); + + HRESULT GetSecuritySite( + [out] IInternetSecurityMgrSite **ppSite); + + HRESULT MapUrlToZone( + [in] LPCWSTR pwszUrl, + [out] DWORD *pdwZone, + [in] DWORD dwFlags); + +cpp_quote("#define MAX_SIZE_SECURITY_ID 512") + + HRESULT GetSecurityId( + [in] LPCWSTR pwszUrl, + [out, size_is(*pcbSecurityId)] BYTE *pbSecurityId, + [in, out] DWORD *pcbSecurityId, + [in] DWORD_PTR dwReserved); + + + typedef enum { + PUAF_DEFAULT = 0x00, + PUAF_NOUI = 0x01, + PUAF_ISFILE = 0x02, + PUAF_WARN_IF_DENIED = 0x04, + PUAF_FORCEUI_FOREGROUND = 0x08, + PUAF_CHECK_TIPS = 0x10 + } PUAF; + + HRESULT ProcessUrlAction( + [in] LPCWSTR pwszUrl, + [in] DWORD dwAction, + [out, size_is(cbPolicy)] BYTE *pPolicy, + [in] DWORD cbPolicy, + [in] BYTE *pContext, + [in] DWORD cbContext, + [in] DWORD dwFlags, + [in] DWORD dwReserved); + + HRESULT QueryCustomPolicy( + [in] LPCWSTR pwszUrl, + [in] REFGUID guidKey, + [out, size_is(,*pcbPolicy)] BYTE **ppPolicy, + [out] DWORD *pcbPolicy, + [in] BYTE *pContext, + [in] DWORD cbContext, + [in] DWORD dwReserved); + + typedef enum { + SZM_CREATE = 0x0, + SZM_DELETE = 0x1 + } SZM_FLAGS; + + HRESULT SetZoneMapping( + [in] DWORD dwZone, + [in] LPCWSTR lpszPattern, + [in] DWORD dwFlags); + + HRESULT GetZoneMappings( + [in] DWORD dwZone, + [out] IEnumString **ppenumString, + [in] DWORD dwFlags); +} + +/***************************************************************************** + * IInternetZoneManager interface + */ +[ + local, + object, + uuid(79EAC9EF-BAf9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IInternetZoneManager : IUnknown +{ + typedef [unique] IInternetZoneManager* LPURLZONEMANAGER; + + typedef enum tagURLZONE + { + URLZONE_PREDEFINED_MIN = 0, + URLZONE_LOCAL_MACHINE = 0, + URLZONE_INTRANET = 1, + URLZONE_TRUSTED = 2, + URLZONE_INTERNET = 3, + URLZONE_UNTRUSTED = 4, + URLZONE_PREDEFINED_MAX = 999, + URLZONE_USER_MIN = 1000, + URLZONE_USER_MAX = 10000, + } URLZONE; + + typedef enum tagURLTEMPLATE + { + URLTEMPLATE_CUSTOM = 0x00000, + URLTEMPLATE_PREDEFINED_MIN = 0x10000, + URLTEMPLATE_LOW = 0x10000, + URLTEMPLATE_MEDIUM = 0x11000, + URLTEMPLATE_HIGH = 0x12000, + URLTEMPLATE_PREDEFINED_MAX = 0x20000, + } URLTEMPLATE ; + + typedef enum { + ZAFLAGS_CUSTOM_EDIT = 0x00000001, + ZAFLAGS_ADD_SITES = 0x00000002, + ZAFLAGS_REQUIRE_VERIFICATION = 0x00000004, + ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x00000008, + ZAFLAGS_INCLUDE_INTRANET_SITES = 0x00000010, + ZAFLAGS_NO_UI = 0x00000020, + ZAFLAGS_SUPPORTS_VERIFICATION = 0x00000040, + ZAFLAGS_UNC_AS_INTRANET = 0x00000080, + } ZAFLAGS ; + + enum { + MAX_ZONE_PATH = 260, + MAX_ZONE_DESCRIPTION = 200 + }; + + typedef struct _ZONEATTRIBUTES { + ULONG cbSize; + WCHAR szDisplayName[MAX_ZONE_PATH]; + WCHAR szDescription[MAX_ZONE_DESCRIPTION]; + WCHAR szIconPath[MAX_ZONE_PATH]; + DWORD dwTemplateMinLevel; + DWORD dwTemplateRecommended; + DWORD dwTemplateCurrentLevel; + DWORD dwFlags; + } ZONEATTRIBUTES, *LPZONEATTRIBUTES; + + typedef enum _URLZONEREG { + URLZONEREG_DEFAULT, + URLZONEREG_HKLM, + URLZONEREG_HKCU + } URLZONEREG; + + HRESULT GetZoneAttributes( + [in] DWORD dwZone, + [in, out, unique] ZONEATTRIBUTES* pZoneAttributes); + + HRESULT SetZoneAttributes( + [in] DWORD dwZone, + [in] ZONEATTRIBUTES* pZoneAttributes); + + HRESULT GetZoneCustomPolicy( + [in] DWORD dwZone, + [in] REFGUID guidKey, + [out] BYTE **ppPolicy, + [out] DWORD* pcbPolicy, + [in] URLZONEREG ulrZoneReg); + + HRESULT SetZoneCustomPolicy( + [in] DWORD dwZone, + [in] REFGUID guidKey, + [in] BYTE *ppPolicy, + [in] DWORD pcbPolicy, + [in] URLZONEREG ulrZoneReg); + + HRESULT GetZoneActionPolicy( + [in] DWORD dwZone, + [in] DWORD dwAction, + [out] BYTE* pPolicy, + [in] DWORD cbPolicy, + [in] URLZONEREG urlZoneReg); + + HRESULT SetZoneActionPolicy( + [in] DWORD dwZone, + [in] DWORD dwAction, + [in] BYTE* pPolicy, + [in] DWORD cbPolicy, + [in] URLZONEREG urlZoneReg); + + HRESULT PromptAction( + [in] DWORD dwAction, + [in] HWND hwndParent, + [in] LPCWSTR pwszUrl, + [in] LPCWSTR pwszText, + [in] DWORD dwPromptFlags ); + + HRESULT LogAction( + [in] DWORD dwAction, + [in] LPCWSTR pwszUrl, + [in] LPCWSTR pwszText, + [in] DWORD dwLogFlags); + + HRESULT CreateZoneEnumerator( + [out] DWORD* pdwEnum, + [out] DWORD* pdwCount, + [in] DWORD dwFlags); + + HRESULT GetZoneAt( + [in] DWORD dwEnum, + [in] DWORD dwIndex, + [out] DWORD* pdwZone); + + HRESULT DestroyZoneEnumerator( + [in] DWORD dwEnum); + + HRESULT CopyTemplatePoliciesToZone( + [in] DWORD dwTemplate, + [in] DWORD dwZone, + [in] DWORD dwReserved); +} + +typedef struct _tagSOFTDISTINFO +{ + ULONG cbSize; + DWORD dwFlags; + DWORD dwAdState; + LPWSTR szTitle; + LPWSTR szAbstract; + LPWSTR szHREF; + DWORD dwInstalledVersionMS; + DWORD dwInstalledVersionLS; + DWORD dwUpdateVersionMS; + DWORD dwUpdateVersionLS; + DWORD dwAdvertisedVersionMS; + DWORD dwAdvertisedVersionLS; + DWORD dwReserved; +} SOFTDISTINFO, *LPSOFTDISTINFO; + +typedef struct _tagCODEBASEHOLD +{ + DWORD cbSize; + LPWSTR szDistUnit; + LPWSTR szCodeBase; + DWORD dwVersionMS; + DWORD dwVersionLS; + DWORD dwStyle; +} CODEBASEHOLD, *LPCODEBASEHOLD; + +[ + local, + object, + uuid(b15b8dc1-c7e1-11d0-8680-00aa00bdcb71), + pointer_default(unique) +] +interface ISoftDistExt : IUnknown +{ + HRESULT ProcessSoftDist( + [in] LPCWSTR szCDFURL, + [in] IXMLElement *pSoftDistElement, + [in, out] LPSOFTDISTINFO lpsdi ); + + HRESULT GetFirstCodeBase( + [in] LPWSTR *szCodeBase, + [in] LPDWORD dwMaxSize ); + + HRESULT GetNextCodeBase( + [in] LPWSTR *szCodeBase, + [in] LPDWORD dwMaxSize ); + + HRESULT AsyncInstallDistributionUnit( + [in] IBindCtx *pbc, + [in] LPVOID lpReserved, + [in] DWORD flags, + [in] LPCODEBASEHOLD lpcbh); +} + +cpp_quote("DEFINE_GUID(CLSID_InternetSecurityManager, 0x7b8a2d94, 0x0ac9, 0x11d1, 0x89, 0x6c, 0x00, 0xc0, 0x4f, 0xB6, 0xbf, 0xc4);") +cpp_quote("DEFINE_GUID(CLSID_InternetZoneManager, 0x7B8A2D95, 0x0AC9, 0x11D1, 0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4);") +cpp_quote("DEFINE_GUID(IID_IAsyncMoniker, 0x79EAC9D3, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);") +cpp_quote("DEFINE_GUID(IID_IAsyncBindCtx, 0x79EAC9D4, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);") +cpp_quote("DEFINE_GUID(CLSID_StdURLMoniker, 0x79EAC9E0, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);") + +cpp_quote("DEFINE_GUID(CLSID_CdlProtocol, 0x3dd53d40, 0x7b8b, 0x11D0, 0xb0,0x13, 0x00,0xaa,0x00,0x59,0xce,0x02);") +cpp_quote("DEFINE_GUID(CLSID_FileProtocol, 0x79EAC9E7, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);") +cpp_quote("DEFINE_GUID(CLSID_FtpProtocol, 0x79EAC9E3, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);") +cpp_quote("DEFINE_GUID(CLSID_GopherProtocol, 0x79EAC9E4, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);") +cpp_quote("DEFINE_GUID(CLSID_HttpProtocol, 0x79EAC9E2, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);") +cpp_quote("DEFINE_GUID(CLSID_HttpSProtocol, 0x79EAC9E5, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);") +cpp_quote("DEFINE_GUID(CLSID_MkProtocol, 0x79EAC9E6, 0xBAF9, 0x11CE, 0x8C,0x82, 0x00,0xAA,0x00,0x4B,0xA9,0x0B);") + +cpp_quote("#define URLMON_OPTION_USERAGENT 0x10000001") +cpp_quote("#define URLMON_OPTION_USERAGENT_REFRESH 0x10000002") +cpp_quote("#define URLMON_OPTION_URL_ENCODING 0x10000004") + +cpp_quote("#define MK_S_ASYNCHRONOUS 0x000401E8") +cpp_quote("#ifndef S_ASYNCHRONOUS") +cpp_quote("#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS") +cpp_quote("#endif") + +cpp_quote("#define INET_E_ERROR_FIRST 0x800C0002") +cpp_quote("#define INET_E_INVALID_URL 0x800C0002") +cpp_quote("#define INET_E_NO_SESSION 0x800C0003") +cpp_quote("#define INET_E_CANNOT_CONNECT 0x800C0004") +cpp_quote("#define INET_E_RESOURCE_NOT_FOUND 0x800C0005") +cpp_quote("#define INET_E_OBJECT_NOT_FOUND 0x800C0006") +cpp_quote("#define INET_E_DATA_NOT_AVAILABLE 0x800C0007") +cpp_quote("#define INET_E_DOWNLOAD_FAILURE 0x800C0008") +cpp_quote("#define INET_E_AUTHENTICATION_REQUIRED 0x800C0009") +cpp_quote("#define INET_E_NO_VALID_MEDIA 0x800C000A") +cpp_quote("#define INET_E_CONNECTION_TIMEOUT 0x800C000B") +cpp_quote("#define INET_E_INVALID_REQUEST 0x800C000C") +cpp_quote("#define INET_E_UNKNOWN_PROTOCOL 0x800C000D") +cpp_quote("#define INET_E_SECURITY_PROBLEM 0x800C000E") +cpp_quote("#define INET_E_CANNOT_LOAD_DATA 0x800C000F") +cpp_quote("#define INET_E_CANNOT_INSTANTIATE_OBJECT 0x800C0010") +cpp_quote("#define INET_E_USE_DEFAULT_PROTOCOLHANDLER 0x800C0011") +cpp_quote("#define INET_E_QUERYOPTION_UNKNOWN 0x800C0013") +cpp_quote("#define INET_E_REDIRECT_FAILED 0x800C0014") +cpp_quote("#define INET_E_REDIRECT_TO_DIR 0x800C0015") +cpp_quote("#define INET_E_CANNOT_LOCK_REQUEST 0x800C0016") +cpp_quote("#define INET_E_ERROR_LAST INET_E_REDIRECT_TO_DIR") +cpp_quote("#define INET_E_DEFAULT_ACTION INET_E_USE_DEFAULT_PROTOCOLHANDLER") + +cpp_quote("HRESULT WINAPI CoGetClassObjectFromURL(REFCLSID, LPCWSTR, DWORD, DWORD, LPCWSTR, LPBINDCTX, DWORD, LPVOID, REFIID, LPVOID*);") +cpp_quote("HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk);") +cpp_quote("HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbsc, DWORD dwReserved);") +cpp_quote("HRESULT WINAPI CompareSecurityIds(BYTE*,DWORD,BYTE*,DWORD,DWORD);") +cpp_quote("HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);") +cpp_quote("HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);") +cpp_quote("HRESULT WINAPI URLDownloadToCacheFileA(LPUNKNOWN,LPCSTR,LPSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);") +cpp_quote("HRESULT WINAPI URLDownloadToCacheFileW(LPUNKNOWN,LPCWSTR,LPWSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);") +cpp_quote("HRESULT WINAPI CoInternetGetSession(DWORD,IInternetSession**,DWORD);") +cpp_quote("HRESULT WINAPI MkParseDisplayNameEx(IBindCtx*,LPCWSTR,ULONG*,IMoniker**);") +cpp_quote("HRESULT WINAPI IsAsyncMoniker(IMoniker* pmk);") +cpp_quote("HRESULT WINAPI CreateAsyncBindCtx(DWORD, IBindStatusCallback*, IEnumFORMATETC*, IBindCtx**);") +cpp_quote("HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx*,DWORD,IBindStatusCallback*,IEnumFORMATETC*,IBindCtx**,DWORD);") +cpp_quote("HRESULT WINAPI CoInternetCreateSecurityManager(IServiceProvider*,IInternetSecurityManager**,DWORD);") +cpp_quote("HRESULT WINAPI CoInternetCombineUrl(LPCWSTR,LPCWSTR,DWORD,LPWSTR,DWORD,DWORD*,DWORD);") +cpp_quote("HRESULT WINAPI CoInternetCompareUrl(LPCWSTR,LPCWSTR,DWORD);") +cpp_quote("HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider*, IInternetZoneManager**, DWORD);") +cpp_quote("HRESULT WINAPI CoInternetParseUrl(LPCWSTR,PARSEACTION,DWORD,LPWSTR,DWORD,DWORD*,DWORD);") +cpp_quote("HRESULT WINAPI CoInternetQueryInfo(LPCWSTR,QUERYOPTION,DWORD,LPVOID,DWORD,DWORD*,DWORD);") +cpp_quote("HRESULT WINAPI CreateFormatEnumerator(UINT,FORMATETC*,IEnumFORMATETC**);") +cpp_quote("HRESULT WINAPI GetSoftwareUpdateInfo( LPCWSTR szDistUnit, LPSOFTDISTINFO psdi);") +cpp_quote("HRESULT WINAPI FaultInIEFeature(HWND,uCLSSPEC*,QUERYCONTEXT*,DWORD);") +cpp_quote("HRESULT WINAPI FindMimeFromData(LPBC,LPCWSTR,LPVOID,DWORD,LPCWSTR,DWORD,LPWSTR*,DWORD);") +cpp_quote("HRESULT WINAPI HlinkGoBack(IUnknown*);") +cpp_quote("HRESULT WINAPI HlinkGoForward(IUnknown*);") +cpp_quote("HRESULT WINAPI HlinkNavigateMoniker(IUnknown*,IMoniker*);") +cpp_quote("HRESULT WINAPI HlinkNavigateString(IUnknown*,LPCWSTR);") +cpp_quote("HRESULT WINAPI HlinkSimpleNavigateToMoniker(IMoniker*,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD);") +cpp_quote("HRESULT WINAPI HlinkSimpleNavigateToString(LPCWSTR,LPCWSTR,LPCWSTR,IUnknown*,IBindCtx*,IBindStatusCallback*,DWORD,DWORD);") +cpp_quote("HRESULT WINAPI IsValidURL(LPBC,LPCWSTR,DWORD);") +cpp_quote("HRESULT WINAPI ObtainUserAgentString(DWORD,LPSTR,DWORD*);") +cpp_quote("HRESULT WINAPI RegisterFormatEnumerator(LPBC,IEnumFORMATETC*,DWORD);") +cpp_quote("HRESULT WINAPI RevokeFormatEnumerator(LPBC,IEnumFORMATETC*);") +cpp_quote("HRESULT WINAPI RevokeBindStatusCallback(LPBC,IBindStatusCallback*);") +cpp_quote("void WINAPI ReleaseBindInfo(BINDINFO*);") +cpp_quote("HRESULT WINAPI UrlMkGetSessionOption(DWORD,LPVOID,DWORD,DWORD*,DWORD);") +cpp_quote("HRESULT WINAPI UrlMkSetSessionOption(DWORD,LPVOID,DWORD,DWORD);") + +cpp_quote("#define OInetCombineUrl CoInternetCombineUrl") +cpp_quote("#define OInetCompareUrl CoInternetCompareUrl") +cpp_quote("#define OInetGetSession CoInternetGetSession") + +cpp_quote("#define MKSYS_URLMONIKER 6") diff --git a/reactos/include/psdk/uuids.h b/reactos/include/psdk/uuids.h index bcd2a9658f5..e3fb41b6de6 100644 --- a/reactos/include/psdk/uuids.h +++ b/reactos/include/psdk/uuids.h @@ -13,7 +13,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef OUR_GUID_ENTRY @@ -130,6 +130,7 @@ OUR_GUID_ENTRY(CLSID_CaptureProperties, 0x1b544c22, 0xfd0b, 0x11ce, OUR_GUID_ENTRY(CLSID_FGControl, 0xe436ebb4, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) OUR_GUID_ENTRY(CLSID_MOVReader, 0x44584800, 0xf8ee, 0x11ce, 0xb2, 0xd4, 0x00, 0xdd, 0x01, 0x10, 0x1b, 0x85) OUR_GUID_ENTRY(CLSID_QuickTimeParser, 0xd51bd5a0, 0x7548, 0x11cf, 0xa5, 0x20, 0x00, 0x80, 0xc7, 0x7e, 0xf5, 0x8a) +OUR_GUID_ENTRY(CLSID_WAVEParser, 0xd51bd5a1, 0x7548, 0x11cf, 0xa5, 0x20, 0x00, 0x80, 0xc7, 0x7e, 0xf5, 0x8a) OUR_GUID_ENTRY(CLSID_QTDec, 0xfdfe9681, 0x74a3, 0x11d0, 0xaf, 0xa7, 0x00, 0xaa, 0x00, 0xb6, 0x7a, 0x42) OUR_GUID_ENTRY(CLSID_AVIDoc, 0xd3588ab0, 0x0781, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) OUR_GUID_ENTRY(CLSID_AVIDocWriter, 0xd3588ab1, 0x0781, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70) @@ -270,6 +271,5 @@ OUR_GUID_ENTRY(CLSID_VideoProcAmpPropertyPage, 0x71f96464, 0x78f3, 0x11d0, OUR_GUID_ENTRY(CLSID_CameraControlPropertyPage, 0x71f96465, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56) OUR_GUID_ENTRY(CLSID_AnalogVideoDecoderPropertyPage, 0x71f96466, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56) OUR_GUID_ENTRY(CLSID_VideoStreamConfigPropertyPage, 0x71f96467, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56) -OUR_GUID_ENTRY(CLSID_HTMLDocument, 0x25336920, 0x03f9, 0x11cf, 0x8f, 0xd0, 0x00, 0xaa, 0x00, 0x68, 0x6f, 0x13) #undef OUR_GUID_ENTRY diff --git a/reactos/include/psdk/windef.h b/reactos/include/psdk/windef.h index 82462d92647..1ddb23cd5dc 100644 --- a/reactos/include/psdk/windef.h +++ b/reactos/include/psdk/windef.h @@ -60,6 +60,29 @@ extern "C" { #define OPTIONAL #endif +/* needed by header files generated by WIDL */ +#ifdef __WINESRC__ +#define WINE_NO_UNICODE_MACROS +#endif + +#ifdef WINE_NO_UNICODE_MACROS +# define WINELIB_NAME_AW(func) \ + func##_must_be_suffixed_with_W_or_A_in_this_context \ + func##_must_be_suffixed_with_W_or_A_in_this_context +#else /* WINE_NO_UNICODE_MACROS */ +# ifdef UNICODE +# define WINELIB_NAME_AW(func) func##W +# else +# define WINELIB_NAME_AW(func) func##A +# endif +#endif /* WINE_NO_UNICODE_MACROS */ + +#ifdef WINE_NO_UNICODE_MACROS +# define DECL_WINELIB_TYPE_AW(type) /* nothing */ +#else +# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; +#endif + #ifdef __GNUC__ #define PACKED __attribute__((packed)) #ifndef _fastcall diff --git a/reactos/include/psdk/wingdi.h b/reactos/include/psdk/wingdi.h index 0375635fdd8..8a0cb4469a9 100644 --- a/reactos/include/psdk/wingdi.h +++ b/reactos/include/psdk/wingdi.h @@ -1,5 +1,6 @@ #ifndef _WINGDI_H #define _WINGDI_H +#define _WINGDI_ #if __GNUC__ >= 3 #pragma GCC system_header #endif @@ -16,6 +17,13 @@ extern "C" { #define WINGDIAPI +#define NTM_NONNEGATIVE_AC 0x00010000 +#define NTM_PS_OPENTYPE 0x00020000 +#define NTM_TT_OPENTYPE 0x00040000 +#define NTM_MULTIPLEMASTER 0x00080000 +#define NTM_TYPE1 0x00100000 +#define NTM_DSIG 0x00200000 + #define AC_SRC_OVER 0 #define AC_SRC_ALPHA 1 #define BI_RGB 0 @@ -779,9 +787,7 @@ extern "C" { #define PC_EXPLICIT 2 #define PC_NOCOLLAPSE 4 #define PC_RESERVED 1 -#define CLR_NONE 0xffffffff -#define CLR_INVALID CLR_NONE -#define CLR_DEFAULT 0xff000000 +#define CLR_INVALID 0xFFFFFFFF #define PT_MOVETO 6 #define PT_LINETO 2 #define PT_BEZIERTO 4 @@ -1596,17 +1602,26 @@ typedef struct tagEMRCREATEMONOBRUSH { DWORD offBits; DWORD cbBits; } EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH; + +#ifndef _PALETTEENTRY_DEFINED +#define _PALETTEENTRY_DEFINED typedef struct tagPALETTEENTRY { BYTE peRed; BYTE peGreen; BYTE peBlue; BYTE peFlags; } PALETTEENTRY,*LPPALETTEENTRY,*PPALETTEENTRY; +#endif + +#ifndef _LOGPALETTE_DEFINED +#define _LOGPALETTE_DEFINED typedef struct tagLOGPALETTE { WORD palVersion; WORD palNumEntries; PALETTEENTRY palPalEntry[1]; } LOGPALETTE,*NPLOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE; +#endif + typedef struct tagEMRCREATEPALETTE { EMR emr; DWORD ihPal; @@ -2105,6 +2120,9 @@ typedef struct tagENHMETARECORD { typedef struct tagHANDLETABLE { HGDIOBJ objectHandle[1]; } HANDLETABLE,*PHANDLETABLE, *LPHANDLETABLE; + +#ifndef _TEXTMETRIC_DEFINED +#define _TEXTMETRIC_DEFINED typedef struct tagTEXTMETRICA { LONG tmHeight; LONG tmAscent; @@ -2149,6 +2167,7 @@ typedef struct tagTEXTMETRICW { BYTE tmPitchAndFamily; BYTE tmCharSet; } TEXTMETRICW,*PTEXTMETRICW,*LPTEXTMETRICW; +#endif typedef struct _RGNDATAHEADER { DWORD dwSize; diff --git a/reactos/include/psdk/winnt.h b/reactos/include/psdk/winnt.h index de01e2d4a47..f0810ca1516 100644 --- a/reactos/include/psdk/winnt.h +++ b/reactos/include/psdk/winnt.h @@ -4,6 +4,7 @@ #pragma GCC system_header #endif + /* translate GCC target defines to MS equivalents. Keep this synchronized with windows.h. */ #if defined(__i686__) && !defined(_M_IX86) @@ -30,12 +31,28 @@ #define _68K_ #endif +#ifndef DECLSPEC_ALIGN +# if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS) +# define DECLSPEC_ALIGN(x) __declspec(align(x)) +# elif defined(__GNUC__) +# define DECLSPEC_ALIGN(x) __attribute__((aligned(x))) +# else +# define DECLSPEC_ALIGN(x) +# endif +#endif + +# define DECLSPEC_HIDDEN + #ifdef __cplusplus extern "C" { #endif +#include +#include + #include #include +#include #include #ifndef RC_INVOKED @@ -112,6 +129,26 @@ typedef unsigned short wchar_t; #endif #endif +#ifdef __cplusplus +# define EXTERN_C extern "C" +#else +# define EXTERN_C extern +#endif + +#define STDMETHODCALLTYPE __stdcall +#define STDMETHODVCALLTYPE __cdecl +#define STDAPICALLTYPE __stdcall +#define STDAPIVCALLTYPE __cdecl + +#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE +#define STDAPI_(type) EXTERN_C type STDAPICALLTYPE +#define STDMETHODIMP HRESULT STDMETHODCALLTYPE +#define STDMETHODIMP_(type) type STDMETHODCALLTYPE +#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE +#define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE +#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE +#define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE + typedef wchar_t WCHAR; typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR; typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR; @@ -1626,9 +1663,10 @@ typedef struct _GUID { unsigned short Data3; unsigned char Data4[8]; } GUID, *REFGUID, *LPGUID; -#define SYSTEM_LUID { 0x3E7, 0x0 } #endif /* GUID_DEFINED */ +#define SYSTEM_LUID { 0x3E7, 0x0 } + /* ACE Access Types, also in ntifs.h */ #define ACCESS_MIN_MS_ACE_TYPE (0x0) #define ACCESS_ALLOWED_ACE_TYPE (0x0) diff --git a/reactos/include/psdk/winsock2.h b/reactos/include/psdk/winsock2.h index 537d6ece8bd..4e0a102575b 100644 --- a/reactos/include/psdk/winsock2.h +++ b/reactos/include/psdk/winsock2.h @@ -744,11 +744,18 @@ typedef struct _SOCKET_ADDRESS_LIST { #ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */ #define __BLOB_T_DEFINED +/* wine is using a diff define */ +#ifndef _tagBLOB_DEFINED +#define _tagBLOB_DEFINED +#define _BLOB_DEFINED +#define _LPBLOB_DEFINED + typedef struct _BLOB { ULONG cbSize; BYTE *pBlobData; } BLOB,*PBLOB,*LPBLOB; #endif +#endif typedef struct _WSAQuerySetA { diff --git a/reactos/include/psdk/winuser.h b/reactos/include/psdk/winuser.h index ac4e44cb7a0..ba69f1e3494 100644 --- a/reactos/include/psdk/winuser.h +++ b/reactos/include/psdk/winuser.h @@ -2623,7 +2623,7 @@ typedef struct tagCWPSTRUCT { WPARAM wParam; UINT message; HWND hwnd; -} CWPSTRUCT,*PCWPSTRUCT; +} CWPSTRUCT,*PCWPSTRUCT, *LPCWPSTRUCT; typedef struct tagDEBUGHOOKINFO { DWORD idThread; DWORD idThreadInstaller; diff --git a/reactos/include/psdk/wtypes.h b/reactos/include/psdk/wtypes.h deleted file mode 100644 index cdd80e57179..00000000000 --- a/reactos/include/psdk/wtypes.h +++ /dev/null @@ -1,327 +0,0 @@ -#include -#include - -#ifndef _WTYPES_H -#define _WTYPES_H -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define IID_NULL GUID_NULL -#define CLSID_NULL GUID_NULL -#define CBPCLIPDATA(d) ((d).cbSize-sizeof((d).ulClipFmt)) -#define DECIMAL_NEG ((BYTE)0x80) -#define DECIMAL_SETZERO(d) {DEC_LO64(&d)=DEC_HI32(&d)=DEC_SIGNSCALE(&d)=0;} -#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x01 -#define ROTFLAGS_ALLOWANYCLIENT 0x02 - -#ifndef __BLOB_T_DEFINED /* also in winsock2.h */ -#define __BLOB_T_DEFINED -typedef struct _BLOB { - ULONG cbSize; - BYTE *pBlobData; -} BLOB,*PBLOB,*LPBLOB; -#endif -typedef enum tagDVASPECT { - DVASPECT_CONTENT=1, - DVASPECT_THUMBNAIL=2, - DVASPECT_ICON=4, - DVASPECT_DOCPRINT=8 -} DVASPECT; -typedef enum tagDVASPECT2 { - DVASPECT_OPAQUE=16, - DVASPECT_TRANSPARENT=32 -} DVASPECT2; -typedef enum tagSTATFLAG { - STATFLAG_DEFAULT=0, - STATFLAG_NONAME=1 -} STATFLAG; -typedef enum tagMEMCTX { - MEMCTX_LOCAL=0, - MEMCTX_TASK, - MEMCTX_SHARED, - MEMCTX_MACSYSTEM, - MEMCTX_UNKNOWN=-1, - MEMCTX_SAME=-2 -} MEMCTX; -typedef enum tagMSHCTX { - MSHCTX_LOCAL=0, - MSHCTX_NOSHAREDMEM, - MSHCTX_DIFFERENTMACHINE, - MSHCTX_INPROC, - MSHCTX_CROSSCTX -} MSHCTX; -typedef enum tagCLSCTX { - CLSCTX_INPROC_SERVER=1,CLSCTX_INPROC_HANDLER=2,CLSCTX_LOCAL_SERVER=4, - CLSCTX_INPROC_SERVER16=8,CLSCTX_REMOTE_SERVER=16 -} CLSCTX; -typedef enum tagMSHLFLAGS { - MSHLFLAGS_NORMAL,MSHLFLAGS_TABLESTRONG,MSHLFLAGS_TABLEWEAK,MSHLFLAGS_NOPING -} MSHLFLAGS; -typedef struct _FLAGGED_WORD_BLOB { - unsigned long fFlags; - unsigned long clSize; - unsigned short asData[1]; -}FLAGGED_WORD_BLOB; - -#ifndef OLE2ANSI -typedef WCHAR OLECHAR; -typedef LPWSTR LPOLESTR; -typedef LPCWSTR LPCOLESTR; -#define OLESTR(s) L##s -#else -typedef char OLECHAR; -typedef LPSTR LPOLESTR; -typedef LPCSTR LPCOLESTR; -#define OLESTR(s) s -#endif -typedef unsigned short VARTYPE; -typedef short VARIANT_BOOL; -typedef VARIANT_BOOL _VARIANT_BOOL; -#define VARIANT_TRUE ((VARIANT_BOOL)0xffff) -#define VARIANT_FALSE ((VARIANT_BOOL)0) -typedef OLECHAR *BSTR; -typedef FLAGGED_WORD_BLOB *wireBSTR; -typedef BSTR *LPBSTR; -typedef LONG SCODE; -typedef void *HCONTEXT; -#ifndef _tagCY_DEFINED -#define _tagCY_DEFINED -typedef union tagCY { - _ANONYMOUS_STRUCT struct { - unsigned long Lo; - long Hi; - }_STRUCT_NAME(s); - LONGLONG int64; -} CY; -#endif /* _tagCY_DEFINED */ -typedef double DATE; -typedef struct tagBSTRBLOB { - ULONG cbSize; - PBYTE pData; -}BSTRBLOB; -typedef struct tagBSTRBLOB *LPBSTRBLOB; -typedef struct tagCLIPDATA { - ULONG cbSize; - long ulClipFmt; - PBYTE pClipData; -}CLIPDATA; -typedef enum tagSTGC { - STGC_DEFAULT,STGC_OVERWRITE,STGC_ONLYIFCURRENT, - STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE -}STGC; -typedef enum tagSTGMOVE { - STGMOVE_MOVE,STGMOVE_COPY,STGMOVE_SHALLOWCOPY -}STGMOVE; -enum VARENUM { - VT_EMPTY,VT_NULL,VT_I2,VT_I4,VT_R4,VT_R8,VT_CY,VT_DATE,VT_BSTR,VT_DISPATCH, - VT_ERROR,VT_BOOL,VT_VARIANT,VT_UNKNOWN,VT_DECIMAL,VT_I1=16,VT_UI1,VT_UI2,VT_UI4,VT_I8, - VT_UI8,VT_INT,VT_UINT,VT_VOID,VT_HRESULT,VT_PTR,VT_SAFEARRAY,VT_CARRAY,VT_USERDEFINED, - VT_LPSTR,VT_LPWSTR,VT_RECORD=36,VT_INT_PTR=37,VT_UINT_PTR=38,VT_FILETIME=64,VT_BLOB,VT_STREAM,VT_STORAGE,VT_STREAMED_OBJECT, - VT_STORED_OBJECT,VT_BLOB_OBJECT,VT_CF,VT_CLSID,VT_BSTR_BLOB=0xfff,VT_VECTOR=0x1000, - VT_ARRAY=0x2000,VT_BYREF=0x4000,VT_RESERVED=0x8000,VT_ILLEGAL= 0xffff,VT_ILLEGALMASKED=0xfff, - VT_TYPEMASK=0xfff -}; - -typedef struct _BYTE_SIZEDARR { - unsigned long clSize; - byte *pData; -}BYTE_SIZEDARR; -typedef struct _SHORT_SIZEDARR { - unsigned long clSize; - unsigned short *pData; -}WORD_SIZEDARR; -typedef struct _LONG_SIZEDARR { - unsigned long clSize; - unsigned long *pData; -}DWORD_SIZEDARR; -typedef struct _HYPER_SIZEDARR { - unsigned long clSize; - hyper *pData; -}HYPER_SIZEDARR; -typedef double DOUBLE; -typedef struct tagDEC { - USHORT wReserved; - union { - struct { - BYTE scale; - BYTE sign; - }; - USHORT signscale; - }; - ULONG Hi32; - union { - struct { - ULONG Lo32; - ULONG Mid32; - }; - ULONGLONG Lo64; - }; -} DECIMAL; -typedef void *HMETAFILEPICT; -typedef struct tagCSPLATFORM { - DWORD dwPlatformId; - DWORD dwVersionHi; - DWORD dwVersionLo; - DWORD dwProcessorArch; -} CSPLATFORM; -typedef struct tagQUERYCONTEXT { - DWORD dwContext; - CSPLATFORM Platform; - LCID Locale; - DWORD dwVersionHi; - DWORD dwVersionLo; -} QUERYCONTEXT; -typedef struct { - DWORD tyspec; - union { - CLSID clsid; - LPOLESTR pFileExt; - LPOLESTR pMimeType; - LPOLESTR pProgId; - LPOLESTR pFileName; - struct { - LPOLESTR pPackageName; - GUID PolicyId; - } ByName; - struct { - GUID ObjectId; - GUID PolicyId; - } ByObjectId; - } tagged_union; -} uCLSSPEC; - -#define WDT_INPROC_CALL (0x48746457) - -#define WDT_REMOTE_CALL (0x52746457) - -#define WDT_INPROC64_CALL (0x50746457) - -typedef struct _userCLIPFORMAT { - long fContext; - union { - DWORD dwValue; - LPWSTR pwszName; - } u; -} userCLIPFORMAT; -typedef userCLIPFORMAT *wireCLIPFORMAT; -typedef WORD CLIPFORMAT; - -typedef struct _RemotableHandle { - long fContext; - union { - long hInproc; - long hRemote; - } u; -} RemotableHandle; -typedef RemotableHandle *wireHACCEL; -typedef RemotableHandle *wireHBRUSH; -typedef RemotableHandle *wireHDC; -typedef RemotableHandle *wireHFONT; -typedef RemotableHandle *wireHICON; -typedef RemotableHandle *wireHMENU; -typedef RemotableHandle *wireHWND; - -typedef struct _BYTE_BLOB { - unsigned long clSize; - byte abData[1]; -} BYTE_BLOB; -typedef BYTE_BLOB *UP_BYTE_BLOB; -typedef struct _FLAGGED_BYTE_BLOB { - unsigned long fFlags; - unsigned long clSize; - byte abData[1]; -} FLAGGED_BYTE_BLOB; -typedef FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB; - -typedef struct _userHENHMETAFILE { - long fContext; - union { - long hInproc; - BYTE_BLOB *hRemote; - long hGlobal; - } u; -} userHENHMETAFILE; -typedef userHENHMETAFILE *wireHENHMETAFILE; -typedef struct tagRemHMETAFILEPICT { - long mm; - long xExt; - long yExt; - unsigned long cbData; - byte data[1]; -} RemHMETAFILEPICT; -typedef struct _userHMETAFILE { - long fContext; - union { - long hInproc; - BYTE_BLOB *hRemote; - long hGlobal; - } u; -} userHMETAFILE; -typedef userHMETAFILE *wireHMETAFILE; -typedef struct _remoteMETAFILEPICT { - long mm; - long xExt; - long yExt; - userHMETAFILE *hMF; -} remoteMETAFILEPICT; -typedef struct _userHMETAFILEPICT { - long fContext; - union { - long hInproc; - remoteMETAFILEPICT *hRemote; - long hGlobal; - } u; -} userHMETAFILEPICT; -typedef userHMETAFILEPICT *wireHMETAFILEPICT; -typedef struct _userBITMAP { - LONG bmType; - LONG bmWidth; - LONG bmHeight; - LONG bmWidthBytes; - WORD bmPlanes; - WORD bmBitsPixel; - ULONG cbSize; - byte pBuffer[1]; -} userBITMAP; -typedef struct _userHBITMAP { - long fContext; - union { - long hInproc; - userBITMAP *hRemote; - long hGlobal; - } u; -} userHBITMAP; -typedef userHBITMAP *wireHBITMAP; -typedef struct tagrpcLOGPALETTE { - WORD palVersion; - WORD palNumEntries; - PALETTEENTRY palPalEntry[1]; -} rpcLOGPALETTE; -typedef struct _userHPALETTE { - long fContext; - union { - long hInproc; - rpcLOGPALETTE *hRemote; - long hGlobal; - } u; -} userHPALETTE; -typedef userHPALETTE *wireHPALETTE; -typedef struct _userHGLOBAL { - long fContext; - union { - long hInproc; - FLAGGED_BYTE_BLOB *hRemote; - long hGlobal; - } u; -} userHGLOBAL; -typedef userHGLOBAL *wireHGLOBAL; - -#ifdef __cplusplus -} -#endif -#endif diff --git a/reactos/include/psdk/wtypes.idl b/reactos/include/psdk/wtypes.idl new file mode 100644 index 00000000000..8d8b8e3ba08 --- /dev/null +++ b/reactos/include/psdk/wtypes.idl @@ -0,0 +1,815 @@ +/* + * Basic types used by COM interfaces + * + * Copyright 2002 Ove Kaaven + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "basetsd.h"; +import "guiddef.h"; + +[ + uuid(D3980A60-910C-1068-9341-00DD010F2F1C), + version(0.1), + pointer_default(unique) +] + +interface IWinTypes +{ + +/******************** BASIC WIN32 TYPES ********************/ +cpp_quote("#if 0 /* winnt.h */") /* don't redefine these */ + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef long BOOL; +typedef unsigned char UCHAR; +typedef int INT; +typedef unsigned int UINT; +typedef short SHORT; +typedef unsigned short USHORT; +typedef long LONG; +typedef unsigned long ULONG; +typedef float FLOAT; + +typedef void *PVOID, *LPVOID; + +typedef DWORD *LPDWORD; + +typedef char CHAR; +typedef [string] CHAR *LPSTR; +typedef [string] const CHAR *LPCSTR; + +typedef wchar_t WCHAR; +typedef [string] WCHAR *LPWSTR; +typedef [string] const WCHAR *LPCWSTR; + +typedef boolean BOOLEAN; + +typedef DWORD COLORREF; + +typedef void *HANDLE; +#define DECLARE_HANDLE(name) typedef void *name +#define DECLARE_WIREM_HANDLE(name) typedef [wire_marshal(wire##name)] void*name + +DECLARE_HANDLE(HMODULE); +DECLARE_HANDLE(HINSTANCE); +DECLARE_HANDLE(HRGN); +DECLARE_HANDLE(HTASK); +DECLARE_HANDLE(HKEY); +DECLARE_HANDLE(HDESK); +DECLARE_HANDLE(HMF); +DECLARE_HANDLE(HEMF); +DECLARE_HANDLE(HPEN); +DECLARE_HANDLE(HRSRC); +DECLARE_HANDLE(HSTR); +DECLARE_HANDLE(HWINSTA); +DECLARE_HANDLE(HKL); +DECLARE_HANDLE(HGDIOBJ); + +typedef HANDLE HDWP; + +typedef LONG_PTR LRESULT; + +typedef LONG HRESULT; +typedef DWORD LCID; + +typedef unsigned __int64 DWORDLONG; +typedef __int64 LONGLONG; +typedef unsigned __int64 ULONGLONG; + +typedef struct _LARGE_INTEGER { + LONGLONG QuadPart; +} LARGE_INTEGER; + +typedef struct _ULARGE_INTEGER { + ULONGLONG QuadPart; +} ULARGE_INTEGER; + +typedef struct _SID_IDENTIFIER_AUTHORITY { + UCHAR Value[6]; +} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY; + +typedef struct _SID { + UCHAR Revision; + UCHAR SubAuthorityCount; + SID_IDENTIFIER_AUTHORITY IdentifierAuthority; + [size_is(SubAuthorityCount)] ULONG SubAuthority[*]; +} SID, *PSID; + +typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL; + +typedef struct _ACL { + UCHAR AclRevision; + UCHAR Sbz1; + USHORT AclSize; + USHORT AceCount; + USHORT Sbz2; +} ACL; +typedef ACL *PACL; + +typedef struct _SECURITY_DESCRIPTOR { + UCHAR Revision; + UCHAR Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; +} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR; + +typedef struct _SECURITY_ATTRIBUTES +{ + DWORD nLength; + [size_is(nLength)] LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; +} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; + +typedef struct tagSIZE +{ + LONG cx; + LONG cy; +} SIZE, *PSIZE, *LPSIZE; +typedef SIZE SIZEL, *PSIZEL, *LPSIZEL; + +typedef struct tagPOINT +{ + LONG x; + LONG y; +} POINT, *PPOINT, *LPPOINT; + +typedef struct _POINTL +{ + LONG x; + LONG y; +} POINTL, *PPOINTL; + +typedef struct tagRECT +{ + LONG left; + LONG top; + LONG right; + LONG bottom; +} RECT, *PRECT, *LPRECT; +typedef const RECT *LPCRECT; + +typedef struct _RECTL +{ + LONG left; + LONG top; + LONG right; + LONG bottom; +} RECTL, *PRECTL, *LPRECTL; +typedef const RECTL *LPCRECTL; + +typedef UINT_PTR WPARAM; +typedef LONG_PTR LPARAM; + +cpp_quote("#endif /* winnt.h */") + +cpp_quote("#ifdef _MSC_VER") /* for IDL and MSVC only */ +typedef double DOUBLE; +cpp_quote("#else") +cpp_quote("typedef double DECLSPEC_ALIGN(8) DOUBLE;") +cpp_quote("#endif") + +cpp_quote("#ifndef _PALETTEENTRY_DEFINED") +cpp_quote("#define _PALETTEENTRY_DEFINED") +typedef struct tagPALETTEENTRY { + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; +} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY; +cpp_quote("#endif") + +cpp_quote("#ifndef _LOGPALETTE_DEFINED") +cpp_quote("#define _LOGPALETTE_DEFINED") +typedef struct tagLOGPALETTE +{ + WORD palVersion; + WORD palNumEntries; + [size_is(palNumEntries)] PALETTEENTRY palPalEntry[*]; +} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE; +cpp_quote("#endif") + +cpp_quote("#ifndef _FILETIME_") +cpp_quote("#define _FILETIME_") +typedef struct _FILETIME { + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} FILETIME, *PFILETIME, *LPFILETIME; +cpp_quote("#endif") + +cpp_quote("#ifndef _TEXTMETRIC_DEFINED") +cpp_quote("#define _TEXTMETRIC_DEFINED") +typedef struct tagTEXTMETRICA +{ + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA; + +typedef struct tagTEXTMETRICW +{ + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW; +cpp_quote("#endif") + +/******************** BASIC COM/OLE TYPES ********************/ + +typedef WCHAR OLECHAR; +typedef [string] OLECHAR *LPOLESTR; +typedef [string] const OLECHAR *LPCOLESTR; +cpp_quote("#ifndef __WINESRC__") +cpp_quote("#define OLESTR(str) L##str") +cpp_quote("#endif") + +typedef LONG SCODE; + +typedef struct _COAUTHIDENTITY { + [size_is(UserLength+1)] USHORT *User; + ULONG UserLength; + [size_is(DomainLength+1)] USHORT *Domain; + ULONG DomainLength; + [size_is(PasswordLength+1)] USHORT *Password; + ULONG PasswordLength; + ULONG Flags; +} COAUTHIDENTITY; + +typedef struct _COAUTHINFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + LPWSTR pwszServerPrincName; + DWORD dwAuthnLevel; + DWORD dwImpersonationLevel; + COAUTHIDENTITY *pAuthIdentityData; + DWORD dwCapabilities; +} COAUTHINFO; + +typedef enum tagMEMCTX { + MEMCTX_TASK = 1, + MEMCTX_SHARED = 2, + MEMCTX_MACSYSTEM = 3, + MEMCTX_UNKNOWN = -1, + MEMCTX_SAME = -2 +} MEMCTX; + +cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED") +cpp_quote("#define _ROT_COMPARE_MAX_DEFINED") +cpp_quote("#define ROT_COMPARE_MAX 2048") +cpp_quote("#endif") + +cpp_quote("#ifndef _ROTFLAGS_DEFINED") +cpp_quote("#define _ROTFLAGS_DEFINED") +cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1") +cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2") +cpp_quote("#endif") + +typedef enum tagCLSCTX { + CLSCTX_INPROC_SERVER = 0x1, + CLSCTX_INPROC_HANDLER = 0x2, + CLSCTX_LOCAL_SERVER = 0x4, + CLSCTX_INPROC_SERVER16 = 0x8, + CLSCTX_REMOTE_SERVER = 0x10, + CLSCTX_INPROC_HANDLER16 = 0x20, + CLSCTX_INPROC_SERVERX86 = 0x40, + CLSCTX_INPROC_HANDLERX86 = 0x80, + CLSCTX_ESERVER_HANDLER = 0x100, + CLSCTX_NO_CODE_DOWNLOAD = 0x400, + CLSCTX_NO_CUSTOM_MARSHAL = 0x1000, + CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000, + CLSCTX_NO_FAILURE_LOG = 0x4000, + CLSCTX_DISABLE_AAA = 0x8000, + CLSCTX_ENABLE_AAA = 0x10000, + CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000 +} CLSCTX; + +cpp_quote("#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)") +cpp_quote("#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)") +cpp_quote("#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)") + +typedef enum tagMSHLFLAGS { + MSHLFLAGS_NORMAL = 0, + MSHLFLAGS_TABLESTRONG = 1, + MSHLFLAGS_TABLEWEAK = 2, + MSHLFLAGS_NOPING = 4 +} MSHLFLAGS; + +typedef enum tagMSHCTX { + MSHCTX_LOCAL = 0, + MSHCTX_NOSHAREDMEM = 1, + MSHCTX_DIFFERENTMACHINE = 2, + MSHCTX_INPROC = 3, + MSHCTX_CROSSCTX = 4 +} MSHCTX; + +/******************** BLOB TYPES ********************/ + +typedef struct _BYTE_BLOB { + unsigned long clSize; + [size_is(clSize)] byte abData[]; +} BYTE_BLOB; +typedef [unique] BYTE_BLOB *UP_BYTE_BLOB; + +typedef struct _FLAGGED_BYTE_BLOB { + unsigned long fFlags; + unsigned long clSize; + [size_is(clSize)] byte abData[]; +} FLAGGED_BYTE_BLOB; +typedef [unique] FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB; + +typedef struct _FLAGGED_WORD_BLOB { + unsigned long fFlags; + unsigned long clSize; + [size_is(clSize)] unsigned short asData[]; +} FLAGGED_WORD_BLOB; +typedef [unique] FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB; + +typedef struct _BYTE_SIZEDARR { + unsigned long clSize; + [size_is(clSize)] byte *pData; +} BYTE_SIZEDARR; + +typedef struct _SHORT_SIZEDARR { + unsigned long clSize; + [size_is(clSize)] unsigned short *pData; +} WORD_SIZEDARR; + +typedef struct _LONG_SIZEDARR { + unsigned long clSize; + [size_is(clSize)] unsigned long *pData; +} DWORD_SIZEDARR; + +typedef struct _HYPER_SIZEDARR { + unsigned long clSize; + [size_is(clSize)] hyper *pData; +} HYPER_SIZEDARR; + +/******************** GDI TYPES ********************/ + +const unsigned long WDT_INPROC_CALL = 0x48746457; +const unsigned long WDT_REMOTE_CALL = 0x52746457; +const unsigned long WDT_INPROC64_CALL = 0x50746457; + +typedef union _userCLIPFORMAT switch(long fContext) u { + case WDT_INPROC_CALL: DWORD dwValue; + case WDT_REMOTE_CALL: LPWSTR pwszName; +} userCLIPFORMAT; + +typedef [unique] userCLIPFORMAT *wireCLIPFORMAT; +typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT; + +typedef struct tagRemHGLOBAL { + long fNullHGlobal; + unsigned long cbData; + [size_is(cbData)] byte data[]; +} RemHGLOBAL; + +typedef union _userHGLOBAL switch(long fContext) u { + case WDT_INPROC_CALL: long hInproc; + case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB *hRemote; + default: long hGlobal; +} userHGLOBAL; + +typedef [unique] userHGLOBAL *wireHGLOBAL; + +typedef struct tagRemHMETAFILEPICT { + long mm; + long xExt; + long yExt; + unsigned long cbData; + [size_is(cbData)] byte data[]; +} RemHMETAFILEPICT; + +typedef union _userHMETAFILE switch(long fContext) u { + case WDT_INPROC_CALL: long hInproc; + case WDT_REMOTE_CALL: BYTE_BLOB *hRemote; + default: long hGlobal; +} userHMETAFILE; + +typedef [unique] userHMETAFILE *wireHMETAFILE; + +typedef struct _remoteMETAFILEPICT { + long mm; + long xExt; + long yExt; + userHMETAFILE *hMF; +} remoteMETAFILEPICT; + +typedef union _userHMETAFILEPICT switch(long fContext) u { + case WDT_INPROC_CALL: long hInproc; + case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote; + default: long hGlobal; +} userHMETAFILEPICT; + +typedef [unique] userHMETAFILEPICT *wireHMETAFILEPICT; + +typedef struct tagRemHENHMETAFILE { + unsigned long cbData; + [size_is(cbData)] byte data[]; +} RemHENHMETAFILE; + +typedef union _userHENHMETAFILE switch(long fContext) u { + case WDT_INPROC_CALL: long hInproc; + case WDT_REMOTE_CALL: BYTE_BLOB *hRemote; + default: long hGlobal; +} userHENHMETAFILE; + +typedef [unique] userHENHMETAFILE *wireHENHMETAFILE; + +typedef struct tagRemHBITMAP +{ + unsigned long cbData; + [size_is(cbData)] byte data[]; +} RemHBITMAP; + +typedef struct _userBITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + ULONG cbSize; + [size_is(cbSize)] byte pBuffer[]; +} userBITMAP; + +typedef union _userHBITMAP switch(long fContext) u { + case WDT_INPROC_CALL: long hInproc; + case WDT_REMOTE_CALL: userBITMAP *hRemote; + default: long hGlobal; +} userHBITMAP; + +typedef [unique] userHBITMAP *wireHBITMAP; + +typedef struct tagRemHPALETTE { + unsigned long cbData; + [size_is(cbData)] byte data[]; +} RemHPALETTE; + +typedef struct tagrpcLOGPALETTE { + WORD palVersion; + WORD palNumEntries; + [size_is(palNumEntries)] PALETTEENTRY palPalEntry[]; +} rpcLOGPALETTE; + +typedef union _userHPALETTE switch(long fContext) u { + case WDT_INPROC_CALL: long hInproc; + case WDT_REMOTE_CALL: rpcLOGPALETTE *hRemote; + default: long hGlobal; +} userHPALETTE; + +typedef [unique] userHPALETTE *wireHPALETTE; + +cpp_quote("#if 0") +DECLARE_WIREM_HANDLE(HGLOBAL); +typedef HGLOBAL HLOCAL; +DECLARE_WIREM_HANDLE(HBITMAP); +DECLARE_WIREM_HANDLE(HPALETTE); +DECLARE_WIREM_HANDLE(HENHMETAFILE); +DECLARE_WIREM_HANDLE(HMETAFILE); +cpp_quote("#endif") +DECLARE_WIREM_HANDLE(HMETAFILEPICT); + +typedef union _RemotableHandle switch (long fContext) u +{ + case WDT_INPROC_CALL: long hInproc; + case WDT_REMOTE_CALL: long hRemote; +} RemotableHandle; + +typedef [unique] RemotableHandle *wireHACCEL; +typedef [unique] RemotableHandle *wireHBRUSH; +typedef [unique] RemotableHandle *wireHDC; +typedef [unique] RemotableHandle *wireHFONT; +typedef [unique] RemotableHandle *wireHICON; +typedef [unique] RemotableHandle *wireHMENU; +typedef [unique] RemotableHandle *wireHWND; + +cpp_quote("#if 0") /* for IDL only (C/C++ defs are in windef.h) */ +DECLARE_WIREM_HANDLE(HACCEL); +DECLARE_WIREM_HANDLE(HBRUSH); +DECLARE_WIREM_HANDLE(HDC); +DECLARE_WIREM_HANDLE(HFONT); +DECLARE_WIREM_HANDLE(HICON); +DECLARE_WIREM_HANDLE(HMENU); +DECLARE_WIREM_HANDLE(HWND); + +typedef HICON HCURSOR; + +typedef struct tagMSG +{ + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +} MSG, *PMSG, *NPMSG, *LPMSG; + +cpp_quote("#endif") + +/******************** GUID TYPES ********************/ + +cpp_quote("#if 0") /* for IDL only (C/C++ defs are in guiddef.h) */ +typedef GUID *REFGUID; +typedef IID *REFIID; +typedef CLSID *REFCLSID; +typedef FMTID *REFFMTID; +cpp_quote("#endif") + +/******************** MISC TYPES ********************/ + +typedef enum tagDVASPECT { + DVASPECT_CONTENT = 1, + DVASPECT_THUMBNAIL = 2, + DVASPECT_ICON = 4, + DVASPECT_DOCPRINT = 8 +} DVASPECT; + +typedef enum tagSTGC { + STGC_DEFAULT = 0, + STGC_OVERWRITE = 1, + STGC_ONLYIFCURRENT = 2, + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4, + STGC_CONSOLIDATE = 8 +} STGC; + +typedef enum tagSTGMOVE { + STGMOVE_MOVE = 0, + STGMOVE_COPY = 1, + STGMOVE_SHALLOWCOPY = 2 +} STGMOVE; + +typedef enum tagSTATFLAG { + STATFLAG_DEFAULT = 0, + STATFLAG_NONAME = 1, + STATFLAG_NOOPEN = 2 +} STATFLAG; + +/******************** OLE Automation ********************/ + +cpp_quote("#ifdef _MSC_VER") /* for IDL and MSVC only */ +typedef double DATE; +cpp_quote("#else") +cpp_quote("typedef double DECLSPEC_ALIGN(8) DATE;") +cpp_quote("#endif") + +cpp_quote("#if 0") /* for IDL only */ +typedef struct tagCY { + LONGLONG int64; +} CY; +cpp_quote("#else") /* C/C++ defs */ +cpp_quote("#ifndef _tagCY_DEFINED") +cpp_quote("#define _tagCY_DEFINED") +cpp_quote("typedef union tagCY {") +cpp_quote(" struct {") +cpp_quote("#ifdef WORDS_BIGENDIAN") +cpp_quote(" LONG Hi;") +cpp_quote(" ULONG Lo;") +cpp_quote("#else") +cpp_quote(" ULONG Lo;") +cpp_quote(" LONG Hi;") +cpp_quote("#endif") +cpp_quote(" } DUMMYSTRUCTNAME;") +cpp_quote(" LONGLONG int64;") +cpp_quote("} CY;") +cpp_quote("#endif") +cpp_quote("#endif") + +typedef CY *LPCY; + +cpp_quote("#if 0") /* for IDL only */ +typedef struct tagDEC { + USHORT wReserved; + BYTE scale; + BYTE sign; + ULONG Hi32; + ULONGLONG Lo64; +} DECIMAL; +cpp_quote("#else") /* C/C++ defs */ +cpp_quote("typedef struct tagDEC {") +cpp_quote(" USHORT wReserved;") +cpp_quote(" union {") +cpp_quote(" struct {") +cpp_quote(" BYTE scale;") +cpp_quote(" BYTE sign;") +cpp_quote(" } DUMMYSTRUCTNAME;") +cpp_quote(" USHORT signscale;") +cpp_quote(" } DUMMYUNIONNAME;") +cpp_quote(" ULONG Hi32;") +cpp_quote(" union {") +cpp_quote(" struct {") +cpp_quote("#ifdef WORDS_BIGENDIAN") +cpp_quote(" ULONG Mid32;") +cpp_quote(" ULONG Lo32;") +cpp_quote("#else") +cpp_quote(" ULONG Lo32;") +cpp_quote(" ULONG Mid32;") +cpp_quote("#endif") +cpp_quote(" } DUMMYSTRUCTNAME1;") +cpp_quote(" ULONGLONG Lo64;") +cpp_quote(" } DUMMYUNIONNAME1;") +cpp_quote("} DECIMAL;") +cpp_quote("#endif") +cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)") +cpp_quote("#define DECIMAL_SETZERO(d) do{ memset(((char*)&(d)) + sizeof(USHORT), 0, sizeof(ULONG) * 3u + sizeof(USHORT)); }while (0)") + +typedef DECIMAL *LPDECIMAL; + +typedef [unique] FLAGGED_WORD_BLOB *wireBSTR; +typedef [wire_marshal(wireBSTR)] OLECHAR *BSTR; +typedef BSTR *LPBSTR; + +typedef short VARIANT_BOOL; +typedef VARIANT_BOOL _VARIANT_BOOL; +cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF)") +cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)") + +typedef struct tagBSTRBLOB { + ULONG cbSize; + [size_is(cbSize)] BYTE *pData; +} BSTRBLOB, *LPBSTRBLOB; + +cpp_quote("#ifndef _tagBLOB_DEFINED") +cpp_quote("#define _tagBLOB_DEFINED") +cpp_quote("#define _BLOB_DEFINED") +cpp_quote("#define _LPBLOB_DEFINED") +typedef struct tagBLOB { + ULONG cbSize; + [size_is(cbSize)] BYTE *pBlobData; +} BLOB, *LPBLOB; +cpp_quote("#endif") + +typedef struct tagCLIPDATA { + ULONG cbSize; + long ulClipFmt; + [size_is(cbSize-sizeof(long))] BYTE *pClipData; +} CLIPDATA; +cpp_quote("#define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))") + +typedef ULONG PROPID; + +/******************** VARTYPE ********************/ + +typedef unsigned short VARTYPE; +enum VARENUM { + VT_EMPTY = 0, + VT_NULL = 1, + VT_I2 = 2, + VT_I4 = 3, + VT_R4 = 4, + VT_R8 = 5, + VT_CY = 6, + VT_DATE = 7, + VT_BSTR = 8, + VT_DISPATCH = 9, + VT_ERROR = 10, + VT_BOOL = 11, + VT_VARIANT = 12, + VT_UNKNOWN = 13, + VT_DECIMAL = 14, + VT_I1 = 16, + VT_UI1 = 17, + VT_UI2 = 18, + VT_UI4 = 19, + VT_I8 = 20, + VT_UI8 = 21, + VT_INT = 22, + VT_UINT = 23, + VT_VOID = 24, + VT_HRESULT = 25, + VT_PTR = 26, + VT_SAFEARRAY = 27, + VT_CARRAY = 28, + VT_USERDEFINED = 29, + VT_LPSTR = 30, + VT_LPWSTR = 31, + VT_RECORD = 36, + VT_INT_PTR = 37, + VT_UINT_PTR = 38, + VT_FILETIME = 64, + VT_BLOB = 65, + VT_STREAM = 66, + VT_STORAGE = 67, + VT_STREAMED_OBJECT = 68, + VT_STORED_OBJECT = 69, + VT_BLOB_OBJECT = 70, + VT_CF = 71, + VT_CLSID = 72, + VT_VERSIONED_STREAM= 73, + VT_BSTR_BLOB = 0x0fff, + VT_VECTOR = 0x1000, + VT_ARRAY = 0x2000, + VT_BYREF = 0x4000, + VT_RESERVED = 0x8000, + VT_ILLEGAL = 0xffff, + VT_ILLEGALMASKED = 0x0fff, + VT_TYPEMASK = 0x0fff +}; + +typedef struct tagCSPLATFORM +{ + DWORD dwPlatformId; + DWORD dwVersionHi; + DWORD dwVersionLo; + DWORD dwProcessorArch; +} CSPLATFORM; + +typedef struct tagQUERYCONTEXT +{ + DWORD dwContext; + CSPLATFORM Platform; + LCID Locale; + DWORD dwVersionHi; + DWORD dwVersionLo; +} QUERYCONTEXT; + +typedef [v1_enum] enum tagTYSPEC +{ + TYSPEC_CLSID, + TYSPEC_FILEEXT, + TYSPEC_MIMETYPE, + TYSPEC_PROGID, + TYSPEC_FILENAME, + TYSPEC_PACKAGENAME, + TYSPEC_OBJECTID +} TYSPEC; + +typedef union switch(DWORD tyspec) +{ + case TYSPEC_CLSID: + CLSID clsid; + case TYSPEC_FILEEXT: + LPOLESTR pFileExt; + case TYSPEC_MIMETYPE: + LPOLESTR pMimeType; + case TYSPEC_PROGID: + LPOLESTR pProgId; + case TYSPEC_FILENAME: + LPOLESTR pFileName; + case TYSPEC_PACKAGENAME: + struct + { + LPOLESTR pPackageName; + GUID PolicyId; + } ByName; + case TYSPEC_OBJECTID: + struct + { + GUID ObjectId; + GUID PolicyId; + } ByObjectId; +} uCLSSPEC; + +} /* interface IWinTypes */ diff --git a/reactos/include/psdk/xmldom.idl b/reactos/include/psdk/xmldom.idl new file mode 100644 index 00000000000..746113144bb --- /dev/null +++ b/reactos/include/psdk/xmldom.idl @@ -0,0 +1,731 @@ +/* + * Copyright (C) 2005 Mike McCormack + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include +#include + +import "ocidl.idl"; + +interface IXMLDOMImplementation; +interface IXMLDOMNode; +interface IXMLDOMDocumentFragment; +interface IXMLDOMDocument; +interface IXMLDOMNodeList; +interface IXMLDOMNamedNodeMap; +interface IXMLDOMCharacterData; +interface IXMLDOMAttribute; +interface IXMLDOMElement; +interface IXMLDOMText; +interface IXMLDOMComment; +interface IXMLDOMProcessingInstruction; +interface IXMLDOMCDATASection; +interface IXMLDOMDocumentType; +interface IXMLDOMNotation; +interface IXMLDOMEntity; +interface IXMLDOMEntityReference; +interface IXMLDOMParseError; +interface IXTLRuntime; + +typedef enum tagDOMNodeType { + NODE_INVALID, + NODE_ELEMENT, + NODE_ATTRIBUTE, + NODE_TEXT, + NODE_CDATA_SECTION, + NODE_ENTITY_REFERENCE, + NODE_ENTITY, + NODE_PROCESSING_INSTRUCTION, + NODE_COMMENT, + NODE_DOCUMENT, + NODE_DOCUMENT_TYPE, + NODE_DOCUMENT_FRAGMENT, + NODE_NOTATION +} DOMNodeType; + +[ +local, +object, +odl, +dual, +oleautomation, +/*nonextensible,*/ +uuid(2933bf80-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMNode : IDispatch +{ + [propget, id(DISPID_DOM_NODE_NODENAME)] + HRESULT nodeName( [out,retval] BSTR *name ); + + [propget, id(DISPID_DOM_NODE_NODEVALUE)] + HRESULT nodeValue( [out,retval] VARIANT *value ); + + [propput, id(DISPID_DOM_NODE_NODEVALUE)] + HRESULT nodeValue( [in] VARIANT value ); + + [propget, id(DISPID_DOM_NODE_NODETYPE)] + HRESULT nodeType( [out,retval] DOMNodeType *type ); + + [propget, id(DISPID_DOM_NODE_PARENTNODE)] + HRESULT parentNode( [out,retval] IXMLDOMNode **parent ); + + [propget, id(DISPID_DOM_NODE_CHILDNODES)] + HRESULT childNodes( [out,retval] IXMLDOMNodeList **childList ); + + [propget, id(DISPID_DOM_NODE_FIRSTCHILD)] + HRESULT firstChild( [out,retval] IXMLDOMNode **firstChild ); + + [propget, id(DISPID_DOM_NODE_LASTCHILD)] + HRESULT lastChild( [out,retval] IXMLDOMNode **lastChild ); + + [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)] + HRESULT previousSibling( [out,retval] IXMLDOMNode **previousSibling ); + + [propget, id(DISPID_DOM_NODE_NEXTSIBLING)] + HRESULT nextSibling( [out,retval] IXMLDOMNode **nextSibling ); + + [propget, id(DISPID_DOM_NODE_ATTRIBUTES)] + HRESULT attributes( [out,retval] IXMLDOMNamedNodeMap **attributeMap ); + + [id(DISPID_DOM_NODE_INSERTBEFORE)] + HRESULT insertBefore( [in] IXMLDOMNode * newChild, + [in] VARIANT refChild, + [out,retval] IXMLDOMNode **outNewChild ); + + [id(DISPID_DOM_NODE_REPLACECHILD)] + HRESULT replaceChild( [in] IXMLDOMNode *newChild, + [in] IXMLDOMNode *oldChild, + [out,retval] IXMLDOMNode **outOldChild ); + + [id(DISPID_DOM_NODE_REMOVECHILD)] + HRESULT removeChild( [in] IXMLDOMNode *childNode, + [out,retval] IXMLDOMNode **oldChild ); + + [id(DISPID_DOM_NODE_APPENDCHILD)] + HRESULT appendChild( [in] IXMLDOMNode *newChild, + [out,retval] IXMLDOMNode **outNewChild ); + + [id(DISPID_DOM_NODE_HASCHILDNODES)] + HRESULT hasChildNodes( [out,retval] VARIANT_BOOL *hasChild ); + + [propget, id(DISPID_DOM_NODE_OWNERDOC)] + HRESULT ownerDocument( [out,retval] IXMLDOMDocument **DOMDocument ); + + [id(DISPID_DOM_NODE_CLONENODE)] + HRESULT cloneNode( [in] VARIANT_BOOL deep, + [out,retval] IXMLDOMNode **cloneRoot ); + + [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)] + HRESULT nodeTypeString( [out,retval] BSTR *nodeType ); + + [propget, id(DISPID_XMLDOM_NODE_TEXT)] + HRESULT text( [out,retval] BSTR *text ); + + [propput, id(DISPID_XMLDOM_NODE_TEXT)] + HRESULT text( [in] BSTR text ); + + [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)] + HRESULT specified( [out,retval] VARIANT_BOOL *isSpecified ); + + [propget, id(DISPID_XMLDOM_NODE_DEFINITION)] + HRESULT definition( [out,retval] IXMLDOMNode **definitionNode ); + + [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)] + HRESULT nodeTypedValue( [out,retval] VARIANT *typedValue ); + + [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)] + HRESULT nodeTypedValue( [in] VARIANT typedValue ); + + [propget, id(DISPID_XMLDOM_NODE_DATATYPE)] + HRESULT dataType( [out,retval] VARIANT *dataTypeName ); + + [propput, id(DISPID_XMLDOM_NODE_DATATYPE)] + HRESULT dataType( [in] BSTR dataTypeName ); + + [propget, id(DISPID_XMLDOM_NODE_XML)] + HRESULT xml( [out,retval] BSTR *xmlString ); + + [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)] + HRESULT transformNode( [in] IXMLDOMNode *styleSheet, + [out,retval] BSTR *xmlString ); + + [id(DISPID_XMLDOM_NODE_SELECTNODES)] + HRESULT selectNodes( [in] BSTR queryString, + [out,retval] IXMLDOMNodeList **resultList ); + + [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)] + HRESULT selectSingleNode( [in] BSTR queryString, + [out,retval] IXMLDOMNode **resultNode ); + + [propget, id(DISPID_XMLDOM_NODE_PARSED)] + HRESULT parsed( [out,retval] VARIANT_BOOL *isParsed ); + + [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)] + HRESULT namespaceURI( [out,retval] BSTR *namespaceURI ); + + [propget, id(DISPID_XMLDOM_NODE_PREFIX)] + HRESULT prefix( [out,retval] BSTR *prefixString ); + + [propget, id(DISPID_XMLDOM_NODE_BASENAME)] + HRESULT baseName( [out,retval] BSTR *nameString ); + + [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)] + HRESULT transformNodeToObject( [in] IXMLDOMNode *stylesheet, + [in] VARIANT outputObject ); +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf81-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMDocument : IXMLDOMNode +{ + [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)] + HRESULT doctype( [out,retval] IXMLDOMDocumentType **documentType ); + + [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)] + HRESULT implementation( [out,retval] IXMLDOMImplementation **impl ); + + [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)] + HRESULT documentElement( [out,retval] IXMLDOMElement **DOMElement ); + + [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)] + HRESULT documentElement( [in] IXMLDOMElement *DOMElement ); + + [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)] + HRESULT createElement( [in] BSTR tagname, + [out,retval] IXMLDOMElement **element ); + + [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)] + HRESULT createDocumentFragment( [out,retval] IXMLDOMDocumentFragment **docFrag ); + + [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)] + HRESULT createTextNode( [in] BSTR data, + [out,retval] IXMLDOMText **text ); + + [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)] + HRESULT createComment( [in] BSTR data, + [out,retval] IXMLDOMComment **comment ); + + [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)] + HRESULT createCDATASection( [in] BSTR data, + [out,retval] IXMLDOMCDATASection **cdata ); + + [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)] + HRESULT createProcessingInstruction( [in] BSTR target, + [in] BSTR data, + [out,retval] IXMLDOMProcessingInstruction **pi ); + + [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)] + HRESULT createAttribute( [in] BSTR name, + [out,retval] IXMLDOMAttribute **attribute ); + + [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)] + HRESULT createEntityReference( [in] BSTR name, + [out,retval] IXMLDOMEntityReference **entityRef ); + + [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)] + HRESULT getElementsByTagName( [in] BSTR tagName, + [out,retval] IXMLDOMNodeList **resultList ); + + [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)] + HRESULT createNode( [in] VARIANT Type, + [in] BSTR name, + [in] BSTR namespaceURI, + [out,retval] IXMLDOMNode **node ); + + [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)] + HRESULT nodeFromID( [in] BSTR idString, + [out,retval] IXMLDOMNode **node ); + + [id(DISPID_XMLDOM_DOCUMENT_LOAD)] + HRESULT load( [in] VARIANT xmlSource, + [out,retval] VARIANT_BOOL *isSuccessful ); + + [propget, id(DISPID_READYSTATE)] + HRESULT readyState( [out,retval] long *value ); + + [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)] + HRESULT parseError( [out,retval] IXMLDOMParseError **errorObj ); + + [propget, id(DISPID_XMLDOM_DOCUMENT_URL)] + HRESULT url( [out,retval] BSTR *urlString ); + + /* FIXME: these is meant to be async, but widl parses that as a keyword */ + [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)] + HRESULT async( [out,retval] VARIANT_BOOL *isAsync ); + + [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)] + HRESULT async( [in] VARIANT_BOOL isAsync ); + + [id(DISPID_XMLDOM_DOCUMENT_ABORT)] + HRESULT abort(); + + [id(DISPID_XMLDOM_DOCUMENT_LOADXML)] + HRESULT loadXML( [in] BSTR bstrXML, + [out,retval] VARIANT_BOOL *isSuccessful ); + + [id(DISPID_XMLDOM_DOCUMENT_SAVE)] + HRESULT save( [in] VARIANT destination ); + + [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)] + HRESULT validateOnParse( [out,retval] VARIANT_BOOL *isValidating ); + + [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)] + HRESULT validateOnParse( [in] VARIANT_BOOL isValidating ); + + [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)] + HRESULT resolveExternals( [out,retval] VARIANT_BOOL *isResolving ); + + [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)] + HRESULT resolveExternals( [in] VARIANT_BOOL isValidating ); + + [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)] + HRESULT preserveWhiteSpace( [out,retval] VARIANT_BOOL *isPreserving ); + + [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)] + HRESULT preserveWhiteSpace( [in] VARIANT_BOOL isPreserving ); + + [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)] + HRESULT onreadystatechange( [in] VARIANT readystatechangeSink ); + + [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)] + HRESULT ondataavailable( [in] VARIANT ondataavailableSink ); + + [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)] + HRESULT ontransformnode( [in] VARIANT ontransformnodeSink ); +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf82-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMNodeList : IDispatch +{ + [propget, id(DISPID_VALUE)] + HRESULT item( [in] long index, + [out,retval] IXMLDOMNode **listItem ); + + [propget, id(DISPID_DOM_NODELIST_LENGTH)] + HRESULT length( [out,retval] long *listLength ); + + [id(DISPID_XMLDOM_NODELIST_NEXTNODE)] + HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem ); + + [id(DISPID_XMLDOM_NODELIST_RESET)] + HRESULT reset(); + + [id(DISPID_NEWENUM)] + HRESULT _newEnum( [out,retval] IUnknown **ppUnk ); +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf83-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMNamedNodeMap : IDispatch +{ + [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)] + HRESULT getNamedItem( [in] BSTR name, + [out,retval] IXMLDOMNode **namedItem ); + + [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)] + HRESULT setNamedItem( [in] IXMLDOMNode *newItem, + [out,retval] IXMLDOMNode **namedItem ); + + [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)] + HRESULT removeNamedItem( [in] BSTR name, + [out,retval] IXMLDOMNode **namedItem ); + + [propget, id(DISPID_VALUE)] + HRESULT item( [in] long index, + [out,retval] IXMLDOMNode **listItem ); + + [propget, id(DISPID_DOM_NODELIST_LENGTH)] + HRESULT length( [out,retval] long *listLength ); + + [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)] + HRESULT getQualifiedItem( [in] BSTR baseName, + [in] BSTR namespaceURI, + [out,retval] IXMLDOMNode **qualifiedItem ); + + [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)] + HRESULT removeQualifiedItem( [in] BSTR baseName, + [in] BSTR namespaceURI, + [out,retval] IXMLDOMNode **qualifiedItem ); + + [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)] + HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem ); + + [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)] + HRESULT reset(); + + [id(DISPID_NEWENUM)] + HRESULT _newEnum( [out,retval] IUnknown **ppUnk ); +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(3efaa413-272f-11d2-836f-0000f87a7782), +pointer_default(unique) +] +interface IXMLDOMDocumentFragment : IXMLDOMNode +{ + /* empty */ +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf84-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMCharacterData : IXMLDOMNode +{ + [propget, id(DISPID_DOM_DATA_DATA)] + HRESULT data( [out,retval] BSTR *data ); + + [propput, id(DISPID_DOM_DATA_DATA)] + HRESULT data( [in] BSTR data ); + + [propget, id(DISPID_DOM_DATA_LENGTH)] + HRESULT length( [out,retval] long *dataLength ); + + [id(DISPID_DOM_DATA_SUBSTRING)] + HRESULT substringData( [in] long offset, + [in] long count, + [out,retval] BSTR *data ); + + [id(DISPID_DOM_DATA_APPEND)] + HRESULT appendData( [in] BSTR data ); + + [id(DISPID_DOM_DATA_INSERT)] + HRESULT insertData( [in] long offset, + [in] BSTR data ); + + [id(DISPID_DOM_DATA_DELETE)] + HRESULT deleteData( [in] long offset, + [in] long count ); + + [id(DISPID_DOM_DATA_REPLACE)] + HRESULT replaceData( [in] long offset, + [in] long count, + [in] BSTR data ); +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf85-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMAttribute : IXMLDOMNode +{ + [propget,id(DISPID_DOM_ATTRIBUTE_GETNAME)] + HRESULT name( [out,retval] BSTR *attributeName ); + + [propget,id(DISPID_DOM_ATTRIBUTE_VALUE)] + HRESULT value( [out,retval] VARIANT *attributeValue ); + + [propput,id(DISPID_DOM_ATTRIBUTE_VALUE)] + HRESULT value( [in] VARIANT attributeValue ); +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf86-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMElement : IXMLDOMNode +{ + [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME)] + HRESULT tagName( [out,retval] BSTR *tagName ); + + [id(DISPID_DOM_ELEMENT_GETATTRIBUTE)] + HRESULT getAttribute( [in] BSTR name, + [out,retval] VARIANT * value ); + + [id(DISPID_DOM_ELEMENT_SETATTRIBUTE)] + HRESULT setAttribute( [in] BSTR name, + [in] VARIANT value ); + + [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE)] + HRESULT removeAttribute( [in] BSTR name ); + + [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE)] + HRESULT getAttributeNode( [in] BSTR name, + [out, retval] IXMLDOMAttribute ** attributeNode ); + + [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE)] + HRESULT setAttributeNode( [in] IXMLDOMAttribute *DOMAttribute, + [out, retval] IXMLDOMAttribute ** attributeNode ); + + [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE)] + HRESULT removeAttributeNode( [in] IXMLDOMAttribute *DOMAttribute, + [out, retval] IXMLDOMAttribute ** attributeNode ); + + [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME)] + HRESULT getElementsByTagName( [in] BSTR tagName, + [out, retval] IXMLDOMNodeList ** resultList ); + + [id(DISPID_DOM_ELEMENT_NORMALIZE)] + HRESULT normalize(); +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf87-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMText : IXMLDOMCharacterData +{ + [id(DISPID_DOM_TEXT_SPLITTEXT)] + HRESULT splitText( [in] long offset, + [out,retval] IXMLDOMText **rightHandTextNode ); +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf88-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMComment : IXMLDOMNode +{ + /* empty */ +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf89-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMProcessingInstruction : IXMLDOMNode +{ + [propget, id(DISPID_DOM_PI_TARGET)] + HRESULT target( [out, retval] BSTR *name ); + + [propget, id(DISPID_DOM_PI_DATA)] + HRESULT data( [out, retval] BSTR *value ); + + [propput, id(DISPID_DOM_PI_DATA)] + HRESULT data( [in] BSTR value ); +} + +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf8a-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMCDATASection : IXMLDOMText +{ + /* empty */ +} +[ +local, +object, +odl, +dual, +/*nonextensible,*/ +oleautomation, +uuid(2933bf8b-7b36-11d2-b20e-00c04f983e60), +pointer_default(unique) +] +interface IXMLDOMDocumentType : IXMLDOMNode +{ + [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)] + HRESULT name( [out,retval] BSTR *rootName ); + + [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)] + HRESULT entities( [out,retval] IXMLDOMNamedNodeMap **entityMap ); + + [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)] + HRESULT notations( [out,retval] IXMLDOMNamedNodeMap **notationMap ); +} + +[ +local, +object, +odl, +dual, +oleautomation, +/*nonextensible,*/ +helpstring("structure for reporting parse errors"), +pointer_default(unique), +uuid (3efaa426-272f-11d2-836f-0000f87a7782) +] +interface IXMLDOMParseError : IDispatch +{ + [propget, id(DISPID_VALUE)] + HRESULT errorCode([retval, out] long *errCode); + + [propget, id(DISPID_DOM_ERROR_URL)] + HRESULT url([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_ERROR_REASON)] + HRESULT reason([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_ERROR_SRCTEXT)] + HRESULT srcText([retval, out] BSTR *p); + + [propget, id(DISPID_DOM_ERROR_LINE)] + HRESULT line([retval, out] long *lineNo); + + [propget, id(DISPID_DOM_ERROR_LINEPOS)] + HRESULT linepos([retval, out] long * linePos); + + [propget, id(DISPID_DOM_ERROR_FILEPOS)] + HRESULT filepos([retval, out] long * filePos); +} + + +[ +uuid(2933bf90-7b36-11d2-b20e-00c04f983e60) +] +coclass DOMDocument +{ + [default] interface IXMLDOMDocument; + [default, source] dispinterface XMLDOMDocumentEvents; +} + +[ +uuid(2933bf91-7b36-11d2-b20e-00c04f983e60) +] +coclass DOMFreeThreadedDocument +{ + [default] interface IXMLDOMDocument; + [default, source] dispinterface XMLDOMDocumentEvents; +} + +[ +object, +uuid(ed8c108d-4349-11d2-91a4-00c04f7969e8), +odl, +dual, +oleautomation, +pointer_default(unique) +] +interface IXMLHttpRequest : IDispatch +{ + [id(1)] + HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl, + [in, optional] VARIANT varAsync, + [in, optional] VARIANT varUser, + [in, optional] VARIANT varPassword); + [id(2)] + HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue); + + [id(3)] + HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR *pbstrValue); + + [id(4)] + HRESULT getAllResponseHeaders([out, retval] BSTR *pbstrHeaders); + + [id(5)] + HRESULT send([in, optional] VARIANT varBody); + + [id(6)] + HRESULT abort(); + + [propget, id(7)] + HRESULT status([out, retval] long *plStatus); + + [propget, id(8)] + HRESULT statusText([out, retval] BSTR *bstrStatus); + + [propget, id(9)] + HRESULT responseXML([out, retval] IDispatch **ppBody); + + [propget, id(10)] + HRESULT responseText([out, retval] BSTR *pbstrBody); + + [propget, id(11)] + HRESULT responseBody([out, retval] VARIANT *pvarBody); + + [propget, id(12)] + HRESULT responseStream([out, retval] VARIANT *pvarBody); + + [propget, id(13)] + HRESULT readyState([out, retval] long *plState); + + [propput, id(14)] + HRESULT onreadystatechange([in] IDispatch *pReadyStateSink); +} + +[ +uuid(ed8c108e-4349-11d2-91a4-00c04f7969e8) +] +coclass XMLHTTPRequest +{ + [default] interface IXMLHttpRequest; +} diff --git a/reactos/include/psdk/xmldso.idl b/reactos/include/psdk/xmldso.idl new file mode 100644 index 00000000000..14f66a1377e --- /dev/null +++ b/reactos/include/psdk/xmldso.idl @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2005 Vijay Kiran Kamuju + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "wtypes.idl"; +import "ocidl.idl"; + +#include +#include + +interface IXMLDOMDocument; + +[ +local, +object, +odl, +dual, +oleautomation, +uuid(310afa62-0575-11d2-9ca9-0060b0ec3d39), +pointer_default(unique) +] +interface IXMLDSOControl : IDispatch +{ + [propget,id(DISPID_XMLDSO_DOCUMENT)] + HRESULT XMLDocument([out, retval] IXMLDOMDocument** ppDoc); + + [propput,id(DISPID_XMLDSO_DOCUMENT)] + HRESULT XMLDocument([in] IXMLDOMDocument* ppDoc); + + [propget,id(DISPID_XMLDSO_JAVADSOCOMPATIBLE)] + HRESULT JavaDSOCompatible([out, retval] BOOL* fJavaDSOCompatible); + + [propput,id(DISPID_XMLDSO_JAVADSOCOMPATIBLE)] + HRESULT JavaDSOCompatible([in] BOOL fJavaDSOCompatible); + + [propget, id(DISPID_READYSTATE)] + HRESULT readyState([out, retval] long *state); +} + +[ +uuid(550dda30-0541-11d2-9ca9-0060b0ec3d39) +] +coclass XMLDSOControl +{ + [default] interface IXMLDSOControl; +} diff --git a/reactos/include/reactos/wine/commctrl.h b/reactos/include/reactos/wine/commctrl.h deleted file mode 100644 index 25ddb233b3c..00000000000 --- a/reactos/include/reactos/wine/commctrl.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Compatibility header - * - * This header is wrapper to allow compilation of Wine DLLs under ReactOS - * build system. It contains definitions commonly refered to as Wineisms - * and definitions that are missing in w32api. - */ - -#include_next - -#ifndef __WINE_COMMCTRL_H -#define __WINE_COMMCTRL_H - -typedef LPFINDINFOA LPLVFINDINFOA; -typedef LPFINDINFOW LPLVFINDINFOW; - -#undef RB_GETBANDINFO -#define RB_GETBANDINFO (WM_USER+5) /* just for compatibility */ - -#define LVIS_ACTIVATING 0x0020 - -#define ListView_FindItemA(hwnd,nItem,plvfi) \ - (INT)SendMessageA((hwnd),LVM_FINDITEMA,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOA*)(plvfi)) -#define ListView_FindItemW(hwnd,nItem,plvfi) \ - (INT)SendMessageW((hwnd),LVM_FINDITEMW,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOW*)(plvfi)) -#define ListView_InsertColumnA(hwnd,iCol,pcol) \ - (INT)SendMessageA((hwnd),LVM_INSERTCOLUMNA,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNA *)(pcol)) -#define ListView_GetItemA(hwnd,pitem) \ - (BOOL)SendMessageA((hwnd),LVM_GETITEMA,0,(LPARAM)(LVITEMA *)(pitem)) -#define ListView_SetItemA(hwnd,pitem) \ - (INT)SendMessageA((hwnd),LVM_SETITEMA,0,(LPARAM)(const LVITEMA *)(pitem)) -#define ListView_InsertItemA(hwnd,pitem) \ - (INT)SendMessageA((hwnd),LVM_INSERTITEMA,0,(LPARAM)(const LVITEMA *)(pitem)) -#define ListView_EditLabelA(hwndLV, i) \ - (HWND)SendMessageA((hwndLV),LVM_EDITLABELA,(WPARAM)(int)(i), 0L) -#define TreeView_InsertItemW(hwnd,phdi) \ - (HTREEITEM)SendMessageW((hwnd), TVM_INSERTITEMW, 0, (LPARAM)(LPTVINSERTSTRUCTW)(phdi)) -#define Header_SetItemW(hwndHD,i,phdi) \ - (BOOL)SendMessageW((hwndHD),HDM_SETITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi)) -#define Header_GetItemW(hwndHD,i,phdi) \ - (BOOL)SendMessageW((hwndHD),HDM_GETITEMW,(WPARAM)(INT)(i),(LPARAM)(HDITEMW*)(phdi)) - -#define TBSTYLE_EX_UNDOC1 0x00000004 /* similar to TBSTYLE_WRAPABLE */ - -/* undocumented messages in Toolbar */ -#define TB_UNKWN45D (WM_USER+93) -#define TB_UNKWN45E (WM_USER+94) -#define TB_UNKWN460 (WM_USER+96) -#define TB_UNKWN462 (WM_USER+98) -#define TB_UNKWN463 (WM_USER+99) -#define TB_UNKWN464 (WM_USER+100) - -#define TBN_WRAPHOTITEM (TBN_FIRST-24) /* this is undocumented and the name is a guess */ - -#define RBHT_CHEVRON 0x0008 -#define RB_PUSHCHEVRON (WM_USER+43) - -#define HDM_SETBITMAPMARGIN (HDM_FIRST+20) -#define HDM_GETBITMAPMARGIN (HDM_FIRST+21) - -#define SB_SETBORDERS (WM_USER+5) - -#define FLATSB_CLASSA "flatsb_class32" -#if defined(__GNUC__) -# define FLATSB_CLASSW (const WCHAR []){ 'f','l','a','t','s','b','_', \ - 'c','l','a','s','s','3','2',0 } -#elif defined(_MSC_VER) -# define FLATSB_CLASSW L"flatsb_class32" -#else -static const WCHAR FLATSB_CLASSW[] = { 'f','l','a','t','s','b','_', - 'c','l','a','s','s','3','2',0 }; -#endif - -#define DRAGLISTMSGSTRINGA "commctrl_DragListMsg" -#if defined(__GNUC__) -# define DRAGLISTMSGSTRINGW (const WCHAR []){ 'c','o','m','m','c','t','r','l', \ - '_','D','r','a','g','L','i','s','t','M','s','g',0 } -#elif defined(_MSC_VER) -# define DRAGLISTMSGSTRINGW L"commctrl_DragListMsg" -#else -static const WCHAR DRAGLISTMSGSTRINGW[] = { 'c','o','m','m','c','t','r','l', \ - '_','D','r','a','g','L','i','s','t','M','s','g',0 }; -#endif - -/* these are undocumented and the names are guesses */ -typedef struct -{ - NMHDR hdr; - HWND hwndDialog; -} NMTBINITCUSTOMIZE; - -typedef struct -{ - NMHDR hdr; - INT idNew; - INT iDirection; /* left is -1, right is 1 */ - DWORD dwReason; /* HICF_* */ -} NMTBWRAPHOTITEM; - -#endif /* __WINE_COMMCTRL_H */ diff --git a/reactos/include/reactos/wine/commdlg.h b/reactos/include/reactos/wine/commdlg.h deleted file mode 100644 index 66d13638771..00000000000 --- a/reactos/include/reactos/wine/commdlg.h +++ /dev/null @@ -1,12 +0,0 @@ -/* $Id$ */ - -#define SAVE_DIALOG 1 -#define OPEN_DIALOG 2 - -#if (WINVER >= 0x0500) && !defined (__OBJC__) -#include -#endif - -#if !defined (_MSC_VER) -#include_next -#endif diff --git a/reactos/include/reactos/wine/debug.h b/reactos/include/reactos/wine/debug.h index f6175fc7f0e..6f4c93b98bd 100644 --- a/reactos/include/reactos/wine/debug.h +++ b/reactos/include/reactos/wine/debug.h @@ -37,13 +37,11 @@ struct _GUID; extern const char *wine_dbgstr_w( const WCHAR *s ); extern const char *wine_dbgstr_an( const char * s, int n ); extern const char *wine_dbgstr_wn( const wchar_t *s, int n ); -extern const char *wine_dbgstr_guid( const struct _GUID *id ); extern const char *wine_dbgstr_longlong( unsigned long long ll ); extern const char *wine_dbg_sprintf( const char *format, ... ); inline static const char *debugstr_an( const char * s, int n ) { return wine_dbgstr_an( s, n ); } inline static const char *debugstr_wn( const wchar_t *s, int n ) { return wine_dbgstr_wn( s, n ); } -inline static const char *debugstr_guid( const struct _GUID *id ) { return wine_dbgstr_guid(id); } inline static const char *debugstr_a( const char *s ) { return wine_dbgstr_an( s, 80 ); } inline static const char *debugstr_w( const wchar_t *s ) { return wine_dbgstr_wn( s, 80 ); } inline static const char *debugres_a( const char *s ) { return wine_dbgstr_an( s, 80 ); } @@ -67,6 +65,18 @@ static inline const char *wine_dbgstr_rect( const RECT *rect ) return wine_dbg_sprintf( "(%ld,%ld)-(%ld,%ld)", rect->left, rect->top, rect->right, rect->bottom ); } +static inline const char *wine_dbgstr_guid( const GUID *id ) +{ + if (!id) return "(null)"; + if (!((INT_PTR)id >> 16)) return wine_dbg_sprintf( "", (INT_PTR)id & 0xffff ); + return wine_dbg_sprintf( "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", + id->Data1, id->Data2, id->Data3, + id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3], + id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7] ); +} + +static inline const char *debugstr_guid( const struct _GUID *id ) { return wine_dbgstr_guid(id); } + #define TRACE DPRINT #define TRACE_(ch) DPRINT #ifdef NDEBUG diff --git a/reactos/include/reactos/wine/docobj.h b/reactos/include/reactos/wine/docobj.h deleted file mode 100644 index cd5d80ea955..00000000000 --- a/reactos/include/reactos/wine/docobj.h +++ /dev/null @@ -1,1139 +0,0 @@ -/*** Autogenerated by WIDL 0.1 from docobj.idl - Do not edit ***/ -#include -#include - -#ifndef __WIDL_DOCOBJ_H -#define __WIDL_DOCOBJ_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include -#include -#include -#ifndef __IOleDocumentView_FWD_DEFINED__ -#define __IOleDocumentView_FWD_DEFINED__ -typedef struct IOleDocumentView IOleDocumentView; -#endif - -#ifndef __IEnumOleDocumentViews_FWD_DEFINED__ -#define __IEnumOleDocumentViews_FWD_DEFINED__ -typedef struct IEnumOleDocumentViews IEnumOleDocumentViews; -#endif - -#ifndef __IOleDocument_FWD_DEFINED__ -#define __IOleDocument_FWD_DEFINED__ -typedef struct IOleDocument IOleDocument; -#endif - -typedef IOleDocument *LPOLEDOCUMENT; - -typedef enum { - DOCMISC_CANCREATEMULTIPLEVIEWS = 1, - DOCMISC_SUPPORTCOMPLEXRECTANGLES = 2, - DOCMISC_CANTOPENEDIT = 4, - DOCMISC_NOFILESUPPORT = 8 -} DOCMISC; - -/***************************************************************************** - * IOleDocument interface - */ -#ifndef __IOleDocument_INTERFACE_DEFINED__ -#define __IOleDocument_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IOleDocument, 0xb722bcc5, 0x4e68, 0x101b, 0xa2,0xbc, 0x00,0xaa,0x00,0x40,0x47,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IOleDocument : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE CreateView( - IOleInPlaceSite* pIPSite, - IStream* pstm, - DWORD dwReserved, - IOleDocumentView** ppView) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDocMiscStatus( - DWORD* pdwStatus) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumViews( - IEnumOleDocumentViews** ppEnum, - IOleDocumentView** ppView) = 0; - -}; -#else -typedef struct IOleDocumentVtbl IOleDocumentVtbl; -struct IOleDocument { - const IOleDocumentVtbl* lpVtbl; -}; -struct IOleDocumentVtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IOleDocument* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IOleDocument* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IOleDocument* This); - - /*** IOleDocument methods ***/ - HRESULT (STDMETHODCALLTYPE *CreateView)( - IOleDocument* This, - IOleInPlaceSite* pIPSite, - IStream* pstm, - DWORD dwReserved, - IOleDocumentView** ppView); - - HRESULT (STDMETHODCALLTYPE *GetDocMiscStatus)( - IOleDocument* This, - DWORD* pdwStatus); - - HRESULT (STDMETHODCALLTYPE *EnumViews)( - IOleDocument* This, - IEnumOleDocumentViews** ppEnum, - IOleDocumentView** ppView); - -}; - -/*** IUnknown methods ***/ -#define IOleDocument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOleDocument_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOleDocument_Release(p) (p)->lpVtbl->Release(p) -/*** IOleDocument methods ***/ -#define IOleDocument_CreateView(p,a,b,c,d) (p)->lpVtbl->CreateView(p,a,b,c,d) -#define IOleDocument_GetDocMiscStatus(p,a) (p)->lpVtbl->GetDocMiscStatus(p,a) -#define IOleDocument_EnumViews(p,a,b) (p)->lpVtbl->EnumViews(p,a,b) - -#endif - -#define IOleDocument_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IOleDocument methods ***/ \ - STDMETHOD_(HRESULT,CreateView)(THIS_ IOleInPlaceSite* pIPSite, IStream* pstm, DWORD dwReserved, IOleDocumentView** ppView) PURE; \ - STDMETHOD_(HRESULT,GetDocMiscStatus)(THIS_ DWORD* pdwStatus) PURE; \ - STDMETHOD_(HRESULT,EnumViews)(THIS_ IEnumOleDocumentViews** ppEnum, IOleDocumentView** ppView) PURE; - -HRESULT CALLBACK IOleDocument_CreateView_Proxy( - IOleDocument* This, - IOleInPlaceSite* pIPSite, - IStream* pstm, - DWORD dwReserved, - IOleDocumentView** ppView); -void __RPC_STUB IOleDocument_CreateView_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocument_GetDocMiscStatus_Proxy( - IOleDocument* This, - DWORD* pdwStatus); -void __RPC_STUB IOleDocument_GetDocMiscStatus_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocument_EnumViews_Proxy( - IOleDocument* This, - IEnumOleDocumentViews** ppEnum, - IOleDocumentView** ppView); -void __RPC_STUB IOleDocument_EnumViews_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IOleDocument_INTERFACE_DEFINED__ */ - -#ifndef __IOleDocumentSite_FWD_DEFINED__ -#define __IOleDocumentSite_FWD_DEFINED__ -typedef struct IOleDocumentSite IOleDocumentSite; -#endif - -typedef IOleDocumentSite *LPOLEDOCUMENTSITE; - -/***************************************************************************** - * IOleDocumentSite interface - */ -#ifndef __IOleDocumentSite_INTERFACE_DEFINED__ -#define __IOleDocumentSite_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IOleDocumentSite, 0xb722bcc7, 0x4e68, 0x101b, 0xa2,0xbc, 0x00,0xaa,0x00,0x40,0x47,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IOleDocumentSite : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE ActivateMe( - IOleDocumentView* pViewToActivate) = 0; - -}; -#else -typedef struct IOleDocumentSiteVtbl IOleDocumentSiteVtbl; -struct IOleDocumentSite { - const IOleDocumentSiteVtbl* lpVtbl; -}; -struct IOleDocumentSiteVtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IOleDocumentSite* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IOleDocumentSite* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IOleDocumentSite* This); - - /*** IOleDocumentSite methods ***/ - HRESULT (STDMETHODCALLTYPE *ActivateMe)( - IOleDocumentSite* This, - IOleDocumentView* pViewToActivate); - -}; - -/*** IUnknown methods ***/ -#define IOleDocumentSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOleDocumentSite_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOleDocumentSite_Release(p) (p)->lpVtbl->Release(p) -/*** IOleDocumentSite methods ***/ -#define IOleDocumentSite_ActivateMe(p,a) (p)->lpVtbl->ActivateMe(p,a) - -#endif - -#define IOleDocumentSite_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IOleDocumentSite methods ***/ \ - STDMETHOD_(HRESULT,ActivateMe)(THIS_ IOleDocumentView* pViewToActivate) PURE; - -HRESULT CALLBACK IOleDocumentSite_ActivateMe_Proxy( - IOleDocumentSite* This, - IOleDocumentView* pViewToActivate); -void __RPC_STUB IOleDocumentSite_ActivateMe_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IOleDocumentSite_INTERFACE_DEFINED__ */ - -typedef IOleDocumentView *LPOLEDOCUMENTVIEW; - -/***************************************************************************** - * IOleDocumentView interface - */ -#ifndef __IOleDocumentView_INTERFACE_DEFINED__ -#define __IOleDocumentView_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IOleDocumentView, 0xb722bcc6, 0x4e68, 0x101b, 0xa2,0xbc, 0x00,0xaa,0x00,0x40,0x47,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IOleDocumentView : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE SetInPlaceSite( - IOleInPlaceSite* pIPSite) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInPlaceSite( - IOleInPlaceSite** ppIPSite) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDocument( - IUnknown** ppunk) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRect( - LPRECT prcView) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRect( - LPRECT prcView) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRectComplex( - LPRECT prcView, - LPRECT prcHScroll, - LPRECT prcVScroll, - LPRECT prcSizeBox) = 0; - - virtual HRESULT STDMETHODCALLTYPE Show( - BOOL fShow) = 0; - - virtual HRESULT STDMETHODCALLTYPE UIActivate( - BOOL fUIActivate) = 0; - - virtual HRESULT STDMETHODCALLTYPE Open( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE CloseView( - DWORD dwReserved) = 0; - - virtual HRESULT STDMETHODCALLTYPE SaveViewState( - LPSTREAM pstm) = 0; - - virtual HRESULT STDMETHODCALLTYPE ApplyViewState( - LPSTREAM pstm) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - IOleInPlaceSite* pIPSiteNew, - IOleDocumentView** ppViewNew) = 0; - -}; -#else -typedef struct IOleDocumentViewVtbl IOleDocumentViewVtbl; -struct IOleDocumentView { - const IOleDocumentViewVtbl* lpVtbl; -}; -struct IOleDocumentViewVtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IOleDocumentView* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IOleDocumentView* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IOleDocumentView* This); - - /*** IOleDocumentView methods ***/ - HRESULT (STDMETHODCALLTYPE *SetInPlaceSite)( - IOleDocumentView* This, - IOleInPlaceSite* pIPSite); - - HRESULT (STDMETHODCALLTYPE *GetInPlaceSite)( - IOleDocumentView* This, - IOleInPlaceSite** ppIPSite); - - HRESULT (STDMETHODCALLTYPE *GetDocument)( - IOleDocumentView* This, - IUnknown** ppunk); - - HRESULT (STDMETHODCALLTYPE *SetRect)( - IOleDocumentView* This, - LPRECT prcView); - - HRESULT (STDMETHODCALLTYPE *GetRect)( - IOleDocumentView* This, - LPRECT prcView); - - HRESULT (STDMETHODCALLTYPE *SetRectComplex)( - IOleDocumentView* This, - LPRECT prcView, - LPRECT prcHScroll, - LPRECT prcVScroll, - LPRECT prcSizeBox); - - HRESULT (STDMETHODCALLTYPE *Show)( - IOleDocumentView* This, - BOOL fShow); - - HRESULT (STDMETHODCALLTYPE *UIActivate)( - IOleDocumentView* This, - BOOL fUIActivate); - - HRESULT (STDMETHODCALLTYPE *Open)( - IOleDocumentView* This); - - HRESULT (STDMETHODCALLTYPE *CloseView)( - IOleDocumentView* This, - DWORD dwReserved); - - HRESULT (STDMETHODCALLTYPE *SaveViewState)( - IOleDocumentView* This, - LPSTREAM pstm); - - HRESULT (STDMETHODCALLTYPE *ApplyViewState)( - IOleDocumentView* This, - LPSTREAM pstm); - - HRESULT (STDMETHODCALLTYPE *Clone)( - IOleDocumentView* This, - IOleInPlaceSite* pIPSiteNew, - IOleDocumentView** ppViewNew); - -}; - -/*** IUnknown methods ***/ -#define IOleDocumentView_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOleDocumentView_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOleDocumentView_Release(p) (p)->lpVtbl->Release(p) -/*** IOleDocumentView methods ***/ -#define IOleDocumentView_SetInPlaceSite(p,a) (p)->lpVtbl->SetInPlaceSite(p,a) -#define IOleDocumentView_GetInPlaceSite(p,a) (p)->lpVtbl->GetInPlaceSite(p,a) -#define IOleDocumentView_GetDocument(p,a) (p)->lpVtbl->GetDocument(p,a) -#define IOleDocumentView_SetRect(p,a) (p)->lpVtbl->SetRect(p,a) -#define IOleDocumentView_GetRect(p,a) (p)->lpVtbl->GetRect(p,a) -#define IOleDocumentView_SetRectComplex(p,a,b,c,d) (p)->lpVtbl->SetRectComplex(p,a,b,c,d) -#define IOleDocumentView_Show(p,a) (p)->lpVtbl->Show(p,a) -#define IOleDocumentView_UIActivate(p,a) (p)->lpVtbl->UIActivate(p,a) -#define IOleDocumentView_Open(p) (p)->lpVtbl->Open(p) -#define IOleDocumentView_CloseView(p,a) (p)->lpVtbl->CloseView(p,a) -#define IOleDocumentView_SaveViewState(p,a) (p)->lpVtbl->SaveViewState(p,a) -#define IOleDocumentView_ApplyViewState(p,a) (p)->lpVtbl->ApplyViewState(p,a) -#define IOleDocumentView_Clone(p,a,b) (p)->lpVtbl->Clone(p,a,b) - -#endif - -#define IOleDocumentView_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IOleDocumentView methods ***/ \ - STDMETHOD_(HRESULT,SetInPlaceSite)(THIS_ IOleInPlaceSite* pIPSite) PURE; \ - STDMETHOD_(HRESULT,GetInPlaceSite)(THIS_ IOleInPlaceSite** ppIPSite) PURE; \ - STDMETHOD_(HRESULT,GetDocument)(THIS_ IUnknown** ppunk) PURE; \ - STDMETHOD_(HRESULT,SetRect)(THIS_ LPRECT prcView) PURE; \ - STDMETHOD_(HRESULT,GetRect)(THIS_ LPRECT prcView) PURE; \ - STDMETHOD_(HRESULT,SetRectComplex)(THIS_ LPRECT prcView, LPRECT prcHScroll, LPRECT prcVScroll, LPRECT prcSizeBox) PURE; \ - STDMETHOD_(HRESULT,Show)(THIS_ BOOL fShow) PURE; \ - STDMETHOD_(HRESULT,UIActivate)(THIS_ BOOL fUIActivate) PURE; \ - STDMETHOD_(HRESULT,Open)(THIS) PURE; \ - STDMETHOD_(HRESULT,CloseView)(THIS_ DWORD dwReserved) PURE; \ - STDMETHOD_(HRESULT,SaveViewState)(THIS_ LPSTREAM pstm) PURE; \ - STDMETHOD_(HRESULT,ApplyViewState)(THIS_ LPSTREAM pstm) PURE; \ - STDMETHOD_(HRESULT,Clone)(THIS_ IOleInPlaceSite* pIPSiteNew, IOleDocumentView** ppViewNew) PURE; - -HRESULT CALLBACK IOleDocumentView_SetInPlaceSite_Proxy( - IOleDocumentView* This, - IOleInPlaceSite* pIPSite); -void __RPC_STUB IOleDocumentView_SetInPlaceSite_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_GetInPlaceSite_Proxy( - IOleDocumentView* This, - IOleInPlaceSite** ppIPSite); -void __RPC_STUB IOleDocumentView_GetInPlaceSite_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_GetDocument_Proxy( - IOleDocumentView* This, - IUnknown** ppunk); -void __RPC_STUB IOleDocumentView_GetDocument_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_SetRect_Proxy( - IOleDocumentView* This, - LPRECT prcView); -void __RPC_STUB IOleDocumentView_SetRect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_GetRect_Proxy( - IOleDocumentView* This, - LPRECT prcView); -void __RPC_STUB IOleDocumentView_GetRect_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_SetRectComplex_Proxy( - IOleDocumentView* This, - LPRECT prcView, - LPRECT prcHScroll, - LPRECT prcVScroll, - LPRECT prcSizeBox); -void __RPC_STUB IOleDocumentView_SetRectComplex_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_Show_Proxy( - IOleDocumentView* This, - BOOL fShow); -void __RPC_STUB IOleDocumentView_Show_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_UIActivate_Proxy( - IOleDocumentView* This, - BOOL fUIActivate); -void __RPC_STUB IOleDocumentView_UIActivate_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_Open_Proxy( - IOleDocumentView* This); -void __RPC_STUB IOleDocumentView_Open_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_CloseView_Proxy( - IOleDocumentView* This, - DWORD dwReserved); -void __RPC_STUB IOleDocumentView_CloseView_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_SaveViewState_Proxy( - IOleDocumentView* This, - LPSTREAM pstm); -void __RPC_STUB IOleDocumentView_SaveViewState_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_ApplyViewState_Proxy( - IOleDocumentView* This, - LPSTREAM pstm); -void __RPC_STUB IOleDocumentView_ApplyViewState_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleDocumentView_Clone_Proxy( - IOleDocumentView* This, - IOleInPlaceSite* pIPSiteNew, - IOleDocumentView** ppViewNew); -void __RPC_STUB IOleDocumentView_Clone_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IOleDocumentView_INTERFACE_DEFINED__ */ - -typedef IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS; - -/***************************************************************************** - * IEnumOleDocumentViews interface - */ -#ifndef __IEnumOleDocumentViews_INTERFACE_DEFINED__ -#define __IEnumOleDocumentViews_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IEnumOleDocumentViews, 0xb722bcc8, 0x4e68, 0x101b, 0xa2,0xbc, 0x00,0xaa,0x00,0x40,0x47,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IEnumOleDocumentViews : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Next( - ULONG cViews, - IOleDocumentView** rgpView, - ULONG* pcFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE Skip( - ULONG cViews) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Clone( - IEnumOleDocumentViews** ppEnum) = 0; - -}; -#else -typedef struct IEnumOleDocumentViewsVtbl IEnumOleDocumentViewsVtbl; -struct IEnumOleDocumentViews { - const IEnumOleDocumentViewsVtbl* lpVtbl; -}; -struct IEnumOleDocumentViewsVtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IEnumOleDocumentViews* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IEnumOleDocumentViews* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IEnumOleDocumentViews* This); - - /*** IEnumOleDocumentViews methods ***/ - HRESULT (STDMETHODCALLTYPE *Next)( - IEnumOleDocumentViews* This, - ULONG cViews, - IOleDocumentView** rgpView, - ULONG* pcFetched); - - HRESULT (STDMETHODCALLTYPE *Skip)( - IEnumOleDocumentViews* This, - ULONG cViews); - - HRESULT (STDMETHODCALLTYPE *Reset)( - IEnumOleDocumentViews* This); - - HRESULT (STDMETHODCALLTYPE *Clone)( - IEnumOleDocumentViews* This, - IEnumOleDocumentViews** ppEnum); - -}; - -/*** IUnknown methods ***/ -#define IEnumOleDocumentViews_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IEnumOleDocumentViews_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IEnumOleDocumentViews_Release(p) (p)->lpVtbl->Release(p) -/*** IEnumOleDocumentViews methods ***/ -#define IEnumOleDocumentViews_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) -#define IEnumOleDocumentViews_Skip(p,a) (p)->lpVtbl->Skip(p,a) -#define IEnumOleDocumentViews_Reset(p) (p)->lpVtbl->Reset(p) -#define IEnumOleDocumentViews_Clone(p,a) (p)->lpVtbl->Clone(p,a) - -#endif - -#define IEnumOleDocumentViews_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IEnumOleDocumentViews methods ***/ \ - STDMETHOD_(HRESULT,Next)(THIS_ ULONG cViews, IOleDocumentView** rgpView, ULONG* pcFetched) PURE; \ - STDMETHOD_(HRESULT,Skip)(THIS_ ULONG cViews) PURE; \ - STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ - STDMETHOD_(HRESULT,Clone)(THIS_ IEnumOleDocumentViews** ppEnum) PURE; - -HRESULT CALLBACK IEnumOleDocumentViews_RemoteNext_Proxy( - IEnumOleDocumentViews* This, - ULONG cViews, - IOleDocumentView** rgpView, - ULONG* pcFetched); -void __RPC_STUB IEnumOleDocumentViews_RemoteNext_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumOleDocumentViews_Next_Proxy( - IEnumOleDocumentViews* This, - ULONG cViews, - IOleDocumentView** rgpView, - ULONG* pcFetched); -HRESULT __RPC_STUB IEnumOleDocumentViews_Next_Stub( - IEnumOleDocumentViews* This, - ULONG cViews, - IOleDocumentView** rgpView, - ULONG* pcFetched); -HRESULT CALLBACK IEnumOleDocumentViews_Skip_Proxy( - IEnumOleDocumentViews* This, - ULONG cViews); -void __RPC_STUB IEnumOleDocumentViews_Skip_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumOleDocumentViews_Reset_Proxy( - IEnumOleDocumentViews* This); -void __RPC_STUB IEnumOleDocumentViews_Reset_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IEnumOleDocumentViews_Clone_Proxy( - IEnumOleDocumentViews* This, - IEnumOleDocumentViews** ppEnum); -void __RPC_STUB IEnumOleDocumentViews_Clone_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IEnumOleDocumentViews_INTERFACE_DEFINED__ */ - -#ifndef __IOleCommandTarget_FWD_DEFINED__ -#define __IOleCommandTarget_FWD_DEFINED__ -typedef struct IOleCommandTarget IOleCommandTarget; -#endif - -typedef IOleCommandTarget *LPOLECOMMANDTARGET; - -typedef enum { - OLECMDF_SUPPORTED = 0x1, - OLECMDF_ENABLED = 0x2, - OLECMDF_LATCHED = 0x4, - OLECMDF_NINCHED = 0x8, - OLECMDF_INVISIBLE = 0x10, - OLECMDF_DEFHIDEONCTXTMENU = 0x20 -} OLECMDF; - -typedef struct _tagOLECMD { - ULONG cmdID; - DWORD cmdf; -} OLECMD; - -typedef struct _tagOLECMDTEXT { - DWORD cmdtextf; - ULONG cwActual; - ULONG cwBuf; - WCHAR rgwz[1]; -} OLECMDTEXT; - -typedef enum { - OLECMDTEXTF_NONE = 0, - OLECMDTEXTF_NAME = 1, - OLECMDTEXTF_STATUS = 2 -} OLECMDTEXTF; - -typedef enum { - OLECMDEXECOPT_DODEFAULT = 0, - OLECMDEXECOPT_PROMPTUSER = 1, - OLECMDEXECOPT_DONTPROMPTUSER = 2, - OLECMDEXECOPT_SHOWHELP = 3 -} OLECMDEXECOPT; - -typedef enum OLECMDID { - OLECMDID_OPEN = 1, - OLECMDID_NEW = 2, - OLECMDID_SAVE = 3, - OLECMDID_SAVEAS = 4, - OLECMDID_SAVECOPYAS = 5, - OLECMDID_PRINT = 6, - OLECMDID_PRINTPREVIEW = 7, - OLECMDID_PAGESETUP = 8, - OLECMDID_SPELL = 9, - OLECMDID_PROPERTIES = 10, - OLECMDID_CUT = 11, - OLECMDID_COPY = 12, - OLECMDID_PASTE = 13, - OLECMDID_PASTESPECIAL = 14, - OLECMDID_UNDO = 15, - OLECMDID_REDO = 16, - OLECMDID_SELECTALL = 17, - OLECMDID_CLEARSELECTION = 18, - OLECMDID_ZOOM = 19, - OLECMDID_GETZOOMRANGE = 20, - OLECMDID_UPDATECOMMANDS = 21, - OLECMDID_REFRESH = 22, - OLECMDID_STOP = 23, - OLECMDID_HIDETOOLBARS = 24, - OLECMDID_SETPROGRESSMAX = 25, - OLECMDID_SETPROGRESSPOS = 26, - OLECMDID_SETPROGRESSTEXT = 27, - OLECMDID_SETTITLE = 28, - OLECMDID_SETDOWNLOADSTATE = 29, - OLECMDID_STOPDOWNLOAD = 30, - OLECMDID_ONTOOLBARACTIVATED = 31, - OLECMDID_FIND = 32, - OLECMDID_DELETE = 33, - OLECMDID_HTTPEQUIV = 34, - OLECMDID_HTTPEQUIV_DONE = 35, - OLECMDID_ENABLE_INTERACTION = 36, - OLECMDID_ONUNLOAD = 37, - OLECMDID_PROPERTYBAG2 = 38, - OLECMDID_PREREFRESH = 39, - OLECMDID_SHOWSCRIPTERROR = 40, - OLECMDID_SHOWMESSAGE = 41, - OLECMDID_SHOWFIND = 42, - OLECMDID_SHOWPAGESETUP = 43, - OLECMDID_SHOWPRINT = 44, - OLECMDID_CLOSE = 45, - OLECMDID_ALLOWUILESSSAVEAS = 46, - OLECMDID_DONTDOWNLOADCSS = 47, - OLECMDID_UPDATEPAGESTATUS = 48, - OLECMDID_PRINT2 = 49, - OLECMDID_PRINTPREVIEW2 = 50, - OLECMDID_SETPRINTTEMPLATE = 51, - OLECMDID_GETPRINTTEMPLATE = 52 -} OLECMDID; - -/***************************************************************************** - * IOleCommandTarget interface - */ -#ifndef __IOleCommandTarget_INTERFACE_DEFINED__ -#define __IOleCommandTarget_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IOleCommandTarget, 0xb722bccb, 0x4e68, 0x101b, 0xa2,0xbc, 0x00,0xaa,0x00,0x40,0x47,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IOleCommandTarget : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE QueryStatus( - const GUID* pguidCmdGroup, - ULONG cCmds, - OLECMD prgCmds[], - OLECMDTEXT* pCmdText) = 0; - - virtual HRESULT STDMETHODCALLTYPE Exec( - const GUID* pguidCmdGroup, - DWORD nCmdID, - DWORD nCmdexecopt, - VARIANT* pvaIn, - VARIANT* pvaOut) = 0; - -}; -#else -typedef struct IOleCommandTargetVtbl IOleCommandTargetVtbl; -struct IOleCommandTarget { - const IOleCommandTargetVtbl* lpVtbl; -}; -struct IOleCommandTargetVtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IOleCommandTarget* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IOleCommandTarget* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IOleCommandTarget* This); - - /*** IOleCommandTarget methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryStatus)( - IOleCommandTarget* This, - const GUID* pguidCmdGroup, - ULONG cCmds, - OLECMD prgCmds[], - OLECMDTEXT* pCmdText); - - HRESULT (STDMETHODCALLTYPE *Exec)( - IOleCommandTarget* This, - const GUID* pguidCmdGroup, - DWORD nCmdID, - DWORD nCmdexecopt, - VARIANT* pvaIn, - VARIANT* pvaOut); - -}; - -/*** IUnknown methods ***/ -#define IOleCommandTarget_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IOleCommandTarget_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IOleCommandTarget_Release(p) (p)->lpVtbl->Release(p) -/*** IOleCommandTarget methods ***/ -#define IOleCommandTarget_QueryStatus(p,a,b,c,d) (p)->lpVtbl->QueryStatus(p,a,b,c,d) -#define IOleCommandTarget_Exec(p,a,b,c,d,e) (p)->lpVtbl->Exec(p,a,b,c,d,e) - -#endif - -#define IOleCommandTarget_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IOleCommandTarget methods ***/ \ - STDMETHOD_(HRESULT,QueryStatus)(THIS_ const GUID* pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT* pCmdText) PURE; \ - STDMETHOD_(HRESULT,Exec)(THIS_ const GUID* pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut) PURE; - -HRESULT CALLBACK IOleCommandTarget_QueryStatus_Proxy( - IOleCommandTarget* This, - const GUID* pguidCmdGroup, - ULONG cCmds, - OLECMD prgCmds[], - OLECMDTEXT* pCmdText); -void __RPC_STUB IOleCommandTarget_QueryStatus_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IOleCommandTarget_Exec_Proxy( - IOleCommandTarget* This, - const GUID* pguidCmdGroup, - DWORD nCmdID, - DWORD nCmdexecopt, - VARIANT* pvaIn, - VARIANT* pvaOut); -void __RPC_STUB IOleCommandTarget_Exec_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IOleCommandTarget_INTERFACE_DEFINED__ */ - -#ifndef __IContinueCallback_FWD_DEFINED__ -#define __IContinueCallback_FWD_DEFINED__ -typedef struct IContinueCallback IContinueCallback; -#endif - -typedef IContinueCallback *LPCONTINUECALLBACK; - -/***************************************************************************** - * IContinueCallback interface - */ -#ifndef __IContinueCallback_INTERFACE_DEFINED__ -#define __IContinueCallback_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IContinueCallback, 0xb722bcca, 0x4e68, 0x101b, 0xa2,0xbc, 0x00,0xaa,0x00,0x40,0x47,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IContinueCallback : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE FContinue( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE FContinuePrinting( - LONG nCntPrinted, - LONG nCurPage, - WCHAR* pwszPrintStatus) = 0; - -}; -#else -typedef struct IContinueCallbackVtbl IContinueCallbackVtbl; -struct IContinueCallback { - const IContinueCallbackVtbl* lpVtbl; -}; -struct IContinueCallbackVtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IContinueCallback* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IContinueCallback* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IContinueCallback* This); - - /*** IContinueCallback methods ***/ - HRESULT (STDMETHODCALLTYPE *FContinue)( - IContinueCallback* This); - - HRESULT (STDMETHODCALLTYPE *FContinuePrinting)( - IContinueCallback* This, - LONG nCntPrinted, - LONG nCurPage, - WCHAR* pwszPrintStatus); - -}; - -/*** IUnknown methods ***/ -#define IContinueCallback_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IContinueCallback_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IContinueCallback_Release(p) (p)->lpVtbl->Release(p) -/*** IContinueCallback methods ***/ -#define IContinueCallback_FContinue(p) (p)->lpVtbl->FContinue(p) -#define IContinueCallback_FContinuePrinting(p,a,b,c) (p)->lpVtbl->FContinuePrinting(p,a,b,c) - -#endif - -#define IContinueCallback_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IContinueCallback methods ***/ \ - STDMETHOD_(HRESULT,FContinue)(THIS) PURE; \ - STDMETHOD_(HRESULT,FContinuePrinting)(THIS_ LONG nCntPrinted, LONG nCurPage, WCHAR* pwszPrintStatus) PURE; - -HRESULT CALLBACK IContinueCallback_FContinue_Proxy( - IContinueCallback* This); -void __RPC_STUB IContinueCallback_FContinue_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IContinueCallback_FContinuePrinting_Proxy( - IContinueCallback* This, - LONG nCntPrinted, - LONG nCurPage, - WCHAR* pwszPrintStatus); -void __RPC_STUB IContinueCallback_FContinuePrinting_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IContinueCallback_INTERFACE_DEFINED__ */ - -#ifndef __IPrint_FWD_DEFINED__ -#define __IPrint_FWD_DEFINED__ -typedef struct IPrint IPrint; -#endif - -typedef IPrint *LPPRINT; - -typedef enum { - PRINTFLAG_MAYBOTHERUSER = 1, - PRINTFLAG_PROMPTUSER = 2, - PRINTFLAG_USERMAYCHANGEPRINTER = 4, - PRINTFLAG_RECOMPOSETODEVICE = 8, - PRINTFLAG_DONTACTUALLYPRINT = 16, - PRINTFLAG_FORCEPROPERTIES = 32, - PRINTFLAG_PRINTTOFILE = 64 -} PRINTFLAG; - -typedef struct tagPAGERANGE { - LONG nFromPage; - LONG nToPage; -} PAGERANGE; - -typedef struct tagPAGESET { - ULONG cbStruct; - BOOL fOddPages; - BOOL fEvenPages; - ULONG cPageRange; - PAGERANGE rgPages[1]; -} PAGESET; - -/***************************************************************************** - * IPrint interface - */ -#ifndef __IPrint_INTERFACE_DEFINED__ -#define __IPrint_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IPrint, 0xb722bcc9, 0x4e68, 0x101b, 0xa2,0xbc, 0x00,0xaa,0x00,0x40,0x47,0x70); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IPrint : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE SetInitialPageNum( - LONG nFirstPage) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPageInfo( - LONG* pnFirstPage, - LONG* pcPages) = 0; - - virtual HRESULT STDMETHODCALLTYPE Print( - DWORD grfFlags, - DVTARGETDEVICE** pptd, - PAGESET** ppPageSet, - STGMEDIUM* pstgmOptions, - IContinueCallback* pcallback, - LONG nFirstPage, - LONG* pcPagesPrinted, - LONG* pnLastPage) = 0; - -}; -#else -typedef struct IPrintVtbl IPrintVtbl; -struct IPrint { - const IPrintVtbl* lpVtbl; -}; -struct IPrintVtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IPrint* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IPrint* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IPrint* This); - - /*** IPrint methods ***/ - HRESULT (STDMETHODCALLTYPE *SetInitialPageNum)( - IPrint* This, - LONG nFirstPage); - - HRESULT (STDMETHODCALLTYPE *GetPageInfo)( - IPrint* This, - LONG* pnFirstPage, - LONG* pcPages); - - HRESULT (STDMETHODCALLTYPE *Print)( - IPrint* This, - DWORD grfFlags, - DVTARGETDEVICE** pptd, - PAGESET** ppPageSet, - STGMEDIUM* pstgmOptions, - IContinueCallback* pcallback, - LONG nFirstPage, - LONG* pcPagesPrinted, - LONG* pnLastPage); - -}; - -/*** IUnknown methods ***/ -#define IPrint_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPrint_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPrint_Release(p) (p)->lpVtbl->Release(p) -/*** IPrint methods ***/ -#define IPrint_SetInitialPageNum(p,a) (p)->lpVtbl->SetInitialPageNum(p,a) -#define IPrint_GetPageInfo(p,a,b) (p)->lpVtbl->GetPageInfo(p,a,b) -#define IPrint_Print(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Print(p,a,b,c,d,e,f,g,h) - -#endif - -#define IPrint_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IPrint methods ***/ \ - STDMETHOD_(HRESULT,SetInitialPageNum)(THIS_ LONG nFirstPage) PURE; \ - STDMETHOD_(HRESULT,GetPageInfo)(THIS_ LONG* pnFirstPage, LONG* pcPages) PURE; \ - STDMETHOD_(HRESULT,Print)(THIS_ DWORD grfFlags, DVTARGETDEVICE** pptd, PAGESET** ppPageSet, STGMEDIUM* pstgmOptions, IContinueCallback* pcallback, LONG nFirstPage, LONG* pcPagesPrinted, LONG* pnLastPage) PURE; - -HRESULT CALLBACK IPrint_SetInitialPageNum_Proxy( - IPrint* This, - LONG nFirstPage); -void __RPC_STUB IPrint_SetInitialPageNum_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPrint_GetPageInfo_Proxy( - IPrint* This, - LONG* pnFirstPage, - LONG* pcPages); -void __RPC_STUB IPrint_GetPageInfo_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPrint_RemotePrint_Proxy( - IPrint* This, - DWORD grfFlags, - DVTARGETDEVICE** pptd, - PAGESET** pppageset, - RemSTGMEDIUM* pstgmOptions, - IContinueCallback* pcallback, - LONG nFirstPage, - LONG* pcPagesPrinted, - LONG* pnLastPage); -void __RPC_STUB IPrint_RemotePrint_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IPrint_Print_Proxy( - IPrint* This, - DWORD grfFlags, - DVTARGETDEVICE** pptd, - PAGESET** ppPageSet, - STGMEDIUM* pstgmOptions, - IContinueCallback* pcallback, - LONG nFirstPage, - LONG* pcPagesPrinted, - LONG* pnLastPage); -HRESULT __RPC_STUB IPrint_Print_Stub( - IPrint* This, - DWORD grfFlags, - DVTARGETDEVICE** pptd, - PAGESET** pppageset, - RemSTGMEDIUM* pstgmOptions, - IContinueCallback* pcallback, - LONG nFirstPage, - LONG* pcPagesPrinted, - LONG* pnLastPage); - -#endif /* __IPrint_INTERFACE_DEFINED__ */ - -#define OLECMDERR_E_FIRST (OLE_E_LAST+1) -#define OLECMDERR_E_NOTSUPPORTED (OLECMDERR_E_FIRST) -#define OLECMDERR_E_DISABLED (OLECMDERR_E_FIRST+1) -#define OLECMDERR_E_NOHELP (OLECMDERR_E_FIRST+2) -#define OLECMDERR_E_CANCELED (OLECMDERR_E_FIRST+3) -#define OLECMDERR_E_UNKNOWNGROUP (OLECMDERR_E_FIRST+4) -#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST -#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED -#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED -#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP -#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED -#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP -#define LPMSODOCUMENT LPOLEDOCUMENT -#define LPMSODOCUMENTSITE LPOLEDOCUMENTSITE -#define LPMSOVIEW LPOLEDOCUMENTVIEW -#define LPENUMMSOVIEW LPENUMOLEDOCUMENTVIEWS -#define LPMSOCOMMANDTARGET LPOLECOMMANDTARGET -#define IID_IMsoDocument IID_IOleDocument -#define IID_IMsoDocumentSite IID_IOleDocumentSite -#define IID_IMsoView IID_IOleDocumentView -#define IID_IEnumMsoView IID_IEnumOleDocumentViews -#define IID_IMsoCommandTarget IID_IOleCommandTarget -#ifdef __cplusplus -} -#endif -#endif /* __WIDL_DOCOBJ_H */ diff --git a/reactos/include/reactos/wine/exdisp.h b/reactos/include/reactos/wine/exdisp.h deleted file mode 100644 index 302bf5a0c4f..00000000000 --- a/reactos/include/reactos/wine/exdisp.h +++ /dev/null @@ -1,2221 +0,0 @@ -/*** Autogenerated by WIDL 0.1 from exdisp.idl - Do not edit ***/ -#include -#include - -#ifndef __WIDL_EXDISP_H -#define __WIDL_EXDISP_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#ifndef __IWebBrowser_FWD_DEFINED__ -#define __IWebBrowser_FWD_DEFINED__ -typedef struct IWebBrowser IWebBrowser; -#endif - -typedef enum BrowserNavConstants { - navOpenInNewWindow = 0x1, - navNoHistory = 0x2, - navNoReadFromCache = 0x4, - navNoWriteToCache = 0x8, - navAllowAutosearch = 0x10, - navBrowserBar = 0x20, - navHyperlink = 0x40, - navEnforceRestricted = 0x80 -} BrowserNavConstants; -typedef enum RefreshConstants { - REFRESH_NORMAL = 0, - REFRESH_IFEXPIRED = 1, - REFRESH_COMPLETELY = 3 -} RefreshConstants; -/***************************************************************************** - * IWebBrowser interface - */ -#ifndef __IWebBrowser_INTERFACE_DEFINED__ -#define __IWebBrowser_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IWebBrowser, 0xeab22ac1, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IWebBrowser : public IDispatch -{ - virtual HRESULT STDMETHODCALLTYPE GoBack( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE GoForward( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE GoHome( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE GoSearch( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Navigate( - BSTR URL, - VARIANT* Flags, - VARIANT* TargetFrameName, - VARIANT* PostData, - VARIANT* Headers) = 0; - - virtual HRESULT STDMETHODCALLTYPE Refresh( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Refresh2( - VARIANT* Level) = 0; - - virtual HRESULT STDMETHODCALLTYPE Stop( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Application( - IDispatch** ppDisp) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Parent( - IDispatch** ppDisp) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Container( - IDispatch** ppDisp) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Document( - IDispatch** ppDisp) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_TopLevelContainer( - VARIANT_BOOL* pBool) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Type( - BSTR* Type) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Left( - long* pl) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_Left( - long Left) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Top( - long* pl) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_Top( - long Top) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Width( - long* pl) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_Width( - long Width) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Height( - long* pl) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_Height( - long Height) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_LocationName( - BSTR* LocationName) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_LocationURL( - BSTR* LocationURL) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Busy( - VARIANT_BOOL* pBool) = 0; - -}; -#else -typedef struct IWebBrowserVtbl IWebBrowserVtbl; -struct IWebBrowser { - const IWebBrowserVtbl* lpVtbl; -}; -struct IWebBrowserVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IWebBrowser* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IWebBrowser* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IWebBrowser* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - IWebBrowser* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - IWebBrowser* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - IWebBrowser* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - IWebBrowser* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** IWebBrowser methods ***/ - HRESULT (STDMETHODCALLTYPE *GoBack)( - IWebBrowser* This); - - HRESULT (STDMETHODCALLTYPE *GoForward)( - IWebBrowser* This); - - HRESULT (STDMETHODCALLTYPE *GoHome)( - IWebBrowser* This); - - HRESULT (STDMETHODCALLTYPE *GoSearch)( - IWebBrowser* This); - - HRESULT (STDMETHODCALLTYPE *Navigate)( - IWebBrowser* This, - BSTR URL, - VARIANT* Flags, - VARIANT* TargetFrameName, - VARIANT* PostData, - VARIANT* Headers); - - HRESULT (STDMETHODCALLTYPE *Refresh)( - IWebBrowser* This); - - HRESULT (STDMETHODCALLTYPE *Refresh2)( - IWebBrowser* This, - VARIANT* Level); - - HRESULT (STDMETHODCALLTYPE *Stop)( - IWebBrowser* This); - - HRESULT (STDMETHODCALLTYPE *get_Application)( - IWebBrowser* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_Parent)( - IWebBrowser* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_Container)( - IWebBrowser* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_Document)( - IWebBrowser* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_TopLevelContainer)( - IWebBrowser* This, - VARIANT_BOOL* pBool); - - HRESULT (STDMETHODCALLTYPE *get_Type)( - IWebBrowser* This, - BSTR* Type); - - HRESULT (STDMETHODCALLTYPE *get_Left)( - IWebBrowser* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Left)( - IWebBrowser* This, - long Left); - - HRESULT (STDMETHODCALLTYPE *get_Top)( - IWebBrowser* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Top)( - IWebBrowser* This, - long Top); - - HRESULT (STDMETHODCALLTYPE *get_Width)( - IWebBrowser* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Width)( - IWebBrowser* This, - long Width); - - HRESULT (STDMETHODCALLTYPE *get_Height)( - IWebBrowser* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Height)( - IWebBrowser* This, - long Height); - - HRESULT (STDMETHODCALLTYPE *get_LocationName)( - IWebBrowser* This, - BSTR* LocationName); - - HRESULT (STDMETHODCALLTYPE *get_LocationURL)( - IWebBrowser* This, - BSTR* LocationURL); - - HRESULT (STDMETHODCALLTYPE *get_Busy)( - IWebBrowser* This, - VARIANT_BOOL* pBool); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IWebBrowser_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IWebBrowser_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IWebBrowser_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define IWebBrowser_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define IWebBrowser_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define IWebBrowser_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define IWebBrowser_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** IWebBrowser methods ***/ -#define IWebBrowser_GoBack(p) (p)->lpVtbl->GoBack(p) -#define IWebBrowser_GoForward(p) (p)->lpVtbl->GoForward(p) -#define IWebBrowser_GoHome(p) (p)->lpVtbl->GoHome(p) -#define IWebBrowser_GoSearch(p) (p)->lpVtbl->GoSearch(p) -#define IWebBrowser_Navigate(p,a,b,c,d,e) (p)->lpVtbl->Navigate(p,a,b,c,d,e) -#define IWebBrowser_Refresh(p) (p)->lpVtbl->Refresh(p) -#define IWebBrowser_Refresh2(p,a) (p)->lpVtbl->Refresh2(p,a) -#define IWebBrowser_Stop(p) (p)->lpVtbl->Stop(p) -#define IWebBrowser_get_Application(p,a) (p)->lpVtbl->get_Application(p,a) -#define IWebBrowser_get_Parent(p,a) (p)->lpVtbl->get_Parent(p,a) -#define IWebBrowser_get_Container(p,a) (p)->lpVtbl->get_Container(p,a) -#define IWebBrowser_get_Document(p,a) (p)->lpVtbl->get_Document(p,a) -#define IWebBrowser_get_TopLevelContainer(p,a) (p)->lpVtbl->get_TopLevelContainer(p,a) -#define IWebBrowser_get_Type(p,a) (p)->lpVtbl->get_Type(p,a) -#define IWebBrowser_get_Left(p,a) (p)->lpVtbl->get_Left(p,a) -#define IWebBrowser_put_Left(p,a) (p)->lpVtbl->put_Left(p,a) -#define IWebBrowser_get_Top(p,a) (p)->lpVtbl->get_Top(p,a) -#define IWebBrowser_put_Top(p,a) (p)->lpVtbl->put_Top(p,a) -#define IWebBrowser_get_Width(p,a) (p)->lpVtbl->get_Width(p,a) -#define IWebBrowser_put_Width(p,a) (p)->lpVtbl->put_Width(p,a) -#define IWebBrowser_get_Height(p,a) (p)->lpVtbl->get_Height(p,a) -#define IWebBrowser_put_Height(p,a) (p)->lpVtbl->put_Height(p,a) -#define IWebBrowser_get_LocationName(p,a) (p)->lpVtbl->get_LocationName(p,a) -#define IWebBrowser_get_LocationURL(p,a) (p)->lpVtbl->get_LocationURL(p,a) -#define IWebBrowser_get_Busy(p,a) (p)->lpVtbl->get_Busy(p,a) -#endif - -#endif - -HRESULT CALLBACK IWebBrowser_GoBack_Proxy( - IWebBrowser* This); -void __RPC_STUB IWebBrowser_GoBack_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_GoForward_Proxy( - IWebBrowser* This); -void __RPC_STUB IWebBrowser_GoForward_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_GoHome_Proxy( - IWebBrowser* This); -void __RPC_STUB IWebBrowser_GoHome_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_GoSearch_Proxy( - IWebBrowser* This); -void __RPC_STUB IWebBrowser_GoSearch_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_Navigate_Proxy( - IWebBrowser* This, - BSTR URL, - VARIANT* Flags, - VARIANT* TargetFrameName, - VARIANT* PostData, - VARIANT* Headers); -void __RPC_STUB IWebBrowser_Navigate_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_Refresh_Proxy( - IWebBrowser* This); -void __RPC_STUB IWebBrowser_Refresh_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_Refresh2_Proxy( - IWebBrowser* This, - VARIANT* Level); -void __RPC_STUB IWebBrowser_Refresh2_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_Stop_Proxy( - IWebBrowser* This); -void __RPC_STUB IWebBrowser_Stop_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Application_Proxy( - IWebBrowser* This, - IDispatch** ppDisp); -void __RPC_STUB IWebBrowser_get_Application_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Parent_Proxy( - IWebBrowser* This, - IDispatch** ppDisp); -void __RPC_STUB IWebBrowser_get_Parent_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Container_Proxy( - IWebBrowser* This, - IDispatch** ppDisp); -void __RPC_STUB IWebBrowser_get_Container_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Document_Proxy( - IWebBrowser* This, - IDispatch** ppDisp); -void __RPC_STUB IWebBrowser_get_Document_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_TopLevelContainer_Proxy( - IWebBrowser* This, - VARIANT_BOOL* pBool); -void __RPC_STUB IWebBrowser_get_TopLevelContainer_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Type_Proxy( - IWebBrowser* This, - BSTR* Type); -void __RPC_STUB IWebBrowser_get_Type_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Left_Proxy( - IWebBrowser* This, - long* pl); -void __RPC_STUB IWebBrowser_get_Left_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_put_Left_Proxy( - IWebBrowser* This, - long Left); -void __RPC_STUB IWebBrowser_put_Left_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Top_Proxy( - IWebBrowser* This, - long* pl); -void __RPC_STUB IWebBrowser_get_Top_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_put_Top_Proxy( - IWebBrowser* This, - long Top); -void __RPC_STUB IWebBrowser_put_Top_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Width_Proxy( - IWebBrowser* This, - long* pl); -void __RPC_STUB IWebBrowser_get_Width_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_put_Width_Proxy( - IWebBrowser* This, - long Width); -void __RPC_STUB IWebBrowser_put_Width_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Height_Proxy( - IWebBrowser* This, - long* pl); -void __RPC_STUB IWebBrowser_get_Height_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_put_Height_Proxy( - IWebBrowser* This, - long Height); -void __RPC_STUB IWebBrowser_put_Height_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_LocationName_Proxy( - IWebBrowser* This, - BSTR* LocationName); -void __RPC_STUB IWebBrowser_get_LocationName_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_LocationURL_Proxy( - IWebBrowser* This, - BSTR* LocationURL); -void __RPC_STUB IWebBrowser_get_LocationURL_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser_get_Busy_Proxy( - IWebBrowser* This, - VARIANT_BOOL* pBool); -void __RPC_STUB IWebBrowser_get_Busy_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IWebBrowser_INTERFACE_DEFINED__ */ - -#ifndef __IWebBrowserApp_FWD_DEFINED__ -#define __IWebBrowserApp_FWD_DEFINED__ -typedef struct IWebBrowserApp IWebBrowserApp; -#endif - -/***************************************************************************** - * IWebBrowserApp interface - */ -#ifndef __IWebBrowserApp_INTERFACE_DEFINED__ -#define __IWebBrowserApp_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IWebBrowserApp, 0x0002df05, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IWebBrowserApp : public IWebBrowser -{ - virtual HRESULT STDMETHODCALLTYPE Quit( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE ClientToWindow( - int* pcx, - int* pcy) = 0; - - virtual HRESULT STDMETHODCALLTYPE PutProperty( - BSTR szProperty, - VARIANT vtValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetProperty( - BSTR szProperty, - VARIANT* pvtValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Name( - BSTR* Name) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_HWND( - long* pHWND) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_FullName( - BSTR* FullName) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Path( - BSTR* Path) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Visible( - VARIANT_BOOL* pBool) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_Visible( - VARIANT_BOOL Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_StatusBar( - VARIANT_BOOL* pBool) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_StatusBar( - VARIANT_BOOL Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_StatusText( - BSTR* StatusText) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_StatusText( - BSTR StatusText) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_ToolBar( - int* Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_ToolBar( - int Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_MenuBar( - VARIANT_BOOL* Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_MenuBar( - VARIANT_BOOL Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_FullScreen( - VARIANT_BOOL* pbFullScreen) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_FullScreen( - VARIANT_BOOL bFullScreen) = 0; - -}; -#else -typedef struct IWebBrowserAppVtbl IWebBrowserAppVtbl; -struct IWebBrowserApp { - const IWebBrowserAppVtbl* lpVtbl; -}; -struct IWebBrowserAppVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IWebBrowserApp* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IWebBrowserApp* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IWebBrowserApp* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - IWebBrowserApp* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - IWebBrowserApp* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - IWebBrowserApp* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - IWebBrowserApp* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** IWebBrowser methods ***/ - HRESULT (STDMETHODCALLTYPE *GoBack)( - IWebBrowserApp* This); - - HRESULT (STDMETHODCALLTYPE *GoForward)( - IWebBrowserApp* This); - - HRESULT (STDMETHODCALLTYPE *GoHome)( - IWebBrowserApp* This); - - HRESULT (STDMETHODCALLTYPE *GoSearch)( - IWebBrowserApp* This); - - HRESULT (STDMETHODCALLTYPE *Navigate)( - IWebBrowserApp* This, - BSTR URL, - VARIANT* Flags, - VARIANT* TargetFrameName, - VARIANT* PostData, - VARIANT* Headers); - - HRESULT (STDMETHODCALLTYPE *Refresh)( - IWebBrowserApp* This); - - HRESULT (STDMETHODCALLTYPE *Refresh2)( - IWebBrowserApp* This, - VARIANT* Level); - - HRESULT (STDMETHODCALLTYPE *Stop)( - IWebBrowserApp* This); - - HRESULT (STDMETHODCALLTYPE *get_Application)( - IWebBrowserApp* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_Parent)( - IWebBrowserApp* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_Container)( - IWebBrowserApp* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_Document)( - IWebBrowserApp* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_TopLevelContainer)( - IWebBrowserApp* This, - VARIANT_BOOL* pBool); - - HRESULT (STDMETHODCALLTYPE *get_Type)( - IWebBrowserApp* This, - BSTR* Type); - - HRESULT (STDMETHODCALLTYPE *get_Left)( - IWebBrowserApp* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Left)( - IWebBrowserApp* This, - long Left); - - HRESULT (STDMETHODCALLTYPE *get_Top)( - IWebBrowserApp* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Top)( - IWebBrowserApp* This, - long Top); - - HRESULT (STDMETHODCALLTYPE *get_Width)( - IWebBrowserApp* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Width)( - IWebBrowserApp* This, - long Width); - - HRESULT (STDMETHODCALLTYPE *get_Height)( - IWebBrowserApp* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Height)( - IWebBrowserApp* This, - long Height); - - HRESULT (STDMETHODCALLTYPE *get_LocationName)( - IWebBrowserApp* This, - BSTR* LocationName); - - HRESULT (STDMETHODCALLTYPE *get_LocationURL)( - IWebBrowserApp* This, - BSTR* LocationURL); - - HRESULT (STDMETHODCALLTYPE *get_Busy)( - IWebBrowserApp* This, - VARIANT_BOOL* pBool); - - /*** IWebBrowserApp methods ***/ - HRESULT (STDMETHODCALLTYPE *Quit)( - IWebBrowserApp* This); - - HRESULT (STDMETHODCALLTYPE *ClientToWindow)( - IWebBrowserApp* This, - int* pcx, - int* pcy); - - HRESULT (STDMETHODCALLTYPE *PutProperty)( - IWebBrowserApp* This, - BSTR szProperty, - VARIANT vtValue); - - HRESULT (STDMETHODCALLTYPE *GetProperty)( - IWebBrowserApp* This, - BSTR szProperty, - VARIANT* pvtValue); - - HRESULT (STDMETHODCALLTYPE *get_Name)( - IWebBrowserApp* This, - BSTR* Name); - - HRESULT (STDMETHODCALLTYPE *get_HWND)( - IWebBrowserApp* This, - long* pHWND); - - HRESULT (STDMETHODCALLTYPE *get_FullName)( - IWebBrowserApp* This, - BSTR* FullName); - - HRESULT (STDMETHODCALLTYPE *get_Path)( - IWebBrowserApp* This, - BSTR* Path); - - HRESULT (STDMETHODCALLTYPE *get_Visible)( - IWebBrowserApp* This, - VARIANT_BOOL* pBool); - - HRESULT (STDMETHODCALLTYPE *put_Visible)( - IWebBrowserApp* This, - VARIANT_BOOL Value); - - HRESULT (STDMETHODCALLTYPE *get_StatusBar)( - IWebBrowserApp* This, - VARIANT_BOOL* pBool); - - HRESULT (STDMETHODCALLTYPE *put_StatusBar)( - IWebBrowserApp* This, - VARIANT_BOOL Value); - - HRESULT (STDMETHODCALLTYPE *get_StatusText)( - IWebBrowserApp* This, - BSTR* StatusText); - - HRESULT (STDMETHODCALLTYPE *put_StatusText)( - IWebBrowserApp* This, - BSTR StatusText); - - HRESULT (STDMETHODCALLTYPE *get_ToolBar)( - IWebBrowserApp* This, - int* Value); - - HRESULT (STDMETHODCALLTYPE *put_ToolBar)( - IWebBrowserApp* This, - int Value); - - HRESULT (STDMETHODCALLTYPE *get_MenuBar)( - IWebBrowserApp* This, - VARIANT_BOOL* Value); - - HRESULT (STDMETHODCALLTYPE *put_MenuBar)( - IWebBrowserApp* This, - VARIANT_BOOL Value); - - HRESULT (STDMETHODCALLTYPE *get_FullScreen)( - IWebBrowserApp* This, - VARIANT_BOOL* pbFullScreen); - - HRESULT (STDMETHODCALLTYPE *put_FullScreen)( - IWebBrowserApp* This, - VARIANT_BOOL bFullScreen); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IWebBrowserApp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IWebBrowserApp_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IWebBrowserApp_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define IWebBrowserApp_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define IWebBrowserApp_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define IWebBrowserApp_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define IWebBrowserApp_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** IWebBrowser methods ***/ -#define IWebBrowserApp_GoBack(p) (p)->lpVtbl->GoBack(p) -#define IWebBrowserApp_GoForward(p) (p)->lpVtbl->GoForward(p) -#define IWebBrowserApp_GoHome(p) (p)->lpVtbl->GoHome(p) -#define IWebBrowserApp_GoSearch(p) (p)->lpVtbl->GoSearch(p) -#define IWebBrowserApp_Navigate(p,a,b,c,d,e) (p)->lpVtbl->Navigate(p,a,b,c,d,e) -#define IWebBrowserApp_Refresh(p) (p)->lpVtbl->Refresh(p) -#define IWebBrowserApp_Refresh2(p,a) (p)->lpVtbl->Refresh2(p,a) -#define IWebBrowserApp_Stop(p) (p)->lpVtbl->Stop(p) -#define IWebBrowserApp_get_Application(p,a) (p)->lpVtbl->get_Application(p,a) -#define IWebBrowserApp_get_Parent(p,a) (p)->lpVtbl->get_Parent(p,a) -#define IWebBrowserApp_get_Container(p,a) (p)->lpVtbl->get_Container(p,a) -#define IWebBrowserApp_get_Document(p,a) (p)->lpVtbl->get_Document(p,a) -#define IWebBrowserApp_get_TopLevelContainer(p,a) (p)->lpVtbl->get_TopLevelContainer(p,a) -#define IWebBrowserApp_get_Type(p,a) (p)->lpVtbl->get_Type(p,a) -#define IWebBrowserApp_get_Left(p,a) (p)->lpVtbl->get_Left(p,a) -#define IWebBrowserApp_put_Left(p,a) (p)->lpVtbl->put_Left(p,a) -#define IWebBrowserApp_get_Top(p,a) (p)->lpVtbl->get_Top(p,a) -#define IWebBrowserApp_put_Top(p,a) (p)->lpVtbl->put_Top(p,a) -#define IWebBrowserApp_get_Width(p,a) (p)->lpVtbl->get_Width(p,a) -#define IWebBrowserApp_put_Width(p,a) (p)->lpVtbl->put_Width(p,a) -#define IWebBrowserApp_get_Height(p,a) (p)->lpVtbl->get_Height(p,a) -#define IWebBrowserApp_put_Height(p,a) (p)->lpVtbl->put_Height(p,a) -#define IWebBrowserApp_get_LocationName(p,a) (p)->lpVtbl->get_LocationName(p,a) -#define IWebBrowserApp_get_LocationURL(p,a) (p)->lpVtbl->get_LocationURL(p,a) -#define IWebBrowserApp_get_Busy(p,a) (p)->lpVtbl->get_Busy(p,a) -/*** IWebBrowserApp methods ***/ -#define IWebBrowserApp_Quit(p) (p)->lpVtbl->Quit(p) -#define IWebBrowserApp_ClientToWindow(p,a,b) (p)->lpVtbl->ClientToWindow(p,a,b) -#define IWebBrowserApp_PutProperty(p,a,b) (p)->lpVtbl->PutProperty(p,a,b) -#define IWebBrowserApp_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IWebBrowserApp_get_Name(p,a) (p)->lpVtbl->get_Name(p,a) -#define IWebBrowserApp_get_HWND(p,a) (p)->lpVtbl->get_HWND(p,a) -#define IWebBrowserApp_get_FullName(p,a) (p)->lpVtbl->get_FullName(p,a) -#define IWebBrowserApp_get_Path(p,a) (p)->lpVtbl->get_Path(p,a) -#define IWebBrowserApp_get_Visible(p,a) (p)->lpVtbl->get_Visible(p,a) -#define IWebBrowserApp_put_Visible(p,a) (p)->lpVtbl->put_Visible(p,a) -#define IWebBrowserApp_get_StatusBar(p,a) (p)->lpVtbl->get_StatusBar(p,a) -#define IWebBrowserApp_put_StatusBar(p,a) (p)->lpVtbl->put_StatusBar(p,a) -#define IWebBrowserApp_get_StatusText(p,a) (p)->lpVtbl->get_StatusText(p,a) -#define IWebBrowserApp_put_StatusText(p,a) (p)->lpVtbl->put_StatusText(p,a) -#define IWebBrowserApp_get_ToolBar(p,a) (p)->lpVtbl->get_ToolBar(p,a) -#define IWebBrowserApp_put_ToolBar(p,a) (p)->lpVtbl->put_ToolBar(p,a) -#define IWebBrowserApp_get_MenuBar(p,a) (p)->lpVtbl->get_MenuBar(p,a) -#define IWebBrowserApp_put_MenuBar(p,a) (p)->lpVtbl->put_MenuBar(p,a) -#define IWebBrowserApp_get_FullScreen(p,a) (p)->lpVtbl->get_FullScreen(p,a) -#define IWebBrowserApp_put_FullScreen(p,a) (p)->lpVtbl->put_FullScreen(p,a) -#endif - -#endif - -HRESULT CALLBACK IWebBrowserApp_Quit_Proxy( - IWebBrowserApp* This); -void __RPC_STUB IWebBrowserApp_Quit_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_ClientToWindow_Proxy( - IWebBrowserApp* This, - int* pcx, - int* pcy); -void __RPC_STUB IWebBrowserApp_ClientToWindow_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_PutProperty_Proxy( - IWebBrowserApp* This, - BSTR szProperty, - VARIANT vtValue); -void __RPC_STUB IWebBrowserApp_PutProperty_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_GetProperty_Proxy( - IWebBrowserApp* This, - BSTR szProperty, - VARIANT* pvtValue); -void __RPC_STUB IWebBrowserApp_GetProperty_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_Name_Proxy( - IWebBrowserApp* This, - BSTR* Name); -void __RPC_STUB IWebBrowserApp_get_Name_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_HWND_Proxy( - IWebBrowserApp* This, - long* pHWND); -void __RPC_STUB IWebBrowserApp_get_HWND_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_FullName_Proxy( - IWebBrowserApp* This, - BSTR* FullName); -void __RPC_STUB IWebBrowserApp_get_FullName_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_Path_Proxy( - IWebBrowserApp* This, - BSTR* Path); -void __RPC_STUB IWebBrowserApp_get_Path_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_Visible_Proxy( - IWebBrowserApp* This, - VARIANT_BOOL* pBool); -void __RPC_STUB IWebBrowserApp_get_Visible_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_put_Visible_Proxy( - IWebBrowserApp* This, - VARIANT_BOOL Value); -void __RPC_STUB IWebBrowserApp_put_Visible_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_StatusBar_Proxy( - IWebBrowserApp* This, - VARIANT_BOOL* pBool); -void __RPC_STUB IWebBrowserApp_get_StatusBar_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_put_StatusBar_Proxy( - IWebBrowserApp* This, - VARIANT_BOOL Value); -void __RPC_STUB IWebBrowserApp_put_StatusBar_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_StatusText_Proxy( - IWebBrowserApp* This, - BSTR* StatusText); -void __RPC_STUB IWebBrowserApp_get_StatusText_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_put_StatusText_Proxy( - IWebBrowserApp* This, - BSTR StatusText); -void __RPC_STUB IWebBrowserApp_put_StatusText_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_ToolBar_Proxy( - IWebBrowserApp* This, - int* Value); -void __RPC_STUB IWebBrowserApp_get_ToolBar_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_put_ToolBar_Proxy( - IWebBrowserApp* This, - int Value); -void __RPC_STUB IWebBrowserApp_put_ToolBar_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_MenuBar_Proxy( - IWebBrowserApp* This, - VARIANT_BOOL* Value); -void __RPC_STUB IWebBrowserApp_get_MenuBar_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_put_MenuBar_Proxy( - IWebBrowserApp* This, - VARIANT_BOOL Value); -void __RPC_STUB IWebBrowserApp_put_MenuBar_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_get_FullScreen_Proxy( - IWebBrowserApp* This, - VARIANT_BOOL* pbFullScreen); -void __RPC_STUB IWebBrowserApp_get_FullScreen_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowserApp_put_FullScreen_Proxy( - IWebBrowserApp* This, - VARIANT_BOOL bFullScreen); -void __RPC_STUB IWebBrowserApp_put_FullScreen_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IWebBrowserApp_INTERFACE_DEFINED__ */ - -#ifndef __IWebBrowser2_FWD_DEFINED__ -#define __IWebBrowser2_FWD_DEFINED__ -typedef struct IWebBrowser2 IWebBrowser2; -#endif - -/***************************************************************************** - * IWebBrowser2 interface - */ -#ifndef __IWebBrowser2_INTERFACE_DEFINED__ -#define __IWebBrowser2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IWebBrowser2, 0xd30c1661, 0xcdaf, 0x11d0, 0x8a,0x3e, 0x00,0xc0,0x4f,0xc9,0xe2,0x6e); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IWebBrowser2 : public IWebBrowserApp -{ - virtual HRESULT STDMETHODCALLTYPE Navigate2( - VARIANT* URL, - VARIANT* Flags, - VARIANT* TargetFrameName, - VARIANT* PostData, - VARIANT* Headers) = 0; - - virtual HRESULT STDMETHODCALLTYPE QueryStatusWB( - OLECMDID cmdID, - OLECMDF* pcmdf) = 0; - - virtual HRESULT STDMETHODCALLTYPE ExecWB( - OLECMDID cmdID, - OLECMDEXECOPT cmdexecopt, - VARIANT* pvaIn, - VARIANT* pvaOut) = 0; - - virtual HRESULT STDMETHODCALLTYPE ShowBrowserBar( - VARIANT* pvaClsid, - VARIANT* pvarShow, - VARIANT* pvarSize) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_ReadyState( - READYSTATE* plReadyState) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Offline( - VARIANT_BOOL* pbOffline) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_Offline( - VARIANT_BOOL bOffline) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Silent( - VARIANT_BOOL* pbSilent) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_Silent( - VARIANT_BOOL bSilent) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_RegisterAsBrowser( - VARIANT_BOOL* pbRegister) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_RegisterAsBrowser( - VARIANT_BOOL bRegister) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_RegisterAsDropTarget( - VARIANT_BOOL* pbRegister) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_RegisterAsDropTarget( - VARIANT_BOOL bRegister) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_TheaterMode( - VARIANT_BOOL* pbRegister) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_TheaterMode( - VARIANT_BOOL bRegister) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_AddressBar( - VARIANT_BOOL* Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_AddressBar( - VARIANT_BOOL Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE get_Resizable( - VARIANT_BOOL* Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE put_Resizable( - VARIANT_BOOL Value) = 0; - -}; -#else -typedef struct IWebBrowser2Vtbl IWebBrowser2Vtbl; -struct IWebBrowser2 { - const IWebBrowser2Vtbl* lpVtbl; -}; -struct IWebBrowser2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IWebBrowser2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IWebBrowser2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IWebBrowser2* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - IWebBrowser2* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - IWebBrowser2* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - IWebBrowser2* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - IWebBrowser2* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** IWebBrowser methods ***/ - HRESULT (STDMETHODCALLTYPE *GoBack)( - IWebBrowser2* This); - - HRESULT (STDMETHODCALLTYPE *GoForward)( - IWebBrowser2* This); - - HRESULT (STDMETHODCALLTYPE *GoHome)( - IWebBrowser2* This); - - HRESULT (STDMETHODCALLTYPE *GoSearch)( - IWebBrowser2* This); - - HRESULT (STDMETHODCALLTYPE *Navigate)( - IWebBrowser2* This, - BSTR URL, - VARIANT* Flags, - VARIANT* TargetFrameName, - VARIANT* PostData, - VARIANT* Headers); - - HRESULT (STDMETHODCALLTYPE *Refresh)( - IWebBrowser2* This); - - HRESULT (STDMETHODCALLTYPE *Refresh2)( - IWebBrowser2* This, - VARIANT* Level); - - HRESULT (STDMETHODCALLTYPE *Stop)( - IWebBrowser2* This); - - HRESULT (STDMETHODCALLTYPE *get_Application)( - IWebBrowser2* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_Parent)( - IWebBrowser2* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_Container)( - IWebBrowser2* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_Document)( - IWebBrowser2* This, - IDispatch** ppDisp); - - HRESULT (STDMETHODCALLTYPE *get_TopLevelContainer)( - IWebBrowser2* This, - VARIANT_BOOL* pBool); - - HRESULT (STDMETHODCALLTYPE *get_Type)( - IWebBrowser2* This, - BSTR* Type); - - HRESULT (STDMETHODCALLTYPE *get_Left)( - IWebBrowser2* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Left)( - IWebBrowser2* This, - long Left); - - HRESULT (STDMETHODCALLTYPE *get_Top)( - IWebBrowser2* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Top)( - IWebBrowser2* This, - long Top); - - HRESULT (STDMETHODCALLTYPE *get_Width)( - IWebBrowser2* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Width)( - IWebBrowser2* This, - long Width); - - HRESULT (STDMETHODCALLTYPE *get_Height)( - IWebBrowser2* This, - long* pl); - - HRESULT (STDMETHODCALLTYPE *put_Height)( - IWebBrowser2* This, - long Height); - - HRESULT (STDMETHODCALLTYPE *get_LocationName)( - IWebBrowser2* This, - BSTR* LocationName); - - HRESULT (STDMETHODCALLTYPE *get_LocationURL)( - IWebBrowser2* This, - BSTR* LocationURL); - - HRESULT (STDMETHODCALLTYPE *get_Busy)( - IWebBrowser2* This, - VARIANT_BOOL* pBool); - - /*** IWebBrowserApp methods ***/ - HRESULT (STDMETHODCALLTYPE *Quit)( - IWebBrowser2* This); - - HRESULT (STDMETHODCALLTYPE *ClientToWindow)( - IWebBrowser2* This, - int* pcx, - int* pcy); - - HRESULT (STDMETHODCALLTYPE *PutProperty)( - IWebBrowser2* This, - BSTR szProperty, - VARIANT vtValue); - - HRESULT (STDMETHODCALLTYPE *GetProperty)( - IWebBrowser2* This, - BSTR szProperty, - VARIANT* pvtValue); - - HRESULT (STDMETHODCALLTYPE *get_Name)( - IWebBrowser2* This, - BSTR* Name); - - HRESULT (STDMETHODCALLTYPE *get_HWND)( - IWebBrowser2* This, - long* pHWND); - - HRESULT (STDMETHODCALLTYPE *get_FullName)( - IWebBrowser2* This, - BSTR* FullName); - - HRESULT (STDMETHODCALLTYPE *get_Path)( - IWebBrowser2* This, - BSTR* Path); - - HRESULT (STDMETHODCALLTYPE *get_Visible)( - IWebBrowser2* This, - VARIANT_BOOL* pBool); - - HRESULT (STDMETHODCALLTYPE *put_Visible)( - IWebBrowser2* This, - VARIANT_BOOL Value); - - HRESULT (STDMETHODCALLTYPE *get_StatusBar)( - IWebBrowser2* This, - VARIANT_BOOL* pBool); - - HRESULT (STDMETHODCALLTYPE *put_StatusBar)( - IWebBrowser2* This, - VARIANT_BOOL Value); - - HRESULT (STDMETHODCALLTYPE *get_StatusText)( - IWebBrowser2* This, - BSTR* StatusText); - - HRESULT (STDMETHODCALLTYPE *put_StatusText)( - IWebBrowser2* This, - BSTR StatusText); - - HRESULT (STDMETHODCALLTYPE *get_ToolBar)( - IWebBrowser2* This, - int* Value); - - HRESULT (STDMETHODCALLTYPE *put_ToolBar)( - IWebBrowser2* This, - int Value); - - HRESULT (STDMETHODCALLTYPE *get_MenuBar)( - IWebBrowser2* This, - VARIANT_BOOL* Value); - - HRESULT (STDMETHODCALLTYPE *put_MenuBar)( - IWebBrowser2* This, - VARIANT_BOOL Value); - - HRESULT (STDMETHODCALLTYPE *get_FullScreen)( - IWebBrowser2* This, - VARIANT_BOOL* pbFullScreen); - - HRESULT (STDMETHODCALLTYPE *put_FullScreen)( - IWebBrowser2* This, - VARIANT_BOOL bFullScreen); - - /*** IWebBrowser2 methods ***/ - HRESULT (STDMETHODCALLTYPE *Navigate2)( - IWebBrowser2* This, - VARIANT* URL, - VARIANT* Flags, - VARIANT* TargetFrameName, - VARIANT* PostData, - VARIANT* Headers); - - HRESULT (STDMETHODCALLTYPE *QueryStatusWB)( - IWebBrowser2* This, - OLECMDID cmdID, - OLECMDF* pcmdf); - - HRESULT (STDMETHODCALLTYPE *ExecWB)( - IWebBrowser2* This, - OLECMDID cmdID, - OLECMDEXECOPT cmdexecopt, - VARIANT* pvaIn, - VARIANT* pvaOut); - - HRESULT (STDMETHODCALLTYPE *ShowBrowserBar)( - IWebBrowser2* This, - VARIANT* pvaClsid, - VARIANT* pvarShow, - VARIANT* pvarSize); - - HRESULT (STDMETHODCALLTYPE *get_ReadyState)( - IWebBrowser2* This, - READYSTATE* plReadyState); - - HRESULT (STDMETHODCALLTYPE *get_Offline)( - IWebBrowser2* This, - VARIANT_BOOL* pbOffline); - - HRESULT (STDMETHODCALLTYPE *put_Offline)( - IWebBrowser2* This, - VARIANT_BOOL bOffline); - - HRESULT (STDMETHODCALLTYPE *get_Silent)( - IWebBrowser2* This, - VARIANT_BOOL* pbSilent); - - HRESULT (STDMETHODCALLTYPE *put_Silent)( - IWebBrowser2* This, - VARIANT_BOOL bSilent); - - HRESULT (STDMETHODCALLTYPE *get_RegisterAsBrowser)( - IWebBrowser2* This, - VARIANT_BOOL* pbRegister); - - HRESULT (STDMETHODCALLTYPE *put_RegisterAsBrowser)( - IWebBrowser2* This, - VARIANT_BOOL bRegister); - - HRESULT (STDMETHODCALLTYPE *get_RegisterAsDropTarget)( - IWebBrowser2* This, - VARIANT_BOOL* pbRegister); - - HRESULT (STDMETHODCALLTYPE *put_RegisterAsDropTarget)( - IWebBrowser2* This, - VARIANT_BOOL bRegister); - - HRESULT (STDMETHODCALLTYPE *get_TheaterMode)( - IWebBrowser2* This, - VARIANT_BOOL* pbRegister); - - HRESULT (STDMETHODCALLTYPE *put_TheaterMode)( - IWebBrowser2* This, - VARIANT_BOOL bRegister); - - HRESULT (STDMETHODCALLTYPE *get_AddressBar)( - IWebBrowser2* This, - VARIANT_BOOL* Value); - - HRESULT (STDMETHODCALLTYPE *put_AddressBar)( - IWebBrowser2* This, - VARIANT_BOOL Value); - - HRESULT (STDMETHODCALLTYPE *get_Resizable)( - IWebBrowser2* This, - VARIANT_BOOL* Value); - - HRESULT (STDMETHODCALLTYPE *put_Resizable)( - IWebBrowser2* This, - VARIANT_BOOL Value); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IWebBrowser2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IWebBrowser2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IWebBrowser2_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define IWebBrowser2_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define IWebBrowser2_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define IWebBrowser2_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define IWebBrowser2_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** IWebBrowser methods ***/ -#define IWebBrowser2_GoBack(p) (p)->lpVtbl->GoBack(p) -#define IWebBrowser2_GoForward(p) (p)->lpVtbl->GoForward(p) -#define IWebBrowser2_GoHome(p) (p)->lpVtbl->GoHome(p) -#define IWebBrowser2_GoSearch(p) (p)->lpVtbl->GoSearch(p) -#define IWebBrowser2_Navigate(p,a,b,c,d,e) (p)->lpVtbl->Navigate(p,a,b,c,d,e) -#define IWebBrowser2_Refresh(p) (p)->lpVtbl->Refresh(p) -#define IWebBrowser2_Refresh2(p,a) (p)->lpVtbl->Refresh2(p,a) -#define IWebBrowser2_Stop(p) (p)->lpVtbl->Stop(p) -#define IWebBrowser2_get_Application(p,a) (p)->lpVtbl->get_Application(p,a) -#define IWebBrowser2_get_Parent(p,a) (p)->lpVtbl->get_Parent(p,a) -#define IWebBrowser2_get_Container(p,a) (p)->lpVtbl->get_Container(p,a) -#define IWebBrowser2_get_Document(p,a) (p)->lpVtbl->get_Document(p,a) -#define IWebBrowser2_get_TopLevelContainer(p,a) (p)->lpVtbl->get_TopLevelContainer(p,a) -#define IWebBrowser2_get_Type(p,a) (p)->lpVtbl->get_Type(p,a) -#define IWebBrowser2_get_Left(p,a) (p)->lpVtbl->get_Left(p,a) -#define IWebBrowser2_put_Left(p,a) (p)->lpVtbl->put_Left(p,a) -#define IWebBrowser2_get_Top(p,a) (p)->lpVtbl->get_Top(p,a) -#define IWebBrowser2_put_Top(p,a) (p)->lpVtbl->put_Top(p,a) -#define IWebBrowser2_get_Width(p,a) (p)->lpVtbl->get_Width(p,a) -#define IWebBrowser2_put_Width(p,a) (p)->lpVtbl->put_Width(p,a) -#define IWebBrowser2_get_Height(p,a) (p)->lpVtbl->get_Height(p,a) -#define IWebBrowser2_put_Height(p,a) (p)->lpVtbl->put_Height(p,a) -#define IWebBrowser2_get_LocationName(p,a) (p)->lpVtbl->get_LocationName(p,a) -#define IWebBrowser2_get_LocationURL(p,a) (p)->lpVtbl->get_LocationURL(p,a) -#define IWebBrowser2_get_Busy(p,a) (p)->lpVtbl->get_Busy(p,a) -/*** IWebBrowserApp methods ***/ -#define IWebBrowser2_Quit(p) (p)->lpVtbl->Quit(p) -#define IWebBrowser2_ClientToWindow(p,a,b) (p)->lpVtbl->ClientToWindow(p,a,b) -#define IWebBrowser2_PutProperty(p,a,b) (p)->lpVtbl->PutProperty(p,a,b) -#define IWebBrowser2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IWebBrowser2_get_Name(p,a) (p)->lpVtbl->get_Name(p,a) -#define IWebBrowser2_get_HWND(p,a) (p)->lpVtbl->get_HWND(p,a) -#define IWebBrowser2_get_FullName(p,a) (p)->lpVtbl->get_FullName(p,a) -#define IWebBrowser2_get_Path(p,a) (p)->lpVtbl->get_Path(p,a) -#define IWebBrowser2_get_Visible(p,a) (p)->lpVtbl->get_Visible(p,a) -#define IWebBrowser2_put_Visible(p,a) (p)->lpVtbl->put_Visible(p,a) -#define IWebBrowser2_get_StatusBar(p,a) (p)->lpVtbl->get_StatusBar(p,a) -#define IWebBrowser2_put_StatusBar(p,a) (p)->lpVtbl->put_StatusBar(p,a) -#define IWebBrowser2_get_StatusText(p,a) (p)->lpVtbl->get_StatusText(p,a) -#define IWebBrowser2_put_StatusText(p,a) (p)->lpVtbl->put_StatusText(p,a) -#define IWebBrowser2_get_ToolBar(p,a) (p)->lpVtbl->get_ToolBar(p,a) -#define IWebBrowser2_put_ToolBar(p,a) (p)->lpVtbl->put_ToolBar(p,a) -#define IWebBrowser2_get_MenuBar(p,a) (p)->lpVtbl->get_MenuBar(p,a) -#define IWebBrowser2_put_MenuBar(p,a) (p)->lpVtbl->put_MenuBar(p,a) -#define IWebBrowser2_get_FullScreen(p,a) (p)->lpVtbl->get_FullScreen(p,a) -#define IWebBrowser2_put_FullScreen(p,a) (p)->lpVtbl->put_FullScreen(p,a) -/*** IWebBrowser2 methods ***/ -#define IWebBrowser2_Navigate2(p,a,b,c,d,e) (p)->lpVtbl->Navigate2(p,a,b,c,d,e) -#define IWebBrowser2_QueryStatusWB(p,a,b) (p)->lpVtbl->QueryStatusWB(p,a,b) -#define IWebBrowser2_ExecWB(p,a,b,c,d) (p)->lpVtbl->ExecWB(p,a,b,c,d) -#define IWebBrowser2_ShowBrowserBar(p,a,b,c) (p)->lpVtbl->ShowBrowserBar(p,a,b,c) -#define IWebBrowser2_get_ReadyState(p,a) (p)->lpVtbl->get_ReadyState(p,a) -#define IWebBrowser2_get_Offline(p,a) (p)->lpVtbl->get_Offline(p,a) -#define IWebBrowser2_put_Offline(p,a) (p)->lpVtbl->put_Offline(p,a) -#define IWebBrowser2_get_Silent(p,a) (p)->lpVtbl->get_Silent(p,a) -#define IWebBrowser2_put_Silent(p,a) (p)->lpVtbl->put_Silent(p,a) -#define IWebBrowser2_get_RegisterAsBrowser(p,a) (p)->lpVtbl->get_RegisterAsBrowser(p,a) -#define IWebBrowser2_put_RegisterAsBrowser(p,a) (p)->lpVtbl->put_RegisterAsBrowser(p,a) -#define IWebBrowser2_get_RegisterAsDropTarget(p,a) (p)->lpVtbl->get_RegisterAsDropTarget(p,a) -#define IWebBrowser2_put_RegisterAsDropTarget(p,a) (p)->lpVtbl->put_RegisterAsDropTarget(p,a) -#define IWebBrowser2_get_TheaterMode(p,a) (p)->lpVtbl->get_TheaterMode(p,a) -#define IWebBrowser2_put_TheaterMode(p,a) (p)->lpVtbl->put_TheaterMode(p,a) -#define IWebBrowser2_get_AddressBar(p,a) (p)->lpVtbl->get_AddressBar(p,a) -#define IWebBrowser2_put_AddressBar(p,a) (p)->lpVtbl->put_AddressBar(p,a) -#define IWebBrowser2_get_Resizable(p,a) (p)->lpVtbl->get_Resizable(p,a) -#define IWebBrowser2_put_Resizable(p,a) (p)->lpVtbl->put_Resizable(p,a) -#endif - -#endif - -HRESULT CALLBACK IWebBrowser2_Navigate2_Proxy( - IWebBrowser2* This, - VARIANT* URL, - VARIANT* Flags, - VARIANT* TargetFrameName, - VARIANT* PostData, - VARIANT* Headers); -void __RPC_STUB IWebBrowser2_Navigate2_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_QueryStatusWB_Proxy( - IWebBrowser2* This, - OLECMDID cmdID, - OLECMDF* pcmdf); -void __RPC_STUB IWebBrowser2_QueryStatusWB_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_ExecWB_Proxy( - IWebBrowser2* This, - OLECMDID cmdID, - OLECMDEXECOPT cmdexecopt, - VARIANT* pvaIn, - VARIANT* pvaOut); -void __RPC_STUB IWebBrowser2_ExecWB_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_ShowBrowserBar_Proxy( - IWebBrowser2* This, - VARIANT* pvaClsid, - VARIANT* pvarShow, - VARIANT* pvarSize); -void __RPC_STUB IWebBrowser2_ShowBrowserBar_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_get_ReadyState_Proxy( - IWebBrowser2* This, - READYSTATE* plReadyState); -void __RPC_STUB IWebBrowser2_get_ReadyState_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_get_Offline_Proxy( - IWebBrowser2* This, - VARIANT_BOOL* pbOffline); -void __RPC_STUB IWebBrowser2_get_Offline_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_put_Offline_Proxy( - IWebBrowser2* This, - VARIANT_BOOL bOffline); -void __RPC_STUB IWebBrowser2_put_Offline_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_get_Silent_Proxy( - IWebBrowser2* This, - VARIANT_BOOL* pbSilent); -void __RPC_STUB IWebBrowser2_get_Silent_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_put_Silent_Proxy( - IWebBrowser2* This, - VARIANT_BOOL bSilent); -void __RPC_STUB IWebBrowser2_put_Silent_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_get_RegisterAsBrowser_Proxy( - IWebBrowser2* This, - VARIANT_BOOL* pbRegister); -void __RPC_STUB IWebBrowser2_get_RegisterAsBrowser_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_put_RegisterAsBrowser_Proxy( - IWebBrowser2* This, - VARIANT_BOOL bRegister); -void __RPC_STUB IWebBrowser2_put_RegisterAsBrowser_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_get_RegisterAsDropTarget_Proxy( - IWebBrowser2* This, - VARIANT_BOOL* pbRegister); -void __RPC_STUB IWebBrowser2_get_RegisterAsDropTarget_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_put_RegisterAsDropTarget_Proxy( - IWebBrowser2* This, - VARIANT_BOOL bRegister); -void __RPC_STUB IWebBrowser2_put_RegisterAsDropTarget_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_get_TheaterMode_Proxy( - IWebBrowser2* This, - VARIANT_BOOL* pbRegister); -void __RPC_STUB IWebBrowser2_get_TheaterMode_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_put_TheaterMode_Proxy( - IWebBrowser2* This, - VARIANT_BOOL bRegister); -void __RPC_STUB IWebBrowser2_put_TheaterMode_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_get_AddressBar_Proxy( - IWebBrowser2* This, - VARIANT_BOOL* Value); -void __RPC_STUB IWebBrowser2_get_AddressBar_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_put_AddressBar_Proxy( - IWebBrowser2* This, - VARIANT_BOOL Value); -void __RPC_STUB IWebBrowser2_put_AddressBar_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_get_Resizable_Proxy( - IWebBrowser2* This, - VARIANT_BOOL* Value); -void __RPC_STUB IWebBrowser2_get_Resizable_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IWebBrowser2_put_Resizable_Proxy( - IWebBrowser2* This, - VARIANT_BOOL Value); -void __RPC_STUB IWebBrowser2_put_Resizable_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IWebBrowser2_INTERFACE_DEFINED__ */ - -#ifndef __DWebBrowserEvents_FWD_DEFINED__ -#define __DWebBrowserEvents_FWD_DEFINED__ -typedef struct DWebBrowserEvents DWebBrowserEvents; -#endif - -/***************************************************************************** - * DWebBrowserEvents dispinterface - */ -#ifndef __DWebBrowserEvents_DISPINTERFACE_DEFINED__ -#define __DWebBrowserEvents_DISPINTERFACE_DEFINED__ - -DEFINE_GUID(DIID_DWebBrowserEvents, 0xeab22ac2, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct DWebBrowserEvents : public IDispatch -{ -}; -#else -typedef struct DWebBrowserEventsVtbl DWebBrowserEventsVtbl; -struct DWebBrowserEvents { - const DWebBrowserEventsVtbl* lpVtbl; -}; -struct DWebBrowserEventsVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - DWebBrowserEvents* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - DWebBrowserEvents* This); - - ULONG (STDMETHODCALLTYPE *Release)( - DWebBrowserEvents* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - DWebBrowserEvents* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - DWebBrowserEvents* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - DWebBrowserEvents* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - DWebBrowserEvents* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define DWebBrowserEvents_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define DWebBrowserEvents_AddRef(p) (p)->lpVtbl->AddRef(p) -#define DWebBrowserEvents_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define DWebBrowserEvents_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define DWebBrowserEvents_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define DWebBrowserEvents_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define DWebBrowserEvents_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -#endif - -#endif - -#endif /* __DWebBrowserEvents_DISPINTERFACE_DEFINED__ */ - -#ifndef __DWebBrowserEvents2_FWD_DEFINED__ -#define __DWebBrowserEvents2_FWD_DEFINED__ -typedef struct DWebBrowserEvents2 DWebBrowserEvents2; -#endif - -/***************************************************************************** - * DWebBrowserEvents2 dispinterface - */ -#ifndef __DWebBrowserEvents2_DISPINTERFACE_DEFINED__ -#define __DWebBrowserEvents2_DISPINTERFACE_DEFINED__ - -DEFINE_GUID(DIID_DWebBrowserEvents2, 0x34a715a0, 0x6587, 0x11d0, 0x92,0x4a, 0x00,0x20,0xaf,0xc7,0xac,0x4d); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct DWebBrowserEvents2 : public IDispatch -{ -}; -#else -typedef struct DWebBrowserEvents2Vtbl DWebBrowserEvents2Vtbl; -struct DWebBrowserEvents2 { - const DWebBrowserEvents2Vtbl* lpVtbl; -}; -struct DWebBrowserEvents2Vtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - DWebBrowserEvents2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - DWebBrowserEvents2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - DWebBrowserEvents2* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - DWebBrowserEvents2* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - DWebBrowserEvents2* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - DWebBrowserEvents2* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - DWebBrowserEvents2* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define DWebBrowserEvents2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define DWebBrowserEvents2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define DWebBrowserEvents2_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define DWebBrowserEvents2_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define DWebBrowserEvents2_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define DWebBrowserEvents2_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define DWebBrowserEvents2_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -#endif - -#endif - -#endif /* __DWebBrowserEvents2_DISPINTERFACE_DEFINED__ */ - -/***************************************************************************** - * WebBrowser coclass - */ - -DEFINE_GUID(CLSID_WebBrowser, 0x8856f961, 0x340a, 0x11d0, 0xa9,0x6b, 0x00,0xc0,0x4f,0xd7,0x05,0xa2); - -#ifndef __IShellWindows_FWD_DEFINED__ -#define __IShellWindows_FWD_DEFINED__ -typedef struct IShellWindows IShellWindows; -#endif - -/***************************************************************************** - * IShellWindows interface - */ -#ifndef __IShellWindows_INTERFACE_DEFINED__ -#define __IShellWindows_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IShellWindows, 0x85cb6900, 0x4d95, 0x11cf, 0x96,0x0c, 0x00,0x80,0xc7,0xf4,0xee,0x85); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IShellWindows : public IDispatch -{ - virtual HRESULT STDMETHODCALLTYPE get_Count( - long* Count) = 0; - - virtual HRESULT STDMETHODCALLTYPE Item( - VARIANT index, - IDispatch** Folder) = 0; - - virtual HRESULT STDMETHODCALLTYPE _NewEnum( - IUnknown** ppunk) = 0; - - virtual HRESULT STDMETHODCALLTYPE Register( - IDispatch* pid, - long hWnd, - int swClass, - long* plCookie) = 0; - - virtual HRESULT STDMETHODCALLTYPE RegisterPending( - long lThread, - VARIANT* pvarloc, - VARIANT* varlocRoot, - int swClass, - long* plCookie) = 0; - - virtual HRESULT STDMETHODCALLTYPE Revoke( - long Cookie) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnNavigate( - long Cookie, - VARIANT* pvarLoc) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnActivated( - long Cookie, - VARIANT fActive) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindWindowSW( - VARIANT* pvarLoc, - VARIANT* pvarLocRoot, - int swClass, - long* phwnd, - int swfwOptions, - IDispatch** ppdispOut) = 0; - - virtual HRESULT STDMETHODCALLTYPE OnCreated( - long lCookie, - IUnknown* punk) = 0; - - virtual HRESULT STDMETHODCALLTYPE ProcessAttachDetach( - VARIANT_BOOL fAttach) = 0; - -}; -#else -typedef struct IShellWindowsVtbl IShellWindowsVtbl; -struct IShellWindows { - const IShellWindowsVtbl* lpVtbl; -}; -struct IShellWindowsVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IShellWindows* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IShellWindows* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IShellWindows* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - IShellWindows* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - IShellWindows* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - IShellWindows* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - IShellWindows* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** IShellWindows methods ***/ - HRESULT (STDMETHODCALLTYPE *get_Count)( - IShellWindows* This, - long* Count); - - HRESULT (STDMETHODCALLTYPE *Item)( - IShellWindows* This, - VARIANT index, - IDispatch** Folder); - - HRESULT (STDMETHODCALLTYPE *_NewEnum)( - IShellWindows* This, - IUnknown** ppunk); - - HRESULT (STDMETHODCALLTYPE *Register)( - IShellWindows* This, - IDispatch* pid, - long hWnd, - int swClass, - long* plCookie); - - HRESULT (STDMETHODCALLTYPE *RegisterPending)( - IShellWindows* This, - long lThread, - VARIANT* pvarloc, - VARIANT* varlocRoot, - int swClass, - long* plCookie); - - HRESULT (STDMETHODCALLTYPE *Revoke)( - IShellWindows* This, - long Cookie); - - HRESULT (STDMETHODCALLTYPE *OnNavigate)( - IShellWindows* This, - long Cookie, - VARIANT* pvarLoc); - - HRESULT (STDMETHODCALLTYPE *OnActivated)( - IShellWindows* This, - long Cookie, - VARIANT fActive); - - HRESULT (STDMETHODCALLTYPE *FindWindowSW)( - IShellWindows* This, - VARIANT* pvarLoc, - VARIANT* pvarLocRoot, - int swClass, - long* phwnd, - int swfwOptions, - IDispatch** ppdispOut); - - HRESULT (STDMETHODCALLTYPE *OnCreated)( - IShellWindows* This, - long lCookie, - IUnknown* punk); - - HRESULT (STDMETHODCALLTYPE *ProcessAttachDetach)( - IShellWindows* This, - VARIANT_BOOL fAttach); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IShellWindows_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IShellWindows_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IShellWindows_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define IShellWindows_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define IShellWindows_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define IShellWindows_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define IShellWindows_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** IShellWindows methods ***/ -#define IShellWindows_get_Count(p,a) (p)->lpVtbl->get_Count(p,a) -#define IShellWindows_Item(p,a,b) (p)->lpVtbl->Item(p,a,b) -#define IShellWindows__NewEnum(p,a) (p)->lpVtbl->_NewEnum(p,a) -#define IShellWindows_Register(p,a,b,c,d) (p)->lpVtbl->Register(p,a,b,c,d) -#define IShellWindows_RegisterPending(p,a,b,c,d,e) (p)->lpVtbl->RegisterPending(p,a,b,c,d,e) -#define IShellWindows_Revoke(p,a) (p)->lpVtbl->Revoke(p,a) -#define IShellWindows_OnNavigate(p,a,b) (p)->lpVtbl->OnNavigate(p,a,b) -#define IShellWindows_OnActivated(p,a,b) (p)->lpVtbl->OnActivated(p,a,b) -#define IShellWindows_FindWindowSW(p,a,b,c,d,e,f) (p)->lpVtbl->FindWindowSW(p,a,b,c,d,e,f) -#define IShellWindows_OnCreated(p,a,b) (p)->lpVtbl->OnCreated(p,a,b) -#define IShellWindows_ProcessAttachDetach(p,a) (p)->lpVtbl->ProcessAttachDetach(p,a) -#endif - -#endif - -HRESULT CALLBACK IShellWindows_get_Count_Proxy( - IShellWindows* This, - long* Count); -void __RPC_STUB IShellWindows_get_Count_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows_Item_Proxy( - IShellWindows* This, - VARIANT index, - IDispatch** Folder); -void __RPC_STUB IShellWindows_Item_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows__NewEnum_Proxy( - IShellWindows* This, - IUnknown** ppunk); -void __RPC_STUB IShellWindows__NewEnum_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows_Register_Proxy( - IShellWindows* This, - IDispatch* pid, - long hWnd, - int swClass, - long* plCookie); -void __RPC_STUB IShellWindows_Register_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows_RegisterPending_Proxy( - IShellWindows* This, - long lThread, - VARIANT* pvarloc, - VARIANT* varlocRoot, - int swClass, - long* plCookie); -void __RPC_STUB IShellWindows_RegisterPending_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows_Revoke_Proxy( - IShellWindows* This, - long Cookie); -void __RPC_STUB IShellWindows_Revoke_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows_OnNavigate_Proxy( - IShellWindows* This, - long Cookie, - VARIANT* pvarLoc); -void __RPC_STUB IShellWindows_OnNavigate_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows_OnActivated_Proxy( - IShellWindows* This, - long Cookie, - VARIANT fActive); -void __RPC_STUB IShellWindows_OnActivated_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows_FindWindowSW_Proxy( - IShellWindows* This, - VARIANT* pvarLoc, - VARIANT* pvarLocRoot, - int swClass, - long* phwnd, - int swfwOptions, - IDispatch** ppdispOut); -void __RPC_STUB IShellWindows_FindWindowSW_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows_OnCreated_Proxy( - IShellWindows* This, - long lCookie, - IUnknown* punk); -void __RPC_STUB IShellWindows_OnCreated_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IShellWindows_ProcessAttachDetach_Proxy( - IShellWindows* This, - VARIANT_BOOL fAttach); -void __RPC_STUB IShellWindows_ProcessAttachDetach_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IShellWindows_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * ShellWindows coclass - */ - -DEFINE_GUID(CLSID_ShellWindows, 0x9ba05972, 0xf6a8, 0x11cf, 0xa4,0x42, 0x00,0xa0,0xc9,0x0a,0x8f,0x39); - -#ifndef __DShellWindowsEvents_FWD_DEFINED__ -#define __DShellWindowsEvents_FWD_DEFINED__ -typedef struct DShellWindowsEvents DShellWindowsEvents; -#endif - -/* Begin additional prototypes for all interfaces */ - -unsigned long __RPC_USER VARIANT_UserSize (unsigned long *, unsigned long, VARIANT *); -unsigned char * __RPC_USER VARIANT_UserMarshal (unsigned long *, unsigned char *, VARIANT *); -unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT *); -void __RPC_USER VARIANT_UserFree (unsigned long *, VARIANT *); -unsigned long __RPC_USER BSTR_UserSize (unsigned long *, unsigned long, BSTR *); -unsigned char * __RPC_USER BSTR_UserMarshal (unsigned long *, unsigned char *, BSTR *); -unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *); -void __RPC_USER BSTR_UserFree (unsigned long *, BSTR *); - -/* End additional prototypes */ - -#ifdef __cplusplus -} -#endif -#endif /* __WIDL_EXDISP_H */ diff --git a/reactos/include/reactos/wine/guiddef.h b/reactos/include/reactos/wine/guiddef.h deleted file mode 100644 index 9107d1aab5f..00000000000 --- a/reactos/include/reactos/wine/guiddef.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2000 Alexandre Julliard - * - * 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 - */ - -#ifndef GUID_DEFINED -#define GUID_DEFINED -typedef struct _GUID -{ - unsigned long Data1; - unsigned short Data2; - unsigned short Data3; - unsigned char Data4[ 8 ]; -} GUID; -#endif - -#undef DEFINE_GUID - -#ifdef INITGUID -#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - const GUID name = \ - { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } -#else -#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - extern const GUID name; -#endif - - - - -#ifndef _GUIDDEF_H_ -#define _GUIDDEF_H_ - -#ifndef __REACTOS__ -typedef GUID *LPGUID; -#endif -typedef GUID CLSID,*LPCLSID; -typedef GUID IID,*LPIID; -typedef GUID FMTID,*LPFMTID; - -#if 0 -#if defined(__cplusplus) && !defined(CINTERFACE) -#define REFGUID const GUID & -#define REFCLSID const CLSID & -#define REFIID const IID & -#define REFFMTID const FMTID & -#else /* !defined(__cplusplus) && !defined(CINTERFACE) */ -#define REFGUID const GUID* const -#define REFCLSID const CLSID* const -#define REFIID const IID* const -#define REFFMTID const FMTID* const -#endif /* !defined(__cplusplus) && !defined(CINTERFACE) */ -#endif - - -#if defined(__cplusplus) && !defined(CINTERFACE) -#define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID))) -#else /* defined(__cplusplus) && !defined(CINTERFACE) */ -#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) -#endif /* defined(__cplusplus) && !defined(CINTERFACE) */ - -#if defined(__cplusplus) && !defined(CINTERFACE) -#include -inline bool operator==(const GUID& guidOne, const GUID& guidOther) -{ - return !memcmp(&guidOne,&guidOther,sizeof(GUID)); -} -inline bool operator!=(const GUID& guidOne, const GUID& guidOther) -{ - return !(guidOne == guidOther); -} -#endif - -extern const IID GUID_NULL; -#define IID_NULL GUID_NULL -#define CLSID_NULL GUID_NULL -#define FMTID_NULL GUID_NULL - -#endif /* _GUIDDEF_H_ */ diff --git a/reactos/include/reactos/wine/netspi.h b/reactos/include/reactos/wine/netspi.h deleted file mode 100644 index ff1e996798f..00000000000 --- a/reactos/include/reactos/wine/netspi.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * MPR - Network provider services - * - * Copyright (C) 1999 Ulrich Weigand - * - * 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 - */ - -#ifndef _NETSPI_H_ -#define _NETSPI_H_ - -#include -#include - -/* - * Note: The Unicode variants of all these routines/structures - * apparently don't exist, at least not in Win95 ... - */ - -#define HPROVIDER LPVOID -typedef HPROVIDER *PHPROVIDER; - -typedef struct -{ - DWORD cbStructure; - HWND hwndOwner; - LPCSTR lpResource; - LPSTR lpUsername; - DWORD cbUsername; - LPSTR lpPassword; - DWORD cbPassword; - LPSTR lpOrgUnit; - DWORD cbOrgUnit; - LPCSTR lpOUTitle; - LPCSTR lpExplainText; - LPCSTR lpDefaultUserName; - DWORD dwFlags; - -} AUTHDLGSTRUCTA, *LPAUTHDLGSTRUCTA; - -DECL_WINELIB_TYPE_AW(AUTHDLGSTRUCT) -DECL_WINELIB_TYPE_AW(LPAUTHDLGSTRUCT) - -#define AUTHDLG_ENABLECACHE 0x00000001 -#define AUTHDLG_CHECKCACHE 0x00000002 -#define AUTHDLG_CACHEINVALID 0x00000004 -#define AUTHDLG_USE_DEFAULT_NAME 0x00000008 -#define AUTHDLG_CHECKDEFAULT_NAME 0x00000010 -#define AUTHDLG_LOGON 0x00000020 - -#define AUTHDLG_ENABLECACHE 0x00000001 -#define AUTHDLG_CHECKCACHE 0x00000002 -#define AUTHDLG_CACHEINVALID 0x00000004 -#define AUTHDLG_USE_DEFAULT_NAME 0x00000008 -#define AUTHDLG_CHECKDEFAULT_NAME 0x00000010 -#define AUTHDLG_LOGON 0x00000020 - -DWORD WINAPI NPSAuthenticationDialogA(LPAUTHDLGSTRUCTA); -#define NPSAuthenticationDialog WINELIB_NAME_AW(NPSAuthenticationDialog) -DWORD WINAPI NPSGetProviderHandleA(PHPROVIDER); -#define NPSGetProviderHandle WINELIB_NAME_AW(NPSGetProviderHandle) -DWORD WINAPI NPSGetProviderNameA(HPROVIDER,LPCSTR *); -#define NPSGetProviderName WINELIB_NAME_AW(NPSGetProviderName) -DWORD WINAPI NPSGetSectionNameA(HPROVIDER,LPCSTR *lpszSectionName); -#define NPSGetSectionName WINELIB_NAME_AW(NPSGetSectionName) -DWORD WINAPI NPSSetExtendedErrorA(DWORD,LPSTR); -#define NPSSetExtendedError WINELIB_NAME_AW(NPSSetExtendedError) -VOID WINAPI NPSSetCustomTextA(LPSTR); -#define NPSSetCustomText WINELIB_NAME_AW(NPSSetCustomText) -DWORD WINAPI NPSCopyStringA(LPCSTR,LPVOID,LPDWORD); -#define NPSCopyString WINELIB_NAME_AW(NPSCopyString) -DWORD WINAPI NPSDeviceGetNumberA(LPSTR,LPDWORD,LPDWORD); -#define NPSDeviceGetNumber WINELIB_NAME_AW(NPSDeviceGetNumber) -DWORD WINAPI NPSDeviceGetStringA(DWORD,DWORD,LPSTR,LPDWORD); -#define NPSDeviceGetString WINELIB_NAME_AW(NPSDeviceGetString) - - -enum NOTIFYTYPE { NotifyAddConnection, - NotifyCancelConnection, - NotifyGetConnectionPerformance }; - -#define NOTIFY_PRE 0x00 -#define NOTIFY_POST 0x01 - -typedef struct -{ - DWORD cbStructure; - DWORD dwNotifyStatus; - DWORD dwOperationStatus; - LPVOID lpNPContext; - -} NOTIFYINFO, *LPNOTIFYINFO; - -typedef struct -{ - DWORD cbStructure; - HWND hwndOwner; - NETRESOURCEA NetResource; - DWORD dwAddFlags; - LPSTR lpAccessName; - LPDWORD lpBufferSize; - DWORD dwResult; - DWORD dwAddContext; - -} NOTIFYADDA, *LPNOTIFYADDA; - -#define CONNECT_CTXT_RESTORE 0x00000001 -#define CONNECT_CTXT_GLOBAL 0x00000002 -#define CONNECT_CTXT_PROVIDER 0x00000004 -#define CONNECT_CTXT_SINGLE 0x00000008 - -typedef struct -{ - DWORD cbStructure; - LPSTR lpName; - LPSTR lpProvider; - DWORD dwFlags; - BOOL fForce; - -} NOTIFYCANCELA, *LPNOTIFYCANCELA; - -typedef struct -{ - DWORD cbStructure; - LPSTR lpRemoteName; - LPSTR lpProviderName; - LPNETCONNECTINFOSTRUCT lpNetConnectInfo; - -} NOTIFYPERFORMANCEA, *LPNOTIFYPERFORMANCEA; - -typedef DWORD (CALLBACK *NOTIFYCALLBACK)(LPNOTIFYINFO,LPVOID); - -DWORD WINAPI NPSNotifyRegisterA(enum NOTIFYTYPE,NOTIFYCALLBACK); -#define NPSNotifyRegister WINELIB_NAME_AW(NPSNotifyRegister) -LPVOID WINAPI NPSNotifyGetContextA(NOTIFYCALLBACK); -#define NPSNotifyGetContext WINELIB_NAME_AW(NPSNotifyGetContext) - -#endif /* _NETSPI_H_ */ - diff --git a/reactos/include/reactos/wine/oaidl.h b/reactos/include/reactos/wine/oaidl.h deleted file mode 100644 index 34985e61b95..00000000000 --- a/reactos/include/reactos/wine/oaidl.h +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include -#include -#include -#include - -#include_next - -#ifndef __WINE_OAIDL_H -#define __WINE_OAIDL_H - - -DEFINE_GUID(IID_IDispatch, 0x00020400, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IEnumVARIANT, 0x00020404, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ITypeComp, 0x00020403, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ITypeInfo, 0x00020401, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ITypeInfo2, 0x00020412, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ITypeLib, 0x00020402, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ITypeLib2, 0x00020411, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ITypeChangeEvents, 0x00020410, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IErrorInfo, 0x1cf2b120, 0x547d, 0x101b, 0x8e,0x65, 0x08,0x00,0x2b,0x2b,0xd1,0x19); - -/*** IUnknown methods ***/ -#define IErrorInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IErrorInfo_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IErrorInfo_Release(p) (p)->lpVtbl->Release(p) -/*** IErrorInfo methods ***/ -#define IErrorInfo_GetGUID(p,a) (p)->lpVtbl->GetGUID(p,a) -#define IErrorInfo_GetSource(p,a) (p)->lpVtbl->GetSource(p,a) -#define IErrorInfo_GetDescription(p,a) (p)->lpVtbl->GetDescription(p,a) -#define IErrorInfo_GetHelpFile(p,a) (p)->lpVtbl->GetHelpFile(p,a) -#define IErrorInfo_GetHelpContext(p,a) (p)->lpVtbl->GetHelpContext(p,a) - -DEFINE_GUID(IID_ICreateErrorInfo, 0x22f03340, 0x547d, 0x101b, 0x8e,0x65, 0x08,0x00,0x2b,0x2b,0xd1,0x19); -DEFINE_GUID(IID_ISupportErrorInfo, 0xdf0b3d60, 0x548f, 0x101b, 0x8e,0x65, 0x08,0x00,0x2b,0x2b,0xd1,0x19); -DEFINE_GUID(IID_ITypeFactory, 0x0000002e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ITypeMarshal, 0x0000002d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IRecordInfo, 0x0000002f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ICreateTypeInfo, 0x00020405, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ICreateTypeInfo2, 0x0002040e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ICreateTypeLib, 0x00020406, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ICreateTypeLib2, 0x0002040f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IErrorLog, 0x3127ca40, 0x446e, 0x11ce, 0x81,0x35, 0x00,0xaa,0x00,0x4b,0xb8,0x51); -DEFINE_GUID(IID_IPropertyBag, 0x55272a00, 0x42cb, 0x11ce, 0x81,0x35, 0x00,0xaa,0x00,0x4b,0xb8,0x51); - -#endif /* __WINE_OAIDL_H */ diff --git a/reactos/include/reactos/wine/objidl.h b/reactos/include/reactos/wine/objidl.h deleted file mode 100644 index 0cca35d0162..00000000000 --- a/reactos/include/reactos/wine/objidl.h +++ /dev/null @@ -1,2151 +0,0 @@ -#ifndef __WINE_OBJIDL_H -#define __WINE_OBJIDL_H - -#include - -/* First part: objidl.h copied from w32api. Fixed: - * IMarshal::MarshalInteface - * IMarshal::UnmarshalInterface - * IStorage_CreateStorage - * IRpcStubBuffer_Invoke - * Added: - * COBJMACROS for IClassActivator - */ - -#ifndef _OBJIDL_H -#define _OBJIDL_H -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif - -#include - -typedef struct tagSTATSTG { - LPOLESTR pwcsName; - DWORD type; - ULARGE_INTEGER cbSize; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; - DWORD grfMode; - DWORD grfLocksSupported; - CLSID clsid; - DWORD grfStateBits; - DWORD reserved; -} STATSTG; -typedef enum tagSTGTY { - STGTY_STORAGE=1, - STGTY_STREAM, - STGTY_LOCKBYTES, - STGTY_PROPERTY -} STGTY; -typedef enum tagSTREAM_SEEK { - STREAM_SEEK_SET, - STREAM_SEEK_CUR, - STREAM_SEEK_END -} STREAM_SEEK; -typedef struct tagINTERFACEINFO { - LPUNKNOWN pUnk; - IID iid; - WORD wMethod; -} INTERFACEINFO,*LPINTERFACEINFO; -typedef enum tagCALLTYPE { - CALLTYPE_TOPLEVEL=1, - CALLTYPE_NESTED, - CALLTYPE_ASYNC, - CALLTYPE_TOPLEVEL_CALLPENDING, - CALLTYPE_ASYNC_CALLPENDING -} CALLTYPE; -typedef enum tagPENDINGTYPE { - PENDINGTYPE_TOPLEVEL=1, - PENDINGTYPE_NESTED -} PENDINGTYPE; -typedef enum tagPENDINGMSG { - PENDINGMSG_CANCELCALL=0, - PENDINGMSG_WAITNOPROCESS, - PENDINGMSG_WAITDEFPROCESS -} PENDINGMSG; -typedef OLECHAR **SNB; -typedef enum tagDATADIR { - DATADIR_GET=1, - DATADIR_SET -} DATADIR; -typedef WORD CLIPFORMAT,*LPCLIPFORMAT; -typedef struct tagDVTARGETDEVICE { - DWORD tdSize; - WORD tdDriverNameOffset; - WORD tdDeviceNameOffset; - WORD tdPortNameOffset; - WORD tdExtDevmodeOffset; - BYTE tdData[1]; -} DVTARGETDEVICE; -typedef struct tagFORMATETC { - CLIPFORMAT cfFormat; - DVTARGETDEVICE*ptd; - DWORD dwAspect; - LONG lindex; - DWORD tymed; -} FORMATETC,*LPFORMATETC; -typedef struct tagRemSTGMEDIUM { - DWORD tymed; - DWORD dwHandleType; - ULONG pData; - unsigned long pUnkForRelease; - unsigned long cbData; - BYTE data[1]; -} RemSTGMEDIUM; -typedef struct tagSTATDATA { - FORMATETC formatetc; - DWORD grfAdvf; - struct IAdviseSink *pAdvSink; - DWORD dwConnection; -} STATDATA; -typedef struct tagSTATPROPSETSTG { - FMTID fmtid; - CLSID clsid; - DWORD grfFlags; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; - DWORD dwOSVersion; -} STATPROPSETSTG; -typedef enum tagEXTCONN { - EXTCONN_STRONG=1, - EXTCONN_WEAK=2, - EXTCONN_CALLABLE=4 -} EXTCONN; -typedef struct tagMULTI_QI { - const IID *pIID; - IUnknown *pItf; - HRESULT hr; -} MULTI_QI; -typedef struct _AUTH_IDENTITY { - USHORT *User; - ULONG UserLength; - USHORT *Domain; - ULONG DomainLength; - USHORT *Password; - ULONG PasswordLength; - ULONG Flags; -} AUTH_IDENTITY; -typedef struct _COAUTHINFO{ - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - LPWSTR pwszServerPrincName; - DWORD dwAuthnLevel; - DWORD dwImpersonationLevel; - AUTH_IDENTITY *pAuthIdentityData; - DWORD dwCapabilities; -} COAUTHINFO; -typedef struct _COSERVERINFO { - DWORD dwReserved1; - LPWSTR pwszName; - COAUTHINFO *pAuthInfo; - DWORD dwReserved2; -} COSERVERINFO; -typedef struct tagBIND_OPTS { - DWORD cbStruct; - DWORD grfFlags; - DWORD grfMode; - DWORD dwTickCountDeadline; -} BIND_OPTS,*LPBIND_OPTS; -typedef struct tagBIND_OPTS2 { - DWORD cbStruct; - DWORD grfFlags; - DWORD grfMode; - DWORD dwTickCountDeadline; - DWORD dwTrackFlags; - DWORD dwClassContext; - LCID locale; - COSERVERINFO *pServerInfo; -} BIND_OPTS2,*LPBIND_OPTS2; -typedef enum tagBIND_FLAGS { - BIND_MAYBOTHERUSER=1, - BIND_JUSTTESTEXISTENCE -} BIND_FLAGS; -typedef struct tagSTGMEDIUM { - DWORD tymed; - _ANONYMOUS_UNION union { - HBITMAP hBitmap; - PVOID hMetaFilePict; - HENHMETAFILE hEnhMetaFile; - HGLOBAL hGlobal; - LPWSTR lpszFileName; - LPSTREAM pstm; - LPSTORAGE pstg; - } DUMMYUNIONNAME; - LPUNKNOWN pUnkForRelease; -} STGMEDIUM,*LPSTGMEDIUM; -typedef enum tagLOCKTYPE { - LOCK_WRITE=1, - LOCK_EXCLUSIVE=2, - LOCK_ONLYONCE=4 -} LOCKTYPE; -typedef unsigned long RPCOLEDATAREP; -typedef struct tagRPCOLEMESSAGE { - PVOID reserved1; - RPCOLEDATAREP dataRepresentation; - PVOID Buffer; - ULONG cbBuffer; - ULONG iMethod; - PVOID reserved2[5]; - ULONG rpcFlags; -} RPCOLEMESSAGE, *PRPCOLEMESSAGE; -typedef enum tagMKSYS { - MKSYS_NONE, - MKSYS_GENERICCOMPOSITE, - MKSYS_FILEMONIKER, - MKSYS_ANTIMONIKER, - MKSYS_ITEMMONIKER, - MKSYS_POINTERMONIKER -} MKSYS; -typedef enum tagMKREDUCE { - MKRREDUCE_ALL, - MKRREDUCE_ONE=196608, - MKRREDUCE_TOUSER=131072, - MKRREDUCE_THROUGHUSER=65536 -} MKRREDUCE; -typedef struct tagRemSNB { - unsigned long ulCntStr; - unsigned long ulCntChar; - OLECHAR rgString[1]; -} RemSNB; -typedef enum tagADVF { - ADVF_NODATA=1,ADVF_PRIMEFIRST=2,ADVF_ONLYONCE=4,ADVF_DATAONSTOP=64, - ADVFCACHE_NOHANDLER=8,ADVFCACHE_FORCEBUILTIN=16,ADVFCACHE_ONSAVE=32 -} ADVF; -typedef enum tagTYMED { - TYMED_HGLOBAL=1,TYMED_FILE=2,TYMED_ISTREAM=4,TYMED_ISTORAGE=8, - TYMED_GDI=16,TYMED_MFPICT=32,TYMED_ENHMF=64,TYMED_NULL=0 -} TYMED; -typedef enum tagSERVERCALL { - SERVERCALL_ISHANDLED,SERVERCALL_REJECTED,SERVERCALL_RETRYLATER -} SERVERCALL; -typedef struct tagCAUB { - ULONG cElems; - unsigned char *pElems; -}CAUB; -typedef struct tagCAI { - ULONG cElems; - short *pElems; -}CAI; -typedef struct tagCAUI { - ULONG cElems; - USHORT *pElems; -}CAUI; -typedef struct tagCAL { - ULONG cElems; - long *pElems; -}CAL; -typedef struct tagCAUL { - ULONG cElems; - ULONG *pElems; -}CAUL; -typedef struct tagCAFLT { - ULONG cElems; - float *pElems; -}CAFLT; -typedef struct tagCADBL { - ULONG cElems; - double *pElems; -}CADBL; -typedef struct tagCACY { - ULONG cElems; - CY *pElems; -}CACY; -typedef struct tagCADATE { - ULONG cElems; - DATE *pElems; -}CADATE; -typedef struct tagCABSTR { - ULONG cElems; - BSTR *pElems; -}CABSTR; -typedef struct tagCABSTRBLOB { - ULONG cElems; - BSTRBLOB *pElems; -}CABSTRBLOB; -typedef struct tagCABOOL { - ULONG cElems; - VARIANT_BOOL *pElems; -}CABOOL; -typedef struct tagCASCODE { - ULONG cElems; - SCODE *pElems; -}CASCODE; -typedef struct tagCAH { - ULONG cElems; - LARGE_INTEGER *pElems; -}CAH; -typedef struct tagCAUH { - ULONG cElems; - ULARGE_INTEGER *pElems; -}CAUH; -typedef struct tagCALPSTR { - ULONG cElems; - LPSTR *pElems; -}CALPSTR; -typedef struct tagCALPWSTR { - ULONG cElems; - LPWSTR *pElems; -}CALPWSTR; -typedef struct tagCAFILETIME { - ULONG cElems; - FILETIME *pElems; -}CAFILETIME; -typedef struct tagCACLIPDATA { - ULONG cElems; - CLIPDATA *pElems; -}CACLIPDATA; -typedef struct tagCACLSID { - ULONG cElems; - CLSID *pElems; -}CACLSID; -typedef struct tagPROPVARIANT *LPPROPVARIANT; -typedef struct tagCAPROPVARIANT { - ULONG cElems; - LPPROPVARIANT pElems; -}CAPROPVARIANT; -typedef struct tagPROPVARIANT { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - _ANONYMOUS_UNION union { - CHAR cVal; - UCHAR bVal; - short iVal; - USHORT uiVal; - VARIANT_BOOL boolVal; -#if 0 -/* bool is a standard type in C++, and a standard macro expanding - to the _Bool type in C99 (see stdbool.h) */ - _VARIANT_BOOL bool; -#endif - long lVal; - ULONG ulVal; - float fltVal; - SCODE scode; - LARGE_INTEGER hVal; - ULARGE_INTEGER uhVal; - double dblVal; - CY cyVal; - DATE date; - FILETIME filetime; - CLSID *puuid; - BLOB blob; - CLIPDATA *pclipdata; - LPSTREAM pStream; - LPSTORAGE pStorage; - BSTR bstrVal; - BSTRBLOB bstrblobVal; - LPSTR pszVal; - LPWSTR pwszVal; - CAUB caub; - CAI cai; - CAUI caui; - CABOOL cabool; - CAL cal; - CAUL caul; - CAFLT caflt; - CASCODE cascode; - CAH cah; - CAUH cauh; - CADBL cadbl; - CACY cacy; - CADATE cadate; - CAFILETIME cafiletime; - CACLSID cauuid; - CACLIPDATA caclipdata; - CABSTR cabstr; - CABSTRBLOB cabstrblob; - CALPSTR calpstr; - CALPWSTR calpwstr; - CAPROPVARIANT capropvar; - } DUMMYUNIONNAME; -} PROPVARIANT; -typedef struct tagPROPSPEC { - ULONG ulKind; - _ANONYMOUS_UNION union { - PROPID propid; - LPOLESTR lpwstr; - } DUMMYUNIONNAME; -}PROPSPEC; -typedef struct tagSTATPROPSTG { - LPOLESTR lpwstrName; - PROPID propid; - VARTYPE vt; -} STATPROPSTG; -typedef enum PROPSETFLAG { - PROPSETFLAG_DEFAULT,PROPSETFLAG_NONSIMPLE,PROPSETFLAG_ANSI, - PROPSETFLAG_UNBUFFERED=4 -} PROPSETFLAG; -typedef struct tagSTORAGELAYOUT { - DWORD LayoutType; - OLECHAR* pwcsElementName; - LARGE_INTEGER cOffset; - LARGE_INTEGER cBytes; -} STORAGELAYOUT; -typedef struct tagSOLE_AUTHENTICATION_SERVICE { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - OLECHAR *pPrincipalName; - HRESULT hr; -} SOLE_AUTHENTICATION_SERVICE; -#define COLE_DEFAULT_PRINCIPAL ( ( OLECHAR* )-1 ) -typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES { - EOAC_NONE = 0, - EOAC_MUTUAL_AUTH = 0x1, - EOAC_STATIC_CLOAKING = 0x20, - EOAC_DYNAMIC_CLOAKING = 0x40, - EOAC_ANY_AUTHORITY = 0x80, - EOAC_MAKE_FULLSIC = 0x100, - EOAC_DEFAULT = 0x800, - EOAC_SECURE_REFS = 0x2, - EOAC_ACCESS_CONTROL = 0x4, - EOAC_APPID = 0x8, - EOAC_DYNAMIC = 0x10, - EOAC_REQUIRE_FULLSIC = 0x200, - EOAC_AUTO_IMPERSONATE = 0x400, - EOAC_NO_CUSTOM_MARSHAL = 0x2000, - EOAC_DISABLE_AAA = 0x1000 -} EOLE_AUTHENTICATION_CAPABILITIES; -typedef struct tagSOLE_AUTHENTICATION_INFO { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - void* pAuthInfo; -} SOLE_AUTHENTICATION_INFO; -#define COLE_DEFAULT_AUTHINFO ( ( void* )-1 ) -typedef struct tagSOLE_AUTHENTICATION_LIST { - DWORD cAuthInfo; - SOLE_AUTHENTICATION_INFO* aAuthInfo; -} SOLE_AUTHENTICATION_LIST; - -EXTERN_C const FMTID FMTID_SummaryInformation; -EXTERN_C const FMTID FMTID_DocSummaryInformation; -EXTERN_C const FMTID FMTID_UserDefinedProperties; - -DECLARE_ENUMERATOR(FORMATETC); -DECLARE_ENUMERATOR(STATDATA); -DECLARE_ENUMERATOR(STATPROPSETSTG); -DECLARE_ENUMERATOR(STATPROPSTG); -DECLARE_ENUMERATOR(STATSTG); -DECLARE_ENUMERATOR_(IEnumString,LPOLESTR); -DECLARE_ENUMERATOR_(IEnumMoniker,interface IMoniker*); -DECLARE_ENUMERATOR_(IEnumUnknown,IUnknown*); - -EXTERN_C const IID IID_ISequentialStream; -#define INTERFACE ISequentialStream -DECLARE_INTERFACE_(ISequentialStream,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE; - STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IStream; -#define INTERFACE IStream -DECLARE_INTERFACE_(IStream,ISequentialStream) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE; - STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE; - STDMETHOD(Seek)(THIS_ LARGE_INTEGER,DWORD,ULARGE_INTEGER*) PURE; - STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE; - STDMETHOD(CopyTo)(THIS_ IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*) PURE; - STDMETHOD(Commit)(THIS_ DWORD) PURE; - STDMETHOD(Revert)(THIS) PURE; - STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; - STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; - STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE; - STDMETHOD(Clone)(THIS_ LPSTREAM*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMarshal; -#define INTERFACE IMarshal -DECLARE_INTERFACE_(IMarshal,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetUnmarshalClass) (THIS_ REFIID,PVOID,DWORD,PVOID,DWORD,CLSID*) PURE; - STDMETHOD(GetMarshalSizeMax) (THIS_ REFIID,PVOID,DWORD,PVOID,DWORD,PULONG) PURE; - STDMETHOD(MarshalInterface) (THIS_ IStream*,REFIID,PVOID,DWORD,PVOID,DWORD) PURE; - STDMETHOD(UnmarshalInterface) (THIS_ IStream*,REFIID,void**) PURE; - STDMETHOD(ReleaseMarshalData) (THIS_ IStream*) PURE; - STDMETHOD(DisconnectObject) (THIS_ DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IStdMarshalInfo; -#define INTERFACE IStdMarshalInfo -DECLARE_INTERFACE_(IStdMarshalInfo,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassForHandler)(THIS_ DWORD,PVOID,CLSID*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMalloc; -#define INTERFACE IMalloc -DECLARE_INTERFACE_(IMalloc,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(void*,Alloc)(THIS_ ULONG) PURE; - STDMETHOD_(void*,Realloc)(THIS_ void*,ULONG) PURE; - STDMETHOD_(void,Free)(THIS_ void*) PURE; - STDMETHOD_(ULONG,GetSize)(THIS_ void*) PURE; - STDMETHOD_(int,DidAlloc)(THIS_ void*) PURE; - STDMETHOD_(void,HeapMinimize)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMallocSpy; -#define INTERFACE IMallocSpy -DECLARE_INTERFACE_(IMallocSpy,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(ULONG,PreAlloc)(THIS_ ULONG) PURE; - STDMETHOD_(void*,PostAlloc)(THIS_ void*) PURE; - STDMETHOD_(void*,PreFree)(THIS_ void*,BOOL) PURE; - STDMETHOD_(void,PostFree)(THIS_ BOOL) PURE; - STDMETHOD_(ULONG,PreRealloc)(THIS_ void*,ULONG,void**,BOOL) PURE; - STDMETHOD_(void*,PostRealloc)(THIS_ void*,BOOL) PURE; - STDMETHOD_(void*,PreGetSize)(THIS_ void*,BOOL) PURE; - STDMETHOD_(ULONG,PostGetSize)(THIS_ ULONG,BOOL) PURE; - STDMETHOD_(void*,PreDidAlloc)(THIS_ void*,BOOL) PURE; - STDMETHOD_(int,PostDidAlloc)(THIS_ void*,BOOL,int) PURE; - STDMETHOD_(void,PreHeapMinimize)(THIS) PURE; - STDMETHOD_(void,PostHeapMinimize)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMessageFilter; -#define INTERFACE IMessageFilter -DECLARE_INTERFACE_(IMessageFilter,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(DWORD,HandleInComingCall)(THIS_ DWORD,HTASK,DWORD,LPINTERFACEINFO) PURE; - STDMETHOD_(DWORD,RetryRejectedCall)(THIS_ HTASK,DWORD,DWORD) PURE; - STDMETHOD_(DWORD,MessagePending)(THIS_ HTASK,DWORD,DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPersist; -#define INTERFACE IPersist -DECLARE_INTERFACE_(IPersist,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPersistStream; -#define INTERFACE IPersistStream -DECLARE_INTERFACE_(IPersistStream,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(Load)(THIS_ IStream*) PURE; - STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE; - STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRunningObjectTable; -#define INTERFACE IRunningObjectTable -DECLARE_INTERFACE_(IRunningObjectTable,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Register)(THIS_ DWORD,LPUNKNOWN,LPMONIKER,PDWORD) PURE; - STDMETHOD(Revoke)(THIS_ DWORD) PURE; - STDMETHOD(IsRunning)(THIS_ LPMONIKER) PURE; - STDMETHOD(GetObject)(THIS_ LPMONIKER,LPUNKNOWN*) PURE; - STDMETHOD(NoteChangeTime)(THIS_ DWORD,LPFILETIME) PURE; - STDMETHOD(GetTimeOfLastChange)(THIS_ LPMONIKER,LPFILETIME) PURE; - STDMETHOD(EnumRunning)(THIS_ IEnumMoniker**) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IBindCtx; -#define INTERFACE IBindCtx -DECLARE_INTERFACE_(IBindCtx,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(RegisterObjectBound)(THIS_ LPUNKNOWN) PURE; - STDMETHOD(RevokeObjectBound)(THIS_ LPUNKNOWN) PURE; - STDMETHOD(ReleaseBoundObjects)(THIS) PURE; - STDMETHOD(SetBindOptions)(THIS_ LPBIND_OPTS) PURE; - STDMETHOD(GetBindOptions)(THIS_ LPBIND_OPTS) PURE; - STDMETHOD(GetRunningObjectTable)(THIS_ IRunningObjectTable**) PURE; - STDMETHOD(RegisterObjectParam)(THIS_ LPOLESTR,IUnknown*) PURE; - STDMETHOD(GetObjectParam)(THIS_ LPOLESTR,IUnknown**) PURE; - STDMETHOD(EnumObjectParam)(THIS_ IEnumString**) PURE; - STDMETHOD(RevokeObjectParam)(THIS_ LPOLESTR) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IMoniker; -#define INTERFACE IMoniker -DECLARE_INTERFACE_(IMoniker,IPersistStream) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(Load)(THIS_ IStream*) PURE; - STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE; - STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE; - STDMETHOD(BindToObject)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE; - STDMETHOD(BindToStorage)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE; - STDMETHOD(Reduce)(THIS_ IBindCtx*,DWORD,IMoniker**,IMoniker**) PURE; - STDMETHOD(ComposeWith)(THIS_ IMoniker*,BOOL,IMoniker**) PURE; - STDMETHOD(Enum)(THIS_ BOOL,IEnumMoniker**) PURE; - STDMETHOD(IsEqual)(THIS_ IMoniker*) PURE; - STDMETHOD(Hash)(THIS_ PDWORD) PURE; - STDMETHOD(IsRunning)(THIS_ IBindCtx*,IMoniker*,IMoniker*) PURE; - STDMETHOD(GetTimeOfLastChange)(THIS_ IBindCtx*,IMoniker*,LPFILETIME) PURE; - STDMETHOD(Inverse)(THIS_ IMoniker**) PURE; - STDMETHOD(CommonPrefixWith)(THIS_ IMoniker*,IMoniker**) PURE; - STDMETHOD(RelativePathTo)(THIS_ IMoniker*,IMoniker**) PURE; - STDMETHOD(GetDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR*) PURE; - STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR,ULONG*,IMoniker**) PURE; - STDMETHOD(IsSystemMoniker)(THIS_ PDWORD) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMoniker_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMoniker_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMoniker_Release(p) (p)->lpVtbl->Release(p) -/*** IPersist methods ***/ -#define IMoniker_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) -/*** IPersistStream methods ***/ -#define IMoniker_IsDirty(p) (p)->lpVtbl->IsDirty(p) -#define IMoniker_Load(p,a) (p)->lpVtbl->Load(p,a) -#define IMoniker_Save(p,a,b) (p)->lpVtbl->Save(p,a,b) -#define IMoniker_GetSizeMax(p,a) (p)->lpVtbl->GetSizeMax(p,a) -/*** IMoniker methods ***/ -#define IMoniker_BindToObject(p,a,b,c,d) (p)->lpVtbl->BindToObject(p,a,b,c,d) -#define IMoniker_BindToStorage(p,a,b,c,d) (p)->lpVtbl->BindToStorage(p,a,b,c,d) -#define IMoniker_Reduce(p,a,b,c,d) (p)->lpVtbl->Reduce(p,a,b,c,d) -#define IMoniker_ComposeWith(p,a,b,c) (p)->lpVtbl->ComposeWith(p,a,b,c) -#define IMoniker_Enum(p,a,b) (p)->lpVtbl->Enum(p,a,b) -#define IMoniker_IsEqual(p,a) (p)->lpVtbl->IsEqual(p,a) -#define IMoniker_Hash(p,a) (p)->lpVtbl->Hash(p,a) -#define IMoniker_IsRunning(p,a,b,c) (p)->lpVtbl->IsRunning(p,a,b,c) -#define IMoniker_GetTimeOfLastChange(p,a,b,c) (p)->lpVtbl->GetTimeOfLastChange(p,a,b,c) -#define IMoniker_Inverse(p,a) (p)->lpVtbl->Inverse(p,a) -#define IMoniker_CommonPrefixWith(p,a,b) (p)->lpVtbl->CommonPrefixWith(p,a,b) -#define IMoniker_RelativePathTo(p,a,b) (p)->lpVtbl->RelativePathTo(p,a,b) -#define IMoniker_GetDisplayName(p,a,b,c) (p)->lpVtbl->GetDisplayName(p,a,b,c) -#define IMoniker_ParseDisplayName(p,a,b,c,d,e) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d,e) -#define IMoniker_IsSystemMoniker(p,a) (p)->lpVtbl->IsSystemMoniker(p,a) -#endif - -EXTERN_C const IID IID_IPersistStorage; -#define INTERFACE IPersistStorage -DECLARE_INTERFACE_(IPersistStorage,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(InitNew)(THIS_ LPSTORAGE) PURE; - STDMETHOD(Load)(THIS_ LPSTORAGE) PURE; - STDMETHOD(Save)(THIS_ LPSTORAGE,BOOL) PURE; - STDMETHOD(SaveCompleted)(THIS_ LPSTORAGE) PURE; - STDMETHOD(HandsOffStorage)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPersistFile; -#define INTERFACE IPersistFile -DECLARE_INTERFACE_(IPersistFile,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; - STDMETHOD(IsDirty)(THIS) PURE; - STDMETHOD(Load)(THIS_ LPCOLESTR,DWORD) PURE; - STDMETHOD(Save)(THIS_ LPCOLESTR,BOOL) PURE; - STDMETHOD(SaveCompleted)(THIS_ LPCOLESTR) PURE; - STDMETHOD(GetCurFile)(THIS_ LPOLESTR*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IAdviseSink; -#define INTERFACE IAdviseSink -DECLARE_INTERFACE_(IAdviseSink,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE; - STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE; - STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE; - STDMETHOD_(void,OnSave)(THIS) PURE; - STDMETHOD_(void,OnClose)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IAdviseSink2; -#define INTERFACE IAdviseSink2 -DECLARE_INTERFACE_(IAdviseSink2,IAdviseSink) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE; - STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE; - STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE; - STDMETHOD_(void,OnSave)(THIS) PURE; - STDMETHOD_(void,OnClose)(THIS) PURE; - STDMETHOD_(void,OnLinkSrcChange)(THIS_ IMoniker*); -}; -#undef INTERFACE - -EXTERN_C const IID IID_IDataObject; -#define INTERFACE IDataObject -DECLARE_INTERFACE_(IDataObject,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetData)(THIS_ FORMATETC*,STGMEDIUM*) PURE; - STDMETHOD(GetDataHere)(THIS_ FORMATETC*,STGMEDIUM*) PURE; - STDMETHOD(QueryGetData)(THIS_ FORMATETC*) PURE; - STDMETHOD(GetCanonicalFormatEtc)(THIS_ FORMATETC*,FORMATETC*) PURE; - STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE; - STDMETHOD(EnumFormatEtc)(THIS_ DWORD,IEnumFORMATETC**) PURE; - STDMETHOD(DAdvise)(THIS_ FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE; - STDMETHOD(DUnadvise)(THIS_ DWORD) PURE; - STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IDataAdviseHolder; -#define INTERFACE IDataAdviseHolder -DECLARE_INTERFACE_(IDataAdviseHolder,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Advise)(THIS_ IDataObject*,FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE; - STDMETHOD(Unadvise)(THIS_ DWORD) PURE; - STDMETHOD(EnumAdvise)(THIS_ IEnumSTATDATA**) PURE; - STDMETHOD(SendOnDataChange)(THIS_ IDataObject*,DWORD,DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IStorage; -#define INTERFACE IStorage -DECLARE_INTERFACE_(IStorage,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CreateStream)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStream**) PURE; - STDMETHOD(OpenStream)(THIS_ LPCWSTR,PVOID,DWORD,DWORD,IStream**) PURE; - STDMETHOD(CreateStorage)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStorage**) PURE; - STDMETHOD(OpenStorage)(THIS_ LPCWSTR,IStorage*,DWORD,SNB,DWORD,IStorage**) PURE; - STDMETHOD(CopyTo)(THIS_ DWORD,IID const*,SNB,IStorage*) PURE; - STDMETHOD(MoveElementTo)(THIS_ LPCWSTR,IStorage*,LPCWSTR,DWORD) PURE; - STDMETHOD(Commit)(THIS_ DWORD) PURE; - STDMETHOD(Revert)(THIS) PURE; - STDMETHOD(EnumElements)(THIS_ DWORD,PVOID,DWORD,IEnumSTATSTG**) PURE; - STDMETHOD(DestroyElement)(THIS_ LPCWSTR) PURE; - STDMETHOD(RenameElement)(THIS_ LPCWSTR,LPCWSTR) PURE; - STDMETHOD(SetElementTimes)(THIS_ LPCWSTR,FILETIME const*,FILETIME const*,FILETIME const*) PURE; - STDMETHOD(SetClass)(THIS_ REFCLSID) PURE; - STDMETHOD(SetStateBits)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRootStorage; -#define INTERFACE IRootStorage -DECLARE_INTERFACE_(IRootStorage,IPersist) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(SwitchToFile)(THIS_ LPOLESTR) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRpcChannelBuffer; -#define INTERFACE IRpcChannelBuffer -DECLARE_INTERFACE_(IRpcChannelBuffer,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetBuffer)(THIS_ RPCOLEMESSAGE*,REFIID) PURE; - STDMETHOD(SendReceive)(THIS_ RPCOLEMESSAGE*,PULONG) PURE; - STDMETHOD(FreeBuffer)(THIS_ RPCOLEMESSAGE*) PURE; - STDMETHOD(GetDestCtx)(THIS_ PDWORD,PVOID*) PURE; - STDMETHOD(IsConnected)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRpcProxyBuffer; -#define INTERFACE IRpcProxyBuffer -DECLARE_INTERFACE_(IRpcProxyBuffer,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Connect)(THIS_ IRpcChannelBuffer*) PURE; - STDMETHOD_(void,Disconnect)(THIS) PURE; - -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRpcStubBuffer; -#define INTERFACE IRpcStubBuffer -DECLARE_INTERFACE_(IRpcStubBuffer,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Connect)(THIS_ LPUNKNOWN) PURE; - STDMETHOD_(void,Disconnect)(THIS) PURE; - STDMETHOD(Invoke)(THIS_ RPCOLEMESSAGE*,LPRPCCHANNELBUFFER) PURE; - STDMETHOD_(LPRPCSTUBBUFFER,IsIIDSupported)(THIS_ REFIID) PURE; - STDMETHOD_(ULONG,CountRefs)(THIS) PURE; - STDMETHOD(DebugServerQueryInterface)(THIS_ PVOID*) PURE; - STDMETHOD_(VOID,DebugServerRelease)(THIS_ PVOID) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPSFactoryBuffer; -#define INTERFACE IPSFactoryBuffer -DECLARE_INTERFACE_(IPSFactoryBuffer,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(CreateProxy)(THIS_ LPUNKNOWN,REFIID,LPRPCPROXYBUFFER*,PVOID*) PURE; - STDMETHOD(CreateStub)(THIS_ REFIID,LPUNKNOWN,LPRPCSTUBBUFFER*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_ILockBytes; -#define INTERFACE ILockBytes -DECLARE_INTERFACE_(ILockBytes,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ReadAt)(THIS_ ULARGE_INTEGER,PVOID,ULONG,ULONG*) PURE; - STDMETHOD(WriteAt)(THIS_ ULARGE_INTEGER,PCVOID,ULONG,ULONG*) PURE; - STDMETHOD(Flush)(THIS) PURE; - STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE; - STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; - STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; - STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IExternalConnection; -#define INTERFACE IExternalConnection -DECLARE_INTERFACE_(IExternalConnection,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(AddConnection)(THIS_ DWORD,DWORD) PURE; - STDMETHOD(ReleaseConnection)(THIS_ DWORD,DWORD,BOOL) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IRunnableObject; -#define INTERFACE IRunnableObject -DECLARE_INTERFACE_(IRunnableObject,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetRunningClass)(THIS_ LPCLSID) PURE; - STDMETHOD(Run)(THIS_ LPBC) PURE; - STDMETHOD_(BOOL,IsRunning)(THIS) PURE; - STDMETHOD(LockRunning)(THIS_ BOOL,BOOL) PURE; - STDMETHOD(SetContainedObject)(THIS_ BOOL) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IROTData; -#define INTERFACE IROTData -DECLARE_INTERFACE_(IROTData,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetComparisonData)(THIS_ PBYTE,ULONG,PULONG) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IChannelHook; -#define INTERFACE IChannelHook -DECLARE_INTERFACE_(IChannelHook,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD_(void,ClientGetSize)(THIS_ REFGUID,REFIID,PULONG) PURE; - STDMETHOD_(void,ClientFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID) PURE; - STDMETHOD_(void,ClientNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD,HRESULT) PURE; - STDMETHOD_(void,ServerNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD) PURE; - STDMETHOD_(void,ServerGetSize)(THIS_ REFGUID,REFIID,HRESULT,PULONG) PURE; - STDMETHOD_(void,ServerFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID,HRESULT) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPropertyStorage; -#define INTERFACE IPropertyStorage -DECLARE_INTERFACE_(IPropertyStorage,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(ReadMultiple)(THIS_ ULONG,PROPSPEC const*,PROPVARIANT*) PURE; - STDMETHOD(WriteMultiple)(THIS_ ULONG,const PROPSPEC *,const PROPVARIANT *,PROPID) PURE; - STDMETHOD(DeleteMultiple)(THIS_ ULONG,PROPSPEC const*) PURE; - STDMETHOD(ReadPropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR*) PURE; - STDMETHOD(WritePropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR const*) PURE; - STDMETHOD(DeletePropertyNames)(THIS_ ULONG,PROPID const*) PURE; - STDMETHOD(Commit)(THIS_ DWORD) PURE; - STDMETHOD(Revert)(THIS) PURE; - STDMETHOD(Enum)(THIS_ IEnumSTATPROPSTG**) PURE; - STDMETHOD(SetTimes)(THIS_ FILETIME const*,FILETIME const*,FILETIME const*) PURE; - STDMETHOD(SetClass)(THIS_ REFCLSID) PURE; - STDMETHOD(Stat)(THIS_ STATPROPSETSTG*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IPropertySetStorage; -#define INTERFACE IPropertySetStorage -DECLARE_INTERFACE_(IPropertySetStorage,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(Create)(THIS_ REFFMTID,const CLSID*,DWORD,DWORD,LPPROPERTYSTORAGE*) PURE; - STDMETHOD(Open)(THIS_ REFFMTID,DWORD,LPPROPERTYSTORAGE*) PURE; - STDMETHOD(Delete)(THIS_ REFFMTID) PURE; - STDMETHOD(Enum)(THIS_ IEnumSTATPROPSETSTG**) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IPropertyStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPropertyStorage_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPropertyStorage_Release(p) (p)->lpVtbl->Release(p) -/*** IPropertyStorage methods ***/ -#define IPropertyStorage_ReadMultiple(p,a,b,c) (p)->lpVtbl->ReadMultiple(p,a,b,c) -#define IPropertyStorage_WriteMultiple(p,a,b,c,d) (p)->lpVtbl->WriteMultiple(p,a,b,c,d) -#define IPropertyStorage_DeleteMultiple(p,a,b) (p)->lpVtbl->DeleteMultiple(p,a,b) -#define IPropertyStorage_ReadPropertyNames(p,a,b,c) (p)->lpVtbl->ReadPropertyNames(p,a,b,c) -#define IPropertyStorage_WritePropertyNames(p,a,b,c) (p)->lpVtbl->WritePropertyNames(p,a,b,c) -#define IPropertyStorage_DeletePropertyNames(p,a,b) (p)->lpVtbl->DeletePropertyNames(p,a,b) -#define IPropertyStorage_Commit(p,a) (p)->lpVtbl->Commit(p,a) -#define IPropertyStorage_Revert(p) (p)->lpVtbl->Revert(p) -#define IPropertyStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a) -#define IPropertyStorage_SetTimes(p,a,b,c) (p)->lpVtbl->SetTimes(p,a,b,c) -#define IPropertyStorage_SetClass(p,a) (p)->lpVtbl->SetClass(p,a) -#define IPropertyStorage_Stat(p,a) (p)->lpVtbl->Stat(p,a) -#endif - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IPropertySetStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IPropertySetStorage_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IPropertySetStorage_Release(p) (p)->lpVtbl->Release(p) -/*** IPropertySetStorage methods ***/ -#define IPropertySetStorage_Create(p,a,b,c,d,e) (p)->lpVtbl->Create(p,a,b,c,d,e) -#define IPropertySetStorage_Open(p,a,b,c) (p)->lpVtbl->Open(p,a,b,c) -#define IPropertySetStorage_Delete(p,a) (p)->lpVtbl->Delete(p,a) -#define IPropertySetStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a) -#endif - -EXTERN_C const IID IID_IClientSecurity; -#define INTERFACE IClientSecurity -DECLARE_INTERFACE_(IClientSecurity,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(QueryBlanket)(THIS_ PVOID,PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTH_IDENTITY_HANDLE**,PDWORD*) PURE; - STDMETHOD(SetBlanket)(THIS_ PVOID,DWORD,DWORD,LPWSTR,DWORD,DWORD,RPC_AUTH_IDENTITY_HANDLE*,DWORD) PURE; - STDMETHOD(CopyProxy)(THIS_ LPUNKNOWN,LPUNKNOWN*) PURE; -}; -#undef INTERFACE - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IClientSecurity_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IClientSecurity_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IClientSecurity_Release(p) (p)->lpVtbl->Release(p) -/*** IClientSecurity methods ***/ -#define IClientSecurity_QueryBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->QueryBlanket(p,a,b,c,d,e,f,g,h) -#define IClientSecurity_SetBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->SetBlanket(p,a,b,c,d,e,f,g,h) -#define IClientSecurity_CopyProxy(p,a,b) (p)->lpVtbl->CopyProxy(p,a,b) -#endif - -EXTERN_C const IID IID_IServerSecurity; -#define INTERFACE IServerSecurity -DECLARE_INTERFACE_(IServerSecurity,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(QueryBlanket)(THIS_ PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTHZ_HANDLE*,PDWORD*) PURE; - STDMETHOD(ImpersonateClient)(THIS) PURE; - STDMETHOD(RevertToSelf)(THIS) PURE; - STDMETHOD(IsImpersonating)(THIS) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IClassActivator; -#define INTERFACE IClassActivator -DECLARE_INTERFACE_(IClassActivator,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(GetClassObject)(THIS_ REFCLSID,DWORD,LCID,REFIID,PVOID*) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IFillLockBytes; -#define INTERFACE IFillLockBytes -DECLARE_INTERFACE_(IFillLockBytes,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(FillAppend)(THIS_ void const*,ULONG,PULONG) PURE; - STDMETHOD(FillAt)(THIS_ ULARGE_INTEGER,void const*,ULONG,PULONG) PURE; - STDMETHOD(SetFillSize)(THIS_ ULARGE_INTEGER) PURE; - STDMETHOD(Terminate)(THIS_ BOOL) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_IProgressNotify; -#define INTERFACE IProgressNotify -DECLARE_INTERFACE_(IProgressNotify,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(OnProgress)(THIS_ DWORD,DWORD,BOOL,BOOL) PURE; -}; -#undef INTERFACE - -EXTERN_C const IID IID_ILayoutStorage; -#define INTERFACE ILayoutStorage -DECLARE_INTERFACE_(ILayoutStorage,IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - STDMETHOD(LayoutScript)(THIS_ STORAGELAYOUT*,DWORD,DWORD) PURE; - STDMETHOD(BeginMonitor)(THIS) PURE; - STDMETHOD(EndMonitor)(THIS) PURE; - STDMETHOD(ReLayoutDocfile)(THIS_ OLECHAR*) PURE; -}; -#undef INTERFACE - -HRESULT STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,CLSID*); -void STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,DWORD*); -void STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_MarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void*,DWORD,void*,DWORD); -void STDMETHODCALLTYPE IMarshal_MarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void**); -void STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Proxy(IMarshal*,IStream*); -void STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMarshal_DisconnectObject_Proxy(IMarshal*,DWORD); -void STDMETHODCALLTYPE IMarshal_DisconnectObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMalloc_Alloc_Proxy(IMalloc*,ULONG); -void STDMETHODCALLTYPE IMalloc_Alloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMalloc_Realloc_Proxy(IMalloc*,void*,ULONG); -void STDMETHODCALLTYPE IMalloc_Realloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMalloc_Free_Proxy(IMalloc*,void*); -void STDMETHODCALLTYPE IMalloc_Free_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IMalloc_GetSize_Proxy(IMalloc*,void*); -void STDMETHODCALLTYPE IMalloc_GetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -int STDMETHODCALLTYPE IMalloc_DidAlloc_Proxy(IMalloc*,void*); -void STDMETHODCALLTYPE IMalloc_DidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMalloc_HeapMinimize_Proxy(IMalloc*); -void STDMETHODCALLTYPE IMalloc_HeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IMallocSpy_PreAlloc_Proxy(IMallocSpy*,ULONG cbRequest); -void STDMETHODCALLTYPE IMallocSpy_PreAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PostAlloc_Proxy(IMallocSpy*,void*); -void STDMETHODCALLTYPE IMallocSpy_PostAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PreFree_Proxy(IMallocSpy*,void*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PreFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMallocSpy_PostFree_Proxy(IMallocSpy*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PostFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IMallocSpy_PreRealloc_Proxy(IMallocSpy*,void*,ULONG,void**,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PreRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PostRealloc_Proxy(IMallocSpy*,void*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PostRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PreGetSize_Proxy(IMallocSpy*,void*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PreGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IMallocSpy_PostGetSize_Proxy(IMallocSpy*,ULONG,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PostGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void* STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Proxy(IMallocSpy*,void*,BOOL); -void STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -int STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Proxy(IMallocSpy*,void*,BOOL,int); -void STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy* ); -void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy*); -void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo*,DWORD,void*,CLSID*); -void STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IExternalConnection_AddConnection_Proxy(IExternalConnection*,DWORD,DWORD); -void STDMETHODCALLTYPE IExternalConnection_AddConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Proxy(IExternalConnection*,DWORD,DWORD,BOOL); -void STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*); -void STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Skip_Proxy(IEnumUnknown*,ULONG); -void STDMETHODCALLTYPE IEnumUnknown_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Reset_Proxy(IEnumUnknown* ); -void STDMETHODCALLTYPE IEnumUnknown_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Clone_Proxy(IEnumUnknown*,IEnumUnknown**); -void STDMETHODCALLTYPE IEnumUnknown_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Proxy(IBindCtx*,IUnknown*punk); -void STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*_pRpcChannelBuffer,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Proxy(IBindCtx*,IUnknown*punk); -void STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx*); -void STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_SetBindOptions_Proxy(IBindCtx*,BIND_OPTS*); -void STDMETHODCALLTYPE IBindCtx_SetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_GetBindOptions_Proxy(IBindCtx*,BIND_OPTS*pbindopts); -void STDMETHODCALLTYPE IBindCtx_GetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Proxy(IBindCtx*,IRunningObjectTable**); -void STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown*); -void STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_GetObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown**); -void STDMETHODCALLTYPE IBindCtx_GetObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Proxy(IBindCtx*,IEnumString**); -void STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Proxy(IBindCtx*,LPCSTR); -void STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*); -void STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Skip_Proxy(IEnumMoniker*,ULONG); -void STDMETHODCALLTYPE IEnumMoniker_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Reset_Proxy(IEnumMoniker*); -void STDMETHODCALLTYPE IEnumMoniker_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Clone_Proxy(IEnumMoniker*,IEnumMoniker**); -void STDMETHODCALLTYPE IEnumMoniker_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Proxy(IRunnableObject*,LPCLSID); -void STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunnableObject_Run_Proxy(IRunnableObject*,LPBINDCTX); -void STDMETHODCALLTYPE IRunnableObject_Run_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -BOOL STDMETHODCALLTYPE IRunnableObject_IsRunning_Proxy(IRunnableObject*); -void STDMETHODCALLTYPE IRunnableObject_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunnableObject_LockRunning_Proxy(IRunnableObject*,BOOL,BOOL); -void STDMETHODCALLTYPE IRunnableObject_LockRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Proxy(IRunnableObject*,BOOL); -void STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_Register_Proxy(IRunningObjectTable*,DWORD,IUnknown*,IMoniker*,DWORD*); -void STDMETHODCALLTYPE IRunningObjectTable_Register_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_Revoke_Proxy(IRunningObjectTable*,DWORD); -void STDMETHODCALLTYPE IRunningObjectTable_Revoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable*,IMoniker*); -void STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetObject_Proxy(IRunningObjectTable*,IMoniker*,IUnknown**); -void STDMETHODCALLTYPE IRunningObjectTable_GetObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable*,DWORD,FILETIME*); -void STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable*,IMoniker*,FILETIME*); -void STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable*,IEnumMoniker**); -void STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersist_GetClassID_Proxy(IPersist*,CLSID*); -void STDMETHODCALLTYPE IPersist_GetClassID_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStream_IsDirty_Proxy(IPersistStream*); -void STDMETHODCALLTYPE IPersistStream_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStream_Load_Proxy(IPersistStream*,IStream*); -void STDMETHODCALLTYPE IPersistStream_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStream_Save_Proxy(IPersistStream*,IStream*,BOOL); -void STDMETHODCALLTYPE IPersistStream_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStream_GetSizeMax_Proxy(IPersistStream*,ULARGE_INTEGER*); -void STDMETHODCALLTYPE IPersistStream_GetSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); -void STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); -void STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_Reduce_Proxy(IMoniker*,IBindCtx*,DWORD,IMoniker**,IMoniker**); -void STDMETHODCALLTYPE IMoniker_Reduce_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_ComposeWith_Proxy(IMoniker*,IMoniker*,BOOL,IMoniker**); -void STDMETHODCALLTYPE IMoniker_ComposeWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_Enum_Proxy(IMoniker*,BOOL,IEnumMoniker**); -void STDMETHODCALLTYPE IMoniker_Enum_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_IsEqual_Proxy(IMoniker*,IMoniker*); -void STDMETHODCALLTYPE IMoniker_IsEqual_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_Hash_Proxy(IMoniker*,DWORD*); -void STDMETHODCALLTYPE IMoniker_Hash_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_IsRunning_Proxy(IMoniker*,IBindCtx*,IMoniker*,IMoniker*); -void STDMETHODCALLTYPE IMoniker_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Proxy(IMoniker*,IBindCtx*,IMoniker*,FILETIME*); -void STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_Inverse_Proxy(IMoniker*,IMoniker**); -void STDMETHODCALLTYPE IMoniker_Inverse_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Proxy(IMoniker*,IMoniker*,IMoniker**); -void STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_RelativePathTo_Proxy(IMoniker*,IMoniker*,IMoniker**); -void STDMETHODCALLTYPE IMoniker_RelativePathTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_GetDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR*); -void STDMETHODCALLTYPE IMoniker_GetDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_ParseDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR,ULONG*,IMoniker**); -void STDMETHODCALLTYPE IMoniker_ParseDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Proxy(IMoniker*,DWORD*); -void STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IROTData_GetComparisonData_Proxy(IROTData*,BYTE*,ULONG cbMax,ULONG*); -void STDMETHODCALLTYPE IROTData_GetComparisonData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumString_RemoteNext_Proxy(IEnumString*,ULONG,LPCSTR*rgelt,ULONG*); -void STDMETHODCALLTYPE IEnumString_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumString_Skip_Proxy(IEnumString*,ULONG); -void STDMETHODCALLTYPE IEnumString_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumString_Reset_Proxy(IEnumString*); -void STDMETHODCALLTYPE IEnumString_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumString_Clone_Proxy(IEnumString*,IEnumString**); -void STDMETHODCALLTYPE IEnumString_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_RemoteRead_Proxy(IStream*,BYTE*,ULONG,ULONG*); -void STDMETHODCALLTYPE IStream_RemoteRead_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_RemoteWrite_Proxy(IStream*,BYTE*pv,ULONG,ULONG*); -void STDMETHODCALLTYPE IStream_RemoteWrite_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_RemoteSeek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*); -void STDMETHODCALLTYPE IStream_RemoteSeek_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_SetSize_Proxy(IStream*,ULARGE_INTEGER); -void STDMETHODCALLTYPE IStream_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_RemoteCopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*); -void STDMETHODCALLTYPE IStream_RemoteCopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_Commit_Proxy(IStream*,DWORD); -void STDMETHODCALLTYPE IStream_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_Revert_Proxy(IStream*); -void STDMETHODCALLTYPE IStream_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_LockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); -void STDMETHODCALLTYPE IStream_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_UnlockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); -void STDMETHODCALLTYPE IStream_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_Stat_Proxy(IStream*,STATSTG*,DWORD); -void STDMETHODCALLTYPE IStream_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStream_Clone_Proxy(IStream*,IStream**); -void STDMETHODCALLTYPE IStream_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*); -void STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG*,ULONG celt); -void STDMETHODCALLTYPE IEnumSTATSTG_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG*); -void STDMETHODCALLTYPE IEnumSTATSTG_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG*,IEnumSTATSTG**); -void STDMETHODCALLTYPE IEnumSTATSTG_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_CreateStream_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStream**); -void STDMETHODCALLTYPE IStorage_CreateStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_RemoteOpenStream_Proxy(IStorage*,const OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream**); -void STDMETHODCALLTYPE IStorage_RemoteOpenStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_CreateStorage_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStorage**); -void STDMETHODCALLTYPE IStorage_CreateStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_OpenStorage_Proxy(IStorage*,OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**); -void STDMETHODCALLTYPE IStorage_OpenStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_CopyTo_Proxy(IStorage*,DWORD,const IID*,SNB,IStorage*); -void STDMETHODCALLTYPE IStorage_CopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_MoveElementTo_Proxy(IStorage*,const OLECHAR*,IStorage*,const OLECHAR*,DWORD); -void STDMETHODCALLTYPE IStorage_MoveElementTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_Commit_Proxy(IStorage*,DWORD); -void STDMETHODCALLTYPE IStorage_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_Revert_Proxy(IStorage*); -void STDMETHODCALLTYPE IStorage_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_RemoteEnumElements_Proxy(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**); -void STDMETHODCALLTYPE IStorage_RemoteEnumElements_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_DestroyElement_Proxy(IStorage*,OLECHAR*); -void STDMETHODCALLTYPE IStorage_DestroyElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_RenameElement_Proxy(IStorage*,const OLECHAR*,const OLECHAR*); -void STDMETHODCALLTYPE IStorage_RenameElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_SetElementTimes_Proxy(IStorage*,const OLECHAR*,const FILETIME*,const FILETIME*,const FILETIME*); -void STDMETHODCALLTYPE IStorage_SetElementTimes_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_SetClass_Proxy(IStorage*,REFCLSID); -void STDMETHODCALLTYPE IStorage_SetClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_SetStateBits_Proxy(IStorage*,DWORD,DWORD); -void STDMETHODCALLTYPE IStorage_SetStateBits_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IStorage_Stat_Proxy(IStorage*,STATSTG*,DWORD); -void STDMETHODCALLTYPE IStorage_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_IsDirty_Proxy(IPersistFile*); -void STDMETHODCALLTYPE IPersistFile_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_Load_Proxy(IPersistFile*,LPCOLESTR,DWORD); -void STDMETHODCALLTYPE IPersistFile_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_Save_Proxy(IPersistFile*,LPCOLESTR pszFileName,BOOL); -void STDMETHODCALLTYPE IPersistFile_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_SaveCompleted_Proxy(IPersistFile*,LPCOLESTR); -void STDMETHODCALLTYPE IPersistFile_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistFile_GetCurFile_Proxy(IPersistFile*,LPCSTR*); -void STDMETHODCALLTYPE IPersistFile_GetCurFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_IsDirty_Proxy(IPersistStorage*); -void STDMETHODCALLTYPE IPersistStorage_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_InitNew_Proxy(IPersistStorage*,IStorage*); -void STDMETHODCALLTYPE IPersistStorage_InitNew_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_Load_Proxy(IPersistStorage*,IStorage*); -void STDMETHODCALLTYPE IPersistStorage_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_Save_Proxy(IPersistStorage*,IStorage*,BOOL); -void STDMETHODCALLTYPE IPersistStorage_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Proxy(IPersistStorage*,IStorage*); -void STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Proxy(IPersistStorage*); -void STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*); -void STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*pv,ULONG,ULONG*); -void STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_Flush_Proxy(ILockBytes*); -void STDMETHODCALLTYPE ILockBytes_Flush_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_SetSize_Proxy(ILockBytes*,ULARGE_INTEGER); -void STDMETHODCALLTYPE ILockBytes_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_LockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); -void STDMETHODCALLTYPE ILockBytes_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_UnlockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); -void STDMETHODCALLTYPE ILockBytes_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE ILockBytes_Stat_Proxy(ILockBytes*,STATSTG*,DWORD); -void STDMETHODCALLTYPE ILockBytes_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*); -void STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC*,ULONG); -void STDMETHODCALLTYPE IEnumFORMATETC_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC*); -void STDMETHODCALLTYPE IEnumFORMATETC_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC*,IEnumFORMATETC**); -void STDMETHODCALLTYPE IEnumFORMATETC_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Stub(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*); -void STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA*,ULONG); -void STDMETHODCALLTYPE IEnumSTATDATA_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA*); -void STDMETHODCALLTYPE IEnumSTATDATA_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA*,IEnumSTATDATA**); -void STDMETHODCALLTYPE IEnumSTATDATA_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Stub(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*); -HRESULT STDMETHODCALLTYPE IRootStorage_SwitchToFile_Proxy(IRootStorage*,LPCSTR); -void STDMETHODCALLTYPE IRootStorage_SwitchToFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink*,DWORD,LONG); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Proxy(IAdviseSink*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Proxy(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Proxy(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Proxy(IAdviseSink*,FORMATETC*,STGMEDIUM*); -void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Stub(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*); -void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Proxy(IAdviseSink*,DWORD,LONG); -void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Stub(IAdviseSink*,DWORD,LONG); -void STDMETHODCALLTYPE IAdviseSink_OnRename_Proxy(IAdviseSink*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink_OnRename_Stub(IAdviseSink*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink_OnSave_Proxy(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink_OnSave_Stub(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink_OnClose_Proxy(IAdviseSink*); -HRESULT STDMETHODCALLTYPE IAdviseSink_OnClose_Stub(IAdviseSink*); -void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*); -void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2*,IMoniker*); -HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**); -void STDMETHODCALLTYPE IDataObject_RemoteGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**); -void STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_QueryGetData_Proxy(IDataObject*,FORMATETC*); -void STDMETHODCALLTYPE IDataObject_QueryGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject*,FORMATETC*,FORMATETC*); -void STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_RemoteSetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL); -void STDMETHODCALLTYPE IDataObject_RemoteSetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Proxy(IDataObject*,DWORD,IEnumFORMATETC**); -void STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_DAdvise_Proxy(IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*); -void STDMETHODCALLTYPE IDataObject_DAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_DUnadvise_Proxy(IDataObject*,DWORD); -void STDMETHODCALLTYPE IDataObject_DUnadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_EnumDAdvise_Proxy(IDataObject*,IEnumSTATDATA**); -void STDMETHODCALLTYPE IDataObject_EnumDAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataObject_GetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*); -HRESULT STDMETHODCALLTYPE IDataObject_GetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**); -HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*); -HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**); -HRESULT STDMETHODCALLTYPE IDataObject_SetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*,BOOL); -HRESULT STDMETHODCALLTYPE IDataObject_SetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL); -HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder*,IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*); -void STDMETHODCALLTYPE IDataAdviseHolder_Advise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder*,DWORD); -void STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder*,IEnumSTATDATA**); -void STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder*,IDataObject*,DWORD,DWORD); -void STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Proxy(IMessageFilter*,DWORD,HTASK,DWORD,LPINTERFACEINFO); -void STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter*,HTASK,DWORD,DWORD); -void STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -DWORD STDMETHODCALLTYPE IMessageFilter_MessagePending_Proxy(IMessageFilter*,HTASK,DWORD,DWORD); -void STDMETHODCALLTYPE IMessageFilter_MessagePending_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,REFIID); -void STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,ULONG*); -void STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*); -void STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer*,DWORD*,void**); -void STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer*); -void STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer*,IRpcChannelBuffer*pRpcChannelBuffer); -void STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer*); -void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer*,IUnknown*); -void STDMETHODCALLTYPE IRpcStubBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer*); -void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer*,RPCOLEMESSAGE*,IRpcChannelBuffer*); -void STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -IRpcStubBuffer*STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer*,REFIID); -void STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -ULONG STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer*); -void STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer*,void**); -void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer*,void*); -void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer*,IUnknown*,REFIID,IRpcProxyBuffer**,void**); -void STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer*,REFIID,IUnknown*,IRpcStubBuffer**); -void STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); -void STDMETHODCALLTYPE SNB_to_xmit(SNB*,RemSNB**); -void STDMETHODCALLTYPE SNB_from_xmit(RemSNB*,SNB*); -void STDMETHODCALLTYPE SNB_free_inst(SNB*); -void STDMETHODCALLTYPE SNB_free_xmit(RemSNB*); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Stub(IEnumUnknown*,ULONG,IUnknown**,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Stub(IEnumMoniker*,ULONG,IMoniker**,ULONG*); -HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**); -HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); -HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**); -HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); -HRESULT STDMETHODCALLTYPE IEnumString_Next_Proxy(IEnumString*,ULONG,LPCSTR*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumString_Next_Stub(IEnumString*,ULONG,LPCSTR*,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Read_Proxy(IStream*,void*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Read_Stub(IStream*,BYTE*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Write_Proxy(IStream*,void*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Write_Stub(IStream*,BYTE*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE IStream_Seek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*); -HRESULT STDMETHODCALLTYPE IStream_Seek_Stub(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*); -HRESULT STDMETHODCALLTYPE IStream_CopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*); -HRESULT STDMETHODCALLTYPE IStream_CopyTo_Stub(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*); -HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Stub(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*); -HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Proxy(IStorage*,OLECHAR*,void*,DWORD,DWORD,IStream**); -HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Stub(IStorage*,OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream** ); -HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Proxy(IStorage*,DWORD,void*,DWORD,IEnumSTATSTG**); -HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Stub(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**); -HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,void*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,const void*,ULONG,ULONG*); -HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*); - -#if (!defined (__cplusplus) || defined (CINTERFACE)) \ - && defined (COBJMACROS) -#define IMarshal_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IMarshal_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMarshal_Release(This) (This)->lpVtbl->Release(This) -#define IMarshal_GetUnmarshalClass(T,r,pv,dw,pvD,m,pC) (T)->lpVtbl->GetUnmarshalClass(T,r,pv,dw,pvD,m,pC) -#define IMarshal_GetMarshalSizeMax(T,r,pv,dw,pD,m,p) (T)->lpVtbl->GetMarshalSizeMax(T,r,pv,dw,pD,m,p) -#define IMarshal_MarshalInterface(T,p,r,pv,dw,pvD,m) (T)->lpVtbl->MarshalInterface(T,p,r,pv,dw,pv,m) -#define IMarshal_UnmarshalInterface(T,p,r,pp) (T)->lpVtbl->UnmarshalInterface(T,p,r,pp) -#define IMarshal_ReleaseMarshalData(T,p) (T)->lpVtbl->ReleaseMarshalData(T,p) -#define IMarshal_DisconnectObject(T,d) (T)->lpVtbl->DisconnectObject(T,d) -#define IMalloc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IMalloc_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMalloc_Release(This) (This)->lpVtbl->Release(This) -#define IMalloc_Alloc(This,cb) (This)->lpVtbl->Alloc(This,cb) -#define IMalloc_Realloc(This,pv,cb) (This)->lpVtbl->Realloc(This,pv,cb) -#define IMalloc_Free(This,pv) (This)->lpVtbl->Free(This,pv) -#define IMalloc_GetSize(This,pv) (This)->lpVtbl->GetSize(This,pv) -#define IMalloc_DidAlloc(This,pv) (This)->lpVtbl->DidAlloc(This,pv) -#define IMalloc_HeapMinimize(This) (This)->lpVtbl->HeapMinimize(This) -#define IMallocSpy_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IMallocSpy_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMallocSpy_Release(This) (This)->lpVtbl->Release(This) -#define IMallocSpy_PreAlloc(T,c) (T)->lpVtbl->PreAlloc(T,c) -#define IMallocSpy_PostAlloc(This,p) (This)->lpVtbl->PostAlloc(This,p) -#define IMallocSpy_PreFree(This,p,f) (This)->lpVtbl->PreFree(This,p,f) -#define IMallocSpy_PostFree(This,fSpyed) (This)->lpVtbl->PostFree(This,fSpyed) -#define IMallocSpy_PreRealloc(T,p,c,pp,f) (T)->lpVtbl->PreRealloc(T,p,c,pp,f) -#define IMallocSpy_PostRealloc(T,p,f) (T)->lpVtbl->PostRealloc(T,p,f) -#define IMallocSpy_PreGetSize(This,p,f) (This)->lpVtbl->PreGetSize(This,p,f) -#define IMallocSpy_PostGetSize(This,cbActual,fSpyed) (This)->lpVtbl->PostGetSize(This,cbActual,fSpyed) -#define IMallocSpy_PreDidAlloc(This,pRequest,fSpyed) (This)->lpVtbl->PreDidAlloc(This,pRequest,fSpyed) -#define IMallocSpy_PostDidAlloc(This,pRequest,fSpyed,fActual) (This)->lpVtbl->PostDidAlloc(This,pRequest,fSpyed,fActual) -#define IMallocSpy_PreHeapMinimize(T) (T)->lpVtbl->PreHeapMinimize(T) -#define IMallocSpy_PostHeapMinimize(T) (T)->lpVtbl->PostHeapMinimize(T) -#define IStdMarshalInfo_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p) -#define IStdMarshalInfo_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IStdMarshalInfo_Release(This) (This)->lpVtbl->Release(This) -#define IStdMarshalInfo_GetClassForHandler(This,D,p,C) (This)->lpVtbl->GetClassForHandler(This,D,p,C) -#define IExternalConnection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IExternalConnection_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IExternalConnection_Release(This) (This)->lpVtbl->Release(This) -#define IExternalConnection_AddConnection(T,e,r) (T)->lpVtbl->AddConnection(T,e,r) -#define IExternalConnection_ReleaseConnection(This,e,r,f) (This)->lpVtbl->ReleaseConnection(This,e,r,f) -#define IEnumUnknown_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p) -#define IEnumUnknown_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumUnknown_Release(This) (This)->lpVtbl->Release(This) -#define IEnumUnknown_Next(This,celt,rgelt,p) (This)->lpVtbl->Next(This,celt,rgelt,p) -#define IEnumUnknown_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumUnknown_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumUnknown_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IBindCtx_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IBindCtx_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IBindCtx_Release(This) (This)->lpVtbl->Release(This) -#define IBindCtx_RegisterObjectBound(T,p) (T)->lpVtbl->RegisterObjectBound(T,p) -#define IBindCtx_RevokeObjectBound(T,p) (T)->lpVtbl->RevokeObjectBound(T,p) -#define IBindCtx_ReleaseBoundObjects(T) (T)->lpVtbl->ReleaseBoundObjects(T) -#define IBindCtx_SetBindOptions(T,p) (T)->lpVtbl->SetBindOptions(T,p) -#define IBindCtx_GetBindOptions(This,pbindopts) (This)->lpVtbl->GetBindOptions(This,pbindopts) -#define IBindCtx_GetRunningObjectTable(This,pprot) (This)->lpVtbl->GetRunningObjectTable(This,pprot) -#define IBindCtx_RegisterObjectParam(This,pszKey,punk) (This)->lpVtbl->RegisterObjectParam(This,pszKey,punk) -#define IBindCtx_GetObjectParam(This,pszKey,ppunk) (This)->lpVtbl->GetObjectParam(This,pszKey,ppunk) -#define IBindCtx_EnumObjectParam(This,ppenum) (This)->lpVtbl->EnumObjectParam(This,ppenum) -#define IBindCtx_RevokeObjectParam(This,pszKey) (This)->lpVtbl->RevokeObjectParam(This,pszKey) -#define IEnumMoniker_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IEnumMoniker_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumMoniker_Release(This) (This)->lpVtbl->Release(This) -#define IEnumMoniker_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) -#define IEnumMoniker_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumMoniker_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumMoniker_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IRunnableObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IRunnableObject_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRunnableObject_Release(This) (This)->lpVtbl->Release(This) -#define IRunnableObject_GetRunningClass(This,lpClsid) (This)->lpVtbl->GetRunningClass(This,lpClsid) -#define IRunnableObject_Run(This,pbc) (This)->lpVtbl->Run(This,pbc) -#define IRunnableObject_IsRunning(This) (This)->lpVtbl->IsRunning(This) -#define IRunnableObject_LockRunning(This,fLock,fLastUnlockCloses) (This)->lpVtbl->LockRunning(This,fLock,fLastUnlockCloses) -#define IRunnableObject_SetContainedObject(This,fContained) (This)->lpVtbl->SetContainedObject(This,fContained) -#define IRunningObjectTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IRunningObjectTable_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRunningObjectTable_Release(This) (This)->lpVtbl->Release(This) -#define IRunningObjectTable_Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) (This)->lpVtbl->Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) -#define IRunningObjectTable_Revoke(This,dwRegister) (This)->lpVtbl->Revoke(This,dwRegister) -#define IRunningObjectTable_IsRunning(This,pmkObjectName) (This)->lpVtbl->IsRunning(This,pmkObjectName) -#define IRunningObjectTable_GetObject(This,pmkObjectName,ppunkObject) (This)->lpVtbl->GetObject(This,pmkObjectName,ppunkObject) -#define IRunningObjectTable_NoteChangeTime(This,dwRegister,pfiletime) (This)->lpVtbl->NoteChangeTime(This,dwRegister,pfiletime) -#define IRunningObjectTable_GetTimeOfLastChange(This,pmkObjectName,pfiletime) (This)->lpVtbl->GetTimeOfLastChange(This,pmkObjectName,pfiletime) -#define IRunningObjectTable_EnumRunning(This,ppenumMoniker) (This)->lpVtbl->EnumRunning(This,ppenumMoniker) -#define IPersist_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IPersist_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPersist_Release(This) (This)->lpVtbl->Release(This) -#define IPersist_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) -#define IPersistStream_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IPersistStream_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPersistStream_Release(This) (This)->lpVtbl->Release(This) -#define IPersistStream_GetClassID(T,p) (T)->lpVtbl->GetClassID(T,p) -#define IPersistStream_IsDirty(This) (This)->lpVtbl->IsDirty(This) -#define IPersistStream_Load(This,pStm) (This)->lpVtbl->Load(This,pStm) -#define IPersistStream_Save(T,p,f) (T)->lpVtbl->Save(T,p,f) -#define IPersistStream_GetSizeMax(T,p) (T)->lpVtbl->GetSizeMax(T,p) -#define IMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IMoniker_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMoniker_Release(This) (This)->lpVtbl->Release(This) -#define IMoniker_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) -#define IMoniker_IsDirty(This) (This)->lpVtbl->IsDirty(This) -#define IMoniker_Load(This,pStm) (This)->lpVtbl->Load(This,pStm) -#define IMoniker_Save(This,pStm,fClearDirty) (This)->lpVtbl->Save(This,pStm,fClearDirty) -#define IMoniker_GetSizeMax(This,pcbSize) (This)->lpVtbl->GetSizeMax(This,pcbSize) -#define IMoniker_BindToObject(T,p,pm,r,pp) (T)->lpVtbl->BindToObject(T,p,pm,r,pp) -#define IMoniker_BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) (This)->lpVtbl->BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) -#define IMoniker_Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) (This)->lpVtbl->Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) -#define IMoniker_ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) (This)->lpVtbl->ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) -#define IMoniker_Enum(T,f,pp) (T)->lpVtbl->Enum(T,f,pp) -#define IMoniker_IsEqual(This,p) (This)->lpVtbl->IsEqual(This,p) -#define IMoniker_Hash(This,pdwHash) (This)->lpVtbl->Hash(This,pdwHash) -#define IMoniker_IsRunning(T,pbc,Left,N) (T)->lpVtbl->IsRunning(T,pbc,Left,N) -#define IMoniker_GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) (This)->lpVtbl->GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) -#define IMoniker_Inverse(This,ppmk) (This)->lpVtbl->Inverse(This,ppmk) -#define IMoniker_CommonPrefixWith(This,pmkOther,ppmkPrefix) (This)->lpVtbl->CommonPrefixWith(This,pmkOther,ppmkPrefix) -#define IMoniker_RelativePathTo(This,pmkOther,ppmkRelPath) (This)->lpVtbl->RelativePathTo(This,pmkOther,ppmkRelPath) -#define IMoniker_GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) (This)->lpVtbl->GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) -#define IMoniker_ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) (This)->lpVtbl->ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) -#define IMoniker_IsSystemMoniker(This,pdwMksys) (This)->lpVtbl->IsSystemMoniker(This,pdwMksys) -#define IROTData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IROTData_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IROTData_Release(This) (This)->lpVtbl->Release(This) -#define IROTData_GetComparisonData(This,pbData,cbMax,pcbData) (This)->lpVtbl->GetComparisonData(This,pbData,cbMax,pcbData) -#define IEnumString_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IEnumString_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumString_Release(This) (This)->lpVtbl->Release(This) -#define IEnumString_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) -#define IEnumString_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumString_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumString_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IStream_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IStream_Release(This) (This)->lpVtbl->Release(This) -#define IStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead) -#define IStream_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten) -#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition) -#define IStream_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize) -#define IStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten) -#define IStream_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags) -#define IStream_Revert(This) (This)->lpVtbl->Revert(This) -#define IStream_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType) -#define IStream_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType) -#define IStream_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag) -#define IStream_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm) -#define IEnumSTATSTG_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IEnumSTATSTG_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumSTATSTG_Release(This) (This)->lpVtbl->Release(This) -#define IEnumSTATSTG_Next(T,c,r,p) (T)->lpVtbl->Next(T,c,r,p) -#define IEnumSTATSTG_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumSTATSTG_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumSTATSTG_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IStorage_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IStorage_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IStorage_Release(This) (This)->lpVtbl->Release(This) -#define IStorage_CreateStream(T,p,g,r1,r2,pp) (T)->lpVtbl->CreateStream(T,p,g,r1,r2,pp) -#define IStorage_OpenStream(T,p,r1,g,r2,pp) (T)->lpVtbl->OpenStream(T,p,r1,g,r2,pp) -#define IStorage_CreateStorage(T,p,g,d,r2,pp) (T)->lpVtbl->CreateStorage(T,p,g,d,r2,pp) -#define IStorage_OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) (This)->lpVtbl->OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) -#define IStorage_CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) (This)->lpVtbl->CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) -#define IStorage_MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) (This)->lpVtbl->MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) -#define IStorage_Commit(This,g) (This)->lpVtbl->Commit(This,g) -#define IStorage_Revert(This) (This)->lpVtbl->Revert(This) -#define IStorage_EnumElements(This,reserved1,reserved2,reserved3,ppenum) (This)->lpVtbl->EnumElements(This,reserved1,reserved2,reserved3,ppenum) -#define IStorage_DestroyElement(This,pwcsName) (This)->lpVtbl->DestroyElement(This,pwcsName) -#define IStorage_RenameElement(This,pwcsOldName,pwcsNewName) (This)->lpVtbl->RenameElement(This,pwcsOldName,pwcsNewName) -#define IStorage_SetElementTimes(This,pwcsName,pctime,patime,pmtime) (This)->lpVtbl->SetElementTimes(This,pwcsName,pctime,patime,pmtime) -#define IStorage_SetClass(This,clsid) (This)->lpVtbl->SetClass(This,clsid) -#define IStorage_SetStateBits(This,grfStateBits,grfMask) (This)->lpVtbl->SetStateBits(This,grfStateBits,grfMask) -#define IStorage_Stat(This,p,g) (This)->lpVtbl->Stat(This,p,g) -#define IPersistFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IPersistFile_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPersistFile_Release(This) (This)->lpVtbl->Release(This) -#define IPersistFile_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) -#define IPersistFile_IsDirty(This) (This)->lpVtbl->IsDirty(This) -#define IPersistFile_Load(This,pszFileName,dwMode) (This)->lpVtbl->Load(This,pszFileName,dwMode) -#define IPersistFile_Save(This,pszFileName,fRemember) (This)->lpVtbl->Save(This,pszFileName,fRemember) -#define IPersistFile_SaveCompleted(This,pszFileName) (This)->lpVtbl->SaveCompleted(This,pszFileName) -#define IPersistFile_GetCurFile(This,ppszFileName) (This)->lpVtbl->GetCurFile(This,ppszFileName) -#define IPersistStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IPersistStorage_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPersistStorage_Release(This) (This)->lpVtbl->Release(This) -#define IPersistStorage_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) -#define IPersistStorage_IsDirty(This) (This)->lpVtbl->IsDirty(This) -#define IPersistStorage_InitNew(This,pStg) (This)->lpVtbl->InitNew(This,pStg) -#define IPersistStorage_Load(This,pStg) (This)->lpVtbl->Load(This,pStg) -#define IPersistStorage_Save(This,pStgSave,fSameAsLoad) (This)->lpVtbl->Save(This,pStgSave,fSameAsLoad) -#define IPersistStorage_SaveCompleted(This,pStgNew) (This)->lpVtbl->SaveCompleted(This,pStgNew) -#define IPersistStorage_HandsOffStorage(This) (This)->lpVtbl->HandsOffStorage(This) -#define ILockBytes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define ILockBytes_AddRef(This) (This)->lpVtbl->AddRef(This) -#define ILockBytes_Release(This) (This)->lpVtbl->Release(This) -#define ILockBytes_ReadAt(This,ulOffset,pv,cb,pcbRead) (This)->lpVtbl->ReadAt(This,ulOffset,pv,cb,pcbRead) -#define ILockBytes_WriteAt(This,ulOffset,pv,cb,pcbWritten) (This)->lpVtbl->WriteAt(This,ulOffset,pv,cb,pcbWritten) -#define ILockBytes_Flush(This) (This)->lpVtbl->Flush(This) -#define ILockBytes_SetSize(This,cb) (This)->lpVtbl->SetSize(This,cb) -#define ILockBytes_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType) -#define ILockBytes_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType) -#define ILockBytes_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag) -#define IEnumFORMATETC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IEnumFORMATETC_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumFORMATETC_Release(This) (This)->lpVtbl->Release(This) -#define IEnumFORMATETC_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) -#define IEnumFORMATETC_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumFORMATETC_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumFORMATETC_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IEnumSTATDATA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IEnumSTATDATA_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IEnumSTATDATA_Release(This) (This)->lpVtbl->Release(This) -#define IEnumSTATDATA_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) -#define IEnumSTATDATA_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) -#define IEnumSTATDATA_Reset(This) (This)->lpVtbl->Reset(This) -#define IEnumSTATDATA_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) -#define IRootStorage_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O) -#define IRootStorage_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRootStorage_Release(This) (This)->lpVtbl->Release(This) -#define IRootStorage_SwitchToFile(This,pszFile) (This)->lpVtbl->SwitchToFile(This,pszFile) -#define IAdviseSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IAdviseSink_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IAdviseSink_Release(This) (This)->lpVtbl->Release(This) -#define IAdviseSink_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed) -#define IAdviseSink_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex) -#define IAdviseSink_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk) -#define IAdviseSink_OnSave(This) (This)->lpVtbl->OnSave(This) -#define IAdviseSink_OnClose(This) (This)->lpVtbl->OnClose(This) -#define IAdviseSink2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IAdviseSink2_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IAdviseSink2_Release(This) (This)->lpVtbl->Release(This) -#define IAdviseSink2_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed) -#define IAdviseSink2_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex) -#define IAdviseSink2_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk) -#define IAdviseSink2_OnSave(This) (This)->lpVtbl->OnSave(This) -#define IAdviseSink2_OnClose(This) (This)->lpVtbl->OnClose(This) -#define IAdviseSink2_OnLinkSrcChange(This,pmk) (This)->lpVtbl->OnLinkSrcChange(This,pmk) -#define IDataObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IDataObject_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IDataObject_Release(This) (This)->lpVtbl->Release(This) -#define IDataObject_GetData(This,pformatetcIn,pmedium) (This)->lpVtbl->GetData(This,pformatetcIn,pmedium) -#define IDataObject_GetDataHere(This,pformatetc,pmedium) (This)->lpVtbl->GetDataHere(This,pformatetc,pmedium) -#define IDataObject_QueryGetData(This,pformatetc) (This)->lpVtbl->QueryGetData(This,pformatetc) -#define IDataObject_GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) (This)->lpVtbl->GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) -#define IDataObject_SetData(This,pformatetc,pmedium,fRelease) (This)->lpVtbl->SetData(This,pformatetc,pmedium,fRelease) -#define IDataObject_EnumFormatEtc(This,dwDirection,ppenumFormatEtc) (This)->lpVtbl->EnumFormatEtc(This,dwDirection,ppenumFormatEtc) -#define IDataObject_DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) (This)->lpVtbl->DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) -#define IDataObject_DUnadvise(This,dwConnection) (This)->lpVtbl->DUnadvise(This,dwConnection) -#define IDataObject_EnumDAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumDAdvise(This,ppenumAdvise) -#define IDataAdviseHolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IDataAdviseHolder_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IDataAdviseHolder_Release(This) (This)->lpVtbl->Release(This) -#define IDataAdviseHolder_Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) (This)->lpVtbl->Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) -#define IDataAdviseHolder_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection) -#define IDataAdviseHolder_EnumAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumAdvise(This,ppenumAdvise) -#define IDataAdviseHolder_SendOnDataChange(This,pDataObject,dwReserved,advf) (This)->lpVtbl->SendOnDataChange(This,pDataObject,dwReserved,advf) -#define IMessageFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IMessageFilter_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IMessageFilter_Release(This) (This)->lpVtbl->Release(This) -#define IMessageFilter_HandleInComingCall(T,d,h,dw,lp) (T)->lpVtbl->HandleInComingCall(T,d,h,dw,lp) -#define IMessageFilter_RetryRejectedCall(s,C,T,R) (s)->lpVtbl->RetryRejectedCall(s,C,T,R) -#define IMessageFilter_MessagePending(s,C,T,P) (s)->lpVtbl->MessagePending(This,C,T,P) -#define IRpcChannelBuffer_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) -#define IRpcChannelBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRpcChannelBuffer_Release(This) (This)->lpVtbl->Release(This) -#define IRpcChannelBuffer_GetBuffer(This,pMessage,riid) (This)->lpVtbl->GetBuffer(This,pMessage,riid) -#define IRpcChannelBuffer_SendReceive(T,p,pS) (T)->lpVtbl->SendReceive(T,p,pS) -#define IRpcChannelBuffer_FreeBuffer(T,p) (T)->lpVtbl->FreeBuffer(T,p) -#define IRpcChannelBuffer_GetDestCtx(This,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtx(This,pdwDestContext,ppvDestContext) -#define IRpcChannelBuffer_IsConnected(This) (This)->lpVtbl->IsConnected(This) -#define IRpcProxyBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IRpcProxyBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRpcProxyBuffer_Release(This) (This)->lpVtbl->Release(This) -#define IRpcProxyBuffer_Connect(This,pRpcChannelBuffer) (This)->lpVtbl->Connect(This,pRpcChannelBuffer) -#define IRpcProxyBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This) -#define IRpcStubBuffer_QueryInterface(T,r,pp) (T)->lpVtbl->QueryInterface(T,r,pp) -#define IRpcStubBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IRpcStubBuffer_Release(This) (This)->lpVtbl->Release(This) -#define IRpcStubBuffer_Connect(This,p) (This)->lpVtbl->Connect(This,p) -#define IRpcStubBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This) -#define IRpcStubBuffer_Invoke(T,_prpcmsg,_p) (T)->lpVtbl->Invoke(T,_prpcmsg,_p) -#define IRpcStubBuffer_IsIIDSupported(T,d) (T)->lpVtbl->IsIIDSupported(T,d) -#define IRpcStubBuffer_CountRefs(This) (This)->lpVtbl->CountRefs(This) -#define IRpcStubBuffer_DebugServerQueryInterface(T,p) (T)->lpVtbl->DebugServerQueryInterface(T,p) -#define IRpcStubBuffer_DebugServerRelease(T,p) (T)->lpVtbl->DebugServerRelease(T,p) -#define IPSFactoryBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -#define IPSFactoryBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IPSFactoryBuffer_Release(This) (This)->lpVtbl->Release(This) -#define IPSFactoryBuffer_CreateProxy(T,U,r,P,p) (T)->lpVtbl->CreateProxy(T,U,r,P,p) -#define IPSFactoryBuffer_CreateStub(T,r,U,p) (T)->lpVtbl->CreateStub(T,r,U,p) -#define IClassActivator_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) -#define IClassActivator_AddRef(This) (This)->lpVtbl->AddRef(This) -#define IClassActivator_Release(This) (This)->lpVtbl->Release(This) -/*** IClassActivator methods ***/ -#define IClassActivator_GetClassObject(p,a,b,c,d,e) (p)->lpVtbl->GetClassObject(p,a,b,c,d,e) -#endif /* COBJMACROS */ - -#endif - -/* Second part: GUID definitions */ - -DEFINE_GUID(IID_IMarshal, 0x00000003, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IStdMarshalInfo, 0x00000018, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IExternalConnection, 0x00000019, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IMultiQI, 0x00000020, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IMalloc, 0x00000002, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IMallocSpy, 0x0000001d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IEnumUnknown, 0x00000100, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ISurrogate, 0x00000022, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IGlobalInterfaceTable, 0x00000146, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IBindCtx, 0x0000000e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IEnumMoniker, 0x00000102, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IRunnableObject, 0x00000126, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IRunningObjectTable, 0x00000010, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IPersist, 0x0000010c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IPersistStream, 0x00000109, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IMoniker, 0x0000000f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IROTData, 0xf29f6bc0, 0x5021, 0x11ce, 0xaa,0x15, 0x00,0x00,0x69,0x01,0x29,0x3f); -DEFINE_GUID(IID_IEnumString, 0x00000101, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IClassActivator, 0x00000140, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ISequentialStream, 0x0c733a30, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d); - -#define ISequentialStream_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** ISequentialStream methods ***/ \ - STDMETHOD_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE; \ - STDMETHOD_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE; - -DEFINE_GUID(IID_IStream, 0x0000000c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IEnumSTATSTG, 0x0000000d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IStorage, 0x0000000b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IPersistFile, 0x0000010b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IPersistStorage, 0x0000010a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IRootStorage, 0x00000012, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_ILockBytes, 0x0000000a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IFillLockBytes, 0x99caf010, 0x415e, 0x11cf, 0x88,0x14, 0x00,0xaa,0x00,0xb5,0x69,0xf5); -DEFINE_GUID(IID_IProgressNotify, 0xa9d758a0, 0x4617, 0x11cf, 0x95,0xfc, 0x00,0xaa,0x00,0x68,0x0d,0xb4); -DEFINE_GUID(IID_ILayoutStorage, 0x0e6d4d90, 0x6738, 0x11cf, 0x96,0x08, 0x00,0xaa,0x00,0x68,0x0d,0xb4); -DEFINE_GUID(IID_IEnumFORMATETC, 0x00000103, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IEnumSTATDATA, 0x00000105, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IAdviseSink, 0x0000010f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IAdviseSink2, 0x00000125, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IDataObject, 0x0000010e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IDataAdviseHolder, 0x00000110, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IMessageFilter, 0x00000016, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IRpcChannelBuffer, 0xd5f56b60, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a); -DEFINE_GUID(IID_IRpcChannelBuffer2, 0x594f31d0, 0x7f19, 0x11d0, 0xb1,0x94, 0x00,0xa0,0xc9,0x0d,0xc8,0xbf); -DEFINE_GUID(IID_IRpcChannelBuffer3, 0x25b15600, 0x0115, 0x11d0, 0xbf,0x0d, 0x00,0xaa,0x00,0xb8,0xdf,0xd2); -DEFINE_GUID(IID_IRpcProxyBuffer, 0xd5f56a34, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a); -DEFINE_GUID(IID_IRpcStubBuffer, 0xd5f56afc, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a); -DEFINE_GUID(IID_IPSFactoryBuffer, 0xd5f569d0, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a); -DEFINE_GUID(IID_IChannelHook, 0x1008c4a0, 0x7613, 0x11cf, 0x9a,0xf1, 0x00,0x20,0xaf,0x6e,0x72,0xf4); -DEFINE_GUID(IID_IPropertyStorage, 0x00000138, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IPropertySetStorage, 0x0000013a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IEnumSTATPROPSTG, 0x00000139, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IEnumSTATPROPSETSTG, 0x0000013b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IClientSecurity, 0x0000013d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IServerSecurity, 0x0000013e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IAsyncSetup, 0x00000024, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IAsyncManager, 0x0000002a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); - -typedef IPSFactoryBuffer *LPPSFACTORYBUFFER; - -#ifndef __IGlobalInterfaceTable_FWD_DEFINED__ -#define __IGlobalInterfaceTable_FWD_DEFINED__ -typedef struct IGlobalInterfaceTable IGlobalInterfaceTable; -#endif - -typedef IGlobalInterfaceTable *LPGLOBALINTERFACETABLE; - -/***************************************************************************** - * IGlobalInterfaceTable interface - */ -#ifndef __IGlobalInterfaceTable_INTERFACE_DEFINED__ -#define __IGlobalInterfaceTable_INTERFACE_DEFINED__ - -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IGlobalInterfaceTable : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE RegisterInterfaceInGlobal( - IUnknown* pUnk, - REFIID riid, - DWORD* pdwCookie) = 0; - - virtual HRESULT STDMETHODCALLTYPE RevokeInterfaceFromGlobal( - DWORD dwCookie) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetInterfaceFromGlobal( - DWORD dwCookie, - REFIID riid, - void** ppv) = 0; - -}; -#else -typedef struct IGlobalInterfaceTableVtbl IGlobalInterfaceTableVtbl; -struct IGlobalInterfaceTable { - const IGlobalInterfaceTableVtbl* lpVtbl; -}; -struct IGlobalInterfaceTableVtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IGlobalInterfaceTable* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IGlobalInterfaceTable* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IGlobalInterfaceTable* This); - - /*** IGlobalInterfaceTable methods ***/ - HRESULT (STDMETHODCALLTYPE *RegisterInterfaceInGlobal)( - IGlobalInterfaceTable* This, - IUnknown* pUnk, - REFIID riid, - DWORD* pdwCookie); - - HRESULT (STDMETHODCALLTYPE *RevokeInterfaceFromGlobal)( - IGlobalInterfaceTable* This, - DWORD dwCookie); - - HRESULT (STDMETHODCALLTYPE *GetInterfaceFromGlobal)( - IGlobalInterfaceTable* This, - DWORD dwCookie, - REFIID riid, - void** ppv); - -}; - -/*** IUnknown methods ***/ -#define IGlobalInterfaceTable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IGlobalInterfaceTable_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IGlobalInterfaceTable_Release(p) (p)->lpVtbl->Release(p) -/*** IGlobalInterfaceTable methods ***/ -#define IGlobalInterfaceTable_RegisterInterfaceInGlobal(p,a,b,c) (p)->lpVtbl->RegisterInterfaceInGlobal(p,a,b,c) -#define IGlobalInterfaceTable_RevokeInterfaceFromGlobal(p,a) (p)->lpVtbl->RevokeInterfaceFromGlobal(p,a) -#define IGlobalInterfaceTable_GetInterfaceFromGlobal(p,a,b,c) (p)->lpVtbl->GetInterfaceFromGlobal(p,a,b,c) - -#endif - -#define IGlobalInterfaceTable_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IGlobalInterfaceTable methods ***/ \ - STDMETHOD_(HRESULT,RegisterInterfaceInGlobal)(THIS_ IUnknown* pUnk, REFIID riid, DWORD* pdwCookie) PURE; \ - STDMETHOD_(HRESULT,RevokeInterfaceFromGlobal)(THIS_ DWORD dwCookie) PURE; \ - STDMETHOD_(HRESULT,GetInterfaceFromGlobal)(THIS_ DWORD dwCookie, REFIID riid, void** ppv) PURE; - -HRESULT CALLBACK IGlobalInterfaceTable_RegisterInterfaceInGlobal_Proxy( - IGlobalInterfaceTable* This, - IUnknown* pUnk, - REFIID riid, - DWORD* pdwCookie); -void __RPC_STUB IGlobalInterfaceTable_RegisterInterfaceInGlobal_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Proxy( - IGlobalInterfaceTable* This, - DWORD dwCookie); -void __RPC_STUB IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IGlobalInterfaceTable_GetInterfaceFromGlobal_Proxy( - IGlobalInterfaceTable* This, - DWORD dwCookie, - REFIID riid, - void** ppv); -void __RPC_STUB IGlobalInterfaceTable_GetInterfaceFromGlobal_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IGlobalInterfaceTable_INTERFACE_DEFINED__ */ - -#ifndef __IInternalUnknown_FWD_DEFINED__ -#define __IInternalUnknown_FWD_DEFINED__ -typedef struct IInternalUnknown IInternalUnknown; -#endif - -/***************************************************************************** - * IInternalUnknown interface - */ -#ifndef __IInternalUnknown_INTERFACE_DEFINED__ -#define __IInternalUnknown_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IInternalUnknown, 0x00000021, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IInternalUnknown : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE QueryInternalInterface( - REFIID riid, - void** ppv) = 0; - -}; -#else -typedef struct IInternalUnknownVtbl IInternalUnknownVtbl; -struct IInternalUnknown { - const IInternalUnknownVtbl* lpVtbl; -}; -struct IInternalUnknownVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IInternalUnknown* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IInternalUnknown* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IInternalUnknown* This); - - /*** IInternalUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInternalInterface)( - IInternalUnknown* This, - REFIID riid, - void** ppv); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IInternalUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IInternalUnknown_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IInternalUnknown_Release(p) (p)->lpVtbl->Release(p) -/*** IInternalUnknown methods ***/ -#define IInternalUnknown_QueryInternalInterface(p,a,b) (p)->lpVtbl->QueryInternalInterface(p,a,b) -#endif - -#endif - -#endif /* __IInternalUnknown_INTERFACE_DEFINED__ */ - -#ifndef __IMultiQI_FWD_DEFINED__ -#define __IMultiQI_FWD_DEFINED__ -typedef struct IMultiQI IMultiQI; -#endif - -typedef IMultiQI *LPMULTIQI; - -/***************************************************************************** - * IMultiQI interface - */ -#ifndef __IMultiQI_INTERFACE_DEFINED__ -#define __IMultiQI_INTERFACE_DEFINED__ - -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IMultiQI : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE QueryMultipleInterfaces( - ULONG cMQIs, - MULTI_QI* pMQIs) = 0; - -}; -#else -typedef struct IMultiQIVtbl IMultiQIVtbl; -struct IMultiQI { - const IMultiQIVtbl* lpVtbl; -}; -struct IMultiQIVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IMultiQI* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IMultiQI* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IMultiQI* This); - - /*** IMultiQI methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryMultipleInterfaces)( - IMultiQI* This, - ULONG cMQIs, - MULTI_QI* pMQIs); - - END_INTERFACE -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IMultiQI_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IMultiQI_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IMultiQI_Release(p) (p)->lpVtbl->Release(p) -/*** IMultiQI methods ***/ -#define IMultiQI_QueryMultipleInterfaces(p,a,b) (p)->lpVtbl->QueryMultipleInterfaces(p,a,b) -#endif - -#endif - -HRESULT CALLBACK IMultiQI_QueryMultipleInterfaces_Proxy( - IMultiQI* This, - ULONG cMQIs, - MULTI_QI* pMQIs); -void __RPC_STUB IMultiQI_QueryMultipleInterfaces_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IMultiQI_INTERFACE_DEFINED__ */ - -typedef struct _GDI_OBJECT { - DWORD ObjectType; - union { - wireHBITMAP hBitmap; - wireHPALETTE hPalette; - wireHGLOBAL hGeneric; - } u; -} GDI_OBJECT; -typedef struct _userSTGMEDIUM { - struct { - DWORD tymed; - union { - wireHMETAFILEPICT hMetaFilePict; - wireHENHMETAFILE hHEnhMetaFile; - GDI_OBJECT *hGdiHandle; - wireHGLOBAL hGlobal; - LPOLESTR lpszFileName; - BYTE_BLOB *pstm; - BYTE_BLOB *pstg; - } u; - } DUMMYSTRUCTNAME; - IUnknown *pUnkForRelease; -} userSTGMEDIUM; -typedef userSTGMEDIUM *wireSTGMEDIUM; -typedef userSTGMEDIUM *wireASYNC_STGMEDIUM; -typedef STGMEDIUM ASYNC_STGMEDIUM; -typedef STGMEDIUM *LPSTGMEDIUM; -typedef struct _FLAG_STGMEDIUM { - long ContextFlags; - long fPassOwnership; - STGMEDIUM Stgmed; -} FLAG_STGMEDIUM; - -#endif /* __WINE_OBJIDL_H */ diff --git a/reactos/include/reactos/wine/ocidl.h b/reactos/include/reactos/wine/ocidl.h deleted file mode 100644 index af3848143c9..00000000000 --- a/reactos/include/reactos/wine/ocidl.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef __WINE_OCIDL_H -#define __WINE_OCIDL_H - -#include_next - -DEFINE_GUID(IID_IFont, 0xbef6e002, 0xa874, 0x101a, 0x8b,0xba, 0x00,0xaa,0x00,0x30,0x0c,0xab); -DEFINE_GUID(IID_IFontDisp, 0xbef6e003, 0xa874, 0x101a, 0x8b,0xba, 0x00,0xaa,0x00,0x30,0x0c,0xab); -DEFINE_GUID(IID_IFontEventsDisp, 0x4ef6100a, 0xaf88, 0x11d0, 0x98,0x46, 0x00,0xc0,0x4f,0xc2,0x99,0x93); -DEFINE_GUID(IID_IPicture, 0x7bf80980, 0xbf32, 0x101a, 0x8b,0xbb, 0x00,0xaa,0x00,0x30,0x0c,0xab); -DEFINE_GUID(IID_IPictureDisp, 0x7bf80981, 0xbf32, 0x101a, 0x8b,0xbb, 0x00,0xaa,0x00,0x30,0x0c,0xab); -DEFINE_GUID(IID_IOleControl, 0xb196b288, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IOleControlSite, 0xb196b289, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IOleInPlaceSiteEx, 0x9c2cad80, 0x3424, 0x11cf, 0xb6,0x70, 0x00,0xaa,0x00,0x4c,0xd6,0xd8); -DEFINE_GUID(IID_IOleInPlaceSiteWindowless, 0x922eada0, 0x3424, 0x11cf, 0xb6,0x70, 0x00,0xaa,0x00,0x4c,0xd6,0xd8); -DEFINE_GUID(IID_IOleInPlaceObjectWindowless, 0x1c2056cc, 0x5ef4, 0x101b, 0x8b,0xc8, 0x00,0xaa,0x00,0x3e,0x3b,0x29); -DEFINE_GUID(IID_IClassFactory2, 0xb196b28f, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IViewObjectEx, 0x3af24292, 0x0c96, 0x11ce, 0xa0,0xcf, 0x00,0xaa,0x00,0x60,0x0a,0xb8); -DEFINE_GUID(IID_IProvideClassInfo, 0xb196b283, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IProvideClassInfo2, 0xa6bc3ac0, 0xdbaa, 0x11ce, 0x9d,0xe3, 0x00,0xaa,0x00,0x4b,0xb8,0x51); -DEFINE_GUID(IID_IProvideMultipleClassInfo, 0xa7aba9c1, 0x8983, 0x11cf, 0x8f,0x20, 0x00,0x80,0x5f,0x2c,0xd0,0x64); -DEFINE_GUID(IID_IConnectionPoint, 0xb196b286, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IConnectionPointContainer, 0xb196b284, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IEnumConnections, 0xb196b287, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IEnumConnectionPoints, 0xb196b285, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IPropertyPage, 0xb196b28d, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IPropertyPage2, 0x01e44665, 0x24ac, 0x101b, 0x84,0xed, 0x08,0x00,0x2b,0x2e,0xc7,0x13); -DEFINE_GUID(IID_IPropertyPageSite, 0xb196b28c, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IPropertyNotifySink, 0x9bfbbc02, 0xeff1, 0x101a, 0x84,0xed, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_ISimpleFrameSite, 0x742b0e01, 0x14e6, 0x101b, 0x91,0x4e, 0x00,0xaa,0x00,0x30,0x0c,0xab); -DEFINE_GUID(IID_IPersistStreamInit, 0x7fd52380, 0x4e07, 0x101b, 0xae,0x2d, 0x08,0x00,0x2b,0x2e,0xc7,0x13); -DEFINE_GUID(IID_IPersistMemory, 0xbd1ae5e0, 0xa6ae, 0x11ce, 0xbd,0x37, 0x50,0x42,0x00,0xc1,0x00,0x00); -DEFINE_GUID(IID_IPersistPropertyBag, 0x37d84f60, 0x42cb, 0x11ce, 0x81,0x35, 0x00,0xaa,0x00,0x4b,0xb8,0x51); -DEFINE_GUID(IID_IPropertyBag2, 0x22f55882, 0x280b, 0x11d0, 0xa8,0xa9, 0x00,0xa0,0xc9,0x0c,0x20,0x04); -DEFINE_GUID(IID_IPersistPropertyBag2, 0x22f55881, 0x280b, 0x11d0, 0xa8,0xa9, 0x00,0xa0,0xc9,0x0c,0x20,0x04); -DEFINE_GUID(IID_ISpecifyPropertyPages, 0xb196b28b, 0xbab4, 0x101a, 0xb6,0x9c, 0x00,0xaa,0x00,0x34,0x1d,0x07); -DEFINE_GUID(IID_IPerPropertyBrowsing, 0x376bd3aa, 0x3845, 0x101b, 0x84,0xed, 0x08,0x00,0x2b,0x2e,0xc7,0x13); -DEFINE_GUID(IID_IAdviseSinkEx, 0x3af24290, 0x0c96, 0x11ce, 0xa0,0xcf, 0x00,0xaa,0x00,0x60,0x0a,0xb8); -DEFINE_GUID(IID_IPointerInactive, 0x55980ba0, 0x35aa, 0x11cf, 0xb6,0x71, 0x00,0xaa,0x00,0x4c,0xd6,0xd8); -DEFINE_GUID(IID_IObjectWithSite, 0xfc4801a3, 0x2ba9, 0x11cf, 0xa2,0x29, 0x00,0xaa,0x00,0x3d,0x73,0x52); -DEFINE_GUID(IID_IOleUndoUnit, 0x894ad3b0, 0xef97, 0x11ce, 0x9b,0xc9, 0x00,0xaa,0x00,0x60,0x8e,0x01); -DEFINE_GUID(IID_IOleParentUndoUnit, 0xa1faf330, 0xef97, 0x11ce, 0x9b,0xc9, 0x00,0xaa,0x00,0x60,0x8e,0x01); -DEFINE_GUID(IID_IEnumOleUndoUnits, 0xb3e7c340, 0xef97, 0x11ce, 0x9b,0xc9, 0x00,0xaa,0x00,0x60,0x8e,0x01); -DEFINE_GUID(IID_IOleUndoManager, 0xd001f200, 0xef97, 0x11ce, 0x9b,0xc9, 0x00,0xaa,0x00,0x60,0x8e,0x01); -DEFINE_GUID(IID_IQuickActivate, 0xcf51ed10, 0x62fe, 0x11cf, 0xbf,0x86, 0x00,0xa0,0xc9,0x03,0x48,0x36); - -#endif /* __WINE_OAIDL_H */ diff --git a/reactos/include/reactos/wine/oleidl.h b/reactos/include/reactos/wine/oleidl.h deleted file mode 100644 index 2ee3f3b84dc..00000000000 --- a/reactos/include/reactos/wine/oleidl.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __WINE_OLEIDL_H -#define __WINE_OLEIDL_H - -#include -#include_next - -DEFINE_GUID(IID_IOleWindow, 0x00000114, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleInPlaceObject, 0x00000113, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleInPlaceActiveObject, 0x00000117, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleInPlaceUIWindow, 0x00000115, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleInPlaceFrame, 0x00000116, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleInPlaceSite, 0x00000119, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IParseDisplayName, 0x0000011a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleContainer, 0x0000011b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleItemContainer, 0x0000011c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleLink, 0x0000011d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleClientSite, 0x00000118, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleCache, 0x0000011e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleCache2, 0x00000128, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleCacheControl, 0x00000129, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IEnumOLEVERB, 0x00000104, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleObject, 0x00000112, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IOleAdviseHolder, 0x00000111, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IContinue, 0x0000012a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IViewObject, 0x0000010d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IViewObject2, 0x00000127, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IDropSource, 0x00000121, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); -DEFINE_GUID(IID_IDropTarget, 0x00000122, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); - -#endif /* __WINE_OLEIDL_H */ diff --git a/reactos/include/reactos/wine/richole.h b/reactos/include/reactos/wine/richole.h deleted file mode 100644 index 4a4f3dfc1c8..00000000000 --- a/reactos/include/reactos/wine/richole.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Compatibility header - * - * This header is wrapper to allow compilation of Wine DLLs under ReactOS - * build system. It contains definitions commonly refered to as Wineisms - * and definitions that are missing in w32api. - */ - -#include - -#include_next - -#ifndef WINE_RICHOLE_H_INCLUDED -#define WINE_RICHOLE_H_INCLUDED - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IRichEditOle_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IRichEditOle_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IRichEditOle_Release(p) (p)->lpVtbl->Release(p) -/*** IRichEditOle methods ***/ -#define IRichEditOle_GetClientSite(p,a) (p)->lpVtbl->GetClientSite(p,a) -#define IRichEditOle_GetObjectCount(p) (p)->lpVtbl->GetObjectCount(p) -#define IRichEditOle_GetLinkCount(p) (p)->lpVtbl->GetLinkCount(p) -#define IRichEditOle_GetObject(p,a,b,c) (p)->lpVtbl->GetObject(p,a,b,c) -#define IRichEditOle_InsertObject(p,a) (p)->lpVtbl->InsertObject(p,a) -#define IRichEditOle_ConvertObject(p,a,b,c) (p)->lpVtbl->ConvertObject(p,a,b,c) -#define IRichEditOle_ActivateAs(p,a,b) (p)->lpVtbl->ActivateAs(p,a,b) -#define IRichEditOle_SetHostNames(p,a,b) (p)->lpVtbl->SetHostNames(p,a,b) -#define IRichEditOle_SetLinkAvailable(p,a,b) (p)->lpVtbl->SetLinkAvailable(p,a,b) -#define IRichEditOle_SetDvaspect(p,a,b) (p)->lpVtbl->SetDvaspect(p,a,b) -#define IRichEditOle_HandsOffStorage(p,a) (p)->lpVtbl->HandsOffStorage(p,a) -#define IRichEditOle_SaveCompleted(p,a,b) (p)->lpVtbl->SaveCompleted(p,a,b) -#define IRichEditOle_InPlaceDeactivate(p) (p)->lpVtbl->InPlaceDeactivate(p) -#define IRichEditOle_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) -#define IRichEditOle_GetClipboardData(p,a,b,c) (p)->lpVtbl->GetClipboardData(p,a,b,c) -#define IRichEditOle_ImportDataObject(p,a,b,c) (p)->lpVtbl->ImportDataObject(p,a,b,c) -#endif - -#endif /* WINE_RICHOLE_H_INCLUDED */ diff --git a/reactos/include/reactos/wine/servprov.h b/reactos/include/reactos/wine/servprov.h deleted file mode 100644 index dd61dbca565..00000000000 --- a/reactos/include/reactos/wine/servprov.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef __WINE_SERVPROV_H -#define __WINE_SERVPROV_H - -#include -#include -#include_next - -DEFINE_GUID(IID_IServiceProvider, 0x6d5140c1, 0x7436, 0x11ce, 0x80,0x34, 0x00,0xaa,0x00,0x60,0x09,0xfa); - -#endif /* __WINE_SERVPROV_H */ diff --git a/reactos/include/reactos/wine/shellapi.h b/reactos/include/reactos/wine/shellapi.h deleted file mode 100644 index f45678a5200..00000000000 --- a/reactos/include/reactos/wine/shellapi.h +++ /dev/null @@ -1,20 +0,0 @@ -/* $Id$ - * - * Compatibility header - * - * This header is wrapper to allow compilation of Wine DLLs under ReactOS - * build system. It contains definitions commonly refered to as Wineisms - * and definitions that are missing in w32api. - */ - -#if !defined (_MSC_VER) -#include_next -#endif - -#ifndef _WINE_SHELLAPI_H -#define _WINE_SHELLAPI_H - -#define SHGFI_UNKNOWN1 0x000000020 -#define SHGFI_UNKNOWN2 0x000000040 -#define SHGFI_UNKNOWN3 0x000000080 -#endif diff --git a/reactos/include/reactos/wine/shldisp.h b/reactos/include/reactos/wine/shldisp.h deleted file mode 100644 index 3349f92ccf6..00000000000 --- a/reactos/include/reactos/wine/shldisp.h +++ /dev/null @@ -1,239 +0,0 @@ -/*** Autogenerated by WIDL 0.1 from shldisp.idl - Do not edit ***/ -#include -#include - -#ifndef __WIDL_SHLDISP_H -#define __WIDL_SHLDISP_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include -#include -#include -#include -#ifndef __IAutoComplete_FWD_DEFINED__ -#define __IAutoComplete_FWD_DEFINED__ -typedef struct IAutoComplete IAutoComplete; -#endif - -typedef IAutoComplete *LPAUTOCOMPLETE; - -/***************************************************************************** - * IAutoComplete interface - */ -#ifndef __IAutoComplete_INTERFACE_DEFINED__ -#define __IAutoComplete_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IAutoComplete, 0x00bb2762, 0x6a77, 0x11d0, 0xa5,0x35, 0x00,0xc0,0x4f,0xd7,0xd0,0x62); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IAutoComplete : public IUnknown -{ - virtual HRESULT STDMETHODCALLTYPE Init( - HWND hwndEdit, - IUnknown* punkACL, - LPCOLESTR pwszRegKeyPath, - LPCOLESTR pwszQuickComplete) = 0; - - virtual HRESULT STDMETHODCALLTYPE Enable( - BOOL fEnable) = 0; - -}; -#else -typedef struct IAutoCompleteVtbl IAutoCompleteVtbl; -struct IAutoComplete { - const IAutoCompleteVtbl* lpVtbl; -}; -struct IAutoCompleteVtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IAutoComplete* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IAutoComplete* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IAutoComplete* This); - - /*** IAutoComplete methods ***/ - HRESULT (STDMETHODCALLTYPE *Init)( - IAutoComplete* This, - HWND hwndEdit, - IUnknown* punkACL, - LPCOLESTR pwszRegKeyPath, - LPCOLESTR pwszQuickComplete); - - HRESULT (STDMETHODCALLTYPE *Enable)( - IAutoComplete* This, - BOOL fEnable); - -}; - -/*** IUnknown methods ***/ -#define IAutoComplete_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IAutoComplete_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IAutoComplete_Release(p) (p)->lpVtbl->Release(p) -/*** IAutoComplete methods ***/ -#define IAutoComplete_Init(p,a,b,c,d) (p)->lpVtbl->Init(p,a,b,c,d) -#define IAutoComplete_Enable(p,a) (p)->lpVtbl->Enable(p,a) - -#endif - -#define IAutoComplete_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IAutoComplete methods ***/ \ - STDMETHOD_(HRESULT,Init)(THIS_ HWND hwndEdit, IUnknown* punkACL, LPCOLESTR pwszRegKeyPath, LPCOLESTR pwszQuickComplete) PURE; \ - STDMETHOD_(HRESULT,Enable)(THIS_ BOOL fEnable) PURE; - -HRESULT CALLBACK IAutoComplete_Init_Proxy( - IAutoComplete* This, - HWND hwndEdit, - IUnknown* punkACL, - LPCOLESTR pwszRegKeyPath, - LPCOLESTR pwszQuickComplete); -void __RPC_STUB IAutoComplete_Init_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAutoComplete_Enable_Proxy( - IAutoComplete* This, - BOOL fEnable); -void __RPC_STUB IAutoComplete_Enable_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IAutoComplete_INTERFACE_DEFINED__ */ - -#ifndef __IAutoComplete2_FWD_DEFINED__ -#define __IAutoComplete2_FWD_DEFINED__ -typedef struct IAutoComplete2 IAutoComplete2; -#endif - -typedef IAutoComplete2 *LPAUTOCOMPLETE2; - -typedef enum _tagAUTOCOMPLETEOPTIONS { - ACO_NONE = 0x0, - ACO_AUTOSUGGEST = 0x1, - ACO_AUTOAPPEND = 0x2, - ACO_SEARCH = 0x4, - ACO_FILTERPREFIXES = 0x8, - ACO_USETAB = 0x10, - ACO_UPDOWNKEYDROPSLIST = 0x20, - ACO_RTLREADING = 0x40 -} AUTOCOMPLETEOPTIONS; - -/***************************************************************************** - * IAutoComplete2 interface - */ -#ifndef __IAutoComplete2_INTERFACE_DEFINED__ -#define __IAutoComplete2_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_IAutoComplete2, 0xeac04bc0, 0x3791, 0x11d2, 0xbb,0x95, 0x00,0x60,0x97,0x7b,0x46,0x4c); -#if defined(__cplusplus) && !defined(CINTERFACE) -struct IAutoComplete2 : public IAutoComplete -{ - virtual HRESULT STDMETHODCALLTYPE SetOptions( - DWORD dwFlag) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOptions( - DWORD* pdwFlag) = 0; - -}; -#else -typedef struct IAutoComplete2Vtbl IAutoComplete2Vtbl; -struct IAutoComplete2 { - const IAutoComplete2Vtbl* lpVtbl; -}; -struct IAutoComplete2Vtbl { - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IAutoComplete2* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IAutoComplete2* This); - - ULONG (STDMETHODCALLTYPE *Release)( - IAutoComplete2* This); - - /*** IAutoComplete methods ***/ - HRESULT (STDMETHODCALLTYPE *Init)( - IAutoComplete2* This, - HWND hwndEdit, - IUnknown* punkACL, - LPCOLESTR pwszRegKeyPath, - LPCOLESTR pwszQuickComplete); - - HRESULT (STDMETHODCALLTYPE *Enable)( - IAutoComplete2* This, - BOOL fEnable); - - /*** IAutoComplete2 methods ***/ - HRESULT (STDMETHODCALLTYPE *SetOptions)( - IAutoComplete2* This, - DWORD dwFlag); - - HRESULT (STDMETHODCALLTYPE *GetOptions)( - IAutoComplete2* This, - DWORD* pdwFlag); - -}; - -/*** IUnknown methods ***/ -#define IAutoComplete2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IAutoComplete2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IAutoComplete2_Release(p) (p)->lpVtbl->Release(p) -/*** IAutoComplete methods ***/ -#define IAutoComplete2_Init(p,a,b,c,d) (p)->lpVtbl->Init(p,a,b,c,d) -#define IAutoComplete2_Enable(p,a) (p)->lpVtbl->Enable(p,a) -/*** IAutoComplete2 methods ***/ -#define IAutoComplete2_SetOptions(p,a) (p)->lpVtbl->SetOptions(p,a) -#define IAutoComplete2_GetOptions(p,a) (p)->lpVtbl->GetOptions(p,a) - -#endif - -#define IAutoComplete2_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; \ - /*** IAutoComplete methods ***/ \ - STDMETHOD_(HRESULT,Init)(THIS_ HWND hwndEdit, IUnknown* punkACL, LPCOLESTR pwszRegKeyPath, LPCOLESTR pwszQuickComplete) PURE; \ - STDMETHOD_(HRESULT,Enable)(THIS_ BOOL fEnable) PURE; \ - /*** IAutoComplete2 methods ***/ \ - STDMETHOD_(HRESULT,SetOptions)(THIS_ DWORD dwFlag) PURE; \ - STDMETHOD_(HRESULT,GetOptions)(THIS_ DWORD* pdwFlag) PURE; - -HRESULT CALLBACK IAutoComplete2_SetOptions_Proxy( - IAutoComplete2* This, - DWORD dwFlag); -void __RPC_STUB IAutoComplete2_SetOptions_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK IAutoComplete2_GetOptions_Proxy( - IAutoComplete2* This, - DWORD* pdwFlag); -void __RPC_STUB IAutoComplete2_GetOptions_Stub( - struct IRpcStubBuffer* This, - struct IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __IAutoComplete2_INTERFACE_DEFINED__ */ - -#ifdef __cplusplus -} -#endif -#endif /* __WIDL_SHLDISP_H */ diff --git a/reactos/include/reactos/wine/shlguid.h b/reactos/include/reactos/wine/shlguid.h deleted file mode 100644 index 260a3b1ad91..00000000000 --- a/reactos/include/reactos/wine/shlguid.h +++ /dev/null @@ -1,24 +0,0 @@ -/* $Id$ - * - * Compatibility header - * - * This header is wrapper to allow compilation of Wine DLLs under ReactOS - * build system. It contains definitions commonly refered to as Wineisms - * and definitions that are missing in w32api. - */ - -#if !defined (_MSC_VER) -#include_next -#endif - - -#ifndef __WINE_SHLGUID_H -#define __WINE_SHLGUID_H - -/* command group ids */ -DEFINE_GUID(IID_IShellLinkDataList, 0x45e2b4ae, 0xb1c3, 0x11d0, 0xb9, 0x2f, 0x00, 0xa0, 0xc9, 0x03, 0x12, 0xe1); - -#endif /* __WINE_SHLGUID_H */ - - - diff --git a/reactos/include/reactos/wine/shlobj.h b/reactos/include/reactos/wine/shlobj.h deleted file mode 100644 index 61019fb9ec3..00000000000 --- a/reactos/include/reactos/wine/shlobj.h +++ /dev/null @@ -1,80 +0,0 @@ -/* $Id$ - * - * Compatibility header - * - * This header is wrapper to allow compilation of Wine DLLs under ReactOS - * build system. It contains definitions commonly refered to as Wineisms - * and definitions that are missing in w32api. - */ - -#include - -#if !defined (_MSC_VER) -#include_next -#endif - -#include -#include - -#ifndef __WINE_SHLOBJ_H -#define __WINE_SHLOBJ_H - -#define SV_CLASS_NAME ("SHELLDLL_DefView") - -/* undocumented */ -#define FCIDM_SHVIEW_ARRANGE 0x7001 -#define FCIDM_SHVIEW_DELETE 0x7011 -#define FCIDM_SHVIEW_PROPERTIES 0x7013 -#define FCIDM_SHVIEW_CUT 0x7018 -#define FCIDM_SHVIEW_COPY 0x7019 -#define FCIDM_SHVIEW_INSERT 0x701A -#define FCIDM_SHVIEW_UNDO 0x701B -#define FCIDM_SHVIEW_INSERTLINK 0x701C -#define FCIDM_SHVIEW_SELECTALL 0x7021 -#define FCIDM_SHVIEW_INVERTSELECTION 0x7022 - -#define FCIDM_SHVIEW_BIGICON 0x7029 -#define FCIDM_SHVIEW_SMALLICON 0x702A -#define FCIDM_SHVIEW_LISTVIEW 0x702B -#define FCIDM_SHVIEW_REPORTVIEW 0x702C -/* 0x7030-0x703f are used by the shellbrowser */ -#define FCIDM_SHVIEW_AUTOARRANGE 0x7031 -#define FCIDM_SHVIEW_SNAPTOGRID 0x7032 - -#define FCIDM_SHVIEW_HELP 0x7041 -#define FCIDM_SHVIEW_RENAME 0x7050 -#define FCIDM_SHVIEW_CREATELINK 0x7051 -#define FCIDM_SHVIEW_NEWLINK 0x7052 -#define FCIDM_SHVIEW_NEWFOLDER 0x7053 - -#define FCIDM_SHVIEW_REFRESH 0x7100 /* FIXME */ -#define FCIDM_SHVIEW_EXPLORE 0x7101 /* FIXME */ -#define FCIDM_SHVIEW_OPEN 0x7102 /* FIXME */ - -/* undocumented toolbar items from stddlg's*/ -#define FCIDM_TB_UPFOLDER 0xA001 -#define FCIDM_TB_NEWFOLDER 0xA002 -#define FCIDM_TB_SMALLICON 0xA003 -#define FCIDM_TB_REPORTVIEW 0xA004 -#define FCIDM_TB_DESKTOP 0xA005 /* FIXME */ - -#define CSIDL_FOLDER_MASK 0x00ff - -LPVOID WINAPI SHAlloc(ULONG); -void WINAPI SHFree(LPVOID); -int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*); - -/***************************************************************************** - * IFileSystemBindData interface - */ -DEFINE_GUID(IID_IFileSystemBindData, 0x01e18d10, 0x4d8b, 0x11d2, 0x85,0x5d, 0x00,0x60,0x08,0x05,0x93,0x67); - -/*** IUnknown methods ***/ -#define IFileSystemBindData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IFileSystemBindData_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IFileSystemBindData_Release(p) (p)->lpVtbl->Release(p) -/*** IFileSystemBindData methods ***/ -#define IFileSystemBindData_GetFindData(p,a) (p)->lpVtbl->GetFindData(p,a) -#define IFileSystemBindData_SetFindData(p,a) (p)->lpVtbl->SetFindData(p,a) - -#endif /* __WINE_SHLOBJ_H */ diff --git a/reactos/include/reactos/wine/shlwapi.h b/reactos/include/reactos/wine/shlwapi.h deleted file mode 100644 index 33f0b2597a5..00000000000 --- a/reactos/include/reactos/wine/shlwapi.h +++ /dev/null @@ -1,48 +0,0 @@ -/* $Id$ - * - * Compatibility header - * - * This header is wrapper to allow compilation of Wine DLLs under ReactOS - * build system. It contains definitions commonly refered to as Wineisms - * and definitions that are missing in w32api. - */ -#if !defined (_MSC_VER) -#include_next -#endif - -#ifndef __WINE_SHLWAPI_H -#define __WINE_SHLWAPI_H - -#define URL_FILE_USE_PATHURL 0x00010000 -#define URL_BROWSER_MODE URL_DONT_ESCAPE_EXTRA_INFO - -HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR,DWORD,DWORD,BOOL,struct IStream*,struct IStream**); - -#define INTERFACE IQueryAssociations -DECLARE_INTERFACE_(IQueryAssociations,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IQueryAssociations methods ***/ - STDMETHOD(Init)(THIS_ ASSOCF flags, LPCWSTR pszAssoc, HKEY hkProgid, HWND hwnd) PURE; - STDMETHOD(GetString)(THIS_ ASSOCF flags, ASSOCSTR str, LPCWSTR pszExtra, LPWSTR pszOut, DWORD * pcchOut) PURE; - STDMETHOD(GetKey)(THIS_ ASSOCF flags, ASSOCKEY key, LPCWSTR pszExtra, HKEY * phkeyOut) PURE; - STDMETHOD(GetData)(THIS_ ASSOCF flags, ASSOCDATA data, LPCWSTR pszExtra, LPVOID pvOut, DWORD * pcbOut) PURE; - STDMETHOD(GetEnum)(THIS_ ASSOCF flags, ASSOCENUM assocenum, LPCWSTR pszExtra, REFIID riid, LPVOID * ppvOut) PURE; -}; -#undef INTERFACE - -#if !defined(__cplusplus) || defined(CINTERFACE) -#define IQueryAssociations_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IQueryAssociations_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IQueryAssociations_Release(p) (p)->lpVtbl->Release(p) -#define IQueryAssociations_Init(p,a,b,c,d) (p)->lpVtbl->Init(p,a,b,c,d) -#define IQueryAssociations_GetString(p,a,b,c,d,e) (p)->lpVtbl->GetString(p,a,b,c,d,e) -#define IQueryAssociations_GetKey(p,a,b,c,d) (p)->lpVtbl->GetKey(p,a,b,c,d) -#define IQueryAssociations_GetData(p,a,b,c,d,e) (p)->lpVtbl->GetData(p,a,b,c,d,e) -#define IQueryAssociations_GetEnum(p,a,b,c,d,e) (p)->lpVtbl->GetEnum(p,a,b,c,d,e) -#endif - -#endif /* __WINE_SHLWAPI_H */ diff --git a/reactos/include/reactos/wine/shobjidl.h b/reactos/include/reactos/wine/shobjidl.h deleted file mode 100644 index 9b9fe227e90..00000000000 --- a/reactos/include/reactos/wine/shobjidl.h +++ /dev/null @@ -1,55 +0,0 @@ -/* $Id$ - * - * Compatibility header - * - * This header is wrapper to allow compilation of Wine DLLs under ReactOS - * build system. It contains definitions commonly refered to as Wineisms - * and definitions that are missing in w32api. - */ - - -#ifndef __WINE_SHOBJIDL_H -#define __WINE_SHOBJIDL_H - -#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK - -/***************************************************************************** - * IDropTargetHelper interface define in shlguid.h - */ -// DEFINE_GUID(IID_IDropTargetHelper, 0x4657278b, 0x411b, 0x11d2, 0x83,0x9a, 0x00,0xc0,0x4f,0xd9,0x18,0xd0); - -/***************************************************************************** - * IPersistFolder2 interface - */ -DEFINE_GUID(IID_IPersistFolder2, 0x1ac3d9f0, 0x175c, 0x11d1, 0x95,0xbe, 0x00,0x60,0x97,0x97,0xea,0x4f); - -/***************************************************************************** - * IShellFolder2 interface - */ -DEFINE_GUID(IID_IShellFolder2, 0x93f2f68c, 0x1d1b, 0x11d3, 0xa3,0x0e, 0x00,0xc0,0x4f,0x79,0xab,0xd1); - -/***************************************************************************** - * IPersistFolder3 interface - */ - -/***************************************************************************** - * IShellExecuteHookW interface - */ -DEFINE_GUID(IID_IPersistFolder3, 0xcef04fdf, 0xfe72, 0x11d2, 0x87,0xa5, 0x00,0xc0,0x4f,0x68,0x37,0xcf); -/*** IUnknown methods ***/ -#define IShellExecuteHookW_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IShellExecuteHookW_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IShellExecuteHookW_Release(p) (p)->lpVtbl->Release(p) -/*** IShellExecuteHookW methods ***/ -#define IShellExecuteHookW_Execute(p,a) (p)->lpVtbl->Execute(p,a) - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define IShellExtInit_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IShellExtInit_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IShellExtInit_Release(p) (p)->lpVtbl->Release(p) -/*** IShellExtInit methods ***/ -#define IShellExtInit_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#endif - -#endif /* __WINE_SHOBJIDL_H */ diff --git a/reactos/include/reactos/wine/test.h b/reactos/include/reactos/wine/test.h index 05c52f8be0f..ea7947544f1 100644 --- a/reactos/include/reactos/wine/test.h +++ b/reactos/include/reactos/wine/test.h @@ -18,15 +18,30 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifndef __WINE_TEST_H -#define __WINE_TEST_H +#ifndef __WINE_WINE_TEST_H +#define __WINE_WINE_TEST_H #include #include -#include +#include +#include -/* prototype for dbgprint */ -ULONG CDECL DbgPrint(IN PCCH Format,IN ...); +#ifdef __WINE_WINE_LIBRARY_H +#error wine/library.h should not be used in Wine tests +#endif +#ifdef __WINE_WINE_UNICODE_H +#error wine/unicode.h should not be used in Wine tests +#endif +#ifdef __WINE_WINE_DEBUG_H +#error wine/debug.h should not be used in Wine tests +#endif + +#ifndef INVALID_FILE_ATTRIBUTES +#define INVALID_FILE_ATTRIBUTES ((DWORD)~0UL) +#endif +#ifndef INVALID_SET_FILE_POINTER +#define INVALID_SET_FILE_POINTER ((DWORD)~0UL) +#endif /* debug level */ extern int winetest_debug; @@ -55,19 +70,23 @@ extern int winetest_get_mainargs( char*** pargv ); #ifdef __GNUC__ extern int winetest_ok( int condition, const char *msg, ... ) __attribute__((format (printf,2,3) )); +extern void winetest_skip( const char *msg, ... ) __attribute__((format (printf,1,2))); extern void winetest_trace( const char *msg, ... ) __attribute__((format (printf,1,2))); #else /* __GNUC__ */ extern int winetest_ok( int condition, const char *msg, ... ); +extern void winetest_skip( const char *msg, ... ); extern void winetest_trace( const char *msg, ... ); #endif /* __GNUC__ */ #define ok_(file, line) (winetest_set_location(file, line), 0) ? 0 : winetest_ok +#define skip_(file, line) (winetest_set_location(file, line), 0) ? (void)0 : winetest_skip #define trace_(file, line) (winetest_set_location(file, line), 0) ? (void)0 : winetest_trace #define ok ok_(__FILE__, __LINE__) +#define skip skip_(__FILE__, __LINE__) #define trace trace_(__FILE__, __LINE__) #define todo(platform) for (winetest_start_todo(platform); \ @@ -154,6 +173,7 @@ static const struct test *current_test; /* test currently being run */ static LONG successes; /* number of successful tests */ static LONG failures; /* number of failures */ +static LONG skipped; /* number of skipped test chunks */ static LONG todo_successes; /* number of successful tests inside todo block */ static LONG todo_failures; /* number of failures inside todo block */ @@ -244,21 +264,11 @@ int winetest_ok( int condition, const char *msg, ... ) data->current_file, data->current_line ); if (msg[0]) { - char string[1024]; va_start(valist, msg); fprintf( stdout,": "); vfprintf(stdout, msg, valist); - vsprintf(string, msg, valist); - DbgPrint( "%s:%d: Test failed: %s\n", - data->current_file, data->current_line, string ); va_end(valist); } - else - { - DbgPrint( "%s:%d: Test failed\n", - data->current_file, data->current_line ); - } - fputc( '\n', stdout ); InterlockedIncrement(&failures); return 0; } @@ -280,15 +290,25 @@ void winetest_trace( const char *msg, ... ) if (winetest_debug > 0) { - char string[1024]; fprintf( stdout, "%s:%d:", data->current_file, data->current_line ); va_start(valist, msg); vfprintf(stdout, msg, valist); - DbgPrint( "%s:%d: %s", data->current_file, data->current_line, string); va_end(valist); } } +void winetest_skip( const char *msg, ... ) +{ + va_list valist; + tls_data* data=get_tls_data(); + + fprintf( stdout, "%s:%d: Tests skipped: ", data->current_file, data->current_line ); + va_start(valist, msg); + vfprintf(stdout, msg, valist); + va_end(valist); + skipped++; +} + void winetest_start_todo( const char* platform ) { tls_data* data=get_tls_data(); @@ -368,10 +388,11 @@ static int run_test( const char *name ) if (winetest_debug) { - fprintf( stdout, "%s: %ld tests executed, %ld marked as todo, %ld %s.\n", - name, successes + failures + todo_successes + todo_failures, + fprintf( stdout, "%s: %d tests executed (%d marked as todo, %d %s), %d skipped.\n", + test->name, successes + failures + todo_successes + todo_failures, todo_successes, failures + todo_failures, - (failures + todo_failures != 1) ? "failures" : "failure" ); + (failures + todo_failures != 1) ? "failures" : "failure", + skipped ); } status = (failures + todo_failures < 255) ? failures + todo_failures : 255; return status; @@ -417,4 +438,4 @@ int main( int argc, char **argv ) #endif /* STANDALONE */ -#endif /* __WINE_TEST_H */ +#endif /* __WINE_WINE_TEST_H */ diff --git a/reactos/include/reactos/wine/tom.h b/reactos/include/reactos/wine/tom.h deleted file mode 100644 index 13b6c0415d0..00000000000 --- a/reactos/include/reactos/wine/tom.h +++ /dev/null @@ -1,4247 +0,0 @@ -/*** Autogenerated by WIDL 0.9.30 from ../../../wine-git/include/tom.idl - Do not edit ***/ -#include -#include - -#ifndef __WIDL_TOM_H -#define __WIDL_TOM_H -#ifdef __cplusplus -extern "C" { -#endif -#include -typedef enum tagTomConstants { - tomFalse = 0, - tomTrue = -1, - tomUndefined = -9999999, - tomToggle = -9999998, - tomAutoColor = -9999997, - tomDefault = -9999996, - tomSuspend = -9999995, - tomResume = -9999994, - tomApplyNow = 0, - tomApplyLater = 1, - tomTrackParms = 2, - tomCacheParms = 3, - tomBackward = 0xffffffff, - tomForward = 0xffffffff, - tomMove = 0, - tomExtend = 1, - tomNoSelection = 0, - tomSelectionIP = 1, - tomSelectionNormal = 2, - tomSelectionFrame = 3, - tomSelectionColumn = 4, - tomSelectionRow = 5, - tomSelectionBlock = 6, - tomSelectionInlineShape = 7, - tomSelectionShape = 8, - tomSelStartActive = 1, - tomSelAtEOL = 2, - tomSelOvertype = 4, - tomSelActive = 8, - tomSelReplace = 16, - tomEnd = 0, - tomStart = 32, - tomCollapseEnd = 0, - tomCollapseStart = 1, - tomClientCoord = 256, - tomNone = 0, - tomSingle = 1, - tomWords = 2, - tomDouble = 3, - tomDotted = 4, - tomDash = 5, - tomDashDot = 6, - tomDashDotDot = 7, - tomWave = 8, - tomThick = 9, - tomHair = 10, - tomLineSpaceSingle = 0, - tomLineSpace1pt5 = 1, - tomLineSpaceDouble = 2, - tomLineSpaceAtLeast = 3, - tomLineSpaceExactly = 4, - tomLineSpaceMultiple = 5, - tomAlignLeft = 0, - tomAlignCenter = 1, - tomAlignRight = 2, - tomAlignJustify = 3, - tomAlignDecimal = 3, - tomAlignBar = 4, - tomAlignInterWord = 3, - tomAlignInterLetter = 4, - tomAlignScaled = 5, - tomAlignGlyphs = 6, - tomAlignSnapGrid = 7, - tomSpaces = 0, - tomDots = 1, - tomDashes = 2, - tomLines = 3, - tomThickLines = 4, - tomEquals = 5, - tomTabBack = -3, - tomTabNext = -2, - tomTabHere = -1, - tomListBullet = 1, - tomListNumberAsArabic = 2, - tomListNumberAsLCLetter = 3, - tomListNumberAsUCLetter = 4, - tomListNumberAsLCRoman = 5, - tomListNumberAsUCRoman = 6, - tomListNumberAsSequence = 7, - tomListParentheses = 0x10000, - tomListPeriod = 0x20000, - tomListPlain = 0x30000, - tomCharacter = 1, - tomWord = 2, - tomSentence = 3, - tomParagraph = 4, - tomLine = 5, - tomStory = 6, - tomScreen = 7, - tomSection = 8, - tomColumn = 9, - tomRow = 10, - tomWindow = 11, - tomCell = 12, - tomCharFormat = 13, - tomParaFormat = 14, - tomTable = 15, - tomObject = 16, - tomMatchWord = 2, - tomMatchCase = 4, - tomMatchPattern = 8, - tomUnknownStory = 0, - tomMainTextStory = 1, - tomFootnotesStory = 2, - tomEndnotesStory = 3, - tomCommentsStory = 4, - tomTextFrameStory = 5, - tomEvenPagesHeaderStory = 6, - tomPrimaryHeaderStory = 7, - tomEvenPagesFooterStory = 8, - tomPrimaryFooterStory = 9, - tomFirstPageHeaderStory = 10, - tomFirstPageFooterStory = 11, - tomNoAnimation = 0, - tomLasVegasLights = 1, - tomBlinkingBackground = 2, - tomSparkleText = 3, - tomMarchingBlackAnts = 4, - tomMarchingRedAnts = 5, - tomShimmer = 6, - tomWipeDown = 7, - tomWipeRight = 8, - tomAnimationMax = 8, - tomLowerCase = 0, - tomUpperCase = 1, - tomTitleCase = 2, - tomSentenceCase = 4, - tomToggleCase = 5, - tomReadOnly = 0x100, - tomShareDenyRead = 0x200, - tomShareDenyWrite = 0x400, - tomPasteFile = 0x1000, - tomCreateNew = 0x10, - tomCreateAlways = 0x20, - tomOpenExisting = 0x30, - tomOpenAlways = 0x40, - tomTruncateExisting = 0x50, - tomRTF = 0x1, - tomText = 0x2, - tomHTML = 0x3, - tomWordDocument = 0x4, - tomBold = 0xffffffff, - tomItalic = 0xffffffff, - tomUnderline = 0xffffffff, - tomStrikeout = 0xffffffff, - tomProtected = 0xffffffff, - tomLink = 0xffffffff, - tomSmallCaps = 0xffffffff, - tomAllCaps = 0xffffffff, - tomHidden = 0xffffffff, - tomOutline = 0xffffffff, - tomShadow = 0xffffffff, - tomEmboss = 0xffffffff, - tomImprint = 0xffffffff, - tomDisabled = 0xffffffff, - tomRevised = 0xffffffff, - tomNormalCaret = 0, - tomKoreanBlockCaret = 0x1, - tomIncludeInset = 0x1, - tomIgnoreCurrentFont = 0, - tomMatchFontCharset = 0x1, - tomMatchFontSignature = 0x2, - tomCharset = 0x80000000, - tomRE10Mode = 0x1, - tomNoIME = 0x80000, - tomSelfIME = 0x40000 -} tomConstants; -#ifndef __ITextRange_FWD_DEFINED__ -#define __ITextRange_FWD_DEFINED__ -typedef interface ITextRange ITextRange; -#endif - -#ifndef __ITextSelection_FWD_DEFINED__ -#define __ITextSelection_FWD_DEFINED__ -typedef interface ITextSelection ITextSelection; -#endif - -#ifndef __ITextStoryRanges_FWD_DEFINED__ -#define __ITextStoryRanges_FWD_DEFINED__ -typedef interface ITextStoryRanges ITextStoryRanges; -#endif - -#ifndef __ITextDocument_FWD_DEFINED__ -#define __ITextDocument_FWD_DEFINED__ -typedef interface ITextDocument ITextDocument; -#endif - -/***************************************************************************** - * ITextDocument interface - */ -#ifndef __ITextDocument_INTERFACE_DEFINED__ -#define __ITextDocument_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ITextDocument, 0x8cc497c0, 0xa1df, 0x11ce, 0x80,0x98, 0x00,0xaa,0x00,0x47,0xbe,0x5d); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface ITextDocument : public IDispatch -{ - virtual HRESULT STDMETHODCALLTYPE GetName( - BSTR* pName) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSelection( - ITextSelection** ppSel) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStoryCount( - long* pCount) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStoryRanges( - ITextStoryRanges** ppStories) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSaved( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSaved( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDefaultTabStop( - float* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDefaultTabStop( - float Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE New( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Open( - VARIANT* pVar, - long Flags, - long CodePage) = 0; - - virtual HRESULT STDMETHODCALLTYPE Save( - VARIANT* pVar, - long Flags, - long CodePage) = 0; - - virtual HRESULT STDMETHODCALLTYPE Freeze( - long* pCount) = 0; - - virtual HRESULT STDMETHODCALLTYPE Unfreeze( - long* pCount) = 0; - - virtual HRESULT STDMETHODCALLTYPE BeginEditCollection( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE EndEditCollection( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE Undo( - long Count, - long* prop) = 0; - - virtual HRESULT STDMETHODCALLTYPE Redo( - long Count, - long* prop) = 0; - - virtual HRESULT STDMETHODCALLTYPE Range( - long cp1, - long cp2, - ITextRange** ppRange) = 0; - - virtual HRESULT STDMETHODCALLTYPE RangeFromPoint( - long x, - long y, - ITextRange** ppRange) = 0; - -}; -#else -typedef struct ITextDocumentVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ITextDocument* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ITextDocument* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ITextDocument* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - ITextDocument* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - ITextDocument* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - ITextDocument* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - ITextDocument* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** ITextDocument methods ***/ - HRESULT (STDMETHODCALLTYPE *GetName)( - ITextDocument* This, - BSTR* pName); - - HRESULT (STDMETHODCALLTYPE *GetSelection)( - ITextDocument* This, - ITextSelection** ppSel); - - HRESULT (STDMETHODCALLTYPE *GetStoryCount)( - ITextDocument* This, - long* pCount); - - HRESULT (STDMETHODCALLTYPE *GetStoryRanges)( - ITextDocument* This, - ITextStoryRanges** ppStories); - - HRESULT (STDMETHODCALLTYPE *GetSaved)( - ITextDocument* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetSaved)( - ITextDocument* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetDefaultTabStop)( - ITextDocument* This, - float* pValue); - - HRESULT (STDMETHODCALLTYPE *SetDefaultTabStop)( - ITextDocument* This, - float Value); - - HRESULT (STDMETHODCALLTYPE *New)( - ITextDocument* This); - - HRESULT (STDMETHODCALLTYPE *Open)( - ITextDocument* This, - VARIANT* pVar, - long Flags, - long CodePage); - - HRESULT (STDMETHODCALLTYPE *Save)( - ITextDocument* This, - VARIANT* pVar, - long Flags, - long CodePage); - - HRESULT (STDMETHODCALLTYPE *Freeze)( - ITextDocument* This, - long* pCount); - - HRESULT (STDMETHODCALLTYPE *Unfreeze)( - ITextDocument* This, - long* pCount); - - HRESULT (STDMETHODCALLTYPE *BeginEditCollection)( - ITextDocument* This); - - HRESULT (STDMETHODCALLTYPE *EndEditCollection)( - ITextDocument* This); - - HRESULT (STDMETHODCALLTYPE *Undo)( - ITextDocument* This, - long Count, - long* prop); - - HRESULT (STDMETHODCALLTYPE *Redo)( - ITextDocument* This, - long Count, - long* prop); - - HRESULT (STDMETHODCALLTYPE *Range)( - ITextDocument* This, - long cp1, - long cp2, - ITextRange** ppRange); - - HRESULT (STDMETHODCALLTYPE *RangeFromPoint)( - ITextDocument* This, - long x, - long y, - ITextRange** ppRange); - - END_INTERFACE -} ITextDocumentVtbl; -interface ITextDocument { - CONST_VTBL ITextDocumentVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ITextDocument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITextDocument_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITextDocument_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define ITextDocument_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define ITextDocument_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define ITextDocument_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define ITextDocument_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** ITextDocument methods ***/ -#define ITextDocument_GetName(p,a) (p)->lpVtbl->GetName(p,a) -#define ITextDocument_GetSelection(p,a) (p)->lpVtbl->GetSelection(p,a) -#define ITextDocument_GetStoryCount(p,a) (p)->lpVtbl->GetStoryCount(p,a) -#define ITextDocument_GetStoryRanges(p,a) (p)->lpVtbl->GetStoryRanges(p,a) -#define ITextDocument_GetSaved(p,a) (p)->lpVtbl->GetSaved(p,a) -#define ITextDocument_SetSaved(p,a) (p)->lpVtbl->SetSaved(p,a) -#define ITextDocument_GetDefaultTabStop(p,a) (p)->lpVtbl->GetDefaultTabStop(p,a) -#define ITextDocument_SetDefaultTabStop(p,a) (p)->lpVtbl->SetDefaultTabStop(p,a) -#define ITextDocument_New(p) (p)->lpVtbl->New(p) -#define ITextDocument_Open(p,a,b,c) (p)->lpVtbl->Open(p,a,b,c) -#define ITextDocument_Save(p,a,b,c) (p)->lpVtbl->Save(p,a,b,c) -#define ITextDocument_Freeze(p,a) (p)->lpVtbl->Freeze(p,a) -#define ITextDocument_Unfreeze(p,a) (p)->lpVtbl->Unfreeze(p,a) -#define ITextDocument_BeginEditCollection(p) (p)->lpVtbl->BeginEditCollection(p) -#define ITextDocument_EndEditCollection(p) (p)->lpVtbl->EndEditCollection(p) -#define ITextDocument_Undo(p,a,b) (p)->lpVtbl->Undo(p,a,b) -#define ITextDocument_Redo(p,a,b) (p)->lpVtbl->Redo(p,a,b) -#define ITextDocument_Range(p,a,b,c) (p)->lpVtbl->Range(p,a,b,c) -#define ITextDocument_RangeFromPoint(p,a,b,c) (p)->lpVtbl->RangeFromPoint(p,a,b,c) -#endif - -#endif - -HRESULT CALLBACK ITextDocument_GetName_Proxy( - ITextDocument* This, - BSTR* pName); -void __RPC_STUB ITextDocument_GetName_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_GetSelection_Proxy( - ITextDocument* This, - ITextSelection** ppSel); -void __RPC_STUB ITextDocument_GetSelection_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_GetStoryCount_Proxy( - ITextDocument* This, - long* pCount); -void __RPC_STUB ITextDocument_GetStoryCount_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_GetStoryRanges_Proxy( - ITextDocument* This, - ITextStoryRanges** ppStories); -void __RPC_STUB ITextDocument_GetStoryRanges_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_GetSaved_Proxy( - ITextDocument* This, - long* pValue); -void __RPC_STUB ITextDocument_GetSaved_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_SetSaved_Proxy( - ITextDocument* This, - long Value); -void __RPC_STUB ITextDocument_SetSaved_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_GetDefaultTabStop_Proxy( - ITextDocument* This, - float* pValue); -void __RPC_STUB ITextDocument_GetDefaultTabStop_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_SetDefaultTabStop_Proxy( - ITextDocument* This, - float Value); -void __RPC_STUB ITextDocument_SetDefaultTabStop_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_New_Proxy( - ITextDocument* This); -void __RPC_STUB ITextDocument_New_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_Open_Proxy( - ITextDocument* This, - VARIANT* pVar, - long Flags, - long CodePage); -void __RPC_STUB ITextDocument_Open_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_Save_Proxy( - ITextDocument* This, - VARIANT* pVar, - long Flags, - long CodePage); -void __RPC_STUB ITextDocument_Save_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_Freeze_Proxy( - ITextDocument* This, - long* pCount); -void __RPC_STUB ITextDocument_Freeze_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_Unfreeze_Proxy( - ITextDocument* This, - long* pCount); -void __RPC_STUB ITextDocument_Unfreeze_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_BeginEditCollection_Proxy( - ITextDocument* This); -void __RPC_STUB ITextDocument_BeginEditCollection_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_EndEditCollection_Proxy( - ITextDocument* This); -void __RPC_STUB ITextDocument_EndEditCollection_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_Undo_Proxy( - ITextDocument* This, - long Count, - long* prop); -void __RPC_STUB ITextDocument_Undo_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_Redo_Proxy( - ITextDocument* This, - long Count, - long* prop); -void __RPC_STUB ITextDocument_Redo_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_Range_Proxy( - ITextDocument* This, - long cp1, - long cp2, - ITextRange** ppRange); -void __RPC_STUB ITextDocument_Range_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextDocument_RangeFromPoint_Proxy( - ITextDocument* This, - long x, - long y, - ITextRange** ppRange); -void __RPC_STUB ITextDocument_RangeFromPoint_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ITextDocument_INTERFACE_DEFINED__ */ - -#ifndef __ITextFont_FWD_DEFINED__ -#define __ITextFont_FWD_DEFINED__ -typedef interface ITextFont ITextFont; -#endif - -#ifndef __ITextPara_FWD_DEFINED__ -#define __ITextPara_FWD_DEFINED__ -typedef interface ITextPara ITextPara; -#endif - -/***************************************************************************** - * ITextRange interface - */ -#ifndef __ITextRange_INTERFACE_DEFINED__ -#define __ITextRange_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ITextRange, 0x8cc497c2, 0xa1df, 0x11ce, 0x80,0x98, 0x00,0xaa,0x00,0x47,0xbe,0x5d); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface ITextRange : public IDispatch -{ - virtual HRESULT STDMETHODCALLTYPE GetText( - BSTR* pbstr) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetText( - BSTR bstr) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetChar( - long* pch) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetChar( - long ch) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDuplicate( - ITextRange** ppRange) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFormattedText( - ITextRange** ppRange) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetFormattedText( - ITextRange* pRange) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStart( - long* pcpFirst) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetStart( - long cpFirst) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetEnd( - long* pcpLim) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetEnd( - long cpLim) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFont( - ITextFont** pFont) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetFont( - ITextFont* pFont) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPara( - ITextPara** ppPara) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetPara( - ITextPara* pPara) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStoryLength( - long* pcch) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStoryType( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE Collapse( - long bStart) = 0; - - virtual HRESULT STDMETHODCALLTYPE Expand( - long Unit, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetIndex( - long Unit, - long* pIndex) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetIndex( - long Unit, - long Index, - long Extend) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRange( - long cpActive, - long cpOther) = 0; - - virtual HRESULT STDMETHODCALLTYPE InRange( - ITextRange* pRange, - long* pb) = 0; - - virtual HRESULT STDMETHODCALLTYPE InStory( - ITextRange* pRange, - long* pb) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsEqual( - ITextRange* pRange, - long* pb) = 0; - - virtual HRESULT STDMETHODCALLTYPE Select( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE StartOf( - long Unit, - long Extend, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE EndOf( - long Unit, - long Extend, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE Move( - long Unit, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveStart( - long Unit, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveEnd( - long Unit, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveWhile( - VARIANT* Cset, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveStartWhile( - VARIANT* Cset, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveEndWhile( - VARIANT* Cset, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveUntil( - VARIANT* Cset, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveStartUntil( - VARIANT* Cset, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveEndUntil( - VARIANT* Cset, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindText( - BSTR bstr, - long cch, - long Flags, - long* pLength) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindTextStart( - BSTR bstr, - long cch, - long Flags, - long* pLength) = 0; - - virtual HRESULT STDMETHODCALLTYPE FindTextEnd( - BSTR bstr, - long cch, - long Flags, - long* pLength) = 0; - - virtual HRESULT STDMETHODCALLTYPE Delete( - long Unit, - long Count, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE Cut( - VARIANT* pVar) = 0; - - virtual HRESULT STDMETHODCALLTYPE Copy( - VARIANT* pVar) = 0; - - virtual HRESULT STDMETHODCALLTYPE Paste( - VARIANT* pVar, - long Format) = 0; - - virtual HRESULT STDMETHODCALLTYPE CanPaste( - VARIANT* pVar, - long Format, - long* pb) = 0; - - virtual HRESULT STDMETHODCALLTYPE CanEdit( - long* pb) = 0; - - virtual HRESULT STDMETHODCALLTYPE ChangeCase( - long Type) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPoint( - long Type, - long* cx, - long* cy) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetPoint( - long x, - long y, - long Type, - long Extend) = 0; - - virtual HRESULT STDMETHODCALLTYPE ScrollIntoView( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetEmbeddedObject( - IUnknown** ppv) = 0; - -}; -#else -typedef struct ITextRangeVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ITextRange* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ITextRange* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ITextRange* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - ITextRange* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - ITextRange* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - ITextRange* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - ITextRange* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** ITextRange methods ***/ - HRESULT (STDMETHODCALLTYPE *GetText)( - ITextRange* This, - BSTR* pbstr); - - HRESULT (STDMETHODCALLTYPE *SetText)( - ITextRange* This, - BSTR bstr); - - HRESULT (STDMETHODCALLTYPE *GetChar)( - ITextRange* This, - long* pch); - - HRESULT (STDMETHODCALLTYPE *SetChar)( - ITextRange* This, - long ch); - - HRESULT (STDMETHODCALLTYPE *GetDuplicate)( - ITextRange* This, - ITextRange** ppRange); - - HRESULT (STDMETHODCALLTYPE *GetFormattedText)( - ITextRange* This, - ITextRange** ppRange); - - HRESULT (STDMETHODCALLTYPE *SetFormattedText)( - ITextRange* This, - ITextRange* pRange); - - HRESULT (STDMETHODCALLTYPE *GetStart)( - ITextRange* This, - long* pcpFirst); - - HRESULT (STDMETHODCALLTYPE *SetStart)( - ITextRange* This, - long cpFirst); - - HRESULT (STDMETHODCALLTYPE *GetEnd)( - ITextRange* This, - long* pcpLim); - - HRESULT (STDMETHODCALLTYPE *SetEnd)( - ITextRange* This, - long cpLim); - - HRESULT (STDMETHODCALLTYPE *GetFont)( - ITextRange* This, - ITextFont** pFont); - - HRESULT (STDMETHODCALLTYPE *SetFont)( - ITextRange* This, - ITextFont* pFont); - - HRESULT (STDMETHODCALLTYPE *GetPara)( - ITextRange* This, - ITextPara** ppPara); - - HRESULT (STDMETHODCALLTYPE *SetPara)( - ITextRange* This, - ITextPara* pPara); - - HRESULT (STDMETHODCALLTYPE *GetStoryLength)( - ITextRange* This, - long* pcch); - - HRESULT (STDMETHODCALLTYPE *GetStoryType)( - ITextRange* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *Collapse)( - ITextRange* This, - long bStart); - - HRESULT (STDMETHODCALLTYPE *Expand)( - ITextRange* This, - long Unit, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *GetIndex)( - ITextRange* This, - long Unit, - long* pIndex); - - HRESULT (STDMETHODCALLTYPE *SetIndex)( - ITextRange* This, - long Unit, - long Index, - long Extend); - - HRESULT (STDMETHODCALLTYPE *SetRange)( - ITextRange* This, - long cpActive, - long cpOther); - - HRESULT (STDMETHODCALLTYPE *InRange)( - ITextRange* This, - ITextRange* pRange, - long* pb); - - HRESULT (STDMETHODCALLTYPE *InStory)( - ITextRange* This, - ITextRange* pRange, - long* pb); - - HRESULT (STDMETHODCALLTYPE *IsEqual)( - ITextRange* This, - ITextRange* pRange, - long* pb); - - HRESULT (STDMETHODCALLTYPE *Select)( - ITextRange* This); - - HRESULT (STDMETHODCALLTYPE *StartOf)( - ITextRange* This, - long Unit, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *EndOf)( - ITextRange* This, - long Unit, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *Move)( - ITextRange* This, - long Unit, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveStart)( - ITextRange* This, - long Unit, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveEnd)( - ITextRange* This, - long Unit, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveWhile)( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveStartWhile)( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveEndWhile)( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveUntil)( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveStartUntil)( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveEndUntil)( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *FindText)( - ITextRange* This, - BSTR bstr, - long cch, - long Flags, - long* pLength); - - HRESULT (STDMETHODCALLTYPE *FindTextStart)( - ITextRange* This, - BSTR bstr, - long cch, - long Flags, - long* pLength); - - HRESULT (STDMETHODCALLTYPE *FindTextEnd)( - ITextRange* This, - BSTR bstr, - long cch, - long Flags, - long* pLength); - - HRESULT (STDMETHODCALLTYPE *Delete)( - ITextRange* This, - long Unit, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *Cut)( - ITextRange* This, - VARIANT* pVar); - - HRESULT (STDMETHODCALLTYPE *Copy)( - ITextRange* This, - VARIANT* pVar); - - HRESULT (STDMETHODCALLTYPE *Paste)( - ITextRange* This, - VARIANT* pVar, - long Format); - - HRESULT (STDMETHODCALLTYPE *CanPaste)( - ITextRange* This, - VARIANT* pVar, - long Format, - long* pb); - - HRESULT (STDMETHODCALLTYPE *CanEdit)( - ITextRange* This, - long* pb); - - HRESULT (STDMETHODCALLTYPE *ChangeCase)( - ITextRange* This, - long Type); - - HRESULT (STDMETHODCALLTYPE *GetPoint)( - ITextRange* This, - long Type, - long* cx, - long* cy); - - HRESULT (STDMETHODCALLTYPE *SetPoint)( - ITextRange* This, - long x, - long y, - long Type, - long Extend); - - HRESULT (STDMETHODCALLTYPE *ScrollIntoView)( - ITextRange* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetEmbeddedObject)( - ITextRange* This, - IUnknown** ppv); - - END_INTERFACE -} ITextRangeVtbl; -interface ITextRange { - CONST_VTBL ITextRangeVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ITextRange_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITextRange_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITextRange_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define ITextRange_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define ITextRange_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define ITextRange_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define ITextRange_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** ITextRange methods ***/ -#define ITextRange_GetText(p,a) (p)->lpVtbl->GetText(p,a) -#define ITextRange_SetText(p,a) (p)->lpVtbl->SetText(p,a) -#define ITextRange_GetChar(p,a) (p)->lpVtbl->GetChar(p,a) -#define ITextRange_SetChar(p,a) (p)->lpVtbl->SetChar(p,a) -#define ITextRange_GetDuplicate(p,a) (p)->lpVtbl->GetDuplicate(p,a) -#define ITextRange_GetFormattedText(p,a) (p)->lpVtbl->GetFormattedText(p,a) -#define ITextRange_SetFormattedText(p,a) (p)->lpVtbl->SetFormattedText(p,a) -#define ITextRange_GetStart(p,a) (p)->lpVtbl->GetStart(p,a) -#define ITextRange_SetStart(p,a) (p)->lpVtbl->SetStart(p,a) -#define ITextRange_GetEnd(p,a) (p)->lpVtbl->GetEnd(p,a) -#define ITextRange_SetEnd(p,a) (p)->lpVtbl->SetEnd(p,a) -#define ITextRange_GetFont(p,a) (p)->lpVtbl->GetFont(p,a) -#define ITextRange_SetFont(p,a) (p)->lpVtbl->SetFont(p,a) -#define ITextRange_GetPara(p,a) (p)->lpVtbl->GetPara(p,a) -#define ITextRange_SetPara(p,a) (p)->lpVtbl->SetPara(p,a) -#define ITextRange_GetStoryLength(p,a) (p)->lpVtbl->GetStoryLength(p,a) -#define ITextRange_GetStoryType(p,a) (p)->lpVtbl->GetStoryType(p,a) -#define ITextRange_Collapse(p,a) (p)->lpVtbl->Collapse(p,a) -#define ITextRange_Expand(p,a,b) (p)->lpVtbl->Expand(p,a,b) -#define ITextRange_GetIndex(p,a,b) (p)->lpVtbl->GetIndex(p,a,b) -#define ITextRange_SetIndex(p,a,b,c) (p)->lpVtbl->SetIndex(p,a,b,c) -#define ITextRange_SetRange(p,a,b) (p)->lpVtbl->SetRange(p,a,b) -#define ITextRange_InRange(p,a,b) (p)->lpVtbl->InRange(p,a,b) -#define ITextRange_InStory(p,a,b) (p)->lpVtbl->InStory(p,a,b) -#define ITextRange_IsEqual(p,a,b) (p)->lpVtbl->IsEqual(p,a,b) -#define ITextRange_Select(p) (p)->lpVtbl->Select(p) -#define ITextRange_StartOf(p,a,b,c) (p)->lpVtbl->StartOf(p,a,b,c) -#define ITextRange_EndOf(p,a,b,c) (p)->lpVtbl->EndOf(p,a,b,c) -#define ITextRange_Move(p,a,b,c) (p)->lpVtbl->Move(p,a,b,c) -#define ITextRange_MoveStart(p,a,b,c) (p)->lpVtbl->MoveStart(p,a,b,c) -#define ITextRange_MoveEnd(p,a,b,c) (p)->lpVtbl->MoveEnd(p,a,b,c) -#define ITextRange_MoveWhile(p,a,b,c) (p)->lpVtbl->MoveWhile(p,a,b,c) -#define ITextRange_MoveStartWhile(p,a,b,c) (p)->lpVtbl->MoveStartWhile(p,a,b,c) -#define ITextRange_MoveEndWhile(p,a,b,c) (p)->lpVtbl->MoveEndWhile(p,a,b,c) -#define ITextRange_MoveUntil(p,a,b,c) (p)->lpVtbl->MoveUntil(p,a,b,c) -#define ITextRange_MoveStartUntil(p,a,b,c) (p)->lpVtbl->MoveStartUntil(p,a,b,c) -#define ITextRange_MoveEndUntil(p,a,b,c) (p)->lpVtbl->MoveEndUntil(p,a,b,c) -#define ITextRange_FindText(p,a,b,c,d) (p)->lpVtbl->FindText(p,a,b,c,d) -#define ITextRange_FindTextStart(p,a,b,c,d) (p)->lpVtbl->FindTextStart(p,a,b,c,d) -#define ITextRange_FindTextEnd(p,a,b,c,d) (p)->lpVtbl->FindTextEnd(p,a,b,c,d) -#define ITextRange_Delete(p,a,b,c) (p)->lpVtbl->Delete(p,a,b,c) -#define ITextRange_Cut(p,a) (p)->lpVtbl->Cut(p,a) -#define ITextRange_Copy(p,a) (p)->lpVtbl->Copy(p,a) -#define ITextRange_Paste(p,a,b) (p)->lpVtbl->Paste(p,a,b) -#define ITextRange_CanPaste(p,a,b,c) (p)->lpVtbl->CanPaste(p,a,b,c) -#define ITextRange_CanEdit(p,a) (p)->lpVtbl->CanEdit(p,a) -#define ITextRange_ChangeCase(p,a) (p)->lpVtbl->ChangeCase(p,a) -#define ITextRange_GetPoint(p,a,b,c) (p)->lpVtbl->GetPoint(p,a,b,c) -#define ITextRange_SetPoint(p,a,b,c,d) (p)->lpVtbl->SetPoint(p,a,b,c,d) -#define ITextRange_ScrollIntoView(p,a) (p)->lpVtbl->ScrollIntoView(p,a) -#define ITextRange_GetEmbeddedObject(p,a) (p)->lpVtbl->GetEmbeddedObject(p,a) -#endif - -#endif - -HRESULT CALLBACK ITextRange_GetText_Proxy( - ITextRange* This, - BSTR* pbstr); -void __RPC_STUB ITextRange_GetText_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetText_Proxy( - ITextRange* This, - BSTR bstr); -void __RPC_STUB ITextRange_SetText_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetChar_Proxy( - ITextRange* This, - long* pch); -void __RPC_STUB ITextRange_GetChar_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetChar_Proxy( - ITextRange* This, - long ch); -void __RPC_STUB ITextRange_SetChar_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetDuplicate_Proxy( - ITextRange* This, - ITextRange** ppRange); -void __RPC_STUB ITextRange_GetDuplicate_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetFormattedText_Proxy( - ITextRange* This, - ITextRange** ppRange); -void __RPC_STUB ITextRange_GetFormattedText_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetFormattedText_Proxy( - ITextRange* This, - ITextRange* pRange); -void __RPC_STUB ITextRange_SetFormattedText_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetStart_Proxy( - ITextRange* This, - long* pcpFirst); -void __RPC_STUB ITextRange_GetStart_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetStart_Proxy( - ITextRange* This, - long cpFirst); -void __RPC_STUB ITextRange_SetStart_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetEnd_Proxy( - ITextRange* This, - long* pcpLim); -void __RPC_STUB ITextRange_GetEnd_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetEnd_Proxy( - ITextRange* This, - long cpLim); -void __RPC_STUB ITextRange_SetEnd_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetFont_Proxy( - ITextRange* This, - ITextFont** pFont); -void __RPC_STUB ITextRange_GetFont_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetFont_Proxy( - ITextRange* This, - ITextFont* pFont); -void __RPC_STUB ITextRange_SetFont_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetPara_Proxy( - ITextRange* This, - ITextPara** ppPara); -void __RPC_STUB ITextRange_GetPara_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetPara_Proxy( - ITextRange* This, - ITextPara* pPara); -void __RPC_STUB ITextRange_SetPara_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetStoryLength_Proxy( - ITextRange* This, - long* pcch); -void __RPC_STUB ITextRange_GetStoryLength_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetStoryType_Proxy( - ITextRange* This, - long* pValue); -void __RPC_STUB ITextRange_GetStoryType_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_Collapse_Proxy( - ITextRange* This, - long bStart); -void __RPC_STUB ITextRange_Collapse_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_Expand_Proxy( - ITextRange* This, - long Unit, - long* pDelta); -void __RPC_STUB ITextRange_Expand_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetIndex_Proxy( - ITextRange* This, - long Unit, - long* pIndex); -void __RPC_STUB ITextRange_GetIndex_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetIndex_Proxy( - ITextRange* This, - long Unit, - long Index, - long Extend); -void __RPC_STUB ITextRange_SetIndex_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetRange_Proxy( - ITextRange* This, - long cpActive, - long cpOther); -void __RPC_STUB ITextRange_SetRange_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_InRange_Proxy( - ITextRange* This, - ITextRange* pRange, - long* pb); -void __RPC_STUB ITextRange_InRange_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_InStory_Proxy( - ITextRange* This, - ITextRange* pRange, - long* pb); -void __RPC_STUB ITextRange_InStory_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_IsEqual_Proxy( - ITextRange* This, - ITextRange* pRange, - long* pb); -void __RPC_STUB ITextRange_IsEqual_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_Select_Proxy( - ITextRange* This); -void __RPC_STUB ITextRange_Select_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_StartOf_Proxy( - ITextRange* This, - long Unit, - long Extend, - long* pDelta); -void __RPC_STUB ITextRange_StartOf_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_EndOf_Proxy( - ITextRange* This, - long Unit, - long Extend, - long* pDelta); -void __RPC_STUB ITextRange_EndOf_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_Move_Proxy( - ITextRange* This, - long Unit, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_Move_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_MoveStart_Proxy( - ITextRange* This, - long Unit, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_MoveStart_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_MoveEnd_Proxy( - ITextRange* This, - long Unit, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_MoveEnd_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_MoveWhile_Proxy( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_MoveWhile_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_MoveStartWhile_Proxy( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_MoveStartWhile_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_MoveEndWhile_Proxy( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_MoveEndWhile_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_MoveUntil_Proxy( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_MoveUntil_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_MoveStartUntil_Proxy( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_MoveStartUntil_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_MoveEndUntil_Proxy( - ITextRange* This, - VARIANT* Cset, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_MoveEndUntil_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_FindText_Proxy( - ITextRange* This, - BSTR bstr, - long cch, - long Flags, - long* pLength); -void __RPC_STUB ITextRange_FindText_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_FindTextStart_Proxy( - ITextRange* This, - BSTR bstr, - long cch, - long Flags, - long* pLength); -void __RPC_STUB ITextRange_FindTextStart_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_FindTextEnd_Proxy( - ITextRange* This, - BSTR bstr, - long cch, - long Flags, - long* pLength); -void __RPC_STUB ITextRange_FindTextEnd_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_Delete_Proxy( - ITextRange* This, - long Unit, - long Count, - long* pDelta); -void __RPC_STUB ITextRange_Delete_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_Cut_Proxy( - ITextRange* This, - VARIANT* pVar); -void __RPC_STUB ITextRange_Cut_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_Copy_Proxy( - ITextRange* This, - VARIANT* pVar); -void __RPC_STUB ITextRange_Copy_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_Paste_Proxy( - ITextRange* This, - VARIANT* pVar, - long Format); -void __RPC_STUB ITextRange_Paste_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_CanPaste_Proxy( - ITextRange* This, - VARIANT* pVar, - long Format, - long* pb); -void __RPC_STUB ITextRange_CanPaste_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_CanEdit_Proxy( - ITextRange* This, - long* pb); -void __RPC_STUB ITextRange_CanEdit_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_ChangeCase_Proxy( - ITextRange* This, - long Type); -void __RPC_STUB ITextRange_ChangeCase_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetPoint_Proxy( - ITextRange* This, - long Type, - long* cx, - long* cy); -void __RPC_STUB ITextRange_GetPoint_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_SetPoint_Proxy( - ITextRange* This, - long x, - long y, - long Type, - long Extend); -void __RPC_STUB ITextRange_SetPoint_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_ScrollIntoView_Proxy( - ITextRange* This, - long Value); -void __RPC_STUB ITextRange_ScrollIntoView_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextRange_GetEmbeddedObject_Proxy( - ITextRange* This, - IUnknown** ppv); -void __RPC_STUB ITextRange_GetEmbeddedObject_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ITextRange_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * ITextSelection interface - */ -#ifndef __ITextSelection_INTERFACE_DEFINED__ -#define __ITextSelection_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ITextSelection, 0x8cc497c1, 0xa1df, 0x11ce, 0x80,0x98, 0x00,0xaa,0x00,0x47,0xbe,0x5d); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface ITextSelection : public ITextRange -{ - virtual HRESULT STDMETHODCALLTYPE GetFlags( - long* pFlags) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetFlags( - long Flags) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetType( - long* pType) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveLeft( - long Unit, - long Count, - long Extend, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveRight( - long Unit, - long Count, - long Extend, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveUp( - long Unit, - long Count, - long Extend, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE MoveDown( - long Unit, - long Count, - long Extend, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE HomeKey( - long Unit, - long Extend, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE EndKey( - long Unit, - long Extend, - long* pDelta) = 0; - - virtual HRESULT STDMETHODCALLTYPE TypeText( - BSTR bstr) = 0; - -}; -#else -typedef struct ITextSelectionVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ITextSelection* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ITextSelection* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ITextSelection* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - ITextSelection* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - ITextSelection* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - ITextSelection* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - ITextSelection* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** ITextRange methods ***/ - HRESULT (STDMETHODCALLTYPE *GetText)( - ITextSelection* This, - BSTR* pbstr); - - HRESULT (STDMETHODCALLTYPE *SetText)( - ITextSelection* This, - BSTR bstr); - - HRESULT (STDMETHODCALLTYPE *GetChar)( - ITextSelection* This, - long* pch); - - HRESULT (STDMETHODCALLTYPE *SetChar)( - ITextSelection* This, - long ch); - - HRESULT (STDMETHODCALLTYPE *GetDuplicate)( - ITextSelection* This, - ITextRange** ppRange); - - HRESULT (STDMETHODCALLTYPE *GetFormattedText)( - ITextSelection* This, - ITextRange** ppRange); - - HRESULT (STDMETHODCALLTYPE *SetFormattedText)( - ITextSelection* This, - ITextRange* pRange); - - HRESULT (STDMETHODCALLTYPE *GetStart)( - ITextSelection* This, - long* pcpFirst); - - HRESULT (STDMETHODCALLTYPE *SetStart)( - ITextSelection* This, - long cpFirst); - - HRESULT (STDMETHODCALLTYPE *GetEnd)( - ITextSelection* This, - long* pcpLim); - - HRESULT (STDMETHODCALLTYPE *SetEnd)( - ITextSelection* This, - long cpLim); - - HRESULT (STDMETHODCALLTYPE *GetFont)( - ITextSelection* This, - ITextFont** pFont); - - HRESULT (STDMETHODCALLTYPE *SetFont)( - ITextSelection* This, - ITextFont* pFont); - - HRESULT (STDMETHODCALLTYPE *GetPara)( - ITextSelection* This, - ITextPara** ppPara); - - HRESULT (STDMETHODCALLTYPE *SetPara)( - ITextSelection* This, - ITextPara* pPara); - - HRESULT (STDMETHODCALLTYPE *GetStoryLength)( - ITextSelection* This, - long* pcch); - - HRESULT (STDMETHODCALLTYPE *GetStoryType)( - ITextSelection* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *Collapse)( - ITextSelection* This, - long bStart); - - HRESULT (STDMETHODCALLTYPE *Expand)( - ITextSelection* This, - long Unit, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *GetIndex)( - ITextSelection* This, - long Unit, - long* pIndex); - - HRESULT (STDMETHODCALLTYPE *SetIndex)( - ITextSelection* This, - long Unit, - long Index, - long Extend); - - HRESULT (STDMETHODCALLTYPE *SetRange)( - ITextSelection* This, - long cpActive, - long cpOther); - - HRESULT (STDMETHODCALLTYPE *InRange)( - ITextSelection* This, - ITextRange* pRange, - long* pb); - - HRESULT (STDMETHODCALLTYPE *InStory)( - ITextSelection* This, - ITextRange* pRange, - long* pb); - - HRESULT (STDMETHODCALLTYPE *IsEqual)( - ITextSelection* This, - ITextRange* pRange, - long* pb); - - HRESULT (STDMETHODCALLTYPE *Select)( - ITextSelection* This); - - HRESULT (STDMETHODCALLTYPE *StartOf)( - ITextSelection* This, - long Unit, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *EndOf)( - ITextSelection* This, - long Unit, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *Move)( - ITextSelection* This, - long Unit, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveStart)( - ITextSelection* This, - long Unit, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveEnd)( - ITextSelection* This, - long Unit, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveWhile)( - ITextSelection* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveStartWhile)( - ITextSelection* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveEndWhile)( - ITextSelection* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveUntil)( - ITextSelection* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveStartUntil)( - ITextSelection* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveEndUntil)( - ITextSelection* This, - VARIANT* Cset, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *FindText)( - ITextSelection* This, - BSTR bstr, - long cch, - long Flags, - long* pLength); - - HRESULT (STDMETHODCALLTYPE *FindTextStart)( - ITextSelection* This, - BSTR bstr, - long cch, - long Flags, - long* pLength); - - HRESULT (STDMETHODCALLTYPE *FindTextEnd)( - ITextSelection* This, - BSTR bstr, - long cch, - long Flags, - long* pLength); - - HRESULT (STDMETHODCALLTYPE *Delete)( - ITextSelection* This, - long Unit, - long Count, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *Cut)( - ITextSelection* This, - VARIANT* pVar); - - HRESULT (STDMETHODCALLTYPE *Copy)( - ITextSelection* This, - VARIANT* pVar); - - HRESULT (STDMETHODCALLTYPE *Paste)( - ITextSelection* This, - VARIANT* pVar, - long Format); - - HRESULT (STDMETHODCALLTYPE *CanPaste)( - ITextSelection* This, - VARIANT* pVar, - long Format, - long* pb); - - HRESULT (STDMETHODCALLTYPE *CanEdit)( - ITextSelection* This, - long* pb); - - HRESULT (STDMETHODCALLTYPE *ChangeCase)( - ITextSelection* This, - long Type); - - HRESULT (STDMETHODCALLTYPE *GetPoint)( - ITextSelection* This, - long Type, - long* cx, - long* cy); - - HRESULT (STDMETHODCALLTYPE *SetPoint)( - ITextSelection* This, - long x, - long y, - long Type, - long Extend); - - HRESULT (STDMETHODCALLTYPE *ScrollIntoView)( - ITextSelection* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetEmbeddedObject)( - ITextSelection* This, - IUnknown** ppv); - - /*** ITextSelection methods ***/ - HRESULT (STDMETHODCALLTYPE *GetFlags)( - ITextSelection* This, - long* pFlags); - - HRESULT (STDMETHODCALLTYPE *SetFlags)( - ITextSelection* This, - long Flags); - - HRESULT (STDMETHODCALLTYPE *GetType)( - ITextSelection* This, - long* pType); - - HRESULT (STDMETHODCALLTYPE *MoveLeft)( - ITextSelection* This, - long Unit, - long Count, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveRight)( - ITextSelection* This, - long Unit, - long Count, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveUp)( - ITextSelection* This, - long Unit, - long Count, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *MoveDown)( - ITextSelection* This, - long Unit, - long Count, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *HomeKey)( - ITextSelection* This, - long Unit, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *EndKey)( - ITextSelection* This, - long Unit, - long Extend, - long* pDelta); - - HRESULT (STDMETHODCALLTYPE *TypeText)( - ITextSelection* This, - BSTR bstr); - - END_INTERFACE -} ITextSelectionVtbl; -interface ITextSelection { - CONST_VTBL ITextSelectionVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ITextSelection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITextSelection_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITextSelection_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define ITextSelection_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define ITextSelection_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define ITextSelection_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define ITextSelection_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** ITextRange methods ***/ -#define ITextSelection_GetText(p,a) (p)->lpVtbl->GetText(p,a) -#define ITextSelection_SetText(p,a) (p)->lpVtbl->SetText(p,a) -#define ITextSelection_GetChar(p,a) (p)->lpVtbl->GetChar(p,a) -#define ITextSelection_SetChar(p,a) (p)->lpVtbl->SetChar(p,a) -#define ITextSelection_GetDuplicate(p,a) (p)->lpVtbl->GetDuplicate(p,a) -#define ITextSelection_GetFormattedText(p,a) (p)->lpVtbl->GetFormattedText(p,a) -#define ITextSelection_SetFormattedText(p,a) (p)->lpVtbl->SetFormattedText(p,a) -#define ITextSelection_GetStart(p,a) (p)->lpVtbl->GetStart(p,a) -#define ITextSelection_SetStart(p,a) (p)->lpVtbl->SetStart(p,a) -#define ITextSelection_GetEnd(p,a) (p)->lpVtbl->GetEnd(p,a) -#define ITextSelection_SetEnd(p,a) (p)->lpVtbl->SetEnd(p,a) -#define ITextSelection_GetFont(p,a) (p)->lpVtbl->GetFont(p,a) -#define ITextSelection_SetFont(p,a) (p)->lpVtbl->SetFont(p,a) -#define ITextSelection_GetPara(p,a) (p)->lpVtbl->GetPara(p,a) -#define ITextSelection_SetPara(p,a) (p)->lpVtbl->SetPara(p,a) -#define ITextSelection_GetStoryLength(p,a) (p)->lpVtbl->GetStoryLength(p,a) -#define ITextSelection_GetStoryType(p,a) (p)->lpVtbl->GetStoryType(p,a) -#define ITextSelection_Collapse(p,a) (p)->lpVtbl->Collapse(p,a) -#define ITextSelection_Expand(p,a,b) (p)->lpVtbl->Expand(p,a,b) -#define ITextSelection_GetIndex(p,a,b) (p)->lpVtbl->GetIndex(p,a,b) -#define ITextSelection_SetIndex(p,a,b,c) (p)->lpVtbl->SetIndex(p,a,b,c) -#define ITextSelection_SetRange(p,a,b) (p)->lpVtbl->SetRange(p,a,b) -#define ITextSelection_InRange(p,a,b) (p)->lpVtbl->InRange(p,a,b) -#define ITextSelection_InStory(p,a,b) (p)->lpVtbl->InStory(p,a,b) -#define ITextSelection_IsEqual(p,a,b) (p)->lpVtbl->IsEqual(p,a,b) -#define ITextSelection_Select(p) (p)->lpVtbl->Select(p) -#define ITextSelection_StartOf(p,a,b,c) (p)->lpVtbl->StartOf(p,a,b,c) -#define ITextSelection_EndOf(p,a,b,c) (p)->lpVtbl->EndOf(p,a,b,c) -#define ITextSelection_Move(p,a,b,c) (p)->lpVtbl->Move(p,a,b,c) -#define ITextSelection_MoveStart(p,a,b,c) (p)->lpVtbl->MoveStart(p,a,b,c) -#define ITextSelection_MoveEnd(p,a,b,c) (p)->lpVtbl->MoveEnd(p,a,b,c) -#define ITextSelection_MoveWhile(p,a,b,c) (p)->lpVtbl->MoveWhile(p,a,b,c) -#define ITextSelection_MoveStartWhile(p,a,b,c) (p)->lpVtbl->MoveStartWhile(p,a,b,c) -#define ITextSelection_MoveEndWhile(p,a,b,c) (p)->lpVtbl->MoveEndWhile(p,a,b,c) -#define ITextSelection_MoveUntil(p,a,b,c) (p)->lpVtbl->MoveUntil(p,a,b,c) -#define ITextSelection_MoveStartUntil(p,a,b,c) (p)->lpVtbl->MoveStartUntil(p,a,b,c) -#define ITextSelection_MoveEndUntil(p,a,b,c) (p)->lpVtbl->MoveEndUntil(p,a,b,c) -#define ITextSelection_FindText(p,a,b,c,d) (p)->lpVtbl->FindText(p,a,b,c,d) -#define ITextSelection_FindTextStart(p,a,b,c,d) (p)->lpVtbl->FindTextStart(p,a,b,c,d) -#define ITextSelection_FindTextEnd(p,a,b,c,d) (p)->lpVtbl->FindTextEnd(p,a,b,c,d) -#define ITextSelection_Delete(p,a,b,c) (p)->lpVtbl->Delete(p,a,b,c) -#define ITextSelection_Cut(p,a) (p)->lpVtbl->Cut(p,a) -#define ITextSelection_Copy(p,a) (p)->lpVtbl->Copy(p,a) -#define ITextSelection_Paste(p,a,b) (p)->lpVtbl->Paste(p,a,b) -#define ITextSelection_CanPaste(p,a,b,c) (p)->lpVtbl->CanPaste(p,a,b,c) -#define ITextSelection_CanEdit(p,a) (p)->lpVtbl->CanEdit(p,a) -#define ITextSelection_ChangeCase(p,a) (p)->lpVtbl->ChangeCase(p,a) -#define ITextSelection_GetPoint(p,a,b,c) (p)->lpVtbl->GetPoint(p,a,b,c) -#define ITextSelection_SetPoint(p,a,b,c,d) (p)->lpVtbl->SetPoint(p,a,b,c,d) -#define ITextSelection_ScrollIntoView(p,a) (p)->lpVtbl->ScrollIntoView(p,a) -#define ITextSelection_GetEmbeddedObject(p,a) (p)->lpVtbl->GetEmbeddedObject(p,a) -/*** ITextSelection methods ***/ -#define ITextSelection_GetFlags(p,a) (p)->lpVtbl->GetFlags(p,a) -#define ITextSelection_SetFlags(p,a) (p)->lpVtbl->SetFlags(p,a) -#define ITextSelection_GetType(p,a) (p)->lpVtbl->GetType(p,a) -#define ITextSelection_MoveLeft(p,a,b,c,d) (p)->lpVtbl->MoveLeft(p,a,b,c,d) -#define ITextSelection_MoveRight(p,a,b,c,d) (p)->lpVtbl->MoveRight(p,a,b,c,d) -#define ITextSelection_MoveUp(p,a,b,c,d) (p)->lpVtbl->MoveUp(p,a,b,c,d) -#define ITextSelection_MoveDown(p,a,b,c,d) (p)->lpVtbl->MoveDown(p,a,b,c,d) -#define ITextSelection_HomeKey(p,a,b,c) (p)->lpVtbl->HomeKey(p,a,b,c) -#define ITextSelection_EndKey(p,a,b,c) (p)->lpVtbl->EndKey(p,a,b,c) -#define ITextSelection_TypeText(p,a) (p)->lpVtbl->TypeText(p,a) -#endif - -#endif - -HRESULT CALLBACK ITextSelection_GetFlags_Proxy( - ITextSelection* This, - long* pFlags); -void __RPC_STUB ITextSelection_GetFlags_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextSelection_SetFlags_Proxy( - ITextSelection* This, - long Flags); -void __RPC_STUB ITextSelection_SetFlags_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextSelection_GetType_Proxy( - ITextSelection* This, - long* pType); -void __RPC_STUB ITextSelection_GetType_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextSelection_MoveLeft_Proxy( - ITextSelection* This, - long Unit, - long Count, - long Extend, - long* pDelta); -void __RPC_STUB ITextSelection_MoveLeft_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextSelection_MoveRight_Proxy( - ITextSelection* This, - long Unit, - long Count, - long Extend, - long* pDelta); -void __RPC_STUB ITextSelection_MoveRight_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextSelection_MoveUp_Proxy( - ITextSelection* This, - long Unit, - long Count, - long Extend, - long* pDelta); -void __RPC_STUB ITextSelection_MoveUp_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextSelection_MoveDown_Proxy( - ITextSelection* This, - long Unit, - long Count, - long Extend, - long* pDelta); -void __RPC_STUB ITextSelection_MoveDown_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextSelection_HomeKey_Proxy( - ITextSelection* This, - long Unit, - long Extend, - long* pDelta); -void __RPC_STUB ITextSelection_HomeKey_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextSelection_EndKey_Proxy( - ITextSelection* This, - long Unit, - long Extend, - long* pDelta); -void __RPC_STUB ITextSelection_EndKey_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextSelection_TypeText_Proxy( - ITextSelection* This, - BSTR bstr); -void __RPC_STUB ITextSelection_TypeText_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ITextSelection_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * ITextFont interface - */ -#ifndef __ITextFont_INTERFACE_DEFINED__ -#define __ITextFont_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ITextFont, 0x8cc497c3, 0xa1df, 0x11ce, 0x80,0x98, 0x00,0xaa,0x00,0x47,0xbe,0x5d); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface ITextFont : public IDispatch -{ - virtual HRESULT STDMETHODCALLTYPE GetDuplicate( - ITextFont** ppFont) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDuplicate( - ITextFont* pFont) = 0; - - virtual HRESULT STDMETHODCALLTYPE CanChange( - long* pB) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsEqual( - ITextFont* pFont, - long* pB) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStyle( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetStyle( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAllCaps( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetAllCaps( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAnimation( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetAnimation( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBackColor( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetBackColor( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetBold( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetBold( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetEmboss( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetEmboss( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetForeColor( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetForeColor( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHidden( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetHidden( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetEngrave( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetEngrave( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetItalic( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetItalic( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetKerning( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetKerning( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetLanguageID( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetLanguageID( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetName( - BSTR* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetName( - BSTR Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOutline( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetOutline( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPosition( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetPosition( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetProtected( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetProtected( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetShadow( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetShadow( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSize( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSize( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSmallCaps( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSmallCaps( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSpacing( - float* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSpacing( - float Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStrikeThrough( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetStrikeThrough( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSubscript( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSubscript( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSuperscript( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSuperscript( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetUnderline( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetUnderline( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetWeight( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetWeight( - long Value) = 0; - -}; -#else -typedef struct ITextFontVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ITextFont* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ITextFont* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ITextFont* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - ITextFont* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - ITextFont* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - ITextFont* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - ITextFont* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** ITextFont methods ***/ - HRESULT (STDMETHODCALLTYPE *GetDuplicate)( - ITextFont* This, - ITextFont** ppFont); - - HRESULT (STDMETHODCALLTYPE *SetDuplicate)( - ITextFont* This, - ITextFont* pFont); - - HRESULT (STDMETHODCALLTYPE *CanChange)( - ITextFont* This, - long* pB); - - HRESULT (STDMETHODCALLTYPE *IsEqual)( - ITextFont* This, - ITextFont* pFont, - long* pB); - - HRESULT (STDMETHODCALLTYPE *Reset)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetStyle)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetStyle)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetAllCaps)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetAllCaps)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetAnimation)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetAnimation)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetBackColor)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetBackColor)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetBold)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetBold)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetEmboss)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetEmboss)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetForeColor)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetForeColor)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetHidden)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetHidden)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetEngrave)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetEngrave)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetItalic)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetItalic)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetKerning)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetKerning)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetLanguageID)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetLanguageID)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetName)( - ITextFont* This, - BSTR* pValue); - - HRESULT (STDMETHODCALLTYPE *SetName)( - ITextFont* This, - BSTR Value); - - HRESULT (STDMETHODCALLTYPE *GetOutline)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetOutline)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetPosition)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetPosition)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetProtected)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetProtected)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetShadow)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetShadow)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetSize)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetSize)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetSmallCaps)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetSmallCaps)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetSpacing)( - ITextFont* This, - float* pValue); - - HRESULT (STDMETHODCALLTYPE *SetSpacing)( - ITextFont* This, - float Value); - - HRESULT (STDMETHODCALLTYPE *GetStrikeThrough)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetStrikeThrough)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetSubscript)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetSubscript)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetSuperscript)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetSuperscript)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetUnderline)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetUnderline)( - ITextFont* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetWeight)( - ITextFont* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetWeight)( - ITextFont* This, - long Value); - - END_INTERFACE -} ITextFontVtbl; -interface ITextFont { - CONST_VTBL ITextFontVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ITextFont_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITextFont_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITextFont_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define ITextFont_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define ITextFont_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define ITextFont_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define ITextFont_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** ITextFont methods ***/ -#define ITextFont_GetDuplicate(p,a) (p)->lpVtbl->GetDuplicate(p,a) -#define ITextFont_SetDuplicate(p,a) (p)->lpVtbl->SetDuplicate(p,a) -#define ITextFont_CanChange(p,a) (p)->lpVtbl->CanChange(p,a) -#define ITextFont_IsEqual(p,a,b) (p)->lpVtbl->IsEqual(p,a,b) -#define ITextFont_Reset(p,a) (p)->lpVtbl->Reset(p,a) -#define ITextFont_GetStyle(p,a) (p)->lpVtbl->GetStyle(p,a) -#define ITextFont_SetStyle(p,a) (p)->lpVtbl->SetStyle(p,a) -#define ITextFont_GetAllCaps(p,a) (p)->lpVtbl->GetAllCaps(p,a) -#define ITextFont_SetAllCaps(p,a) (p)->lpVtbl->SetAllCaps(p,a) -#define ITextFont_GetAnimation(p,a) (p)->lpVtbl->GetAnimation(p,a) -#define ITextFont_SetAnimation(p,a) (p)->lpVtbl->SetAnimation(p,a) -#define ITextFont_GetBackColor(p,a) (p)->lpVtbl->GetBackColor(p,a) -#define ITextFont_SetBackColor(p,a) (p)->lpVtbl->SetBackColor(p,a) -#define ITextFont_GetBold(p,a) (p)->lpVtbl->GetBold(p,a) -#define ITextFont_SetBold(p,a) (p)->lpVtbl->SetBold(p,a) -#define ITextFont_GetEmboss(p,a) (p)->lpVtbl->GetEmboss(p,a) -#define ITextFont_SetEmboss(p,a) (p)->lpVtbl->SetEmboss(p,a) -#define ITextFont_GetForeColor(p,a) (p)->lpVtbl->GetForeColor(p,a) -#define ITextFont_SetForeColor(p,a) (p)->lpVtbl->SetForeColor(p,a) -#define ITextFont_GetHidden(p,a) (p)->lpVtbl->GetHidden(p,a) -#define ITextFont_SetHidden(p,a) (p)->lpVtbl->SetHidden(p,a) -#define ITextFont_GetEngrave(p,a) (p)->lpVtbl->GetEngrave(p,a) -#define ITextFont_SetEngrave(p,a) (p)->lpVtbl->SetEngrave(p,a) -#define ITextFont_GetItalic(p,a) (p)->lpVtbl->GetItalic(p,a) -#define ITextFont_SetItalic(p,a) (p)->lpVtbl->SetItalic(p,a) -#define ITextFont_GetKerning(p,a) (p)->lpVtbl->GetKerning(p,a) -#define ITextFont_SetKerning(p,a) (p)->lpVtbl->SetKerning(p,a) -#define ITextFont_GetLanguageID(p,a) (p)->lpVtbl->GetLanguageID(p,a) -#define ITextFont_SetLanguageID(p,a) (p)->lpVtbl->SetLanguageID(p,a) -#define ITextFont_GetName(p,a) (p)->lpVtbl->GetName(p,a) -#define ITextFont_SetName(p,a) (p)->lpVtbl->SetName(p,a) -#define ITextFont_GetOutline(p,a) (p)->lpVtbl->GetOutline(p,a) -#define ITextFont_SetOutline(p,a) (p)->lpVtbl->SetOutline(p,a) -#define ITextFont_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) -#define ITextFont_SetPosition(p,a) (p)->lpVtbl->SetPosition(p,a) -#define ITextFont_GetProtected(p,a) (p)->lpVtbl->GetProtected(p,a) -#define ITextFont_SetProtected(p,a) (p)->lpVtbl->SetProtected(p,a) -#define ITextFont_GetShadow(p,a) (p)->lpVtbl->GetShadow(p,a) -#define ITextFont_SetShadow(p,a) (p)->lpVtbl->SetShadow(p,a) -#define ITextFont_GetSize(p,a) (p)->lpVtbl->GetSize(p,a) -#define ITextFont_SetSize(p,a) (p)->lpVtbl->SetSize(p,a) -#define ITextFont_GetSmallCaps(p,a) (p)->lpVtbl->GetSmallCaps(p,a) -#define ITextFont_SetSmallCaps(p,a) (p)->lpVtbl->SetSmallCaps(p,a) -#define ITextFont_GetSpacing(p,a) (p)->lpVtbl->GetSpacing(p,a) -#define ITextFont_SetSpacing(p,a) (p)->lpVtbl->SetSpacing(p,a) -#define ITextFont_GetStrikeThrough(p,a) (p)->lpVtbl->GetStrikeThrough(p,a) -#define ITextFont_SetStrikeThrough(p,a) (p)->lpVtbl->SetStrikeThrough(p,a) -#define ITextFont_GetSubscript(p,a) (p)->lpVtbl->GetSubscript(p,a) -#define ITextFont_SetSubscript(p,a) (p)->lpVtbl->SetSubscript(p,a) -#define ITextFont_GetSuperscript(p,a) (p)->lpVtbl->GetSuperscript(p,a) -#define ITextFont_SetSuperscript(p,a) (p)->lpVtbl->SetSuperscript(p,a) -#define ITextFont_GetUnderline(p,a) (p)->lpVtbl->GetUnderline(p,a) -#define ITextFont_SetUnderline(p,a) (p)->lpVtbl->SetUnderline(p,a) -#define ITextFont_GetWeight(p,a) (p)->lpVtbl->GetWeight(p,a) -#define ITextFont_SetWeight(p,a) (p)->lpVtbl->SetWeight(p,a) -#endif - -#endif - -HRESULT CALLBACK ITextFont_GetDuplicate_Proxy( - ITextFont* This, - ITextFont** ppFont); -void __RPC_STUB ITextFont_GetDuplicate_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetDuplicate_Proxy( - ITextFont* This, - ITextFont* pFont); -void __RPC_STUB ITextFont_SetDuplicate_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_CanChange_Proxy( - ITextFont* This, - long* pB); -void __RPC_STUB ITextFont_CanChange_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_IsEqual_Proxy( - ITextFont* This, - ITextFont* pFont, - long* pB); -void __RPC_STUB ITextFont_IsEqual_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_Reset_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_Reset_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetStyle_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetStyle_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetStyle_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetStyle_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetAllCaps_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetAllCaps_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetAllCaps_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetAllCaps_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetAnimation_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetAnimation_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetAnimation_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetAnimation_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetBackColor_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetBackColor_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetBackColor_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetBackColor_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetBold_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetBold_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetBold_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetBold_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetEmboss_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetEmboss_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetEmboss_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetEmboss_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetForeColor_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetForeColor_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetForeColor_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetForeColor_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetHidden_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetHidden_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetHidden_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetHidden_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetEngrave_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetEngrave_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetEngrave_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetEngrave_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetItalic_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetItalic_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetItalic_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetItalic_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetKerning_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetKerning_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetKerning_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetKerning_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetLanguageID_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetLanguageID_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetLanguageID_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetLanguageID_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetName_Proxy( - ITextFont* This, - BSTR* pValue); -void __RPC_STUB ITextFont_GetName_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetName_Proxy( - ITextFont* This, - BSTR Value); -void __RPC_STUB ITextFont_SetName_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetOutline_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetOutline_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetOutline_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetOutline_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetPosition_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetPosition_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetPosition_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetPosition_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetProtected_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetProtected_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetProtected_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetProtected_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetShadow_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetShadow_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetShadow_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetShadow_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetSize_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetSize_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetSize_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetSize_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetSmallCaps_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetSmallCaps_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetSmallCaps_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetSmallCaps_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetSpacing_Proxy( - ITextFont* This, - float* pValue); -void __RPC_STUB ITextFont_GetSpacing_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetSpacing_Proxy( - ITextFont* This, - float Value); -void __RPC_STUB ITextFont_SetSpacing_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetStrikeThrough_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetStrikeThrough_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetStrikeThrough_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetStrikeThrough_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetSubscript_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetSubscript_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetSubscript_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetSubscript_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetSuperscript_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetSuperscript_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetSuperscript_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetSuperscript_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetUnderline_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetUnderline_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetUnderline_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetUnderline_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_GetWeight_Proxy( - ITextFont* This, - long* pValue); -void __RPC_STUB ITextFont_GetWeight_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextFont_SetWeight_Proxy( - ITextFont* This, - long Value); -void __RPC_STUB ITextFont_SetWeight_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ITextFont_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * ITextPara interface - */ -#ifndef __ITextPara_INTERFACE_DEFINED__ -#define __ITextPara_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ITextPara, 0x8cc497c4, 0xa1df, 0x11ce, 0x80,0x98, 0x00,0xaa,0x00,0x47,0xbe,0x5d); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface ITextPara : public IDispatch -{ - virtual HRESULT STDMETHODCALLTYPE GetDuplicate( - ITextPara* ppPara) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetDuplicate( - ITextPara* pPara) = 0; - - virtual HRESULT STDMETHODCALLTYPE CanChange( - long* pB) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsEqual( - ITextPara* pPara, - long* pB) = 0; - - virtual HRESULT STDMETHODCALLTYPE Reset( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStyle( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetStyle( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAlignment( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetAlignment( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHyphenation( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetHyphenation( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFirstLineIndent( - float* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetKeepTogether( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetKeepTogether( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetKeepWithNext( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetKeepWithNext( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetLeftIndent( - float* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetLineSpacing( - float* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetLineSpacingRule( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetListAlignment( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetListAlignment( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetListLevelIndex( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetListLevelIndex( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetListStart( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetListStart( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetListTab( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetListTab( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetListType( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetListType( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNoLineNumber( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetNoLineNumber( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPageBreakBefore( - long* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetPageBreakBefore( - long Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRightIndent( - float* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetRightIndent( - float Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetIndents( - float StartIndent, - float LeftIndent, - float RightIndent) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetLineSpacing( - long LineSpacingRule, - float LineSpacing) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSpaceAfter( - float* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSpaceAfter( - float Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSpaceBefore( - float* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetSpaceBefore( - float Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetWindowControl( - float* pValue) = 0; - - virtual HRESULT STDMETHODCALLTYPE SetWindowControl( - float Value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTabCount( - long* pCount) = 0; - - virtual HRESULT STDMETHODCALLTYPE AddTab( - float tbPos, - long tbAlign, - long tbLeader) = 0; - - virtual HRESULT STDMETHODCALLTYPE ClearAllTabs( - ) = 0; - - virtual HRESULT STDMETHODCALLTYPE DeleteTab( - float tbPos) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTab( - long iTab, - float* ptbPos, - long* ptbAlign, - long* ptbLeader) = 0; - -}; -#else -typedef struct ITextParaVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ITextPara* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ITextPara* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ITextPara* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - ITextPara* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - ITextPara* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - ITextPara* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - ITextPara* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** ITextPara methods ***/ - HRESULT (STDMETHODCALLTYPE *GetDuplicate)( - ITextPara* This, - ITextPara* ppPara); - - HRESULT (STDMETHODCALLTYPE *SetDuplicate)( - ITextPara* This, - ITextPara* pPara); - - HRESULT (STDMETHODCALLTYPE *CanChange)( - ITextPara* This, - long* pB); - - HRESULT (STDMETHODCALLTYPE *IsEqual)( - ITextPara* This, - ITextPara* pPara, - long* pB); - - HRESULT (STDMETHODCALLTYPE *Reset)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetStyle)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetStyle)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetAlignment)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetAlignment)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetHyphenation)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetHyphenation)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetFirstLineIndent)( - ITextPara* This, - float* pValue); - - HRESULT (STDMETHODCALLTYPE *GetKeepTogether)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetKeepTogether)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetKeepWithNext)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetKeepWithNext)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetLeftIndent)( - ITextPara* This, - float* pValue); - - HRESULT (STDMETHODCALLTYPE *GetLineSpacing)( - ITextPara* This, - float* pValue); - - HRESULT (STDMETHODCALLTYPE *GetLineSpacingRule)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *GetListAlignment)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetListAlignment)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetListLevelIndex)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetListLevelIndex)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetListStart)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetListStart)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetListTab)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetListTab)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetListType)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetListType)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetNoLineNumber)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetNoLineNumber)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetPageBreakBefore)( - ITextPara* This, - long* pValue); - - HRESULT (STDMETHODCALLTYPE *SetPageBreakBefore)( - ITextPara* This, - long Value); - - HRESULT (STDMETHODCALLTYPE *GetRightIndent)( - ITextPara* This, - float* pValue); - - HRESULT (STDMETHODCALLTYPE *SetRightIndent)( - ITextPara* This, - float Value); - - HRESULT (STDMETHODCALLTYPE *SetIndents)( - ITextPara* This, - float StartIndent, - float LeftIndent, - float RightIndent); - - HRESULT (STDMETHODCALLTYPE *SetLineSpacing)( - ITextPara* This, - long LineSpacingRule, - float LineSpacing); - - HRESULT (STDMETHODCALLTYPE *GetSpaceAfter)( - ITextPara* This, - float* pValue); - - HRESULT (STDMETHODCALLTYPE *SetSpaceAfter)( - ITextPara* This, - float Value); - - HRESULT (STDMETHODCALLTYPE *GetSpaceBefore)( - ITextPara* This, - float* pValue); - - HRESULT (STDMETHODCALLTYPE *SetSpaceBefore)( - ITextPara* This, - float Value); - - HRESULT (STDMETHODCALLTYPE *GetWindowControl)( - ITextPara* This, - float* pValue); - - HRESULT (STDMETHODCALLTYPE *SetWindowControl)( - ITextPara* This, - float Value); - - HRESULT (STDMETHODCALLTYPE *GetTabCount)( - ITextPara* This, - long* pCount); - - HRESULT (STDMETHODCALLTYPE *AddTab)( - ITextPara* This, - float tbPos, - long tbAlign, - long tbLeader); - - HRESULT (STDMETHODCALLTYPE *ClearAllTabs)( - ITextPara* This); - - HRESULT (STDMETHODCALLTYPE *DeleteTab)( - ITextPara* This, - float tbPos); - - HRESULT (STDMETHODCALLTYPE *GetTab)( - ITextPara* This, - long iTab, - float* ptbPos, - long* ptbAlign, - long* ptbLeader); - - END_INTERFACE -} ITextParaVtbl; -interface ITextPara { - CONST_VTBL ITextParaVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ITextPara_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITextPara_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITextPara_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define ITextPara_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define ITextPara_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define ITextPara_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define ITextPara_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** ITextPara methods ***/ -#define ITextPara_GetDuplicate(p,a) (p)->lpVtbl->GetDuplicate(p,a) -#define ITextPara_SetDuplicate(p,a) (p)->lpVtbl->SetDuplicate(p,a) -#define ITextPara_CanChange(p,a) (p)->lpVtbl->CanChange(p,a) -#define ITextPara_IsEqual(p,a,b) (p)->lpVtbl->IsEqual(p,a,b) -#define ITextPara_Reset(p,a) (p)->lpVtbl->Reset(p,a) -#define ITextPara_GetStyle(p,a) (p)->lpVtbl->GetStyle(p,a) -#define ITextPara_SetStyle(p,a) (p)->lpVtbl->SetStyle(p,a) -#define ITextPara_GetAlignment(p,a) (p)->lpVtbl->GetAlignment(p,a) -#define ITextPara_SetAlignment(p,a) (p)->lpVtbl->SetAlignment(p,a) -#define ITextPara_GetHyphenation(p,a) (p)->lpVtbl->GetHyphenation(p,a) -#define ITextPara_SetHyphenation(p,a) (p)->lpVtbl->SetHyphenation(p,a) -#define ITextPara_GetFirstLineIndent(p,a) (p)->lpVtbl->GetFirstLineIndent(p,a) -#define ITextPara_GetKeepTogether(p,a) (p)->lpVtbl->GetKeepTogether(p,a) -#define ITextPara_SetKeepTogether(p,a) (p)->lpVtbl->SetKeepTogether(p,a) -#define ITextPara_GetKeepWithNext(p,a) (p)->lpVtbl->GetKeepWithNext(p,a) -#define ITextPara_SetKeepWithNext(p,a) (p)->lpVtbl->SetKeepWithNext(p,a) -#define ITextPara_GetLeftIndent(p,a) (p)->lpVtbl->GetLeftIndent(p,a) -#define ITextPara_GetLineSpacing(p,a) (p)->lpVtbl->GetLineSpacing(p,a) -#define ITextPara_GetLineSpacingRule(p,a) (p)->lpVtbl->GetLineSpacingRule(p,a) -#define ITextPara_GetListAlignment(p,a) (p)->lpVtbl->GetListAlignment(p,a) -#define ITextPara_SetListAlignment(p,a) (p)->lpVtbl->SetListAlignment(p,a) -#define ITextPara_GetListLevelIndex(p,a) (p)->lpVtbl->GetListLevelIndex(p,a) -#define ITextPara_SetListLevelIndex(p,a) (p)->lpVtbl->SetListLevelIndex(p,a) -#define ITextPara_GetListStart(p,a) (p)->lpVtbl->GetListStart(p,a) -#define ITextPara_SetListStart(p,a) (p)->lpVtbl->SetListStart(p,a) -#define ITextPara_GetListTab(p,a) (p)->lpVtbl->GetListTab(p,a) -#define ITextPara_SetListTab(p,a) (p)->lpVtbl->SetListTab(p,a) -#define ITextPara_GetListType(p,a) (p)->lpVtbl->GetListType(p,a) -#define ITextPara_SetListType(p,a) (p)->lpVtbl->SetListType(p,a) -#define ITextPara_GetNoLineNumber(p,a) (p)->lpVtbl->GetNoLineNumber(p,a) -#define ITextPara_SetNoLineNumber(p,a) (p)->lpVtbl->SetNoLineNumber(p,a) -#define ITextPara_GetPageBreakBefore(p,a) (p)->lpVtbl->GetPageBreakBefore(p,a) -#define ITextPara_SetPageBreakBefore(p,a) (p)->lpVtbl->SetPageBreakBefore(p,a) -#define ITextPara_GetRightIndent(p,a) (p)->lpVtbl->GetRightIndent(p,a) -#define ITextPara_SetRightIndent(p,a) (p)->lpVtbl->SetRightIndent(p,a) -#define ITextPara_SetIndents(p,a,b,c) (p)->lpVtbl->SetIndents(p,a,b,c) -#define ITextPara_SetLineSpacing(p,a,b) (p)->lpVtbl->SetLineSpacing(p,a,b) -#define ITextPara_GetSpaceAfter(p,a) (p)->lpVtbl->GetSpaceAfter(p,a) -#define ITextPara_SetSpaceAfter(p,a) (p)->lpVtbl->SetSpaceAfter(p,a) -#define ITextPara_GetSpaceBefore(p,a) (p)->lpVtbl->GetSpaceBefore(p,a) -#define ITextPara_SetSpaceBefore(p,a) (p)->lpVtbl->SetSpaceBefore(p,a) -#define ITextPara_GetWindowControl(p,a) (p)->lpVtbl->GetWindowControl(p,a) -#define ITextPara_SetWindowControl(p,a) (p)->lpVtbl->SetWindowControl(p,a) -#define ITextPara_GetTabCount(p,a) (p)->lpVtbl->GetTabCount(p,a) -#define ITextPara_AddTab(p,a,b,c) (p)->lpVtbl->AddTab(p,a,b,c) -#define ITextPara_ClearAllTabs(p) (p)->lpVtbl->ClearAllTabs(p) -#define ITextPara_DeleteTab(p,a) (p)->lpVtbl->DeleteTab(p,a) -#define ITextPara_GetTab(p,a,b,c,d) (p)->lpVtbl->GetTab(p,a,b,c,d) -#endif - -#endif - -HRESULT CALLBACK ITextPara_GetDuplicate_Proxy( - ITextPara* This, - ITextPara* ppPara); -void __RPC_STUB ITextPara_GetDuplicate_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetDuplicate_Proxy( - ITextPara* This, - ITextPara* pPara); -void __RPC_STUB ITextPara_SetDuplicate_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_CanChange_Proxy( - ITextPara* This, - long* pB); -void __RPC_STUB ITextPara_CanChange_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_IsEqual_Proxy( - ITextPara* This, - ITextPara* pPara, - long* pB); -void __RPC_STUB ITextPara_IsEqual_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_Reset_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_Reset_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetStyle_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetStyle_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetStyle_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetStyle_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetAlignment_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetAlignment_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetAlignment_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetAlignment_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetHyphenation_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetHyphenation_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetHyphenation_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetHyphenation_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetFirstLineIndent_Proxy( - ITextPara* This, - float* pValue); -void __RPC_STUB ITextPara_GetFirstLineIndent_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetKeepTogether_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetKeepTogether_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetKeepTogether_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetKeepTogether_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetKeepWithNext_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetKeepWithNext_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetKeepWithNext_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetKeepWithNext_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetLeftIndent_Proxy( - ITextPara* This, - float* pValue); -void __RPC_STUB ITextPara_GetLeftIndent_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetLineSpacing_Proxy( - ITextPara* This, - float* pValue); -void __RPC_STUB ITextPara_GetLineSpacing_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetLineSpacingRule_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetLineSpacingRule_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetListAlignment_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetListAlignment_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetListAlignment_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetListAlignment_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetListLevelIndex_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetListLevelIndex_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetListLevelIndex_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetListLevelIndex_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetListStart_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetListStart_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetListStart_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetListStart_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetListTab_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetListTab_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetListTab_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetListTab_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetListType_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetListType_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetListType_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetListType_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetNoLineNumber_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetNoLineNumber_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetNoLineNumber_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetNoLineNumber_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetPageBreakBefore_Proxy( - ITextPara* This, - long* pValue); -void __RPC_STUB ITextPara_GetPageBreakBefore_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetPageBreakBefore_Proxy( - ITextPara* This, - long Value); -void __RPC_STUB ITextPara_SetPageBreakBefore_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetRightIndent_Proxy( - ITextPara* This, - float* pValue); -void __RPC_STUB ITextPara_GetRightIndent_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetRightIndent_Proxy( - ITextPara* This, - float Value); -void __RPC_STUB ITextPara_SetRightIndent_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetIndents_Proxy( - ITextPara* This, - float StartIndent, - float LeftIndent, - float RightIndent); -void __RPC_STUB ITextPara_SetIndents_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetLineSpacing_Proxy( - ITextPara* This, - long LineSpacingRule, - float LineSpacing); -void __RPC_STUB ITextPara_SetLineSpacing_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetSpaceAfter_Proxy( - ITextPara* This, - float* pValue); -void __RPC_STUB ITextPara_GetSpaceAfter_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetSpaceAfter_Proxy( - ITextPara* This, - float Value); -void __RPC_STUB ITextPara_SetSpaceAfter_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetSpaceBefore_Proxy( - ITextPara* This, - float* pValue); -void __RPC_STUB ITextPara_GetSpaceBefore_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetSpaceBefore_Proxy( - ITextPara* This, - float Value); -void __RPC_STUB ITextPara_SetSpaceBefore_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetWindowControl_Proxy( - ITextPara* This, - float* pValue); -void __RPC_STUB ITextPara_GetWindowControl_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_SetWindowControl_Proxy( - ITextPara* This, - float Value); -void __RPC_STUB ITextPara_SetWindowControl_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetTabCount_Proxy( - ITextPara* This, - long* pCount); -void __RPC_STUB ITextPara_GetTabCount_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_AddTab_Proxy( - ITextPara* This, - float tbPos, - long tbAlign, - long tbLeader); -void __RPC_STUB ITextPara_AddTab_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_ClearAllTabs_Proxy( - ITextPara* This); -void __RPC_STUB ITextPara_ClearAllTabs_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_DeleteTab_Proxy( - ITextPara* This, - float tbPos); -void __RPC_STUB ITextPara_DeleteTab_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextPara_GetTab_Proxy( - ITextPara* This, - long iTab, - float* ptbPos, - long* ptbAlign, - long* ptbLeader); -void __RPC_STUB ITextPara_GetTab_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ITextPara_INTERFACE_DEFINED__ */ - -/***************************************************************************** - * ITextStoryRanges interface - */ -#ifndef __ITextStoryRanges_INTERFACE_DEFINED__ -#define __ITextStoryRanges_INTERFACE_DEFINED__ - -DEFINE_GUID(IID_ITextStoryRanges, 0x8cc497c5, 0xa1df, 0x11ce, 0x80,0x98, 0x00,0xaa,0x00,0x47,0xbe,0x5d); -#if defined(__cplusplus) && !defined(CINTERFACE) -interface ITextStoryRanges : public IDispatch -{ - virtual HRESULT STDMETHODCALLTYPE _NewEnum( - IUnknown** ppUnkEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE Item( - long Index, - ITextRange** ppRange) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCount( - long* pCount) = 0; - -}; -#else -typedef struct ITextStoryRangesVtbl { - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - ITextStoryRanges* This, - REFIID riid, - void** ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - ITextStoryRanges* This); - - ULONG (STDMETHODCALLTYPE *Release)( - ITextStoryRanges* This); - - /*** IDispatch methods ***/ - HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( - ITextStoryRanges* This, - UINT* pctinfo); - - HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( - ITextStoryRanges* This, - UINT iTInfo, - LCID lcid, - ITypeInfo** ppTInfo); - - HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( - ITextStoryRanges* This, - REFIID riid, - LPOLESTR* rgszNames, - UINT cNames, - LCID lcid, - DISPID* rgDispId); - - HRESULT (STDMETHODCALLTYPE *Invoke)( - ITextStoryRanges* This, - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS* pDispParams, - VARIANT* pVarResult, - EXCEPINFO* pExcepInfo, - UINT* puArgErr); - - /*** ITextStoryRanges methods ***/ - HRESULT (STDMETHODCALLTYPE *_NewEnum)( - ITextStoryRanges* This, - IUnknown** ppUnkEnum); - - HRESULT (STDMETHODCALLTYPE *Item)( - ITextStoryRanges* This, - long Index, - ITextRange** ppRange); - - HRESULT (STDMETHODCALLTYPE *GetCount)( - ITextStoryRanges* This, - long* pCount); - - END_INTERFACE -} ITextStoryRangesVtbl; -interface ITextStoryRanges { - CONST_VTBL ITextStoryRangesVtbl* lpVtbl; -}; - -#ifdef COBJMACROS -/*** IUnknown methods ***/ -#define ITextStoryRanges_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define ITextStoryRanges_AddRef(p) (p)->lpVtbl->AddRef(p) -#define ITextStoryRanges_Release(p) (p)->lpVtbl->Release(p) -/*** IDispatch methods ***/ -#define ITextStoryRanges_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) -#define ITextStoryRanges_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) -#define ITextStoryRanges_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) -#define ITextStoryRanges_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) -/*** ITextStoryRanges methods ***/ -#define ITextStoryRanges__NewEnum(p,a) (p)->lpVtbl->_NewEnum(p,a) -#define ITextStoryRanges_Item(p,a,b) (p)->lpVtbl->Item(p,a,b) -#define ITextStoryRanges_GetCount(p,a) (p)->lpVtbl->GetCount(p,a) -#endif - -#endif - -HRESULT CALLBACK ITextStoryRanges__NewEnum_Proxy( - ITextStoryRanges* This, - IUnknown** ppUnkEnum); -void __RPC_STUB ITextStoryRanges__NewEnum_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextStoryRanges_Item_Proxy( - ITextStoryRanges* This, - long Index, - ITextRange** ppRange); -void __RPC_STUB ITextStoryRanges_Item_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); -HRESULT CALLBACK ITextStoryRanges_GetCount_Proxy( - ITextStoryRanges* This, - long* pCount); -void __RPC_STUB ITextStoryRanges_GetCount_Stub( - IRpcStubBuffer* This, - IRpcChannelBuffer* pRpcChannelBuffer, - PRPC_MESSAGE pRpcMessage, - DWORD* pdwStubPhase); - -#endif /* __ITextStoryRanges_INTERFACE_DEFINED__ */ - -/* Begin additional prototypes for all interfaces */ - -ULONG __RPC_USER VARIANT_UserSize (ULONG *, ULONG, VARIANT *); -unsigned char * __RPC_USER VARIANT_UserMarshal (ULONG *, unsigned char *, VARIANT *); -unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *); -void __RPC_USER VARIANT_UserFree (ULONG *, VARIANT *); -ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *); -unsigned char * __RPC_USER BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *); -unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *); -void __RPC_USER BSTR_UserFree (ULONG *, BSTR *); - -/* End additional prototypes */ - -#ifdef __cplusplus -} -#endif -#endif /* __WIDL_TOM_H */ - diff --git a/reactos/include/reactos/wine/unknwn.h b/reactos/include/reactos/wine/unknwn.h deleted file mode 100644 index 3e994dcaa05..00000000000 --- a/reactos/include/reactos/wine/unknwn.h +++ /dev/null @@ -1,29 +0,0 @@ -#include_next - -#ifndef __WINE_UNKNWN_H -#define __WINE_UNKNWN_H - -/*DEFINE_GUID(IID_IUnknown, 0x00000000, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);*/ - -/*** IUnknown methods ***/ -#define IUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IUnknown_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IUnknown_Release(p) (p)->lpVtbl->Release(p) - -/*DEFINE_GUID(IID_IClassFactory, 0x00000001, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);*/ - -/*** IUnknown methods ***/ -#define IClassFactory_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IClassFactory_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IClassFactory_Release(p) (p)->lpVtbl->Release(p) -/*** IClassFactory methods ***/ -#define IClassFactory_CreateInstance(p,a,b,c) (p)->lpVtbl->CreateInstance(p,a,b,c) -#define IClassFactory_LockServer(p,a) (p)->lpVtbl->LockServer(p,a) - -#define IUnknown_METHODS \ - /*** IUnknown methods ***/ \ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ - STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ - STDMETHOD_(ULONG,Release)(THIS) PURE; - -#endif /* __WINE_UNKNWN_H */ diff --git a/reactos/include/reactos/wine/windef.h b/reactos/include/reactos/wine/windef.h deleted file mode 100644 index 64572559870..00000000000 --- a/reactos/include/reactos/wine/windef.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Basic types definitions - * - * Copyright 1996 Alexandre Julliard - * - * 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 - */ - -#if !defined(_MSC_VER) -#include_next "windef.h" -#endif - -#ifndef __WINE_WINDEF_H -#define __WINE_WINDEF_H - -/* Macros to map Winelib names to the correct implementation name */ - -#if defined(__WINESRC__) || defined(__REACTOS__) -# define WINELIB_NAME_AW(func) \ - func##_must_be_suffixed_with_W_or_A_in_this_context \ - func##_must_be_suffixed_with_W_or_A_in_this_context -#else /* __WINESRC__ || __REACTOS__*/ -# ifdef UNICODE -# define WINELIB_NAME_AW(func) func##W -# else -# define WINELIB_NAME_AW(func) func##A -# endif /* UNICODE */ -#endif /* __WINESRC__ */ - -#if defined(__WINESRC__) || defined(__REACTOS__) -# define DECL_WINELIB_TYPE_AW(type) /* nothing */ -#else /* __WINESRC__ */ -# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; -#endif /* __WINESRC__ */ - -#endif /* __WINE_WINDEF_H */ diff --git a/reactos/include/reactos/wine/wingdi.h b/reactos/include/reactos/wine/wingdi.h deleted file mode 100644 index e7b9d198357..00000000000 --- a/reactos/include/reactos/wine/wingdi.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Compatibility header - * - * This header is wrapper to allow compilation of Wine DLLs under ReactOS - * build system. It contains definitions commonly refered to as Wineisms - * and definitions that are missing in w32api. - */ -#ifndef __WINE_GDI_H -#define __WINE_GDI_H - -#define NTM_PS_OPENTYPE 0x00020000 /* wingdi.h */ -#define NTM_TT_OPENTYPE 0x00040000 /* wingdi.h */ -#define NTM_TYPE1 0x00100000 /* wingdi.h */ - -#if !defined(_MSC_VER) -#include_next -#endif - -#endif /* __WINE_GDI_H */ diff --git a/reactos/include/reactos/wine/wtypes.h b/reactos/include/reactos/wine/wtypes.h deleted file mode 100644 index 296fef82447..00000000000 --- a/reactos/include/reactos/wine/wtypes.h +++ /dev/null @@ -1,9 +0,0 @@ -#include_next - -#ifndef __WINE_WTYPES_H -#define __WINE_WTYPES_H - -/* Should be in MSHCTX enum but is not in w32api */ -#define MSHCTX_CROSSCTX 4 - -#endif /* __WINE_WTYPES_H */ diff --git a/reactos/lib/3rdparty/libwine/debug.c b/reactos/lib/3rdparty/libwine/debug.c index 659c40de79f..8d5b84347a6 100644 --- a/reactos/lib/3rdparty/libwine/debug.c +++ b/reactos/lib/3rdparty/libwine/debug.c @@ -211,27 +211,6 @@ const char *wine_dbgstr_wn(const WCHAR *src, int n) return res; } -/*********************************************************************** - * wine_dbgstr_guid - */ -const char *wine_dbgstr_guid(const GUID *id) -{ - char *str; - - if (!id) return "(null)"; - if (!HIWORD(id)) { - str = gimme1(12); - sprintf(str, "", (WORD)(DWORD)(id)); - } else { - str = gimme1(40); - sprintf(str, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", - id->Data1, id->Data2, id->Data3, - id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3], - id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7]); - } - return str; -} - const char *wine_dbgstr_longlong( unsigned long long ll ) { if (ll >> 32) return wine_dbg_sprintf( "%lx%08lx", (unsigned long)(ll >> 32), (unsigned long)ll ); diff --git a/reactos/lib/sdk/uuid/uuid.c b/reactos/lib/sdk/uuid/uuid.c index f3b32affec5..3cdbaf12484 100644 --- a/reactos/lib/sdk/uuid/uuid.c +++ b/reactos/lib/sdk/uuid/uuid.c @@ -32,27 +32,25 @@ #include "winuser.h" #include "objbase.h" -#include "wine/servprov.h" +#include "servprov.h" #include "oleauto.h" #include "oleidl.h" -#include "wine/oleidl.h" +#include "objidl.h" #include "olectl.h" -#include "wine/ocidl.h" - #include "mshtmhst.h" #include "docobj.h" -#include "wine/exdisp.h" +#include "exdisp.h" #include "hlink.h" #include "shlguid.h" -#include "wine/shlguid.h" #include "shlobj.h" #include "shldisp.h" #include "comcat.h" #include "urlmon.h" #include "objsel.h" +#include "richole.h" /* FIXME: cguids declares GUIDs but does not define their values */ @@ -84,14 +82,10 @@ DEFINE_GUID(FMTID_SummaryInformation,0xF29F85E0,0x4FF9,0x1068,0xAB,0x91,0x08,0x0 DEFINE_GUID(FMTID_DocSummaryInformation,0xD5CDD502,0x2E9C,0x101B,0x93,0x97,0x08,0x00,0x2B,0x2C,0xF9,0xAE); DEFINE_GUID(FMTID_UserDefinedProperties,0xD5CDD505,0x2E9C,0x101B,0x93,0x97,0x08,0x00,0x2B,0x2C,0xF9,0xAE); -DEFINE_GUID(IID_IRichEditOle,0x00020D00,0,0,0xC0,0,0,0,0,0,0,0x46); -DEFINE_GUID(IID_IRichEditOleCallback,0x00020D03,0,0,0xC0,0,0,0,0,0,0,0x46); - -DEFINE_OLEGUID(IID_StdOle,0x00020430,0,0); - -DEFINE_GUID(CLSID_StdFont,0x0be35203,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51); -DEFINE_GUID(CLSID_StdPicture,0x0be35204,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51); - DEFINE_GUID(CLSID_HTMLDocument, 0x25336920, 0x03f9, 0x11cf, 0x8f,0xd0, 0x00,0xaa,0x00,0x68,0x6f,0x13); DEFINE_GUID(GUID_NULL, 0L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + +DEFINE_GUID(CLSID_Picture_Metafile, 0x00000315,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); +DEFINE_GUID(CLSID_Picture_Dib, 0x00000316,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); +DEFINE_GUID(CLSID_StdGlobalInterfaceTable,0x00000323,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); diff --git a/reactos/lib/sdk/uuid/uuid.rbuild b/reactos/lib/sdk/uuid/uuid.rbuild index beb4ad6a51f..e863e172498 100644 --- a/reactos/lib/sdk/uuid/uuid.rbuild +++ b/reactos/lib/sdk/uuid/uuid.rbuild @@ -1,6 +1,8 @@ - + include/reactos/wine + psdk + psdk uuid.c diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp index 087114e6461..546ed9f02b6 100644 --- a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp +++ b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp @@ -304,14 +304,24 @@ MingwModuleHandler::GetActualSourceFilename ( string basename = GetBasename ( filename ); string newname; if ( module.type == RpcServer ) + { newname = basename + "_s.c"; + PassThruCacheDirectory ( NormalizeFilename ( newname ), + backend->intermediateDirectory ); + return new FileLocation ( backend->intermediateDirectory, NormalizeFilename ( newname ) ); + } else if ( module.type == RpcClient ) + { newname = basename + "_c.c"; + PassThruCacheDirectory ( NormalizeFilename ( newname ), + backend->intermediateDirectory ); + return new FileLocation ( backend->intermediateDirectory, NormalizeFilename ( newname ) ); + } else //if ( module.type == IdlHeader ) + { newname = basename + ".h"; - PassThruCacheDirectory ( NormalizeFilename ( newname ), - backend->intermediateDirectory ); - return new FileLocation ( backend->intermediateDirectory, NormalizeFilename ( newname ) ); + return new FileLocation ( fileLocation->directory, filename ); + } } else return new FileLocation ( fileLocation->directory, filename ); @@ -325,10 +335,10 @@ MingwModuleHandler::GetExtraDependencies ( if ( extension == ".idl" || extension == ".IDL" ) { string basename = GetBasename ( filename ); - if ( module.type == IdlHeader ) - return GetIdlHeaderFilename ( basename ); - else + if ( (module.type == RpcServer) || (module.type == RpcClient) ) return GetRpcServerHeaderFilename ( basename ) + " " + GetRpcClientHeaderFilename ( basename ); + else + return GetIdlHeaderFilename ( basename ); } else return ""; @@ -494,15 +504,12 @@ MingwModuleHandler::GetObjectFilename ( newExtension = ".stubs.o"; else if ( extension == ".idl" || extension == ".IDL" ) { - if ( module.type == IdlHeader ) - newExtension = ".h"; + if ( module.type == RpcServer ) + newExtension = "_s.o"; + else if ( module.type == RpcClient ) + newExtension = "_c.o"; else - { - if ( module.type == RpcServer ) - newExtension = "_s.o"; - else - newExtension = "_c.o"; - } + newExtension = ".h"; } else newExtension = ".o"; @@ -512,11 +519,15 @@ MingwModuleHandler::GetObjectFilename ( else directoryTree = backend->intermediateDirectory; + if (newExtension == ".h") + directoryTree = NULL; + string obj_file = PassThruCacheDirectory ( NormalizeFilename ( ReplaceExtension ( RemoveVariables ( sourceFilename ), - newExtension ) ), + newExtension ) ), directoryTree ); + if ( pclean_files ) { string_list& clean_files = *pclean_files; @@ -1220,8 +1231,7 @@ MingwModuleHandler::GetRpcClientHeaderFilename ( string basename ) const string MingwModuleHandler::GetIdlHeaderFilename ( string basename ) const { - return PassThruCacheDirectory ( basename + ".h", - backend->intermediateDirectory ); + return basename + ".h"; } void @@ -1302,7 +1312,7 @@ MingwModuleHandler::GenerateWidlCommands ( else if ( module.type == RpcClient ) GenerateWidlCommandsClient ( compilationUnit, widlflagsMacro ); - else if ( module.type == IdlHeader ) + else GenerateWidlCommandsIdlHeader ( compilationUnit, widlflagsMacro ); } @@ -1370,7 +1380,7 @@ MingwModuleHandler::GenerateCommands ( { GenerateWidlCommands ( compilationUnit, widlflagsMacro ); - if ( module.type != IdlHeader ) + if ( (module.type == RpcServer) || (module.type == RpcClient) ) { GenerateGccCommand ( GetActualSourceFilename ( sourceFileLocation ), GetExtraDependencies ( filename ), @@ -2252,7 +2262,10 @@ MingwModuleHandler::GetDefinitionDependencies ( if ( extension == ".spec" || extension == ".SPEC" ) GetSpecObjectDependencies ( dependencies, sourceFileLocation->filename ); if ( extension == ".idl" || extension == ".IDL" ) - GetWidlObjectDependencies ( dependencies, sourceFileLocation->filename ); + { + if ( ( module.type == RpcServer ) || ( module.type == RpcClient ) ) + GetWidlObjectDependencies ( dependencies, sourceFileLocation->filename ); + } } }