You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1322 lines
39 KiB
1322 lines
39 KiB
/*++
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
cache.hxx
|
|
|
|
Abstract:
|
|
|
|
master include file.
|
|
|
|
Author:
|
|
|
|
Madan Appiah (madana) 12-Apr-1995
|
|
|
|
Environment:
|
|
|
|
User Mode - Win32
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _CACHE_HXX_
|
|
#define _CACHE_HXX_
|
|
|
|
// ---- start of wininet.h includes
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if !defined(_WINX32_)
|
|
#define URLCACHEAPI DECLSPEC_IMPORT
|
|
#else
|
|
#define URLCACHEAPI
|
|
#endif
|
|
|
|
//
|
|
// cache flags
|
|
//
|
|
|
|
#define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000 // don't write this item to the cache
|
|
#define INTERNET_FLAG_DONT_CACHE INTERNET_FLAG_NO_CACHE_WRITE
|
|
#define INTERNET_FLAG_MAKE_PERSISTENT 0x02000000 // make this item persistent in cache
|
|
#define INTERNET_FLAG_FROM_CACHE 0x01000000 // use offline semantics
|
|
#define INTERNET_FLAG_OFFLINE INTERNET_FLAG_FROM_CACHE
|
|
|
|
//
|
|
// more caching flags
|
|
//
|
|
|
|
#define INTERNET_FLAG_RESYNCHRONIZE 0x00000800 // asking wininet to update an item if it is newer
|
|
#define INTERNET_FLAG_HYPERLINK 0x00000400 // asking wininet to do hyperlinking semantic which works right for scripts
|
|
#define INTERNET_FLAG_NO_UI 0x00000200 // no cookie popup
|
|
#define INTERNET_FLAG_PRAGMA_NOCACHE 0x00000100 // asking wininet to add "pragma: no-cache"
|
|
#define INTERNET_FLAG_CACHE_ASYNC 0x00000080 // ok to perform lazy cache-write
|
|
#define INTERNET_FLAG_FORMS_SUBMIT 0x00000040 // this is a forms submit
|
|
#define INTERNET_FLAG_FWD_BACK 0x00000020 // fwd-back button op
|
|
#define INTERNET_FLAG_NEED_FILE 0x00000010 // need a file for this request
|
|
#define INTERNET_FLAG_MUST_CACHE_REQUEST INTERNET_FLAG_NEED_FILE
|
|
|
|
//
|
|
// URLCACHE APIs
|
|
//
|
|
|
|
//
|
|
// datatype definitions.
|
|
//
|
|
|
|
//
|
|
// cache entry type flags.
|
|
//
|
|
|
|
#define NORMAL_CACHE_ENTRY 0x00000001
|
|
#define STICKY_CACHE_ENTRY 0x00000004
|
|
#define EDITED_CACHE_ENTRY 0x00000008
|
|
#define TRACK_OFFLINE_CACHE_ENTRY 0x00000010
|
|
#define TRACK_ONLINE_CACHE_ENTRY 0x00000020
|
|
#define SPARSE_CACHE_ENTRY 0x00010000
|
|
#define COOKIE_CACHE_ENTRY 0x00100000
|
|
#define URLHISTORY_CACHE_ENTRY 0x00200000
|
|
|
|
|
|
#define URLCACHE_FIND_DEFAULT_FILTER NORMAL_CACHE_ENTRY \
|
|
| COOKIE_CACHE_ENTRY \
|
|
| URLHISTORY_CACHE_ENTRY \
|
|
| TRACK_OFFLINE_CACHE_ENTRY \
|
|
| TRACK_ONLINE_CACHE_ENTRY \
|
|
| STICKY_CACHE_ENTRY
|
|
|
|
|
|
|
|
//
|
|
// INTERNET_CACHE_ENTRY_INFO -
|
|
//
|
|
|
|
#if _MSC_VER >= 1200
|
|
#pragma warning(push)
|
|
#endif
|
|
#pragma warning(disable:4201)
|
|
|
|
typedef struct _INTERNET_CACHE_ENTRY_INFOA {
|
|
DWORD dwStructSize; // version of cache system.
|
|
LPSTR lpszSourceUrlName; // embedded pointer to the URL name string.
|
|
LPSTR lpszLocalFileName; // embedded pointer to the local file name.
|
|
DWORD CacheEntryType; // cache type bit mask.
|
|
DWORD dwUseCount; // current users count of the cache entry.
|
|
DWORD dwHitRate; // num of times the cache entry was retrieved.
|
|
DWORD dwSizeLow; // low DWORD of the file size.
|
|
DWORD dwSizeHigh; // high DWORD of the file size.
|
|
FILETIME LastModifiedTime; // last modified time of the file in GMT format.
|
|
FILETIME ExpireTime; // expire time of the file in GMT format
|
|
FILETIME LastAccessTime; // last accessed time in GMT format
|
|
FILETIME LastSyncTime; // last time the URL was synchronized
|
|
// with the source
|
|
LPSTR lpHeaderInfo; // embedded pointer to the header info.
|
|
DWORD dwHeaderInfoSize; // size of the above header.
|
|
LPSTR lpszFileExtension; // File extension used to retrive the urldata as a file.
|
|
union { // Exemption delta from last access time.
|
|
DWORD dwReserved;
|
|
DWORD dwExemptDelta;
|
|
}; // Exemption delta from last access
|
|
} INTERNET_CACHE_ENTRY_INFOA, * LPINTERNET_CACHE_ENTRY_INFOA;
|
|
typedef struct _INTERNET_CACHE_ENTRY_INFOW {
|
|
DWORD dwStructSize; // version of cache system.
|
|
LPWSTR lpszSourceUrlName; // embedded pointer to the URL name string.
|
|
LPWSTR lpszLocalFileName; // embedded pointer to the local file name.
|
|
DWORD CacheEntryType; // cache type bit mask.
|
|
DWORD dwUseCount; // current users count of the cache entry.
|
|
DWORD dwHitRate; // num of times the cache entry was retrieved.
|
|
DWORD dwSizeLow; // low DWORD of the file size.
|
|
DWORD dwSizeHigh; // high DWORD of the file size.
|
|
FILETIME LastModifiedTime; // last modified time of the file in GMT format.
|
|
FILETIME ExpireTime; // expire time of the file in GMT format
|
|
FILETIME LastAccessTime; // last accessed time in GMT format
|
|
FILETIME LastSyncTime; // last time the URL was synchronized
|
|
// with the source
|
|
LPWSTR lpHeaderInfo; // embedded pointer to the header info.
|
|
DWORD dwHeaderInfoSize; // size of the above header.
|
|
LPWSTR lpszFileExtension; // File extension used to retrive the urldata as a file.
|
|
union { // Exemption delta from last access time.
|
|
DWORD dwReserved;
|
|
DWORD dwExemptDelta;
|
|
}; // Exemption delta from last access
|
|
} INTERNET_CACHE_ENTRY_INFOW, * LPINTERNET_CACHE_ENTRY_INFOW;
|
|
#ifdef UNICODE
|
|
typedef INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO;
|
|
typedef LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO;
|
|
#else
|
|
typedef INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO;
|
|
typedef LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO;
|
|
#endif // UNICODE
|
|
|
|
struct CACHE_ENTRY_INFOEX : INTERNET_CACHE_ENTRY_INFO
|
|
{
|
|
FILETIME ftDownload;
|
|
FILETIME ftPostCheck;
|
|
};
|
|
|
|
#if _MSC_VER >= 1200
|
|
#pragma warning(pop)
|
|
#else
|
|
#pragma warning(default:4201)
|
|
#endif
|
|
|
|
typedef struct _INTERNET_CACHE_TIMESTAMPS {
|
|
FILETIME ftExpires;
|
|
FILETIME ftLastModified;
|
|
} INTERNET_CACHE_TIMESTAMPS, *LPINTERNET_CACHE_TIMESTAMPS;
|
|
|
|
|
|
|
|
//
|
|
// Cache Group
|
|
//
|
|
typedef LONGLONG GROUPID;
|
|
|
|
|
|
//
|
|
// Cache Group Flags
|
|
//
|
|
#define CACHEGROUP_ATTRIBUTE_GET_ALL 0xffffffff
|
|
#define CACHEGROUP_ATTRIBUTE_BASIC 0x00000001
|
|
#define CACHEGROUP_ATTRIBUTE_FLAG 0x00000002
|
|
#define CACHEGROUP_ATTRIBUTE_TYPE 0x00000004
|
|
#define CACHEGROUP_ATTRIBUTE_QUOTA 0x00000008
|
|
#define CACHEGROUP_ATTRIBUTE_GROUPNAME 0x00000010
|
|
#define CACHEGROUP_ATTRIBUTE_STORAGE 0x00000020
|
|
|
|
#define CACHEGROUP_FLAG_NONPURGEABLE 0x00000001
|
|
#define CACHEGROUP_FLAG_GIDONLY 0x00000004
|
|
|
|
#define CACHEGROUP_FLAG_FLUSHURL_ONDELETE 0x00000002
|
|
|
|
#define CACHEGROUP_SEARCH_ALL 0x00000000
|
|
#define CACHEGROUP_SEARCH_BYURL 0x00000001
|
|
|
|
#define CACHEGROUP_TYPE_INVALID 0x00000001
|
|
|
|
|
|
//
|
|
// updatable cache group fields
|
|
//
|
|
#define CACHEGROUP_READWRITE_MASK \
|
|
CACHEGROUP_ATTRIBUTE_TYPE \
|
|
| CACHEGROUP_ATTRIBUTE_QUOTA \
|
|
| CACHEGROUP_ATTRIBUTE_GROUPNAME \
|
|
| CACHEGROUP_ATTRIBUTE_STORAGE
|
|
|
|
//
|
|
// INTERNET_CACHE_GROUP_INFO
|
|
//
|
|
|
|
#define GROUPNAME_MAX_LENGTH 120
|
|
#define GROUP_OWNER_STORAGE_SIZE 4
|
|
typedef struct _INTERNET_CACHE_GROUP_INFOA {
|
|
DWORD dwGroupSize;
|
|
DWORD dwGroupFlags;
|
|
DWORD dwGroupType;
|
|
DWORD dwDiskUsage; // in KB
|
|
DWORD dwDiskQuota; // in KB
|
|
DWORD dwOwnerStorage[GROUP_OWNER_STORAGE_SIZE];
|
|
CHAR szGroupName[GROUPNAME_MAX_LENGTH];
|
|
} INTERNET_CACHE_GROUP_INFOA, * LPINTERNET_CACHE_GROUP_INFOA;
|
|
typedef struct _INTERNET_CACHE_GROUP_INFOW {
|
|
DWORD dwGroupSize;
|
|
DWORD dwGroupFlags;
|
|
DWORD dwGroupType;
|
|
DWORD dwDiskUsage; // in KB
|
|
DWORD dwDiskQuota; // in KB
|
|
DWORD dwOwnerStorage[GROUP_OWNER_STORAGE_SIZE];
|
|
WCHAR szGroupName[GROUPNAME_MAX_LENGTH];
|
|
} INTERNET_CACHE_GROUP_INFOW, * LPINTERNET_CACHE_GROUP_INFOW;
|
|
#ifdef UNICODE
|
|
typedef INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO;
|
|
typedef LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO;
|
|
#else
|
|
typedef INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO;
|
|
typedef LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO;
|
|
#endif // UNICODE
|
|
|
|
//
|
|
// constants for InternetTimeFromSystemTime
|
|
//
|
|
|
|
#define INTERNET_RFC1123_FORMAT 0
|
|
#define INTERNET_RFC1123_BUFSIZE 30
|
|
|
|
|
|
// #define InternetCrackUrl WinHttpCrackUrl
|
|
|
|
//
|
|
// Cache APIs
|
|
//
|
|
|
|
BOOLAPI
|
|
CreateUrlCacheEntryA(
|
|
IN LPCSTR lpszUrlName,
|
|
IN DWORD dwExpectedFileSize,
|
|
IN LPCSTR lpszFileExtension,
|
|
OUT LPSTR lpszFileName,
|
|
IN DWORD dwReserved
|
|
);
|
|
BOOLAPI
|
|
CreateUrlCacheEntryW(
|
|
IN LPCWSTR lpszUrlName,
|
|
IN DWORD dwExpectedFileSize,
|
|
IN LPCWSTR lpszFileExtension,
|
|
OUT LPWSTR lpszFileName,
|
|
IN DWORD dwReserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define CreateUrlCacheEntry CreateUrlCacheEntryW
|
|
#else
|
|
#define CreateUrlCacheEntry CreateUrlCacheEntryA
|
|
#endif // !UNICODE
|
|
|
|
#ifndef USE_FIXED_COMMIT_URL_CACHE_ENTRY
|
|
// Temporary state of affairs until we reconcile our apis.
|
|
|
|
// Why are we doing this? HeaderInfo _should_ be string data.
|
|
// However, one group is passing binary data instead. For the
|
|
// unicode api, we've decided to disallow this, but this
|
|
// brings up an inconsistency between the u and a apis, which
|
|
// is undesirable.
|
|
|
|
// For Beta 1, we'll go with this behaviour, but in future releases
|
|
// we want to make these apis consistent.
|
|
|
|
BOOLAPI
|
|
CommitUrlCacheEntryA(
|
|
IN LPCSTR lpszUrlName,
|
|
IN LPCSTR lpszLocalFileName,
|
|
IN FILETIME ExpireTime,
|
|
IN FILETIME LastModifiedTime,
|
|
IN DWORD CacheEntryType,
|
|
IN LPBYTE lpHeaderInfo,
|
|
IN DWORD dwHeaderSize,
|
|
IN LPCSTR lpszFileExtension,
|
|
IN LPCSTR lpszOriginalUrl
|
|
);
|
|
BOOLAPI
|
|
CommitUrlCacheEntryW(
|
|
IN LPCWSTR lpszUrlName,
|
|
IN LPCWSTR lpszLocalFileName,
|
|
IN FILETIME ExpireTime,
|
|
IN FILETIME LastModifiedTime,
|
|
IN DWORD CacheEntryType,
|
|
IN LPWSTR lpHeaderInfo,
|
|
IN DWORD dwHeaderSize,
|
|
IN LPCWSTR lpszFileExtension,
|
|
IN LPCWSTR lpszOriginalUrl
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define CommitUrlCacheEntry CommitUrlCacheEntryW
|
|
#else
|
|
#define CommitUrlCacheEntry CommitUrlCacheEntryA
|
|
#endif
|
|
|
|
#else
|
|
CommitUrlCacheEntryA(
|
|
IN LPCSTR lpszUrlName,
|
|
IN LPCSTR lpszLocalFileName,
|
|
IN FILETIME ExpireTime,
|
|
IN FILETIME LastModifiedTime,
|
|
IN DWORD CacheEntryType,
|
|
IN LPCSTR lpHeaderInfo,
|
|
IN DWORD dwHeaderSize,
|
|
IN LPCSTR lpszFileExtension,
|
|
IN LPCSTR lpszOriginalUrl
|
|
);
|
|
CommitUrlCacheEntryW(
|
|
IN LPCWSTR lpszUrlName,
|
|
IN LPCWSTR lpszLocalFileName,
|
|
IN FILETIME ExpireTime,
|
|
IN FILETIME LastModifiedTime,
|
|
IN DWORD CacheEntryType,
|
|
IN LPCWSTR lpHeaderInfo,
|
|
IN DWORD dwHeaderSize,
|
|
IN LPCWSTR lpszFileExtension,
|
|
IN LPCWSTR lpszOriginalUrl
|
|
);
|
|
#ifdef UNICODE
|
|
#define CommitUrlCacheEntry CommitUrlCacheEntryW
|
|
#else
|
|
#define CommitUrlCacheEntry CommitUrlCacheEntryA
|
|
#endif // !UNICODE
|
|
#endif
|
|
|
|
BOOLAPI
|
|
RetrieveUrlCacheEntryFileA(
|
|
IN LPCSTR lpszUrlName,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOA lpCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwCacheEntryInfoBufferSize,
|
|
IN DWORD dwReserved
|
|
);
|
|
BOOLAPI
|
|
RetrieveUrlCacheEntryFileW(
|
|
IN LPCWSTR lpszUrlName,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOW lpCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwCacheEntryInfoBufferSize,
|
|
IN DWORD dwReserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileW
|
|
#else
|
|
#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI
|
|
UnlockUrlCacheEntryFileA(
|
|
IN LPCSTR lpszUrlName,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
BOOLAPI
|
|
UnlockUrlCacheEntryFileW(
|
|
IN LPCWSTR lpszUrlName,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
|
|
|
|
#ifdef UNICODE
|
|
#define UnlockUrlCacheEntryFile UnlockUrlCacheEntryFileW
|
|
#else
|
|
#ifdef _WINX32_
|
|
#define UnlockUrlCacheEntryFile UnlockUrlCacheEntryFileA
|
|
#else
|
|
BOOLAPI
|
|
UnlockUrlCacheEntryFile(
|
|
IN LPCSTR lpszUrlName,
|
|
IN DWORD dwReserved
|
|
);
|
|
#endif // _WINX32_
|
|
#endif // !UNICODE
|
|
|
|
HANDLE
|
|
WINAPI
|
|
RetrieveUrlCacheEntryStreamA(
|
|
IN LPCSTR lpszUrlName,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOA lpCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwCacheEntryInfoBufferSize,
|
|
IN BOOL fRandomRead,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
HANDLE
|
|
WINAPI
|
|
RetrieveUrlCacheEntryStreamW(
|
|
IN LPCWSTR lpszUrlName,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOW lpCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwCacheEntryInfoBufferSize,
|
|
IN BOOL fRandomRead,
|
|
IN DWORD dwReserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamW
|
|
#else
|
|
#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI
|
|
ReadUrlCacheEntryStream(
|
|
IN HANDLE hUrlCacheStream,
|
|
IN DWORD dwLocation,
|
|
IN OUT LPVOID lpBuffer,
|
|
IN OUT LPDWORD lpdwLen,
|
|
IN DWORD Reserved
|
|
);
|
|
|
|
BOOLAPI
|
|
UnlockUrlCacheEntryStream(
|
|
IN HANDLE hUrlCacheStream,
|
|
IN DWORD Reserved
|
|
);
|
|
|
|
|
|
BOOLAPI
|
|
GetUrlCacheEntryInfoA(
|
|
IN LPCSTR lpszUrlName,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOA lpCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwCacheEntryInfoBufferSize
|
|
);
|
|
BOOLAPI
|
|
GetUrlCacheEntryInfoW(
|
|
IN LPCWSTR lpszUrlName,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOW lpCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwCacheEntryInfoBufferSize
|
|
);
|
|
#ifdef UNICODE
|
|
#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoW
|
|
#else
|
|
#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoA
|
|
#endif // !UNICODE
|
|
|
|
|
|
URLCACHEAPI
|
|
HANDLE
|
|
WINAPI
|
|
FindFirstUrlCacheGroup(
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwFilter,
|
|
IN LPVOID lpSearchCondition,
|
|
IN DWORD dwSearchCondition,
|
|
OUT GROUPID* lpGroupId,
|
|
IN OUT LPVOID lpReserved
|
|
);
|
|
|
|
URLCACHEAPI
|
|
BOOL
|
|
WINAPI
|
|
FindNextUrlCacheGroup(
|
|
IN HANDLE hFind,
|
|
OUT GROUPID* lpGroupId,
|
|
IN OUT LPVOID lpReserved
|
|
);
|
|
|
|
|
|
URLCACHEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetUrlCacheGroupAttributeA(
|
|
IN GROUPID gid,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwAttributes,
|
|
OUT LPINTERNET_CACHE_GROUP_INFOA lpGroupInfo,
|
|
IN OUT LPDWORD lpdwGroupInfo,
|
|
IN OUT LPVOID lpReserved
|
|
);
|
|
URLCACHEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetUrlCacheGroupAttributeW(
|
|
IN GROUPID gid,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwAttributes,
|
|
OUT LPINTERNET_CACHE_GROUP_INFOW lpGroupInfo,
|
|
IN OUT LPDWORD lpdwGroupInfo,
|
|
IN OUT LPVOID lpReserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define GetUrlCacheGroupAttribute GetUrlCacheGroupAttributeW
|
|
#else
|
|
#define GetUrlCacheGroupAttribute GetUrlCacheGroupAttributeA
|
|
#endif // !UNICODE
|
|
|
|
URLCACHEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetUrlCacheGroupAttributeA(
|
|
IN GROUPID gid,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwAttributes,
|
|
IN LPINTERNET_CACHE_GROUP_INFOA lpGroupInfo,
|
|
IN OUT LPVOID lpReserved
|
|
);
|
|
URLCACHEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetUrlCacheGroupAttributeW(
|
|
IN GROUPID gid,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwAttributes,
|
|
IN LPINTERNET_CACHE_GROUP_INFOW lpGroupInfo,
|
|
IN OUT LPVOID lpReserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define SetUrlCacheGroupAttribute SetUrlCacheGroupAttributeW
|
|
#else
|
|
#define SetUrlCacheGroupAttribute SetUrlCacheGroupAttributeA
|
|
#endif // !UNICODE
|
|
|
|
|
|
GROUPID
|
|
WINAPI
|
|
CreateUrlCacheGroup(
|
|
IN DWORD dwFlags,
|
|
IN LPVOID lpReserved
|
|
);
|
|
|
|
BOOLAPI
|
|
DeleteUrlCacheGroup(
|
|
IN GROUPID GroupId,
|
|
IN DWORD dwFlags,
|
|
IN LPVOID lpReserved
|
|
);
|
|
|
|
|
|
BOOLAPI
|
|
GetUrlCacheEntryInfoExA(
|
|
IN LPCSTR lpszUrl,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOA lpCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwCacheEntryInfoBufSize,
|
|
OUT LPSTR lpszReserved, // must pass null
|
|
IN OUT LPDWORD lpdwReserved, // must pass null
|
|
LPVOID lpReserved, // must pass null
|
|
DWORD dwFlags // reserved
|
|
);
|
|
BOOLAPI
|
|
GetUrlCacheEntryInfoExW(
|
|
IN LPCWSTR lpszUrl,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOW lpCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwCacheEntryInfoBufSize,
|
|
OUT LPWSTR lpszReserved, // must pass null
|
|
IN OUT LPDWORD lpdwReserved, // must pass null
|
|
LPVOID lpReserved, // must pass null
|
|
DWORD dwFlags // reserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define GetUrlCacheEntryInfoEx GetUrlCacheEntryInfoExW
|
|
#else
|
|
#define GetUrlCacheEntryInfoEx GetUrlCacheEntryInfoExA
|
|
#endif // !UNICODE
|
|
|
|
#define CACHE_ENTRY_ATTRIBUTE_FC 0x00000004
|
|
#define CACHE_ENTRY_HITRATE_FC 0x00000010
|
|
#define CACHE_ENTRY_MODTIME_FC 0x00000040
|
|
#define CACHE_ENTRY_EXPTIME_FC 0x00000080
|
|
#define CACHE_ENTRY_ACCTIME_FC 0x00000100
|
|
#define CACHE_ENTRY_SYNCTIME_FC 0x00000200
|
|
#define CACHE_ENTRY_HEADERINFO_FC 0x00000400
|
|
#define CACHE_ENTRY_EXEMPT_DELTA_FC 0x00000800
|
|
|
|
BOOLAPI
|
|
SetUrlCacheEntryInfoA(
|
|
IN LPCSTR lpszUrlName,
|
|
IN LPINTERNET_CACHE_ENTRY_INFOA lpCacheEntryInfo,
|
|
IN DWORD dwFieldControl
|
|
);
|
|
BOOLAPI
|
|
SetUrlCacheEntryInfoW(
|
|
IN LPCWSTR lpszUrlName,
|
|
IN LPINTERNET_CACHE_ENTRY_INFOW lpCacheEntryInfo,
|
|
IN DWORD dwFieldControl
|
|
);
|
|
#ifdef UNICODE
|
|
#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoW
|
|
#else
|
|
#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoA
|
|
#endif // !UNICODE
|
|
|
|
//
|
|
// Cache Group Functions
|
|
//
|
|
|
|
|
|
GROUPID
|
|
WINAPI
|
|
CreateUrlCacheGroup(
|
|
IN DWORD dwFlags,
|
|
IN LPVOID lpReserved // must pass NULL
|
|
);
|
|
|
|
BOOLAPI
|
|
DeleteUrlCacheGroup(
|
|
IN GROUPID GroupId,
|
|
IN DWORD dwFlags, // must pass 0
|
|
IN LPVOID lpReserved // must pass NULL
|
|
);
|
|
|
|
// Flags for SetUrlCacheEntryGroup
|
|
#define INTERNET_CACHE_GROUP_ADD 0
|
|
#define INTERNET_CACHE_GROUP_REMOVE 1
|
|
|
|
BOOLAPI
|
|
SetUrlCacheEntryGroupA(
|
|
IN LPCSTR lpszUrlName,
|
|
IN DWORD dwFlags,
|
|
IN GROUPID GroupId,
|
|
IN LPBYTE pbGroupAttributes, // must pass NULL
|
|
IN DWORD cbGroupAttributes, // must pass 0
|
|
IN LPVOID lpReserved // must pass NULL
|
|
);
|
|
|
|
BOOLAPI
|
|
SetUrlCacheEntryGroupW(
|
|
IN LPCWSTR lpszUrlName,
|
|
IN DWORD dwFlags,
|
|
IN GROUPID GroupId,
|
|
IN LPBYTE pbGroupAttributes, // must pass NULL
|
|
IN DWORD cbGroupAttributes, // must pass 0
|
|
IN LPVOID lpReserved // must pass NULL
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define SetUrlCacheEntryGroup SetUrlCacheEntryGroupW
|
|
#else
|
|
#ifdef _WINX32_
|
|
#define SetUrlCacheEntryGroup SetUrlCacheEntryGroupA
|
|
#else
|
|
BOOLAPI
|
|
SetUrlCacheEntryGroup(
|
|
IN LPCSTR lpszUrlName,
|
|
IN DWORD dwFlags,
|
|
IN GROUPID GroupId,
|
|
IN LPBYTE pbGroupAttributes, // must pass NULL
|
|
IN DWORD cbGroupAttributes, // must pass 0
|
|
IN LPVOID lpReserved // must pass NULL
|
|
);
|
|
#endif // _WINX32_
|
|
#endif // !UNICODE
|
|
|
|
HANDLE
|
|
WINAPI
|
|
FindFirstUrlCacheEntryExA(
|
|
IN LPCSTR lpszUrlSearchPattern,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwFilter,
|
|
IN GROUPID GroupId,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOA lpFirstCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize,
|
|
OUT LPVOID lpReserved, // must pass NULL
|
|
IN OUT LPDWORD pcbReserved2, // must pass NULL
|
|
IN LPVOID lpReserved3 // must pass NULL
|
|
);
|
|
|
|
HANDLE
|
|
WINAPI
|
|
FindFirstUrlCacheEntryExW(
|
|
IN LPCWSTR lpszUrlSearchPattern,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwFilter,
|
|
IN GROUPID GroupId,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOW lpFirstCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize,
|
|
OUT LPVOID lpReserved, // must pass NULL
|
|
IN OUT LPDWORD pcbReserved2, // must pass NULL
|
|
IN LPVOID lpReserved3 // must pass NULL
|
|
);
|
|
#ifdef UNICODE
|
|
#define FindFirstUrlCacheEntryEx FindFirstUrlCacheEntryExW
|
|
#else
|
|
#define FindFirstUrlCacheEntryEx FindFirstUrlCacheEntryExA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI
|
|
FindNextUrlCacheEntryExA(
|
|
IN HANDLE hEnumHandle,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOA lpFirstCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize,
|
|
OUT LPVOID lpReserved, // must pass NULL
|
|
IN OUT LPDWORD pcbReserved2, // must pass NULL
|
|
IN LPVOID lpReserved3 // must pass NULL
|
|
);
|
|
BOOLAPI
|
|
FindNextUrlCacheEntryExW(
|
|
IN HANDLE hEnumHandle,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOW lpFirstCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize,
|
|
OUT LPVOID lpReserved, // must pass NULL
|
|
IN OUT LPDWORD pcbReserved2, // must pass NULL
|
|
IN LPVOID lpReserved3 // must pass NULL
|
|
);
|
|
#ifdef UNICODE
|
|
#define FindNextUrlCacheEntryEx FindNextUrlCacheEntryExW
|
|
#else
|
|
#define FindNextUrlCacheEntryEx FindNextUrlCacheEntryExA
|
|
#endif // !UNICODE
|
|
|
|
HANDLE
|
|
WINAPI
|
|
FindFirstUrlCacheEntryA(
|
|
IN LPCSTR lpszUrlSearchPattern,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOA lpFirstCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize
|
|
);
|
|
|
|
HANDLE
|
|
WINAPI
|
|
FindFirstUrlCacheEntryW(
|
|
IN LPCWSTR lpszUrlSearchPattern,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOW lpFirstCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize
|
|
);
|
|
#ifdef UNICODE
|
|
#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryW
|
|
#else
|
|
#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI
|
|
FindNextUrlCacheEntryA(
|
|
IN HANDLE hEnumHandle,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOA lpNextCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwNextCacheEntryInfoBufferSize
|
|
);
|
|
BOOLAPI
|
|
FindNextUrlCacheEntryW(
|
|
IN HANDLE hEnumHandle,
|
|
OUT LPINTERNET_CACHE_ENTRY_INFOW lpNextCacheEntryInfo,
|
|
IN OUT LPDWORD lpdwNextCacheEntryInfoBufferSize
|
|
);
|
|
#ifdef UNICODE
|
|
#define FindNextUrlCacheEntry FindNextUrlCacheEntryW
|
|
#else
|
|
#define FindNextUrlCacheEntry FindNextUrlCacheEntryA
|
|
#endif // !UNICODE
|
|
|
|
|
|
BOOLAPI
|
|
FindCloseUrlCache(
|
|
IN HANDLE hEnumHandle
|
|
);
|
|
|
|
BOOLAPI
|
|
DeleteUrlCacheEntryA(
|
|
IN LPCSTR lpszUrlName
|
|
);
|
|
|
|
BOOLAPI
|
|
DeleteUrlCacheEntryW(
|
|
IN LPCWSTR lpszUrlName
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define DeleteUrlCacheEntry DeleteUrlCacheEntryW
|
|
#else
|
|
#ifdef _WINX32_
|
|
#define DeleteUrlCacheEntry DeleteUrlCacheEntryA
|
|
#else
|
|
BOOLAPI
|
|
DeleteUrlCacheEntry(
|
|
IN LPCSTR lpszUrlName
|
|
);
|
|
#endif // _WINX32_
|
|
#endif // !UNICODE
|
|
// ---- end of wininet.h
|
|
|
|
// These variables are shared across the urlcache and the httpcache project, thus the need
|
|
// to put it in this main header file
|
|
|
|
// from wininet\dll\globals.cxx
|
|
typedef enum {
|
|
WININET_SYNC_MODE_NEVER=0,
|
|
WININET_SYNC_MODE_ON_EXPIRY, // bogus
|
|
WININET_SYNC_MODE_ONCE_PER_SESSION,
|
|
WININET_SYNC_MODE_ALWAYS,
|
|
WININET_SYNC_MODE_AUTOMATIC,
|
|
WININET_SYNC_MODE_DEFAULT = WININET_SYNC_MODE_AUTOMATIC
|
|
} WININET_SYNC_MODE;
|
|
|
|
|
|
|
|
// ---- start of wininetp.h
|
|
|
|
#define MAX_CACHE_ENTRY_INFO_SIZE 4096
|
|
#define INTERNET_FLAG_BGUPDATE 0x00000008
|
|
#define INTERNET_FLAG_UNUSED_4 0x00000004
|
|
|
|
// DAV detection defines
|
|
#define DAV_LEVEL1_STATUS 0x00000001
|
|
#define DAV_COLLECTION_STATUS 0x00004000
|
|
#define DAV_DETECTION_REQUIRED 0x00008000
|
|
|
|
// WinHTTP error cases. Should be added to inetmsg.mc eventually
|
|
#define ERROR_WINHTTP_NO_NEW_CONTAINERS (WINHTTP_ERROR_BASE + 51)
|
|
|
|
// cache flags
|
|
#define HTTP_1_1_CACHE_ENTRY 0x00000040
|
|
#define STATIC_CACHE_ENTRY 0x00000080
|
|
#define MUST_REVALIDATE_CACHE_ENTRY 0x00000100
|
|
#define PENDING_DELETE_CACHE_ENTRY 0x00400000
|
|
#define OTHER_USER_CACHE_ENTRY 0x00800000
|
|
#define PRIVACY_IMPACTED_CACHE_ENTRY 0x02000000
|
|
#define POST_RESPONSE_CACHE_ENTRY 0x04000000
|
|
#define INSTALLED_CACHE_ENTRY 0x10000000
|
|
#define POST_CHECK_CACHE_ENTRY 0x20000000
|
|
#define IDENTITY_CACHE_ENTRY 0x80000000
|
|
|
|
// We include some entry types even if app doesn't specifically ask for them.
|
|
#define INCLUDE_BY_DEFAULT_CACHE_ENTRY \
|
|
( HTTP_1_1_CACHE_ENTRY \
|
|
| STATIC_CACHE_ENTRY \
|
|
| MUST_REVALIDATE_CACHE_ENTRY \
|
|
| PRIVACY_IMPACTED_CACHE_ENTRY \
|
|
| POST_CHECK_CACHE_ENTRY \
|
|
)
|
|
|
|
//
|
|
// Well known sticky group ID
|
|
//
|
|
#define CACHEGROUP_ID_BUILTIN_STICKY 0x1000000000000007
|
|
|
|
//
|
|
// INTERNET_CACHE_CONFIG_PATH_ENTRY
|
|
//
|
|
|
|
typedef struct _INTERNET_CACHE_CONFIG_PATH_ENTRYA {
|
|
CHAR CachePath[MAX_PATH];
|
|
DWORD dwCacheSize; // in KBytes
|
|
} INTERNET_CACHE_CONFIG_PATH_ENTRYA, * LPINTERNET_CACHE_CONFIG_PATH_ENTRYA;
|
|
typedef struct _INTERNET_CACHE_CONFIG_PATH_ENTRYW {
|
|
WCHAR CachePath[MAX_PATH];
|
|
DWORD dwCacheSize; // in KBytes
|
|
} INTERNET_CACHE_CONFIG_PATH_ENTRYW, * LPINTERNET_CACHE_CONFIG_PATH_ENTRYW;
|
|
#ifdef UNICODE
|
|
typedef INTERNET_CACHE_CONFIG_PATH_ENTRYW INTERNET_CACHE_CONFIG_PATH_ENTRY;
|
|
typedef LPINTERNET_CACHE_CONFIG_PATH_ENTRYW LPINTERNET_CACHE_CONFIG_PATH_ENTRY;
|
|
#else
|
|
typedef INTERNET_CACHE_CONFIG_PATH_ENTRYA INTERNET_CACHE_CONFIG_PATH_ENTRY;
|
|
typedef LPINTERNET_CACHE_CONFIG_PATH_ENTRYA LPINTERNET_CACHE_CONFIG_PATH_ENTRY;
|
|
#endif // UNICODE
|
|
|
|
//
|
|
// INTERNET_CACHE_CONFIG_INFO
|
|
//
|
|
|
|
#if _MSC_VER >= 1200
|
|
#pragma warning(push)
|
|
#endif
|
|
#pragma warning(disable:4201)
|
|
|
|
typedef struct _INTERNET_CACHE_CONFIG_INFOA {
|
|
DWORD dwStructSize;
|
|
DWORD dwContainer;
|
|
DWORD dwQuota;
|
|
DWORD dwReserved4;
|
|
BOOL fPerUser;
|
|
DWORD dwSyncMode;
|
|
DWORD dwNumCachePaths;
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
CHAR CachePath[MAX_PATH];
|
|
DWORD dwCacheSize;
|
|
};
|
|
INTERNET_CACHE_CONFIG_PATH_ENTRYA CachePaths[ANYSIZE_ARRAY];
|
|
};
|
|
DWORD dwNormalUsage;
|
|
DWORD dwExemptUsage;
|
|
} INTERNET_CACHE_CONFIG_INFOA, * LPINTERNET_CACHE_CONFIG_INFOA;
|
|
typedef struct _INTERNET_CACHE_CONFIG_INFOW {
|
|
DWORD dwStructSize;
|
|
DWORD dwContainer;
|
|
DWORD dwQuota;
|
|
DWORD dwReserved4;
|
|
BOOL fPerUser;
|
|
DWORD dwSyncMode;
|
|
DWORD dwNumCachePaths;
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
WCHAR CachePath[MAX_PATH];
|
|
DWORD dwCacheSize;
|
|
};
|
|
INTERNET_CACHE_CONFIG_PATH_ENTRYW CachePaths[ANYSIZE_ARRAY];
|
|
};
|
|
DWORD dwNormalUsage;
|
|
DWORD dwExemptUsage;
|
|
} INTERNET_CACHE_CONFIG_INFOW, * LPINTERNET_CACHE_CONFIG_INFOW;
|
|
#ifdef UNICODE
|
|
typedef INTERNET_CACHE_CONFIG_INFOW INTERNET_CACHE_CONFIG_INFO;
|
|
typedef LPINTERNET_CACHE_CONFIG_INFOW LPINTERNET_CACHE_CONFIG_INFO;
|
|
#else
|
|
typedef INTERNET_CACHE_CONFIG_INFOA INTERNET_CACHE_CONFIG_INFO;
|
|
typedef LPINTERNET_CACHE_CONFIG_INFOA LPINTERNET_CACHE_CONFIG_INFO;
|
|
#endif // UNICODE
|
|
|
|
#if _MSC_VER >= 1200
|
|
#pragma warning(pop)
|
|
#else
|
|
#pragma warning(disable:4201)
|
|
#endif
|
|
|
|
|
|
BOOLAPI
|
|
IsUrlCacheEntryExpiredA(
|
|
IN LPCSTR lpszUrlName,
|
|
IN DWORD dwFlags,
|
|
IN OUT FILETIME* pftLastModified
|
|
);
|
|
BOOLAPI
|
|
IsUrlCacheEntryExpiredW(
|
|
IN LPCWSTR lpszUrlName,
|
|
IN DWORD dwFlags,
|
|
IN OUT FILETIME* pftLastModified
|
|
);
|
|
#ifdef UNICODE
|
|
#define IsUrlCacheEntryExpired IsUrlCacheEntryExpiredW
|
|
#else
|
|
#define IsUrlCacheEntryExpired IsUrlCacheEntryExpiredA
|
|
#endif // !UNICODE
|
|
|
|
|
|
#define INTERNET_CACHE_FLAG_ALLOW_COLLISIONS 0x00000100
|
|
#define INTERNET_CACHE_FLAG_INSTALLED_ENTRY 0x00000200
|
|
#define INTERNET_CACHE_FLAG_ENTRY_OR_MAPPING 0x00000400
|
|
#define INTERNET_CACHE_FLAG_ADD_FILENAME_ONLY 0x00000800
|
|
#define INTERNET_CACHE_FLAG_GET_STRUCT_ONLY 0x00001000
|
|
#define CACHE_ENTRY_TYPE_FC 0x00001000
|
|
#define CACHE_ENTRY_MODIFY_DATA_FC 0x80000000 // this appears unused
|
|
|
|
// Flags for CreateContainer
|
|
|
|
#define INTERNET_CACHE_CONTAINER_NOSUBDIRS (0x1)
|
|
#define INTERNET_CACHE_CONTAINER_AUTODELETE (0x2)
|
|
#define INTERNET_CACHE_CONTAINER_RESERVED1 (0x4)
|
|
#define INTERNET_CACHE_CONTAINER_NODESKTOPINIT (0x8)
|
|
#define INTERNET_CACHE_CONTAINER_MAP_ENABLED (0x10)
|
|
|
|
BOOLAPI
|
|
CreateUrlCacheContainerA(
|
|
IN LPCSTR Name,
|
|
IN LPCSTR lpCachePrefix,
|
|
LPCSTR lpszCachePath,
|
|
IN DWORD KBCacheLimit,
|
|
IN DWORD dwContainerType,
|
|
IN DWORD dwOptions,
|
|
IN OUT LPVOID pvBuffer,
|
|
IN OUT LPDWORD cbBuffer
|
|
);
|
|
BOOLAPI
|
|
CreateUrlCacheContainerW(
|
|
IN LPCWSTR Name,
|
|
IN LPCWSTR lpCachePrefix,
|
|
LPCWSTR lpszCachePath,
|
|
IN DWORD KBCacheLimit,
|
|
IN DWORD dwContainerType,
|
|
IN DWORD dwOptions,
|
|
IN OUT LPVOID pvBuffer,
|
|
IN OUT LPDWORD cbBuffer
|
|
);
|
|
#ifdef UNICODE
|
|
#define CreateUrlCacheContainer CreateUrlCacheContainerW
|
|
#else
|
|
#define CreateUrlCacheContainer CreateUrlCacheContainerA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI
|
|
DeleteUrlCacheContainerA(
|
|
IN LPCSTR Name,
|
|
IN DWORD dwOptions
|
|
);
|
|
BOOLAPI
|
|
DeleteUrlCacheContainerW(
|
|
IN LPCWSTR Name,
|
|
IN DWORD dwOptions
|
|
);
|
|
#ifdef UNICODE
|
|
#define DeleteUrlCacheContainer DeleteUrlCacheContainerW
|
|
#else
|
|
#define DeleteUrlCacheContainer DeleteUrlCacheContainerA
|
|
#endif // !UNICODE
|
|
|
|
//
|
|
// INTERNET_CACHE_ENTRY_INFO -
|
|
//
|
|
|
|
|
|
typedef struct _INTERNET_CACHE_CONTAINER_INFOA {
|
|
DWORD dwCacheVersion; // version of software
|
|
LPSTR lpszName; // embedded pointer to the container name string.
|
|
LPSTR lpszCachePrefix; // embedded pointer to the container URL prefix
|
|
LPSTR lpszVolumeLabel; // embedded pointer to the container volume label if any.
|
|
LPSTR lpszVolumeTitle; // embedded pointer to the container volume title if any.
|
|
} INTERNET_CACHE_CONTAINER_INFOA, * LPINTERNET_CACHE_CONTAINER_INFOA;
|
|
typedef struct _INTERNET_CACHE_CONTAINER_INFOW {
|
|
DWORD dwCacheVersion; // version of software
|
|
LPWSTR lpszName; // embedded pointer to the container name string.
|
|
LPWSTR lpszCachePrefix; // embedded pointer to the container URL prefix
|
|
LPWSTR lpszVolumeLabel; // embedded pointer to the container volume label if any.
|
|
LPWSTR lpszVolumeTitle; // embedded pointer to the container volume title if any.
|
|
} INTERNET_CACHE_CONTAINER_INFOW, * LPINTERNET_CACHE_CONTAINER_INFOW;
|
|
#ifdef UNICODE
|
|
typedef INTERNET_CACHE_CONTAINER_INFOW INTERNET_CACHE_CONTAINER_INFO;
|
|
typedef LPINTERNET_CACHE_CONTAINER_INFOW LPINTERNET_CACHE_CONTAINER_INFO;
|
|
#else
|
|
typedef INTERNET_CACHE_CONTAINER_INFOA INTERNET_CACHE_CONTAINER_INFO;
|
|
typedef LPINTERNET_CACHE_CONTAINER_INFOA LPINTERNET_CACHE_CONTAINER_INFO;
|
|
#endif // UNICODE
|
|
|
|
// FindFirstContainer options
|
|
#define CACHE_FIND_CONTAINER_RETURN_NOCHANGE (0x1)
|
|
|
|
HANDLE
|
|
WINAPI
|
|
FindFirstUrlCacheContainerA(
|
|
IN OUT LPDWORD pdwModified,
|
|
OUT LPINTERNET_CACHE_CONTAINER_INFOA lpContainerInfo,
|
|
IN OUT LPDWORD lpdwContainerInfoBufferSize,
|
|
IN DWORD dwOptions
|
|
);
|
|
|
|
HANDLE
|
|
WINAPI
|
|
FindFirstUrlCacheContainerW(
|
|
IN OUT LPDWORD pdwModified,
|
|
OUT LPINTERNET_CACHE_CONTAINER_INFOW lpContainerInfo,
|
|
IN OUT LPDWORD lpdwContainerInfoBufferSize,
|
|
IN DWORD dwOptions
|
|
);
|
|
#ifdef UNICODE
|
|
#define FindFirstUrlCacheContainer FindFirstUrlCacheContainerW
|
|
#else
|
|
#define FindFirstUrlCacheContainer FindFirstUrlCacheContainerA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI
|
|
FindNextUrlCacheContainerA(
|
|
IN HANDLE hEnumHandle,
|
|
OUT LPINTERNET_CACHE_CONTAINER_INFOA lpContainerInfo,
|
|
IN OUT LPDWORD lpdwContainerInfoBufferSize
|
|
);
|
|
BOOLAPI
|
|
FindNextUrlCacheContainerW(
|
|
IN HANDLE hEnumHandle,
|
|
OUT LPINTERNET_CACHE_CONTAINER_INFOW lpContainerInfo,
|
|
IN OUT LPDWORD lpdwContainerInfoBufferSize
|
|
);
|
|
#ifdef UNICODE
|
|
#define FindNextUrlCacheContainer FindNextUrlCacheContainerW
|
|
#else
|
|
#define FindNextUrlCacheContainer FindNextUrlCacheContainerA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI
|
|
FreeUrlCacheSpaceA(
|
|
IN LPCSTR lpszCachePath,
|
|
IN DWORD dwSize,
|
|
IN DWORD dwFilter
|
|
);
|
|
BOOLAPI
|
|
FreeUrlCacheSpaceW(
|
|
IN LPCWSTR lpszCachePath,
|
|
IN DWORD dwSize,
|
|
IN DWORD dwFilter
|
|
);
|
|
#ifdef UNICODE
|
|
#define FreeUrlCacheSpace FreeUrlCacheSpaceW
|
|
#else
|
|
#define FreeUrlCacheSpace FreeUrlCacheSpaceA
|
|
#endif // !UNICODE
|
|
|
|
//
|
|
// config APIs.
|
|
//
|
|
|
|
#define CACHE_CONFIG_FORCE_CLEANUP_FC 0x00000020
|
|
#define CACHE_CONFIG_DISK_CACHE_PATHS_FC 0x00000040
|
|
#define CACHE_CONFIG_SYNC_MODE_FC 0x00000080
|
|
#define CACHE_CONFIG_CONTENT_PATHS_FC 0x00000100
|
|
#define CACHE_CONFIG_COOKIES_PATHS_FC 0x00000200
|
|
#define CACHE_CONFIG_HISTORY_PATHS_FC 0x00000400
|
|
#define CACHE_CONFIG_QUOTA_FC 0x00000800
|
|
#define CACHE_CONFIG_USER_MODE_FC 0x00001000
|
|
#define CACHE_CONFIG_CONTENT_USAGE_FC 0x00002000
|
|
#define CACHE_CONFIG_STICKY_CONTENT_USAGE_FC 0x00004000
|
|
|
|
/*
|
|
BOOLAPI
|
|
GetUrlCacheConfigInfoA(
|
|
OUT LPINTERNET_CACHE_CONFIG_INFOA lpCacheConfigInfo,
|
|
IN OUT LPDWORD lpdwCacheConfigInfoBufferSize,
|
|
IN DWORD dwFieldControl
|
|
);
|
|
BOOLAPI
|
|
GetUrlCacheConfigInfoW(
|
|
OUT LPINTERNET_CACHE_CONFIG_INFOW lpCacheConfigInfo,
|
|
IN OUT LPDWORD lpdwCacheConfigInfoBufferSize,
|
|
IN DWORD dwFieldControl
|
|
);
|
|
#ifdef UNICODE
|
|
#define GetUrlCacheConfigInfo GetUrlCacheConfigInfoW
|
|
#else
|
|
#define GetUrlCacheConfigInfo GetUrlCacheConfigInfoA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI
|
|
SetUrlCacheConfigInfoA(
|
|
IN LPINTERNET_CACHE_CONFIG_INFOA lpCacheConfigInfo,
|
|
IN DWORD dwFieldControl
|
|
);
|
|
BOOLAPI
|
|
SetUrlCacheConfigInfoW(
|
|
IN LPINTERNET_CACHE_CONFIG_INFOW lpCacheConfigInfo,
|
|
IN DWORD dwFieldControl
|
|
);
|
|
#ifdef UNICODE
|
|
#define SetUrlCacheConfigInfo SetUrlCacheConfigInfoW
|
|
#else
|
|
#define SetUrlCacheConfigInfo SetUrlCacheConfigInfoA
|
|
#endif // !UNICODE
|
|
*/
|
|
|
|
DWORD
|
|
WINAPI
|
|
RunOnceUrlCache(
|
|
HWND hwnd,
|
|
HINSTANCE hinst,
|
|
LPSTR lpszCmd,
|
|
int nCmdShow);
|
|
|
|
|
|
/*
|
|
DWORD
|
|
WINAPI
|
|
DeleteIE3Cache(
|
|
HWND hwnd,
|
|
HINSTANCE hinst,
|
|
LPSTR lpszCmd,
|
|
int nCmdShow);
|
|
*/
|
|
|
|
BOOLAPI
|
|
UpdateUrlCacheContentPath(LPSTR szNewPath);
|
|
|
|
// Cache header data defines.
|
|
|
|
#define CACHE_HEADER_DATA_CURRENT_SETTINGS_VERSION 0
|
|
#define CACHE_HEADER_DATA_CONLIST_CHANGE_COUNT 1
|
|
#define CACHE_HEADER_DATA_COOKIE_CHANGE_COUNT 2
|
|
|
|
|
|
#define CACHE_HEADER_DATA_NOTIFICATION_HWND 3
|
|
#define CACHE_HEADER_DATA_NOTIFICATION_MESG 4
|
|
#define CACHE_HEADER_DATA_ROOTGROUP_OFFSET 5
|
|
#define CACHE_HEADER_DATA_GID_LOW 6
|
|
#define CACHE_HEADER_DATA_GID_HIGH 7
|
|
|
|
// beta logging stats
|
|
#define CACHE_HEADER_DATA_CACHE_NOT_EXPIRED 8
|
|
#define CACHE_HEADER_DATA_CACHE_NOT_MODIFIED 9
|
|
#define CACHE_HEADER_DATA_CACHE_MODIFIED 10
|
|
#define CACHE_HEADER_DATA_CACHE_RESUMED 11
|
|
#define CACHE_HEADER_DATA_CACHE_NOT_RESUMED 12
|
|
#define CACHE_HEADER_DATA_CACHE_MISS 13
|
|
#define CACHE_HEADER_DATA_DOWNLOAD_PARTIAL 14
|
|
#define CACHE_HEADER_DATA_DOWNLOAD_ABORTED 15
|
|
#define CACHE_HEADER_DATA_DOWNLOAD_CACHED 16
|
|
#define CACHE_HEADER_DATA_DOWNLOAD_NOT_CACHED 17
|
|
#define CACHE_HEADER_DATA_DOWNLOAD_NO_FILE 18
|
|
#define CACHE_HEADER_DATA_DOWNLOAD_FILE_NEEDED 19
|
|
#define CACHE_HEADER_DATA_DOWNLOAD_FILE_NOT_NEEDED 20
|
|
|
|
// retail data
|
|
#define CACHE_HEADER_DATA_NOTIFICATION_FILTER 21
|
|
#define CACHE_HEADER_DATA_ROOT_LEAK_OFFSET 22
|
|
|
|
// more beta logging stats
|
|
#define CACHE_HEADER_DATA_SYNCSTATE_IMAGE 23
|
|
#define CACHE_HEADER_DATA_SYNCSTATE_VOLATILE 24
|
|
#define CACHE_HEADER_DATA_SYNCSTATE_IMAGE_STATIC 25
|
|
#define CACHE_HEADER_DATA_SYNCSTATE_STATIC_VOLATILE 26
|
|
|
|
// retail data
|
|
#define CACHE_HEADER_DATA_ROOT_GROUPLIST_OFFSET 27 // offset to group list
|
|
#define CACHE_HEADER_DATA_ROOT_FIXUP_OFFSET 28 // offset to fixup list
|
|
#define CACHE_HEADER_DATA_ROOT_FIXUP_COUNT 29 // num of fixup items
|
|
#define CACHE_HEADER_DATA_ROOT_FIXUP_TRIGGER 30 // threshhold to fix up
|
|
#define CACHE_HEADER_DATA_HIGH_VERSION_STRING 31 // highest entry ver
|
|
|
|
|
|
#define CACHE_HEADER_DATA_LAST 31
|
|
|
|
// options for cache notification filter
|
|
#define CACHE_NOTIFY_ADD_URL 0x00000001
|
|
#define CACHE_NOTIFY_DELETE_URL 0x00000002
|
|
#define CACHE_NOTIFY_UPDATE_URL 0x00000004
|
|
#define CACHE_NOTIFY_DELETE_ALL 0x00000008
|
|
#define CACHE_NOTIFY_URL_SET_STICKY 0x00000010
|
|
#define CACHE_NOTIFY_URL_UNSET_STICKY 0x00000020
|
|
#define CACHE_NOTIFY_SET_ONLINE 0x00000100
|
|
#define CACHE_NOTIFY_SET_OFFLINE 0x00000200
|
|
|
|
#define CACHE_NOTIFY_FILTER_CHANGED 0x10000000
|
|
|
|
BOOL
|
|
RegisterUrlCacheNotification(
|
|
IN HWND hWnd,
|
|
IN UINT uMsg,
|
|
IN GROUPID gid,
|
|
IN DWORD dwOpsFilter,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
|
|
|
|
BOOL
|
|
GetUrlCacheHeaderData(IN DWORD nIdx, OUT LPDWORD lpdwData);
|
|
|
|
BOOL
|
|
SetUrlCacheHeaderData(IN DWORD nIdx, IN DWORD dwData);
|
|
|
|
BOOL
|
|
IncrementUrlCacheHeaderData(IN DWORD nIdx, OUT LPDWORD lpdwData);
|
|
|
|
BOOL
|
|
LoadUrlCacheContent();
|
|
|
|
BOOL
|
|
GetUrlCacheContainerInfoA(
|
|
IN LPSTR lpszUrlName,
|
|
OUT LPINTERNET_CACHE_CONTAINER_INFOA lpContainerInfo,
|
|
IN OUT LPDWORD lpdwContainerInfoBufferSize,
|
|
IN DWORD dwOptions
|
|
);
|
|
BOOL
|
|
GetUrlCacheContainerInfoW(
|
|
IN LPWSTR lpszUrlName,
|
|
OUT LPINTERNET_CACHE_CONTAINER_INFOW lpContainerInfo,
|
|
IN OUT LPDWORD lpdwContainerInfoBufferSize,
|
|
IN DWORD dwOptions
|
|
);
|
|
#ifdef UNICODE
|
|
#define GetUrlCacheContainerInfo GetUrlCacheContainerInfoW
|
|
#else
|
|
#define GetUrlCacheContainerInfo GetUrlCacheContainerInfoA
|
|
#endif // !UNICODE
|
|
|
|
// HACK
|
|
BOOLAPI DLLUrlCacheEntry( IN DWORD Reason );
|
|
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
// ---- end of wininetp.h
|
|
|
|
#ifndef __CACHE_INCLUDE__
|
|
#define __CACHE_INCLUDE__
|
|
|
|
#include <oldnames.h>
|
|
#include <cachedef.h>
|
|
#include <hashutil.hxx>
|
|
#include <debug.h>
|
|
|
|
#include <malloc.h>
|
|
#include <crtsubst.h>
|
|
|
|
#include <inetchar.h>
|
|
#include <util.hxx>
|
|
#include <reg.hxx>
|
|
#include <urlcache.h>
|
|
#include <filemap.hxx>
|
|
#include <filemgr.hxx>
|
|
#include <contain.hxx>
|
|
#include <conlist.hxx>
|
|
#include <hndlmgr.hxx>
|
|
#include <cookies.hxx>
|
|
#include <conmgr.hxx>
|
|
#include <group.hxx>
|
|
#include <cachglob.h>
|
|
#include <proto.h>
|
|
#include <registry.h>
|
|
#include <platform.h>
|
|
#endif //__CACHE_INCLUDE__
|
|
|
|
#endif // _CACHE_HXX_
|
|
|
|
#ifndef INTERNET_CACHE_GROUP_NONE
|
|
#define INTERNET_CACHE_GROUP_NONE 2
|
|
#define INTERNET_CACHE_MODIFY_DATA 4
|
|
#endif
|
|
|
|
|