Leaked source code of windows server 2003
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

// 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_