64 lines
2.2 KiB
C++
64 lines
2.2 KiB
C++
/* Copyright 1996 Microsoft */
|
|
|
|
#ifndef _ACLHIST_H_
|
|
#define _ACLHIST_H_
|
|
|
|
// Enum options
|
|
enum
|
|
{
|
|
ACEO_ALTERNATEFORMS = ACEO_FIRSTUNUSED, // return alternate forms of the url
|
|
};
|
|
|
|
class CACLHistory
|
|
: public IEnumACString
|
|
{
|
|
public:
|
|
//////////////////////////////////////////////////////
|
|
// Public Interfaces
|
|
//////////////////////////////////////////////////////
|
|
|
|
// *** IUnknown ***
|
|
virtual STDMETHODIMP_(ULONG) AddRef(void);
|
|
virtual STDMETHODIMP_(ULONG) Release(void);
|
|
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
|
|
|
|
// *** IEnumString ***
|
|
virtual STDMETHODIMP Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched);
|
|
virtual STDMETHODIMP Skip(ULONG celt);
|
|
virtual STDMETHODIMP Reset(void);
|
|
virtual STDMETHODIMP Clone(IEnumString **ppenum);
|
|
|
|
// *** IEnumACString ***
|
|
virtual STDMETHODIMP NextItem(LPOLESTR pszUrl, ULONG cchMax, ULONG* pulSortIndex);
|
|
virtual STDMETHODIMP SetEnumOptions(DWORD dwOptions);
|
|
virtual STDMETHODIMP GetEnumOptions(DWORD *pdwOptions);
|
|
|
|
protected:
|
|
// Constructor / Destructor (protected so we can't create on stack)
|
|
CACLHistory(void);
|
|
~CACLHistory(void);
|
|
|
|
// Instance creator
|
|
friend HRESULT CACLHistory_CreateInstance(IUnknown *punkOuter, IUnknown **ppunk, LPCOBJECTINFO poi);
|
|
|
|
// Private variables
|
|
DWORD _cRef; // COM reference count
|
|
IUrlHistoryStg* _puhs; // URL History storage
|
|
IEnumSTATURL* _pesu; // URL enumerator
|
|
LPOLESTR _pwszAlternate; // Alternate string
|
|
FILETIME _ftAlternate; // Last visited time for _pwszAlternate
|
|
HDSA _hdsaAlternateData; // Contains alternate mappings
|
|
DWORD _dwOptions; // Options flag
|
|
|
|
// Private functions
|
|
HRESULT _Next(LPOLESTR* ppsz, ULONG cch, FILETIME* pftLastVisited);
|
|
void _CreateAlternateData(void);
|
|
void _CreateAlternateItem(LPCTSTR pszUrl);
|
|
void _SetAlternateItem(LPCTSTR pszUrl);
|
|
void _AddAlternateDataItem(LPCTSTR pszProtocol, LPCTSTR pszDomain, BOOL fMoveSlashes);
|
|
void _ReadAndSortHistory(void);
|
|
static int _FreeAlternateDataItem(LPVOID p, LPVOID d);
|
|
};
|
|
|
|
#endif // _ACLHIST_H_
|