#include "urlmon_main.h"
-#include "winreg.h"
-#include "winternl.h"
-#include "wininet.h"
-#include "shlwapi.h"
-
-#include "wine/debug.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
-
typedef struct ProxyBindStatusCallback
{
- const IBindStatusCallbackVtbl *lpVtbl;
+ IBindStatusCallback IBindStatusCallback_iface;
IBindStatusCallback *pBSC;
} ProxyBindStatusCallback;
+static inline ProxyBindStatusCallback *impl_from_IBindStatusCallback(IBindStatusCallback *iface)
+{
+ return CONTAINING_RECORD(iface, ProxyBindStatusCallback, IBindStatusCallback_iface);
+}
+
static HRESULT WINAPI ProxyBindStatusCallback_QueryInterface(IBindStatusCallback *iface, REFIID riid, void **ppv)
{
if (IsEqualGUID(&IID_IBindStatusCallback, riid) ||
IsEqualGUID(&IID_IUnknown, riid))
{
*ppv = iface;
- IUnknown_AddRef(iface);
+ IBindStatusCallback_AddRef(iface);
return S_OK;
}
static HRESULT WINAPI ProxyBindStatusCallback_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved,
IBinding *pib)
{
- ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
+ ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
if(This->pBSC)
return IBindStatusCallback_OnStartBinding(This->pBSC, dwReserved, pib);
static HRESULT WINAPI ProxyBindStatusCallback_GetPriority(IBindStatusCallback *iface, LONG *pnPriority)
{
- ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
+ ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
if(This->pBSC)
return IBindStatusCallback_GetPriority(This->pBSC, pnPriority);
static HRESULT WINAPI ProxyBindStatusCallback_OnLowResource(IBindStatusCallback *iface, DWORD reserved)
{
- ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
+ ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
if(This->pBSC)
return IBindStatusCallback_OnLowResource(This->pBSC, reserved);
static HRESULT WINAPI ProxyBindStatusCallback_OnProgress(IBindStatusCallback *iface, ULONG ulProgress,
ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
{
- ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
+ ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
if(This->pBSC)
return IBindStatusCallback_OnProgress(This->pBSC, ulProgress,
static HRESULT WINAPI ProxyBindStatusCallback_OnStopBinding(IBindStatusCallback *iface, HRESULT hresult, LPCWSTR szError)
{
- ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
+ ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
if(This->pBSC)
return IBindStatusCallback_OnStopBinding(This->pBSC, hresult, szError);
static HRESULT WINAPI ProxyBindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
{
- ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
+ ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
if(This->pBSC)
return IBindStatusCallback_GetBindInfo(This->pBSC, grfBINDF, pbindinfo);
static HRESULT WINAPI ProxyBindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF,
DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed)
{
- ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
+ ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
if(This->pBSC)
return IBindStatusCallback_OnDataAvailable(This->pBSC, grfBSCF, dwSize,
static HRESULT WINAPI ProxyBindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk)
{
- ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
+ ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
if(This->pBSC)
return IBindStatusCallback_OnObjectAvailable(This->pBSC, riid, punk);
static HRESULT WINAPI AsyncBindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
{
- ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
+ ProxyBindStatusCallback *This = impl_from_IBindStatusCallback(iface);
HRESULT hr = IBindStatusCallback_GetBindInfo(This->pBSC, grfBINDF, pbindinfo);
*grfBINDF |= BINDF_PULLDATA | BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE;
return hr;
if (!szURL || !ppStream)
return E_INVALIDARG;
- blocking_bsc.lpVtbl = &BlockingBindStatusCallbackVtbl;
+ blocking_bsc.IBindStatusCallback_iface.lpVtbl = &BlockingBindStatusCallbackVtbl;
blocking_bsc.pBSC = lpfnCB;
- return URLStartDownload(szURL, ppStream, (IBindStatusCallback *)&blocking_bsc);
+ return URLStartDownload(szURL, ppStream, &blocking_bsc.IBindStatusCallback_iface);
}
/***********************************************************************
if (!szURL)
return E_INVALIDARG;
- async_bsc.lpVtbl = &AsyncBindStatusCallbackVtbl;
+ async_bsc.IBindStatusCallback_iface.lpVtbl = &AsyncBindStatusCallbackVtbl;
async_bsc.pBSC = lpfnCB;
- hr = URLStartDownload(szURL, &pStream, (IBindStatusCallback *)&async_bsc);
+ hr = URLStartDownload(szURL, &pStream, &async_bsc.IBindStatusCallback_iface);
if (SUCCEEDED(hr) && pStream)
IStream_Release(pStream);