160 lines
4.4 KiB
C
160 lines
4.4 KiB
C
//
|
|
// Local private header file
|
|
|
|
#ifndef _LOCAL_H_
|
|
#define _LOCAL_H_
|
|
|
|
#include "priv.h"
|
|
|
|
#define CONST_VTABLE
|
|
|
|
// Max urlcache entry we will deal with.
|
|
|
|
//#define MAX_URLCACHE_ENTRY 4096
|
|
#define MAX_URLCACHE_ENTRY MAX_CACHE_ENTRY_INFO_SIZE // from wininet.h
|
|
|
|
// PIDL format for cache folder...
|
|
typedef struct
|
|
{
|
|
USHORT cb;
|
|
USHORT usSign;
|
|
} BASEPIDL;
|
|
typedef UNALIGNED BASEPIDL *LPBASEPIDL;
|
|
|
|
// If TITLE, etc in LPHEIPIDL is good, vs we have to QueryUrl for it
|
|
#define HISTPIDL_VALIDINFO (0x1)
|
|
|
|
// PIDL format for history leaf folder...
|
|
typedef struct
|
|
{
|
|
USHORT cb;
|
|
USHORT usSign;
|
|
USHORT usUrl;
|
|
USHORT usFlags;
|
|
USHORT usTitle;
|
|
FILETIME ftModified;
|
|
FILETIME ftLastVisited;
|
|
DWORD dwNumHits;
|
|
__int64 llPriority;
|
|
} HEIPIDL;
|
|
typedef UNALIGNED HEIPIDL *LPHEIPIDL;
|
|
|
|
// PIDL format for history non leaf items...
|
|
typedef struct
|
|
{
|
|
USHORT cb;
|
|
USHORT usSign;
|
|
TCHAR szID[MAX_PATH];
|
|
} HIDPIDL;
|
|
typedef UNALIGNED HIDPIDL *LPHIDPIDL;
|
|
|
|
// PIDL format for "views"
|
|
typedef struct
|
|
{
|
|
USHORT cb;
|
|
USHORT usSign;
|
|
USHORT usViewType;
|
|
USHORT usExtra; // reserved for later use.
|
|
} VIEWPIDL;
|
|
typedef UNALIGNED VIEWPIDL *LPVIEWPIDL;
|
|
|
|
typedef struct /* : VIEWPIDL*/
|
|
{
|
|
// histpidl
|
|
USHORT cb;
|
|
USHORT usSign; /* must be == VIEWPIDL_SEARCH */
|
|
// viewpidl
|
|
USHORT usViewType;
|
|
USHORT usExtra;
|
|
// viewpidl_search
|
|
FILETIME ftSearchKey;
|
|
} SEARCHVIEWPIDL;
|
|
typedef UNALIGNED SEARCHVIEWPIDL *LPSEARCHVIEWPIDL;
|
|
|
|
// VIEWPIDL types
|
|
#define VIEWPIDL_ORDER_SITE 1//0x2
|
|
#define VIEWPIDL_ORDER_FREQ 2//0x3
|
|
#define VIEWPIDL_ORDER_TODAY 3//0x1
|
|
#define VIEWPIDL_ORDER_MAX 3 // highest VIEWPIDL
|
|
|
|
// Search View > VIEWPIDL_ORDER_MAX because its
|
|
// not enumerated with the rest of the views
|
|
// (esentially its not a "view" to the caller,
|
|
// but this is how its implemented under the hood)
|
|
#define VIEWPIDL_SEARCH 0x4C44
|
|
|
|
// FILETIME secticks
|
|
#define FILE_SEC_TICKS (10000000)
|
|
// SECS PER DAY
|
|
#define DAY_SECS (24*60*60)
|
|
|
|
// Due hack used in shdocvw for recognizing LOCATION pidl, make sure neither byte
|
|
// has 4's and 1's bit set (ie 0x50 & value == 0 for both bytes)
|
|
#define CEIPIDL_SIGN 0x6360 //cP
|
|
#define IDIPIDL_SIGN 0x6369 //ci interval id
|
|
#define IDTPIDL_SIGN 0x6364 //cd interval id (TODAY)
|
|
#define IDDPIDL_SIGN 0x6365 //ce domain id
|
|
#define HEIPIDL_SIGN 0x6368 //ch history leaf pidl
|
|
#define VIEWPIDL_SIGN 0x6366 /*mm: this is a "history view" pidl to allow
|
|
multiple 'views' on the history */
|
|
#define FSWPIDL_SIGN 0x6367
|
|
|
|
#define VALID_IDSIGN(usSign) ((usSign) == IDIPIDL_SIGN || (usSign) == IDTPIDL_SIGN || (usSign) == IDDPIDL_SIGN)
|
|
#define EQUIV_IDSIGN(usSign1,usSign2) ((usSign1)==(usSign2)|| \
|
|
((usSign1)==IDIPIDL_SIGN && (usSign2)==IDTPIDL_SIGN)|| \
|
|
((usSign2)==IDIPIDL_SIGN && (usSign1)==IDTPIDL_SIGN))
|
|
|
|
#define IS_VALID_VIEWPIDL(pidl) ( (((LPBASEPIDL)pidl)->cb >= sizeof(VIEWPIDL)) && \
|
|
(((LPBASEPIDL)pidl)->usSign == (USHORT)VIEWPIDL_SIGN) )
|
|
#define IS_EQUAL_VIEWPIDL(pidl1,pidl2) ((IS_VALID_VIEWPIDL(pidl1)) && (IS_VALID_VIEWPIDL(pidl2)) && \
|
|
(((LPVIEWPIDL)pidl1)->usViewType == ((LPVIEWPIDL)pidl2)->usViewType) && \
|
|
(((LPVIEWPIDL)pidl1)->usExtra == ((LPVIEWPIDL)pidl2)->usExtra))
|
|
|
|
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
|
|
|
|
|
|
#define _ILSkip(pidl, cb) ((LPITEMIDLIST)(((BYTE*)(pidl))+cb))
|
|
#define _ILNext(pidl) _ILSkip(pidl, (pidl)->mkid.cb)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// Abandon mutex after 2 minutes of waiting
|
|
#define FAILSAFE_TIMEOUT (120000)
|
|
|
|
extern HANDLE g_hMutexHistory;
|
|
extern const CHAR c_szOpen[];
|
|
extern const CHAR c_szDelcache[];
|
|
extern const CHAR c_szProperties[];
|
|
extern const CHAR c_szCopy[];
|
|
extern const TCHAR c_szHistPrefix[];
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
|
|
typedef enum
|
|
{
|
|
FOLDER_TYPE_Hist = 1,
|
|
FOLDER_TYPE_HistInterval,
|
|
FOLDER_TYPE_HistDomain,
|
|
FOLDER_TYPE_HistItem
|
|
} FOLDER_TYPE;
|
|
|
|
#define IsLeaf(x) (x == FOLDER_TYPE_HistDomain)
|
|
#define IsHistoryFolder(x) (x==FOLDER_TYPE_Hist||x==FOLDER_TYPE_HistInterval||x==FOLDER_TYPE_HistDomain)
|
|
|
|
//IE64 compatible pointer difference
|
|
#define PtrDifference(x,y) ((LPBYTE)(x)-(LPBYTE)(y))
|
|
|
|
//BOOL DeleteUrlCacheEntry(LPCSTR lpszUrlName);
|
|
|
|
#include "hsfutils.h" // NOTE: must come at end to get all the definitions
|
|
|
|
#endif // _LOCAL_H_
|
|
|