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

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_