#ifndef __CDLBSC_INCLUDED__ #define __CDLBSC_INCLUDED__ class CDLAgentBSC : public IBindStatusCallback, public IServiceProvider, public IInternetHostSecurityManager { public: CDLAgentBSC(CCDLAgent *pcdlagent, DWORD dwMaxSizeKB, BOOL fSilentOperation, LPWSTR szCDFURL); virtual ~CDLAgentBSC(); HRESULT Abort(); HRESULT Pause(); HRESULT Resume(); // IUnknown methods STDMETHODIMP QueryInterface( REFIID ridd, void **ppv ); STDMETHODIMP_( ULONG ) AddRef(); STDMETHODIMP_( ULONG ) Release(); // IBindStatusCallback methods STDMETHODIMP GetBindInfo(DWORD *grfBINDINFOF, BINDINFO *pbindinfo); STDMETHODIMP OnStartBinding(DWORD grfBSCOption, IBinding *pib); STDMETHODIMP GetPriority(LONG *pnPriority); STDMETHODIMP OnProgress(ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText); STDMETHODIMP OnDataAvailable(DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed); STDMETHODIMP OnObjectAvailable(REFIID riid, IUnknown *punk); STDMETHODIMP OnLowResource(DWORD dwReserved); STDMETHODIMP OnStopBinding(HRESULT hresult, LPCWSTR szError); // IServiceProvider STDMETHODIMP QueryService(REFGUID rsid, REFIID riid, void ** ppvObj); // IInternetHostSecurityManager STDMETHODIMP GetSecurityId(BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved); STDMETHODIMP ProcessUrlAction(DWORD dwAction, BYTE *pPolicy, DWORD cbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwFlags, DWORD dwReserved); STDMETHODIMP QueryCustomPolicy(REFGUID guidKey, BYTE **ppPolicy, DWORD *pcbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwReserved); protected: IBinding *m_pIBinding; // ibinding from code dl'er CCDLAgent *m_pCdlAgent; DWORD m_cRef; BOOL m_fSilentOperation; DWORD m_dwMaxSize; WCHAR m_pwzCDFBase[INTERNET_MAX_URL_LENGTH]; IInternetSecurityManager *m_pSecMgr; }; #endif