windows-nt/Source/XPSP1/NT/shell/browseui/aclhist.h
2020-09-26 16:20:57 +08:00

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_