//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1995. // // File: call_as.c wrapper functions for urlmon // // Contents: // // Classes: // // Functions: // // History: 1-08-96 JohannP (Johann Posch) Created // //---------------------------------------------------------------------------- #include #include "transmit.h" //+--------------------------------------------------------------------------- // // Function: IBindHost_MonikerBindToStorage_Proxy // // Synopsis: // // Arguments: [This] -- // [pMk] -- // [pBC] -- // [pBSC] -- // [riid] -- // [ppvObj] -- // // Returns: // // History: 7-23-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBindHost_MonikerBindToStorage_Proxy( IBindHost __RPC_FAR * This, /* [in] */ IMoniker __RPC_FAR *pMk, /* [in] */ IBindCtx __RPC_FAR *pBC, /* [in] */ IBindStatusCallback __RPC_FAR *pBSC, /* [in] */ REFIID riid, /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj) { HRESULT hr; TransDebugOut((DEB_DATA,"%p _IN IBindHost_MonikerBindToStorage_Proxy\n",This)); *ppvObj = 0; hr = IBindHost_RemoteMonikerBindToStorage_Proxy(This, pMk, pBC, pBSC, riid, (IUnknown **)ppvObj); TransDebugOut((DEB_DATA,"%p OUT IBindHost_MonikerBindToStorage_Proxy (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IBindHost_MonikerBindToStorage_Stub // // Synopsis: // // Arguments: [This] -- // [pMk] -- // [pBC] -- // [pBSC] -- // [riid] -- // [ppUnk] -- // // Returns: // // History: 7-23-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBindHost_MonikerBindToStorage_Stub( IBindHost __RPC_FAR * This, /* [unique][in] */ IMoniker __RPC_FAR *pMk, /* [unique][in] */ IBindCtx __RPC_FAR *pBC, /* [unique][in] */ IBindStatusCallback __RPC_FAR *pBSC, /* [in] */ REFIID riid, /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk) { HRESULT hr; TransDebugOut((DEB_DATA,"%p _IN IBindHost_MonikerBindToStorage_Stub\n",This)); hr = This->MonikerBindToStorage(pMk, pBC, pBSC, riid, (void **)ppUnk); if (FAILED(hr)) { TransAssert((*ppUnk == 0)); *ppUnk = 0; } TransDebugOut((DEB_DATA,"%p OUT IBindHost_MonikerBindToStorage_Stub (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IBindHost_MonikerBindToObject_Proxy // // Synopsis: // // Arguments: [This] -- // [pMk] -- // [pBC] -- // [pBSC] -- // [riid] -- // [ppvObj] -- // // Returns: // // History: 7-23-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBindHost_MonikerBindToObject_Proxy( IBindHost __RPC_FAR * This, /* [in] */ IMoniker __RPC_FAR *pMk, /* [in] */ IBindCtx __RPC_FAR *pBC, /* [in] */ IBindStatusCallback __RPC_FAR *pBSC, /* [in] */ REFIID riid, /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj) { HRESULT hr; TransDebugOut((DEB_DATA,"%p _IN IBindHost_MonikerBindToObject_Proxy\n",This)); *ppvObj = 0; hr = IBindHost_RemoteMonikerBindToObject_Proxy(This, pMk, pBC, pBSC, riid, (IUnknown **)ppvObj); TransDebugOut((DEB_DATA,"%p OUT IBindHost_MonikerBindToObject_Proxy (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IBindHost_MonikerBindToObject_Stub // // Synopsis: // // Arguments: [This] -- // [pMk] -- // [pBC] -- // [pBSC] -- // [riid] -- // [ppUnk] -- // // Returns: // // History: 7-23-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBindHost_MonikerBindToObject_Stub( IBindHost __RPC_FAR * This, /* [unique][in] */ IMoniker __RPC_FAR *pMk, /* [unique][in] */ IBindCtx __RPC_FAR *pBC, /* [unique][in] */ IBindStatusCallback __RPC_FAR *pBSC, /* [in] */ REFIID riid, /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk) { HRESULT hr; TransDebugOut((DEB_DATA,"%p _IN IBindHost_MonikerBindToObject_Stub\n",This)); hr = This->MonikerBindToObject(pMk, pBC, pBSC, riid, (void **)ppUnk); if (FAILED(hr)) { TransAssert((*ppUnk == 0)); *ppUnk = 0; } TransDebugOut((DEB_DATA,"%p OUT IBindHost_MonikerBindToObject_Stub (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IBindStatusCallback_GetBindInfo_Proxy // // Synopsis: // // Arguments: [This] -- // [grfBINDF] -- // [pbindinfo] -- // // Returns: // // History: 7-23-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBindStatusCallback_GetBindInfo_Proxy( IBindStatusCallback __RPC_FAR * This, /* [out] */ DWORD __RPC_FAR *grfBINDF, /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo) { TransDebugOut((DEB_DATA,"%p _IN IBindStatusCallback_GetBindInfo_Proxy\n",This)); HRESULT hr; RemSTGMEDIUM RemoteMedium; RemSTGMEDIUM *pRemoteMedium = &RemoteMedium; RemBINDINFO RemoteBindInfo; RemBINDINFO *pRemoteBindInfo = &RemoteBindInfo; hr = NOERROR; memset(&RemoteBindInfo, 0, sizeof(RemoteBindInfo)); __try { RemoteBindInfo.cbSize = pbindinfo->cbSize ; RemoteBindInfo.szExtraInfo = pbindinfo->szExtraInfo ; RemoteBindInfo.grfBindInfoF = pbindinfo->grfBindInfoF; RemoteBindInfo.dwBindVerb = pbindinfo->dwBindVerb ; RemoteBindInfo.szCustomVerb = pbindinfo->szCustomVerb; RemoteBindInfo.cbstgmedData = pbindinfo->cbstgmedData; RemoteBindInfo.iid = IID_NULL; STGMEDIUM_to_xmit(&(pbindinfo->stgmedData), (RemSTGMEDIUM **) &pRemoteMedium); hr = IBindStatusCallback_RemoteGetBindInfo_Proxy(This, grfBINDF, pRemoteBindInfo,pRemoteMedium); if (hr == NOERROR) { pbindinfo->szExtraInfo = pRemoteBindInfo->szExtraInfo ; pbindinfo->grfBindInfoF= pRemoteBindInfo->grfBindInfoF ; pbindinfo->dwBindVerb = pRemoteBindInfo->dwBindVerb ; pbindinfo->szCustomVerb= pRemoteBindInfo->szCustomVerb ; pbindinfo->cbstgmedData= pRemoteBindInfo->cbstgmedData ; if ( pbindinfo->cbSize > URLMONOFFSETOF(BINDINFO, dwReserved) ) { pbindinfo->pUnk = 0; pbindinfo->dwReserved = pRemoteBindInfo->dwReserved; pbindinfo->dwOptions = pRemoteBindInfo->dwOptions ; pbindinfo->dwOptionsFlags = pRemoteBindInfo->dwOptionsFlags; pbindinfo->dwCodePage = pRemoteBindInfo->dwCodePage; pbindinfo->iid = IID_NULL; } STGMEDIUM_from_xmit( (RemSTGMEDIUM *) pRemoteMedium, &(pbindinfo->stgmedData)); } else { } } __except(EXCEPTION_EXECUTE_HANDLER) { //Just ignore the exception. } #ifdef unix __endexcept #endif /* unix */ TransDebugOut((DEB_DATA,"%p OUT IBindStatusCallback_GetBindInfo_Proxy (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IBindStatusCallback_GetBindInfo_Stub // // Synopsis: // // Arguments: [This] -- // [grfBINDF] -- // [pbindinfo] -- // [pRemstgmed] -- // // Returns: // // History: 7-23-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBindStatusCallback_GetBindInfo_Stub( IBindStatusCallback __RPC_FAR * This, /* [out] */ DWORD __RPC_FAR *grfBINDF, /* [unique][out][in] */ RemBINDINFO __RPC_FAR *prembindinfo, /* [unique][out][in] */ RemSTGMEDIUM __RPC_FAR *pRemstgmed ) { TransDebugOut((DEB_DATA,"%p _IN IBindStatusCallback_GetBindInfo_Stub\n",This)); HRESULT hr; BINDINFO BindInfo; STGMEDIUM *pstgmed = NULL; hr = NOERROR; memset(&BindInfo, 0, sizeof(BindInfo)); __try { BindInfo.cbSize = prembindinfo->cbSize ; BindInfo.szExtraInfo = prembindinfo->szExtraInfo ; BindInfo.grfBindInfoF = prembindinfo->grfBindInfoF; BindInfo.dwBindVerb = prembindinfo->dwBindVerb ; BindInfo.szCustomVerb = prembindinfo->szCustomVerb; BindInfo.cbstgmedData = prembindinfo->cbstgmedData; BindInfo.iid = IID_NULL; if ( prembindinfo->cbSize >= URLMONOFFSETOF(BINDINFO, dwReserved) ) { BindInfo.dwOptions = prembindinfo->dwOptions; BindInfo.dwOptionsFlags = prembindinfo->dwOptionsFlags; } memset(&(BindInfo.stgmedData), 0 , sizeof(BindInfo.stgmedData)); BindInfo.stgmedData.tymed = TYMED_NULL; hr = This->GetBindInfo(grfBINDF, &BindInfo); if (hr == NOERROR) { pstgmed = &BindInfo.stgmedData; TransAssert(( (pstgmed->tymed == TYMED_NULL && pstgmed->pUnkForRelease == NULL) || (pstgmed->tymed != TYMED_NULL) )); if (pstgmed->tymed != TYMED_NULL) { //Convert an STGMEDIUM to a RemSTGMEDIUM // structure so it can be sent STGMEDIUM_to_xmit(pstgmed,&pRemstgmed); } prembindinfo->szExtraInfo = BindInfo.szExtraInfo ; prembindinfo->grfBindInfoF = BindInfo.grfBindInfoF ; prembindinfo->dwBindVerb = BindInfo.dwBindVerb ; prembindinfo->szCustomVerb = BindInfo.szCustomVerb ; prembindinfo->cbstgmedData = BindInfo.cbstgmedData ; if ( prembindinfo->cbSize > URLMONOFFSETOF(BINDINFO, dwReserved) ) { prembindinfo->dwReserved = BindInfo.dwReserved; prembindinfo->dwOptions = BindInfo.dwOptions; prembindinfo->dwOptionsFlags = BindInfo.dwOptionsFlags; prembindinfo->iid = IID_NULL; prembindinfo->pUnk = 0; prembindinfo->dwCodePage = BindInfo.dwCodePage; } } } __finally { } #ifdef unix __endfinally #endif /* unix */ TransDebugOut((DEB_DATA,"%p OUT IBindStatusCallback_GetBindInfo_Stub (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IBindStatusCallback_OnDataAvailable_Proxy // // Synopsis: // // Arguments: [This] -- // [grfBSCF] -- // [dwSize] -- // [pformatetc] -- // [pstgmed] -- // // Returns: // // History: 7-23-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnDataAvailable_Proxy( IBindStatusCallback __RPC_FAR * This, /* [in] */ DWORD grfBSCF, /* [in] */ DWORD dwSize, /* [in] */ FORMATETC __RPC_FAR *pformatetc, /* [in] */ STGMEDIUM __RPC_FAR *pstgmed) { TransDebugOut((DEB_DATA,"%p _IN IBindStatusCallback_OnDataAvailable_Proxy\n",This)); HRESULT hr; RemSTGMEDIUM *pRemoteMedium = 0; RemFORMATETC *pRemoteformatetc = 0; RemFORMATETC Remoteformatetc; hr = NOERROR; __try { Remoteformatetc.cfFormat = (DWORD)pformatetc->cfFormat; Remoteformatetc.ptd = 0; Remoteformatetc.dwAspect = pformatetc->dwAspect; Remoteformatetc.lindex = pformatetc->lindex; Remoteformatetc.tymed = pformatetc->tymed; pRemoteformatetc = &Remoteformatetc; STGMEDIUM_to_xmit(pstgmed, (RemSTGMEDIUM **) &pRemoteMedium); hr = IBindStatusCallback_RemoteOnDataAvailable_Proxy(This, grfBSCF, dwSize, pRemoteformatetc, pRemoteMedium); } __except(EXCEPTION_EXECUTE_HANDLER) { //Just ignore the exception. } #ifdef unix __endexcept #endif /* unix */ if(pRemoteMedium != 0) { CoTaskMemFree(pRemoteMedium); pRemoteMedium = 0; } TransDebugOut((DEB_DATA,"%p OUT IBindStatusCallback_OnDataAvailable_Proxy (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IBindStatusCallback_OnDataAvailable_Stub // // Synopsis: // // Arguments: [This] -- // [grfBSCF] -- // [dwSize] -- // [pformatetc] -- // [pstgmed] -- // // Returns: // // History: 7-23-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnDataAvailable_Stub( IBindStatusCallback __RPC_FAR * This, /* [in] */ DWORD grfBSCF, /* [in] */ DWORD dwSize, /* [in] */ RemFORMATETC *pformatetc, /* [in] */ RemSTGMEDIUM __RPC_FAR *pstgmed) { TransDebugOut((DEB_DATA,"%p _IN IBindStatusCallback_OnDataAvailable_Stub\n",This)); HRESULT hr; STGMEDIUM medium; FORMATETC formatetc; hr = NOERROR; __try { formatetc.cfFormat = (CLIPFORMAT) pformatetc->cfFormat; formatetc.ptd = NULL; formatetc.dwAspect = pformatetc->dwAspect; formatetc.lindex = pformatetc->lindex ; formatetc.tymed = pformatetc->tymed ; memset(&medium, 0, sizeof(medium)); STGMEDIUM_from_xmit (pstgmed, &medium); This->OnDataAvailable(grfBSCF, dwSize, &formatetc, &medium); } __finally { STGMEDIUM_free_inst(&medium); } #ifdef unix __endfinally #endif /* unix */ TransDebugOut((DEB_DATA,"%p OUT IBindStatusCallback_OnDataAvailable_Stub (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IBinding_GetBindResult_Proxy // // Synopsis: // // Arguments: [This] -- // [pclsidProtocol] -- // [pdwResult] -- // [pszResult] -- // [pdwReserved] -- // // Returns: // // History: 7-25-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBinding_GetBindResult_Proxy( IBinding __RPC_FAR * This, /* [out] */ CLSID __RPC_FAR *pclsidProtocol, /* [out] */ DWORD __RPC_FAR *pdwResult, /* [out] */ LPOLESTR __RPC_FAR *pszResult, /* [out][in] */ DWORD __RPC_FAR *pdwReserved) { TransDebugOut((DEB_DATA,"%p _IN IBindStatusCallbackMsg_GetBindResult_Proxy\n",This)); HRESULT hr; __try { hr = IBinding_RemoteGetBindResult_Proxy( This, pclsidProtocol, pdwResult, pszResult, NULL); } __except(EXCEPTION_EXECUTE_HANDLER) { //Just ignore the exception. } #ifdef unix __endexcept #endif /* unix */ TransDebugOut((DEB_DATA,"%p OUT IBindStatusCallbackMsg_GetBindResult_Proxy (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IBinding_GetBindResult_Stub // // Synopsis: // // Arguments: [This] -- // [pclsidProtocol] -- // [pdwResult] -- // [pszResult] -- // [dwReserved] -- // // Returns: // // History: 7-25-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IBinding_GetBindResult_Stub( IBinding __RPC_FAR * This, /* [out] */ CLSID __RPC_FAR *pclsidProtocol, /* [out] */ DWORD __RPC_FAR *pdwResult, /* [out] */ LPOLESTR __RPC_FAR *pszResult, /* [in] */ DWORD dwReserved) { TransDebugOut((DEB_DATA,"%p _IN IBindStatusCallbackMsg_RemoteGetBindResult_Stub\n",This)); HRESULT hr; hr = NOERROR; MSG msg; __try { This->GetBindResult( pclsidProtocol, pdwResult, pszResult, NULL); } __finally { } #ifdef unix __endfinally #endif /* unix */ TransDebugOut((DEB_DATA,"%p OUT IBindStatusCallbackMsg_RemoteGetBindResult_Stub (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IWinInetHttpInfo_QueryInfo_Proxy // // Synopsis: // // Arguments: [This] -- // [dwOption] -- // [pBuffer] -- // [pcbBuf] -- // [pdwFlags] -- // [pdwReserved] -- // // Returns: // // History: 9-20-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IWinInetHttpInfo_QueryInfo_Proxy( IWinInetHttpInfo __RPC_FAR * This, /* [in] */ DWORD dwOption, /* [size_is][out] */ LPVOID pBuffer, /* [out][in] */ DWORD __RPC_FAR *pcbBuf, /* [out][in] */ DWORD __RPC_FAR *pdwFlags, /* [out][in] */ DWORD __RPC_FAR *pdwReserved) { TransDebugOut((DEB_DATA,"%p _IN IWinInetHttpInfo_QueryInfo_Proxy\n",This)); HRESULT hr; if (!pcbBuf || (!pBuffer && *pcbBuf != 0)) { hr = E_INVALIDARG; } else { DWORD dwBuffer = 0; DWORD dwFlags = 0; DWORD dwReserved = 0; if (pdwFlags == NULL) { pdwFlags = &dwFlags; } if (pdwReserved == NULL) { pdwReserved = &dwReserved; } if (pBuffer == NULL) { pBuffer = &dwBuffer; } hr = IWinInetHttpInfo_RemoteQueryInfo_Proxy(This, dwOption, (BYTE*)pBuffer, pcbBuf,pdwFlags,pdwReserved); } TransDebugOut((DEB_DATA,"%p OUT IWinInetHttpInfo_QueryInfo_Proxy (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IWinInetHttpInfo_QueryInfo_Stub // // Synopsis: // // Arguments: [This] -- // [dwOption] -- // [pBuffer] -- // [pcbBuf] -- // [pdwFlags] -- // [pdwReserved] -- // // Returns: // // History: 9-20-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IWinInetHttpInfo_QueryInfo_Stub( IWinInetHttpInfo __RPC_FAR * This, /* [in] */ DWORD dwOption, /* [size_is][out] */ BYTE __RPC_FAR *pBuffer, /* [out][in] */ DWORD __RPC_FAR *pcbBuf, /* [out][in] */ DWORD __RPC_FAR *pdwFlags, /* [out][in] */ DWORD __RPC_FAR *pdwReserved) { TransDebugOut((DEB_DATA,"%p _IN IWinInetHttpInfo_QueryInfo_Stub\n",This)); HRESULT hr; hr = This->QueryInfo(dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved); TransDebugOut((DEB_DATA,"%p OUT IWinInetHttpInfo_QueryInfo_Stub (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IWinInetInfo_QueryOption_Proxy // // Synopsis: // // Arguments: [This] -- // [dwOption] -- // [pBuffer] -- // [pcbBuf] -- // // Returns: // // History: 9-20-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IWinInetInfo_QueryOption_Proxy( IWinInetInfo __RPC_FAR * This, /* [in] */ DWORD dwOption, /* [size_is][out] */ LPVOID pBuffer, /* [out][in] */ DWORD *pcbBuf) { TransDebugOut((DEB_DATA,"%p _IN IWinInetInfo_QueryOption_Proxy\n",This)); HRESULT hr; if (!pcbBuf || (!pBuffer && *pcbBuf != 0)) { hr = E_INVALIDARG; } else { DWORD dwBuffer = 0; if (pBuffer == NULL) { pBuffer = &dwBuffer; } hr = IWinInetInfo_RemoteQueryOption_Proxy(This,dwOption, (BYTE*)pBuffer,pcbBuf); } TransDebugOut((DEB_DATA,"%p OUT IWinInetInfo_QueryOption_Proxy (hr:%lx)\n",This, hr)); return hr; } //+--------------------------------------------------------------------------- // // Function: IWinInetInfo_QueryOption_Stub // // Synopsis: // // Arguments: [This] -- // [dwOption] -- // [pBuffer] -- // [pcbBuf] -- // // Returns: // // History: 9-20-96 JohannP (Johann Posch) Created // // Notes: // //---------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE IWinInetInfo_QueryOption_Stub( IWinInetInfo __RPC_FAR * This, /* [in] */ DWORD dwOption, /* [size_is][out] */ BYTE __RPC_FAR *pBuffer, /* [out][in] */ DWORD __RPC_FAR *pcbBuf) { TransDebugOut((DEB_DATA,"%p _IN IWinInetInfo_QueryOption_Stub\n",This)); HRESULT hr; hr = This->QueryOption(dwOption,pBuffer,pcbBuf); TransDebugOut((DEB_DATA,"%p OUT IWinInetInfo_QueryOption_Stub (hr:%lx)\n",This, hr)); return hr; }