windows-nt/Source/XPSP1/NT/base/ntsetup/oobe/msobcomm/webgate.h
2020-09-26 16:20:57 +08:00

95 lines
3.3 KiB
C++

// webgate.h : Declaration of the CWebGate
#ifndef __WEBGATE_H_
#define __WEBGATE_H_
#include <urlmon.h>
#include <wininet.h>
#include <shlwapi.h>
#include <windowsx.h>
#include "obcomglb.h"
/////////////////////////////////////////////////////////////////////////////
// CWebGate
class CWebGate : public IBindStatusCallback, IHttpNegotiate
{
public:
CWebGate ();
~CWebGate ();
// IUnknown methods
STDMETHODIMP QueryInterface (REFIID riid, void ** ppv);
STDMETHODIMP_(ULONG) AddRef ();
STDMETHODIMP_(ULONG) Release ();
// IBindStatusCallback methods
STDMETHODIMP OnStartBinding (DWORD dwReserved, IBinding* pbinding);
STDMETHODIMP GetPriority (LONG* pnPriority);
STDMETHODIMP OnLowResource (DWORD dwReserved);
STDMETHODIMP OnProgress (ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR pwzStatusText);
STDMETHODIMP OnStopBinding (HRESULT hrResult, LPCWSTR szError);
STDMETHODIMP GetBindInfo (DWORD* pgrfBINDF, BINDINFO* pbindinfo);
STDMETHODIMP OnDataAvailable (DWORD grfBSCF, DWORD dwSize, FORMATETC *pfmtetc, STGMEDIUM* pstgmed);
STDMETHODIMP OnObjectAvailable (REFIID riid, IUnknown* punk);
// IHttpNegotiate methods
STDMETHODIMP BeginningTransaction (LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR* pszAdditionalHeaders);
STDMETHODIMP OnResponse (DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, LPWSTR* pszAdditionalRequestHeaders);
//WebGate
STDMETHOD (get_DownloadFname) (BSTR *pVal);
STDMETHOD (FetchPage) (DWORD dwDoWait, BOOL *pbRetVal);
STDMETHOD (put_Path) (BSTR newVal);
private:
DWORD m_cRef;
IMoniker* m_pmk;
IBindCtx* m_pbc;
IStream* m_pstm;
BSTR m_bstrCacheFileName;
HANDLE m_hEventComplete;
HANDLE m_hEventError;
BSTR m_bstrPath;
void FlushCache();
};
/*
// ===========================================================================
// CWebGateBindStatusCallback Definition
//
// This class will be use to indicate download progress
//
// ===========================================================================
class CWebGateBindStatusCallback : public IBindStatusCallback
{
public:
// IUnknown methods
STDMETHODIMP QueryInterface (REFIID riid, void ** ppv);
STDMETHODIMP_(ULONG) AddRef ();
STDMETHODIMP_(ULONG) Release ();
// IBindStatusCallback methods
STDMETHODIMP OnStartBinding (DWORD dwReserved, IBinding* pbinding);
STDMETHODIMP GetPriority (LONG* pnPriority);
STDMETHODIMP OnLowResource (DWORD dwReserved);
STDMETHODIMP OnProgress (ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR pwzStatusText);
STDMETHODIMP OnStopBinding (HRESULT hrResult, LPCWSTR szError);
STDMETHODIMP GetBindInfo (DWORD* pgrfBINDF, BINDINFO* pbindinfo);
STDMETHODIMP OnDataAvailable (DWORD grfBSCF, DWORD dwSize, FORMATETC *pfmtetc, STGMEDIUM* pstgmed);
STDMETHODIMP OnObjectAvailable (REFIID riid, IUnknown* punk);
// constructors/destructors
CWebGateBindStatusCallback (CWebGate* lpWebGate);
~CWebGateBindStatusCallback ();
// data members
DWORD m_cRef;
IBinding* m_pbinding;
IStream* m_pstm;
CWebGate* m_lpWebGate;
};
*/
#endif //__WEBGATE_H_