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

64 lines
1.8 KiB
C++

#ifndef TRACK_INC_
#define TRACK_INC_
#include "urltrack.h"
typedef struct _LRecord
{
struct _LRecord *pNext;
LPTSTR pthisUrl; // URL name of this document
DWORD Context; // browsing from
BOOL fuseCache;
FILETIME ftIn;
}LRecord;
class CUrlTrackingStg : public IUrlTrackingStg
{
public:
CUrlTrackingStg ();
~CUrlTrackingStg (void);
// IUnknown methods
virtual STDMETHODIMP QueryInterface(REFIID riid, PVOID *ppvObj);
virtual STDMETHODIMP_(ULONG) AddRef(void);
virtual STDMETHODIMP_(ULONG) Release(void);
// IUrlTrackingStg methods
STDMETHODIMP OnLoad(LPCTSTR lpUrl, BRMODE ContextMode, BOOL fUseCache);
STDMETHODIMP OnUnload(LPCTSTR lpUrl);
protected:
LPINTERNET_CACHE_ENTRY_INFO QueryCacheEntry (LPCTSTR lpUrl);
HANDLE OpenLogFile (LPCTSTR lpFileName);
HRESULT UpdateLogFile(LRecord* pNode, SYSTEMTIME* pst);
LRecord* AddNode();
void DeleteAllNode();
void DeleteFirstNode();
void DeleteCurrentNode(LRecord *pThis);
LRecord* FindCurrentNode(LPCTSTR lpUrl);
void cleanup();
void ReadTrackingPrefix();
BOOL ConvertToPrefixedURL(LPCTSTR lpszUrl, LPTSTR *lplpPrefixedUrl);
HRESULT WininetWorkAround(LPCTSTR lpszUrl, LPCTSTR lpOldFile, LPTSTR lpFile);
void DetermineAppModule();
private:
DWORD _cRef;
HANDLE _hFile; // handle to log file
LRecord *_pRecords; // link list of tracked items
LPTSTR _lpPfx;
BOOL _fModule:1;
BOOL _fScreenSaver:1;
};
#endif // TRACK_INC_