You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.1 KiB
154 lines
4.1 KiB
// File: zonemgr.h
|
|
//
|
|
// Contents: This file defines the class that implements the base IInternetZoneManager
|
|
//
|
|
// Classes: CUrlZoneManager
|
|
//
|
|
// Functions:
|
|
//
|
|
// History:
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef _ZONEMGR_H_
|
|
#define _ZONEMGR_H_
|
|
|
|
class CUrlZoneManager : public IInternetZoneManager
|
|
{
|
|
public:
|
|
// IUnknown methods
|
|
STDMETHODIMP QueryInterface(REFIID iid, void **ppvObj);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
|
|
|
|
// IInternetZoneManager overrides
|
|
|
|
STDMETHODIMP GetZoneAttributes(
|
|
/* [in] */ DWORD dwZone,
|
|
/* [unique][out][in] */ ZONEATTRIBUTES *pZoneAttributes);
|
|
|
|
STDMETHODIMP SetZoneAttributes(
|
|
/* [in] */ DWORD dwZone,
|
|
/* [in] */ ZONEATTRIBUTES *pZoneAttributes);
|
|
|
|
STDMETHODIMP GetZoneCustomPolicy(
|
|
/* [in] */ DWORD dwZone,
|
|
/* [in] */ REFGUID guidKey,
|
|
/* [size_is][size_is][out] */ BYTE **ppPolicy,
|
|
/* [out] */ DWORD *pcbPolicy,
|
|
/* [in] */ URLZONEREG urlZoneReg);
|
|
|
|
STDMETHODIMP SetZoneCustomPolicy(
|
|
/* [in] */ DWORD dwZone,
|
|
/* [in] */ REFGUID guidKey,
|
|
/* [size_is][in] */ BYTE *pPolicy,
|
|
/* [in] */ DWORD cbPolicy,
|
|
/* [in] */ URLZONEREG urlZoneReg);
|
|
|
|
STDMETHODIMP GetZoneActionPolicy(
|
|
/* [in] */ DWORD dwZone,
|
|
/* [in] */ DWORD dwAction,
|
|
/* [size_is][out] */ BYTE *pPolicy,
|
|
/* [in] */ DWORD cbPolicy,
|
|
/* [in] */ URLZONEREG urlZoneReg);
|
|
|
|
STDMETHODIMP SetZoneActionPolicy(
|
|
/* [in] */ DWORD dwZone,
|
|
/* [in] */ DWORD dwAction,
|
|
/* [size_is][in] */ BYTE *pPolicy,
|
|
/* [in] */ DWORD cbPolicy,
|
|
/* [in] */ URLZONEREG urlZoneReg);
|
|
|
|
STDMETHODIMP PromptAction(
|
|
/* [in] */ DWORD dwAction,
|
|
/* [in] */ HWND hwndParent,
|
|
/* [in] */ LPCWSTR pwszUrl,
|
|
/* [in] */ LPCWSTR pwszText,
|
|
/* [in] */ DWORD dwPromptFlags);
|
|
|
|
STDMETHODIMP LogAction(
|
|
/* [in] */ DWORD dwAction,
|
|
/* [in] */ LPCWSTR pwszUrl,
|
|
/* [in] */ LPCWSTR pwszText,
|
|
/* [in] */ DWORD dwLogFlags);
|
|
|
|
STDMETHODIMP CreateZoneEnumerator(
|
|
/* [out] */ DWORD *pdwEnum,
|
|
/* [out] */ DWORD *pdwCount,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
STDMETHODIMP GetZoneAt(
|
|
/* [in] */ DWORD dwEnum,
|
|
/* [in] */ DWORD dwIndex,
|
|
/* [out] */ DWORD *pdwZone);
|
|
|
|
STDMETHODIMP DestroyZoneEnumerator(
|
|
/* [in] */ DWORD dwEnum);
|
|
|
|
STDMETHODIMP CopyTemplatePoliciesToZone(
|
|
/* [in] */ DWORD dwTemplate,
|
|
/* [in] */ DWORD dwZone,
|
|
/* [in] */ DWORD dwReserved);
|
|
|
|
|
|
public:
|
|
CUrlZoneManager(IUnknown *pUnkOuter, IUnknown** ppUnkInner );
|
|
virtual ~CUrlZoneManager();
|
|
virtual BOOL Initialize();
|
|
|
|
static inline BOOL Cleanup ( )
|
|
{ delete s_pRegZoneContainer ;
|
|
if ( s_bcsectInit ) DeleteCriticalSection(&s_csect) ;
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
static CRITICAL_SECTION s_csect;
|
|
static BOOL s_bcsectInit;
|
|
|
|
// Aggregation and RefCount support.
|
|
protected:
|
|
CRefCount m_ref;
|
|
|
|
class CPrivUnknown : public IUnknown
|
|
{
|
|
public:
|
|
STDMETHOD(QueryInterface) ( REFIID riid, LPVOID FAR* ppvObj);
|
|
STDMETHOD_(ULONG,AddRef) (void);
|
|
STDMETHOD_(ULONG,Release) (void);
|
|
|
|
~CPrivUnknown() {}
|
|
CPrivUnknown() : m_ref () {}
|
|
|
|
private:
|
|
CRefCount m_ref; // the total refcount of this object
|
|
};
|
|
|
|
friend class CPrivUnknown;
|
|
CPrivUnknown m_Unknown;
|
|
|
|
IUnknown* m_pUnkOuter;
|
|
|
|
STDMETHODIMP_(ULONG) PrivAddRef()
|
|
{
|
|
return m_Unknown.AddRef();
|
|
}
|
|
STDMETHODIMP_(ULONG) PrivRelease()
|
|
{
|
|
return m_Unknown.Release();
|
|
}
|
|
|
|
|
|
protected:
|
|
static CRegZoneContainer* s_pRegZoneContainer;
|
|
static inline CRegZone * GetRegZoneById(DWORD dw)
|
|
{ return s_pRegZoneContainer->GetRegZoneById(dw); }
|
|
|
|
private:
|
|
IServiceProvider *m_pSP;
|
|
};
|
|
|
|
#endif // _ZONEMGR_H_
|