urlmon: Added ProxyStub implementation.

This commit is contained in:
Piotr Caban 2009-12-08 16:02:19 +01:00 committed by Alexandre Julliard
parent 2d1c4e6928
commit dc78e8d315
7 changed files with 223 additions and 12 deletions

2
.gitignore vendored
View File

@ -117,6 +117,8 @@ dlls/stdole2.tlb/std_ole_v2.tlb
dlls/stdole32.tlb/std_ole_v1.tlb
dlls/sti/sti_wia.h
dlls/sti/sti_wia_p.c
dlls/urlmon/urlmon_urlmon.h
dlls/urlmon/urlmon_urlmon_p.c
dlls/user.exe16
dlls/wprocs.dll16
include/activaut.h

View File

@ -4,7 +4,9 @@ SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = urlmon.dll
IMPORTLIB = urlmon
IMPORTS = uuid ole32 shlwapi wininet user32 advapi32 kernel32 ntdll
IMPORTS = uuid ole32 rpcrt4 shlwapi wininet user32 advapi32 kernel32 ntdll
EXTRADEFS = -D_URLMON_ -DENTRY_PREFIX=URLMON_ -DPROXY_DELEGATION -DREGISTER_PROXY_DLL \
-DPROXY_CLSID_IS="{0x79EAC9F1,0xBAF9,0x11CE,{0x8C,0x82,0x00,0xAA,0x00,0x4B,0xA9,0x0B}}"
C_SRCS = \
bindctx.c \
@ -26,10 +28,15 @@ C_SRCS = \
session.c \
umon.c \
umstream.c \
urlmon_main.c
urlmon_main.c \
usrmarshal.c
RC_SRCS = rsrc.rc
IDL_P_SRCS = urlmon_urlmon.idl
EXTRA_OBJS = dlldata.o
@MAKE_DLL_RULES@
@DEPENDENCIES@ # everything below this line is overwritten by make depend

View File

@ -495,6 +495,12 @@ static struct regsvr_coclass const coclass_list[] = {
"urlmon.dll",
"Both"
},
{ &CLSID_PSFactoryBuffer,
"URLMoniker ProxyStub Factory",
NULL,
"urlmon.dll",
"Apartment"
},
{ NULL } /* list terminator */
};
@ -573,12 +579,14 @@ HRESULT WINAPI DllRegisterServer(void)
TRACE("\n");
hr = register_coclasses(coclass_list);
if (SUCCEEDED(hr))
hr = URLMON_DllRegisterServer();
if(SUCCEEDED(hr))
hr = register_coclasses(coclass_list);
if(SUCCEEDED(hr))
hr = register_interfaces(interface_list);
if(FAILED(hr))
return hr;
return register_inf(TRUE);
if(SUCCEEDED(hr))
hr = register_inf(TRUE);
return hr;
}
/***********************************************************************
@ -590,10 +598,12 @@ HRESULT WINAPI DllUnregisterServer(void)
TRACE("\n");
hr = unregister_coclasses(coclass_list);
if (SUCCEEDED(hr))
hr = URLMON_DllUnregisterServer();
if(SUCCEEDED(hr))
hr = unregister_coclasses(coclass_list);
if(SUCCEEDED(hr))
hr = unregister_interfaces(interface_list);
if(FAILED(hr))
return hr;
return register_inf(FALSE);
if(SUCCEEDED(hr))
hr = register_inf(FALSE);
return hr;
}

View File

@ -348,6 +348,7 @@ static void init_session(BOOL init)
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
{
unsigned int i;
HRESULT hr;
TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
@ -357,6 +358,10 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
return IClassFactory_QueryInterface(object_creation[i].cf, riid, ppv);
}
hr = URLMON_DllGetClassObject(rclsid, riid, ppv);
if(SUCCEEDED(hr))
return hr;
FIXME("%s: no class found.\n", debugstr_guid(rclsid));
return CLASS_E_CLASSNOTAVAILABLE;
}

View File

@ -48,6 +48,12 @@ extern HRESULT GopherProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
extern HRESULT MkProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
extern HRESULT MimeFilter_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
extern HRESULT WINAPI URLMON_DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv) DECLSPEC_HIDDEN;
extern HRESULT WINAPI URLMON_DllRegisterServer(void) DECLSPEC_HIDDEN;
extern HRESULT WINAPI URLMON_DllUnregisterServer(void) DECLSPEC_HIDDEN;
extern GUID const CLSID_PSFactoryBuffer DECLSPEC_HIDDEN;
/**********************************************************************
* Dll lifetime tracking declaration for urlmon.dll
*/

View File

@ -0,0 +1,19 @@
/*
* Copyright 2009 Piotr 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 "urlmon.idl"

162
dlls/urlmon/usrmarshal.c Normal file
View File

@ -0,0 +1,162 @@
/*
* Copyright 2009 Piotr 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 "urlmon_main.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
HRESULT CALLBACK IWinInetHttpInfo_QueryInfo_Proxy(IWinInetHttpInfo* This,
DWORD dwOption, LPVOID pBuffer, DWORD *pcbBuf, DWORD *pdwFlags,
DWORD *pdwReserved)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT __RPC_STUB IWinInetHttpInfo_QueryInfo_Stub(IWinInetHttpInfo* This,
DWORD dwOption, BYTE *pBuffer, DWORD *pcbBuf, DWORD *pdwFlags,
DWORD *pdwReserved)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT CALLBACK IWinInetInfo_QueryOption_Proxy(IWinInetInfo* This,
DWORD dwOption, LPVOID pBuffer, DWORD *pcbBuf)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT __RPC_STUB IWinInetInfo_QueryOption_Stub(IWinInetInfo* This,
DWORD dwOption, BYTE *pBuffer, DWORD *pcbBuf)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT CALLBACK IBindHost_MonikerBindToStorage_Proxy(IBindHost* This,
IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
REFIID riid, void **ppvObj)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT __RPC_STUB IBindHost_MonikerBindToStorage_Stub(IBindHost* This,
IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
REFIID riid, IUnknown **ppvObj)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT CALLBACK IBindHost_MonikerBindToObject_Proxy(IBindHost* This,
IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
REFIID riid, void **ppvObj)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT __RPC_STUB IBindHost_MonikerBindToObject_Stub(IBindHost* This,
IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
REFIID riid, IUnknown **ppvObj)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT CALLBACK IBindStatusCallbackEx_GetBindInfoEx_Proxy(
IBindStatusCallbackEx* This, DWORD *grfBINDF, BINDINFO *pbindinfo,
DWORD *grfBINDF2, DWORD *pdwReserved)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT __RPC_STUB IBindStatusCallbackEx_GetBindInfoEx_Stub(
IBindStatusCallbackEx* This, DWORD *grfBINDF, RemBINDINFO *pbindinfo,
RemSTGMEDIUM *pstgmed, DWORD *grfBINDF2, DWORD *pdwReserved)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT CALLBACK IBindStatusCallback_GetBindInfo_Proxy(
IBindStatusCallback* This, DWORD *grfBINDF, BINDINFO *pbindinfo)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT __RPC_STUB IBindStatusCallback_GetBindInfo_Stub(
IBindStatusCallback* This, DWORD *grfBINDF,
RemBINDINFO *pbindinfo, RemSTGMEDIUM *pstgmed)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT CALLBACK IBindStatusCallback_OnDataAvailable_Proxy(
IBindStatusCallback* This, DWORD grfBSCF, DWORD dwSize,
FORMATETC *pformatetc, STGMEDIUM *pstgmed)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT __RPC_STUB IBindStatusCallback_OnDataAvailable_Stub(
IBindStatusCallback* This, DWORD grfBSCF, DWORD dwSize,
RemFORMATETC *pformatetc, RemSTGMEDIUM *pstgmed)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT CALLBACK IBinding_GetBindResult_Proxy(IBinding* This,
CLSID *pclsidProtocol, DWORD *pdwResult,
LPOLESTR *pszResult, DWORD *pdwReserved)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT __RPC_STUB IBinding_GetBindResult_Stub(IBinding* This,
CLSID *pclsidProtocol, DWORD *pdwResult,
LPOLESTR *pszResult, DWORD dwReserved)
{
FIXME("stub\n");
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE IWindowForBindingUI_GetWindow_Proxy(
IWindowForBindingUI* This, REFGUID rguidReason, HWND *phwnd)
{
FIXME("stub\n");
return E_NOTIMPL;
}
void __RPC_STUB IWindowForBindingUI_GetWindow_Stub(IRpcStubBuffer* This,
IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage,
DWORD* pdwStubPhase)
{
FIXME("stub\n");
}