1367 lines
38 KiB
C
1367 lines
38 KiB
C
|
|
#include <iedial.h>
|
|
#if !defined(_WININETEX_)
|
|
#define _WININETEX_
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define MAX_CACHE_ENTRY_INFO_SIZE 4096
|
|
#define INTERNET_FLAG_BGUPDATE 0x00000008
|
|
#define INTERNET_FLAG_UNUSED_4 0x00000004
|
|
|
|
//
|
|
// INTERNET_PREFETCH_STATUS -
|
|
//
|
|
|
|
typedef struct {
|
|
|
|
//
|
|
// dwStatus - status of download. See INTERNET_PREFETCH_ flags
|
|
//
|
|
|
|
DWORD dwStatus;
|
|
|
|
//
|
|
// dwSize - size of file downloaded so far
|
|
//
|
|
|
|
DWORD dwSize;
|
|
} INTERNET_PREFETCH_STATUS, * LPINTERNET_PREFETCH_STATUS;
|
|
|
|
//
|
|
// INTERNET_PREFETCH_STATUS - dwStatus values
|
|
//
|
|
|
|
#define INTERNET_PREFETCH_PROGRESS 0
|
|
#define INTERNET_PREFETCH_COMPLETE 1
|
|
#define INTERNET_PREFETCH_ABORTED 2
|
|
|
|
|
|
|
|
#define INTERNET_ONLINE_OFFLINE_INFO INTERNET_CONNECTED_INFO
|
|
#define LPINTERNET_ONLINE_OFFLINE_INFO LPINTERNET_CONNECTED_INFO
|
|
#define dwOfflineState dwConnectedState
|
|
|
|
|
|
#define ISO_FORCE_OFFLINE ISO_FORCE_DISCONNECTED
|
|
|
|
|
|
#ifdef __WINCRYPT_H__
|
|
#ifdef ALGIDDEF
|
|
//
|
|
// INTERNET_SECURITY_INFO - contains information about certificate
|
|
// and encryption settings for a connection.
|
|
//
|
|
|
|
#define INTERNET_SECURITY_INFO_DEFINED
|
|
|
|
typedef struct {
|
|
|
|
//
|
|
// dwSize - Size of INTERNET_SECURITY_INFO structure.
|
|
//
|
|
|
|
DWORD dwSize;
|
|
|
|
|
|
//
|
|
// pCertificate - Cert context pointing to leaf of certificate chain.
|
|
//
|
|
|
|
PCCERT_CONTEXT pCertificate;
|
|
|
|
//
|
|
// Start SecPkgContext_ConnectionInfo
|
|
// The following members must match those
|
|
// of the SecPkgContext_ConnectionInfo
|
|
// sspi structure (schnlsp.h)
|
|
//
|
|
|
|
|
|
//
|
|
// dwProtocol - Protocol that this connection was made with
|
|
// (PCT, SSL2, SSL3, etc)
|
|
//
|
|
|
|
DWORD dwProtocol;
|
|
|
|
//
|
|
// aiCipher - Cipher that this connection as made with
|
|
//
|
|
|
|
ALG_ID aiCipher;
|
|
|
|
//
|
|
// dwCipherStrength - Strength (in bits) that this connection
|
|
// was made with;
|
|
//
|
|
|
|
DWORD dwCipherStrength;
|
|
|
|
//
|
|
// aiHash - Hash that this connection as made with
|
|
//
|
|
|
|
ALG_ID aiHash;
|
|
|
|
//
|
|
// dwHashStrength - Strength (in bits) that this connection
|
|
// was made with;
|
|
//
|
|
|
|
DWORD dwHashStrength;
|
|
|
|
//
|
|
// aiExch - Key Exchange type that this connection as made with
|
|
//
|
|
|
|
ALG_ID aiExch;
|
|
|
|
//
|
|
// dwExchStrength - Strength (in bits) that this connection
|
|
// was made with;
|
|
//
|
|
|
|
DWORD dwExchStrength;
|
|
|
|
|
|
} INTERNET_SECURITY_INFO, * LPINTERNET_SECURITY_INFO;
|
|
|
|
|
|
typedef struct {
|
|
//
|
|
// dwSize - size of INTERNET_SECURITY_CONNECTION_INFO
|
|
//
|
|
DWORD dwSize;
|
|
|
|
// fSecure - Is this a secure connection.
|
|
BOOL fSecure;
|
|
|
|
//
|
|
// dwProtocol - Protocol that this connection was made with
|
|
// (PCT, SSL2, SSL3, etc)
|
|
//
|
|
|
|
DWORD dwProtocol;
|
|
|
|
//
|
|
// aiCipher - Cipher that this connection as made with
|
|
//
|
|
|
|
ALG_ID aiCipher;
|
|
|
|
//
|
|
// dwCipherStrength - Strength (in bits) that this connection
|
|
// was made with;
|
|
//
|
|
|
|
DWORD dwCipherStrength;
|
|
|
|
//
|
|
// aiHash - Hash that this connection as made with
|
|
//
|
|
|
|
ALG_ID aiHash;
|
|
|
|
//
|
|
// dwHashStrength - Strength (in bits) that this connection
|
|
// was made with;
|
|
//
|
|
|
|
DWORD dwHashStrength;
|
|
|
|
//
|
|
// aiExch - Key Exchange type that this connection as made with
|
|
//
|
|
|
|
ALG_ID aiExch;
|
|
|
|
//
|
|
// dwExchStrength - Strength (in bits) that this connection
|
|
// was made with;
|
|
//
|
|
|
|
DWORD dwExchStrength;
|
|
|
|
} INTERNET_SECURITY_CONNECTION_INFO , * LPINTERNET_SECURITY_CONNECTION_INFO;
|
|
|
|
|
|
INTERNETAPI_(BOOL) InternetAlgIdToStringA(
|
|
IN ALG_ID ai,
|
|
IN LPSTR lpstr,
|
|
IN OUT LPDWORD lpdwBufferLength,
|
|
IN DWORD dwReserved
|
|
);
|
|
INTERNETAPI_(BOOL) InternetAlgIdToStringW(
|
|
IN ALG_ID ai,
|
|
IN LPWSTR lpstr,
|
|
IN OUT LPDWORD lpdwBufferLength,
|
|
IN DWORD dwReserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define InternetAlgIdToString InternetAlgIdToStringW
|
|
#else
|
|
#define InternetAlgIdToString InternetAlgIdToStringA
|
|
#endif // !UNICODE
|
|
|
|
INTERNETAPI_(BOOL) InternetSecurityProtocolToStringA(
|
|
IN DWORD dwProtocol,
|
|
IN LPSTR lpstr,
|
|
IN OUT LPDWORD lpdwBufferLength,
|
|
IN DWORD dwReserved
|
|
);
|
|
INTERNETAPI_(BOOL) InternetSecurityProtocolToStringW(
|
|
IN DWORD dwProtocol,
|
|
IN LPWSTR lpstr,
|
|
IN OUT LPDWORD lpdwBufferLength,
|
|
IN DWORD dwReserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define InternetSecurityProtocolToString InternetSecurityProtocolToStringW
|
|
#else
|
|
#define InternetSecurityProtocolToString InternetSecurityProtocolToStringA
|
|
#endif // !UNICODE
|
|
|
|
#endif // ALGIDDEF
|
|
#endif // __WINCRYPT_H__
|
|
|
|
#ifdef INTERNET_SECURITY_INFO_DEFINED
|
|
|
|
INTERNETAPI_(DWORD) ShowSecurityInfo(
|
|
IN HWND hWndParent,
|
|
IN LPINTERNET_SECURITY_INFO pSecurityInfo
|
|
);
|
|
#endif // INTERNET_SECURITY_INFO_DEFINED
|
|
|
|
|
|
|
|
INTERNETAPI_(DWORD) ShowX509EncodedCertificate(
|
|
IN HWND hWndParent,
|
|
IN LPBYTE lpCert,
|
|
IN DWORD cbCert
|
|
);
|
|
|
|
INTERNETAPI_(DWORD) ShowClientAuthCerts(
|
|
IN HWND hWndParent
|
|
);
|
|
|
|
INTERNETAPI_(DWORD) ParseX509EncodedCertificateForListBoxEntry(
|
|
IN LPBYTE lpCert,
|
|
IN DWORD cbCert,
|
|
OUT LPSTR lpszListBoxEntry,
|
|
IN LPDWORD lpdwListBoxEntry
|
|
);
|
|
|
|
//
|
|
// This is a private API for Trident. It displays
|
|
// security info based on a URL
|
|
//
|
|
|
|
INTERNETAPI_(BOOL) InternetShowSecurityInfoByURLA(
|
|
IN LPSTR lpszURL,
|
|
IN HWND hwndParent
|
|
);
|
|
|
|
INTERNETAPI_(BOOL) InternetShowSecurityInfoByURLW(
|
|
IN LPWSTR lpszURL,
|
|
IN HWND hwndParent
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define InternetShowSecurityInfoByURL InternetShowSecurityInfoByURLW
|
|
#else
|
|
#ifdef _WINX32_
|
|
#define InternetShowSecurityInfoByURL InternetShowSecurityInfoByURLA
|
|
#else
|
|
INTERNETAPI_(BOOL) InternetShowSecurityInfoByURL(
|
|
IN LPSTR lpszURL,
|
|
IN HWND hwndParent
|
|
);
|
|
#endif // _WINX32_
|
|
#endif // !UNICODE
|
|
|
|
//Fortezza related exports. not public
|
|
|
|
// The commands that InternetFortezzaCommand supports.
|
|
|
|
typedef enum {
|
|
FORTCMD_LOGON = 1,
|
|
FORTCMD_LOGOFF = 2,
|
|
FORTCMD_CHG_PERSONALITY = 3,
|
|
} FORTCMD;
|
|
|
|
|
|
INTERNETAPI_(BOOL) InternetFortezzaCommand(DWORD dwCommand, HWND hwnd, DWORD_PTR dwReserved);
|
|
|
|
|
|
typedef enum {
|
|
FORTSTAT_INSTALLED = 0x00000001,
|
|
FORTSTAT_LOGGEDON = 0x00000002,
|
|
} FORTSTAT ;
|
|
|
|
INTERNETAPI_(BOOL) InternetQueryFortezzaStatus(DWORD *pdwStatus, DWORD_PTR dwReserved);
|
|
|
|
|
|
|
|
BOOLAPI InternetDebugGetLocalTime(
|
|
OUT SYSTEMTIME * pstLocalTime,
|
|
OUT DWORD * pdwReserved
|
|
);
|
|
|
|
#define INTERNET_SERVICE_URL 0
|
|
//
|
|
// InternetConnectUrl() - a macro which allows you to specify an URL instead of
|
|
// the component parts to InternetConnect(). If any API which uses the returned
|
|
// connect handle specifies a NULL path then the URL-path part of the URL
|
|
// specified in InternetConnectUrl() will be used
|
|
//
|
|
|
|
#define InternetConnectUrl(hInternet, lpszUrl, dwFlags, dwContext) \
|
|
InternetConnect(hInternet, \
|
|
lpszUrl, \
|
|
INTERNET_INVALID_PORT_NUMBER, \
|
|
NULL, \
|
|
NULL, \
|
|
INTERNET_SERVICE_URL, \
|
|
dwFlags, \
|
|
dwContext \
|
|
)
|
|
|
|
INTERNETAPI_(BOOL) InternetWriteFileExA(
|
|
IN HINTERNET hFile,
|
|
IN LPINTERNET_BUFFERSA lpBuffersIn,
|
|
IN DWORD dwFlags,
|
|
IN DWORD_PTR dwContext
|
|
);
|
|
INTERNETAPI_(BOOL) InternetWriteFileExW(
|
|
IN HINTERNET hFile,
|
|
IN LPINTERNET_BUFFERSW lpBuffersIn,
|
|
IN DWORD dwFlags,
|
|
IN DWORD_PTR dwContext
|
|
);
|
|
#ifdef UNICODE
|
|
#define InternetWriteFileEx InternetWriteFileExW
|
|
#else
|
|
#define InternetWriteFileEx InternetWriteFileExA
|
|
#endif // !UNICODE
|
|
|
|
#define INTERNET_OPTION_CONTEXT_VALUE_OLD 10
|
|
#define INTERNET_OPTION_NET_SPEED 61
|
|
// Pass in pointer to INTERNET_SECURITY_CONNECTION_INFO to be filled in.
|
|
#define INTERNET_OPTION_SECURITY_CONNECTION_INFO 66
|
|
#define INTERNET_OPTION_DETECT_POST_SEND 71
|
|
#define INTERNET_OPTION_DISABLE_NTLM_PREAUTH 72
|
|
#define INTERNET_LAST_OPTION_INTERNAL INTERNET_OPTION_PROXY_SETTINGS_CHANGED
|
|
|
|
|
|
#define INTERNET_OPTION_OFFLINE_TIMEOUT INTERNET_OPTION_DISCONNECTED_TIMEOUT
|
|
#define INTERNET_OPTION_LINE_STATE INTERNET_OPTION_CONNECTED_STATE
|
|
|
|
#define AUTH_FLAG_RESET 0x00000000 /* let registry decide */
|
|
|
|
/* maximum length of privacy-settings in Unicode characters */
|
|
#define MaxPrivacySettings 0x4000
|
|
|
|
// Utility for mapping P3P compact-policy tokens to unique indexes
|
|
INTERNETAPI_(int) FindP3PPolicySymbol(const char *pszSymbol);
|
|
|
|
|
|
|
|
#define INTERNET_STATE_ONLINE INTERNET_STATE_CONNECTED
|
|
#define INTERNET_STATE_OFFLINE INTERNET_STATE_DISCONNECTED
|
|
#define INTERNET_STATE_OFFLINE_USER INTERNET_STATE_DISCONNECTED_BY_USER
|
|
#define INTERNET_LINE_STATE_MASK (INTERNET_STATE_ONLINE | INTERNET_STATE_OFFLINE)
|
|
#define INTERNET_BUSY_STATE_MASK (INTERNET_STATE_IDLE | INTERNET_STATE_BUSY)
|
|
|
|
|
|
|
|
//
|
|
// the following are used with InternetSetOption(..., INTERNET_OPTION_CALLBACK_FILTER, ...)
|
|
// to filter out unrequired callbacks. INTERNET_STATUS_REQUEST_COMPLETE cannot
|
|
// be filtered out
|
|
//
|
|
|
|
#define INTERNET_STATUS_FILTER_RESOLVING 0x00000001
|
|
#define INTERNET_STATUS_FILTER_RESOLVED 0x00000002
|
|
#define INTERNET_STATUS_FILTER_CONNECTING 0x00000004
|
|
#define INTERNET_STATUS_FILTER_CONNECTED 0x00000008
|
|
#define INTERNET_STATUS_FILTER_SENDING 0x00000010
|
|
#define INTERNET_STATUS_FILTER_SENT 0x00000020
|
|
#define INTERNET_STATUS_FILTER_RECEIVING 0x00000040
|
|
#define INTERNET_STATUS_FILTER_RECEIVED 0x00000080
|
|
#define INTERNET_STATUS_FILTER_CLOSING 0x00000100
|
|
#define INTERNET_STATUS_FILTER_CLOSED 0x00000200
|
|
#define INTERNET_STATUS_FILTER_HANDLE_CREATED 0x00000400
|
|
#define INTERNET_STATUS_FILTER_HANDLE_CLOSING 0x00000800
|
|
#define INTERNET_STATUS_FILTER_PREFETCH 0x00001000
|
|
#define INTERNET_STATUS_FILTER_REDIRECT 0x00002000
|
|
#define INTERNET_STATUS_FILTER_STATE_CHANGE 0x00004000
|
|
|
|
|
|
//
|
|
// Note that adding any HTTP_QUERY_* codes here must be followed
|
|
// by an equivlent line in wininet\http\hashgen\hashgen.cpp
|
|
// please see that file for further information regarding
|
|
// the addition of new HTTP headers
|
|
//
|
|
|
|
|
|
// These are not part of HTTP 1.1 yet. We will propose these to the
|
|
// HTTP extensions working group. These are required for the client-caps support
|
|
// we are doing in conjuntion with IIS.
|
|
|
|
typedef struct _INTERNET_COOKIE {
|
|
DWORD cbSize;
|
|
LPSTR pszName;
|
|
LPSTR pszData;
|
|
LPSTR pszDomain;
|
|
LPSTR pszPath;
|
|
FILETIME *pftExpires;
|
|
DWORD dwFlags;
|
|
LPSTR pszUrl;
|
|
LPSTR pszP3PPolicy;
|
|
} INTERNET_COOKIE, *PINTERNET_COOKIE;
|
|
|
|
//
|
|
// DAV Detection
|
|
//
|
|
BOOLAPI HttpCheckDavComplianceA(
|
|
IN LPCSTR lpszUrl,
|
|
IN LPCSTR lpszComplianceToken,
|
|
IN OUT LPBOOL lpfFound,
|
|
IN HWND hWnd,
|
|
IN LPVOID lpvReserved
|
|
);
|
|
//
|
|
// DAV Detection
|
|
//
|
|
BOOLAPI HttpCheckDavComplianceW(
|
|
IN LPCWSTR lpszUrl,
|
|
IN LPCWSTR lpszComplianceToken,
|
|
IN OUT LPBOOL lpfFound,
|
|
IN HWND hWnd,
|
|
IN LPVOID lpvReserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define HttpCheckDavCompliance HttpCheckDavComplianceW
|
|
#else
|
|
#define HttpCheckDavCompliance HttpCheckDavComplianceA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI HttpCheckCachedDavStatusA(
|
|
IN LPCSTR lpszUrl,
|
|
IN OUT LPDWORD lpdwStatus
|
|
);
|
|
BOOLAPI HttpCheckCachedDavStatusW(
|
|
IN LPCWSTR lpszUrl,
|
|
IN OUT LPDWORD lpdwStatus
|
|
);
|
|
#ifdef UNICODE
|
|
#define HttpCheckCachedDavStatus HttpCheckCachedDavStatusW
|
|
#else
|
|
#define HttpCheckCachedDavStatus HttpCheckCachedDavStatusA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI HttpCheckDavCollectionA(
|
|
IN LPCSTR lpszUrl,
|
|
IN OUT LPBOOL lpfFound,
|
|
IN HWND hWnd,
|
|
IN LPVOID lpvReserved
|
|
);
|
|
BOOLAPI HttpCheckDavCollectionW(
|
|
IN LPCWSTR lpszUrl,
|
|
IN OUT LPBOOL lpfFound,
|
|
IN HWND hWnd,
|
|
IN LPVOID lpvReserved
|
|
);
|
|
#ifdef UNICODE
|
|
#define HttpCheckDavCollection HttpCheckDavCollectionW
|
|
#else
|
|
#define HttpCheckDavCollection HttpCheckDavCollectionA
|
|
#endif // !UNICODE
|
|
|
|
// DAV detection defines
|
|
#define DAV_LEVEL1_STATUS 0x00000001
|
|
#define DAV_COLLECTION_STATUS 0x00004000
|
|
#define DAV_DETECTION_REQUIRED 0x00008000
|
|
#define ERROR_INTERNET_NO_NEW_CONTAINERS (INTERNET_ERROR_BASE + 51)
|
|
|
|
#define ERROR_INTERNET_OFFLINE ERROR_INTERNET_DISCONNECTED
|
|
|
|
//
|
|
// internal error codes that are used to communicate specific information inside
|
|
// of Wininet but which are meaningless at the interface
|
|
//
|
|
|
|
#define INTERNET_INTERNAL_ERROR_BASE (INTERNET_ERROR_BASE + 900)
|
|
|
|
#define ERROR_INTERNET_INTERNAL_SOCKET_ERROR (INTERNET_INTERNAL_ERROR_BASE + 1)
|
|
#define ERROR_INTERNET_CONNECTION_AVAILABLE (INTERNET_INTERNAL_ERROR_BASE + 2)
|
|
#define ERROR_INTERNET_NO_KNOWN_SERVERS (INTERNET_INTERNAL_ERROR_BASE + 3)
|
|
#define ERROR_INTERNET_PING_FAILED (INTERNET_INTERNAL_ERROR_BASE + 4)
|
|
#define ERROR_INTERNET_NO_PING_SUPPORT (INTERNET_INTERNAL_ERROR_BASE + 5)
|
|
#define ERROR_INTERNET_CACHE_SUCCESS (INTERNET_INTERNAL_ERROR_BASE + 6)
|
|
#define ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION_EX (INTERNET_INTERNAL_ERROR_BASE + 7)
|
|
#define HTTP_1_1_CACHE_ENTRY 0x00000040
|
|
#define STATIC_CACHE_ENTRY 0x00000080
|
|
#define MUST_REVALIDATE_CACHE_ENTRY 0x00000100
|
|
#define COOKIE_ACCEPTED_CACHE_ENTRY 0x00001000
|
|
#define COOKIE_LEASHED_CACHE_ENTRY 0x00002000
|
|
#define COOKIE_DOWNGRADED_CACHE_ENTRY 0x00004000
|
|
#define COOKIE_REJECTED_CACHE_ENTRY 0x00008000
|
|
#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 \
|
|
| COOKIE_ACCEPTED_CACHE_ENTRY \
|
|
| COOKIE_LEASHED_CACHE_ENTRY \
|
|
| COOKIE_DOWNGRADED_CACHE_ENTRY \
|
|
| COOKIE_REJECTED_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)
|
|
|
|
INTERNETAPI_(HANDLE) FindFirstUrlCacheContainerA(
|
|
IN OUT LPDWORD pdwModified,
|
|
OUT LPINTERNET_CACHE_CONTAINER_INFOA lpContainerInfo,
|
|
IN OUT LPDWORD lpdwContainerInfoBufferSize,
|
|
IN DWORD dwOptions
|
|
);
|
|
INTERNETAPI_(HANDLE) 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
|
|
|
|
|
|
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;
|
|
|
|
|
|
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
|
|
|
|
INTERNETAPI_(DWORD) RunOnceUrlCache(
|
|
HWND hwnd,
|
|
HINSTANCE hinst,
|
|
LPSTR lpszCmd,
|
|
int nCmdShow);
|
|
|
|
INTERNETAPI_(DWORD) 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
|
|
|
|
BOOLAPI
|
|
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
|
|
|
|
|
|
//
|
|
// Autodial APIs
|
|
//
|
|
|
|
INTERNETAPI_(DWORD) InternetDialA(
|
|
IN HWND hwndParent,
|
|
IN LPSTR lpszConnectoid,
|
|
IN DWORD dwFlags,
|
|
OUT DWORD_PTR *lpdwConnection,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
INTERNETAPI_(DWORD) InternetDialW(
|
|
IN HWND hwndParent,
|
|
IN LPWSTR lpszConnectoid,
|
|
IN DWORD dwFlags,
|
|
OUT DWORD_PTR *lpdwConnection,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define InternetDial InternetDialW
|
|
#else
|
|
#ifdef _WINX32_
|
|
#define InternetDial InternetDialA
|
|
#else
|
|
INTERNETAPI_(DWORD) InternetDial(
|
|
IN HWND hwndParent,
|
|
IN LPSTR lpszConnectoid,
|
|
IN DWORD dwFlags,
|
|
OUT LPDWORD lpdwConnection,
|
|
IN DWORD dwReserved
|
|
);
|
|
#endif // _WINX32_
|
|
#endif // !UNICODE
|
|
|
|
// Flags for InternetDial - must not conflict with InternetAutodial flags
|
|
// as they are valid here also.
|
|
#define INTERNET_DIAL_FORCE_PROMPT 0x2000
|
|
#define INTERNET_DIAL_SHOW_OFFLINE 0x4000
|
|
#define INTERNET_DIAL_UNATTENDED 0x8000
|
|
|
|
INTERNETAPI_(DWORD) InternetHangUp(
|
|
IN DWORD_PTR dwConnection,
|
|
IN DWORD dwReserved);
|
|
|
|
#define INTERENT_GOONLINE_REFRESH 0x00000001
|
|
#define INTERENT_GOONLINE_MASK 0x00000001
|
|
|
|
INTERNETAPI_(BOOL) InternetGoOnlineA(
|
|
IN LPSTR lpszURL,
|
|
IN HWND hwndParent,
|
|
IN DWORD dwFlags
|
|
);
|
|
|
|
INTERNETAPI_(BOOL) InternetGoOnlineW(
|
|
IN LPWSTR lpszURL,
|
|
IN HWND hwndParent,
|
|
IN DWORD dwFlags
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define InternetGoOnline InternetGoOnlineW
|
|
#else
|
|
#ifdef _WINX32_
|
|
#define InternetGoOnline InternetGoOnlineA
|
|
#else
|
|
INTERNETAPI_(BOOL) InternetGoOnline(
|
|
IN LPSTR lpszURL,
|
|
IN HWND hwndParent,
|
|
IN DWORD dwFlags
|
|
);
|
|
#endif // _WINX32_
|
|
#endif // !UNICODE
|
|
|
|
INTERNETAPI_(BOOL) InternetAutodial(
|
|
IN DWORD dwFlags,
|
|
IN HWND hwndParent);
|
|
|
|
// Flags for InternetAutodial
|
|
#define INTERNET_AUTODIAL_FORCE_ONLINE 1
|
|
#define INTERNET_AUTODIAL_FORCE_UNATTENDED 2
|
|
#define INTERNET_AUTODIAL_FAILIFSECURITYCHECK 4
|
|
#define INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT 8
|
|
|
|
|
|
#define INTERNET_AUTODIAL_FLAGS_MASK (INTERNET_AUTODIAL_FORCE_ONLINE | INTERNET_AUTODIAL_FORCE_UNATTENDED | INTERNET_AUTODIAL_FAILIFSECURITYCHECK | INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT)
|
|
INTERNETAPI_(BOOL) InternetAutodialHangup(
|
|
IN DWORD dwReserved);
|
|
|
|
INTERNETAPI_(BOOL) InternetGetConnectedState(
|
|
OUT LPDWORD lpdwFlags,
|
|
IN DWORD dwReserved);
|
|
|
|
INTERNETAPI_(BOOL) InternetGetConnectedStateExA(
|
|
OUT LPDWORD lpdwFlags,
|
|
OUT LPSTR lpszConnectionName,
|
|
IN DWORD dwNameLen,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
INTERNETAPI_(BOOL) InternetGetConnectedStateExW(
|
|
OUT LPDWORD lpdwFlags,
|
|
OUT LPWSTR lpszConnectionName,
|
|
IN DWORD dwNameLen,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
|
|
INTERNETAPI
|
|
InternetGetDialEngineW(
|
|
IN LPWSTR pwzConnectoid,
|
|
IN IDialEventSink * pdes,
|
|
OUT IDialEngine ** ppde
|
|
);
|
|
|
|
INTERNETAPI
|
|
InternetGetDialBrandingW(
|
|
IN LPWSTR pwzConnectoid,
|
|
OUT IDialBranding ** ppdb
|
|
);
|
|
|
|
|
|
INTERNETAPI_(BOOL) InternetInitializeAutoProxyDll(
|
|
DWORD dwReserved
|
|
);
|
|
|
|
INTERNETAPI_(BOOL) InternetDeInitializeAutoProxyDll(
|
|
IN LPSTR lpszMime,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
INTERNETAPI_(BOOL) InternetGetProxyInfo(
|
|
IN LPCSTR lpszUrl,
|
|
IN DWORD dwUrlLength,
|
|
IN LPSTR lpszUrlHostName,
|
|
IN DWORD dwUrlHostNameLength,
|
|
OUT LPSTR * lplpszProxyHostName,
|
|
OUT LPDWORD lpdwProxyHostNameLength
|
|
) ;
|
|
|
|
INTERNETAPI_(BOOL) DetectAutoProxyUrl(
|
|
IN OUT LPSTR lpszAutoProxyUrl,
|
|
IN DWORD dwAutoProxyUrlLength,
|
|
IN DWORD dwDetectFlags
|
|
);
|
|
|
|
INTERNETAPI_(BOOL) CreateMD5SSOHash (
|
|
IN PWSTR pszChallengeInfo,
|
|
IN PWSTR pwszRealm,
|
|
IN PWSTR pwszTarget,
|
|
OUT PBYTE pbHexHash
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define InternetGetConnectedStateEx InternetGetConnectedStateExW
|
|
#else
|
|
#ifdef _WINX32_
|
|
#define InternetGetConnectedStateEx InternetGetConnectedStateExA
|
|
#else
|
|
INTERNETAPI_(BOOL) InternetGetConnectedStateEx(
|
|
OUT LPDWORD lpdwFlags,
|
|
IN LPSTR lpszConnectionName,
|
|
IN DWORD dwNameLen,
|
|
IN DWORD dwReserved
|
|
);
|
|
#endif // _WINX32_
|
|
#endif // !UNICODE
|
|
|
|
// Flags for InternetGetConnectedState and Ex
|
|
#define INTERNET_CONNECTION_MODEM 0x01
|
|
#define INTERNET_CONNECTION_LAN 0x02
|
|
#define INTERNET_CONNECTION_PROXY 0x04
|
|
#define INTERNET_CONNECTION_MODEM_BUSY 0x08 /* no longer used */
|
|
#define INTERNET_RAS_INSTALLED 0x10
|
|
#define INTERNET_CONNECTION_OFFLINE 0x20
|
|
#define INTERNET_CONNECTION_CONFIGURED 0x40
|
|
|
|
//
|
|
// Custom dial handler functions
|
|
//
|
|
|
|
// Custom dial handler prototype
|
|
typedef DWORD (CALLBACK * PFN_DIAL_HANDLER) (HWND, LPCSTR, DWORD, LPDWORD);
|
|
|
|
// Flags for custom dial handler
|
|
#define INTERNET_CUSTOMDIAL_CONNECT 0
|
|
#define INTERNET_CUSTOMDIAL_UNATTENDED 1
|
|
#define INTERNET_CUSTOMDIAL_DISCONNECT 2
|
|
#define INTERNET_CUSTOMDIAL_SHOWOFFLINE 4
|
|
|
|
// Custom dial handler supported functionality flags
|
|
#define INTERNET_CUSTOMDIAL_SAFE_FOR_UNATTENDED 1
|
|
#define INTERNET_CUSTOMDIAL_WILL_SUPPLY_STATE 2
|
|
#define INTERNET_CUSTOMDIAL_CAN_HANGUP 4
|
|
|
|
INTERNETAPI_(BOOL) InternetSetDialStateA(
|
|
IN LPCSTR lpszConnectoid,
|
|
IN DWORD dwState,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
INTERNETAPI_(BOOL) InternetSetDialStateW(
|
|
IN LPCWSTR lpszConnectoid,
|
|
IN DWORD dwState,
|
|
IN DWORD dwReserved
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define InternetSetDialState InternetSetDialStateW
|
|
#else
|
|
#ifdef _WINX32_
|
|
#define InternetSetDialState InternetSetDialStateA
|
|
#else
|
|
INTERNETAPI_(BOOL) InternetSetDialState(
|
|
IN LPCSTR lpszConnectoid,
|
|
IN DWORD dwState,
|
|
IN DWORD dwReserved
|
|
);
|
|
#endif // _WINX32_
|
|
#endif // !UNICODE
|
|
|
|
// States for InternetSetDialState
|
|
#define INTERNET_DIALSTATE_DISCONNECTED 1
|
|
|
|
// Registry entries used by the dialing code
|
|
// All of these entries are in:
|
|
// HKCU\software\microsoft\windows\current version\internet settings
|
|
|
|
#define REGSTR_DIAL_AUTOCONNECT "AutoConnect"
|
|
|
|
// Registry entries for legacy cookies
|
|
#define REGSTR_LEASH_LEGACY_COOKIES "LeashLegacyCookies"
|
|
|
|
|
|
|
|
// Used by security manager.
|
|
|
|
INTERNETAPI_(BOOL) IsHostInProxyBypassList(
|
|
IN INTERNET_SCHEME tScheme,
|
|
IN LPCSTR lpszHost,
|
|
IN DWORD cchHost);
|
|
|
|
// Used by Shell to determine if anyone has loaded wininet yet
|
|
// Shell code calls OpenMutex with this name and if no mutex is
|
|
// obtained, we know that no copy of wininet has been loaded yet
|
|
|
|
#define WININET_STARTUP_MUTEX "WininetStartupMutex"
|
|
|
|
|
|
BOOL DoConnectoidsExist(void); // Returns TRUE if any RAS connectoids exist and FALSE otherwise
|
|
|
|
BOOL GetDiskInfoA(
|
|
IN PSTR pszPath,
|
|
IN OUT PDWORD pdwClusterSize,
|
|
IN OUT PDWORDLONG pdlAvail,
|
|
IN OUT PDWORDLONG pdlTotal);
|
|
|
|
typedef BOOL (*CACHE_OPERATOR)(INTERNET_CACHE_ENTRY_INFO* pcei, PDWORD pcbcei, PVOID pOpData);
|
|
|
|
BOOL PerformOperationOverUrlCacheA(
|
|
IN PCSTR pszUrlSearchPattern,
|
|
IN DWORD dwFlags,
|
|
IN DWORD dwFilter,
|
|
IN GROUPID GroupId,
|
|
OUT PVOID pReserved1,
|
|
IN OUT PDWORD pdwReserved2,
|
|
IN PVOID pReserved3,
|
|
IN CACHE_OPERATOR op,
|
|
IN OUT PVOID pOperatorData
|
|
);
|
|
|
|
BOOL IsProfilesCapable();
|
|
|
|
|
|
// in cookimp.cxx and cookexp.cxx
|
|
BOOLAPI ImportCookieFileA( IN LPCSTR szFilename );
|
|
// in cookimp.cxx and cookexp.cxx
|
|
BOOLAPI ImportCookieFileW( IN LPCWSTR szFilename );
|
|
#ifdef UNICODE
|
|
#define ImportCookieFile ImportCookieFileW
|
|
#else
|
|
#define ImportCookieFile ImportCookieFileA
|
|
#endif // !UNICODE
|
|
BOOLAPI ExportCookieFileA( IN LPCSTR szFilename, BOOL fAppend);
|
|
BOOLAPI ExportCookieFileW( IN LPCWSTR szFilename, BOOL fAppend);
|
|
#ifdef UNICODE
|
|
#define ExportCookieFile ExportCookieFileW
|
|
#else
|
|
#define ExportCookieFile ExportCookieFileA
|
|
#endif // !UNICODE
|
|
|
|
BOOLAPI IsDomainLegalCookieDomainA( IN LPCSTR pchDomain, IN LPCSTR pchFullDomain); // in "wininet\http\cookie.cxx"
|
|
BOOLAPI IsDomainLegalCookieDomainW( IN LPCWSTR pchDomain, IN LPCWSTR pchFullDomain); // in "wininet\http\cookie.cxx"
|
|
#ifdef UNICODE
|
|
#define IsDomainLegalCookieDomain IsDomainLegalCookieDomainW
|
|
#else
|
|
#define IsDomainLegalCookieDomain IsDomainLegalCookieDomainA
|
|
#endif // !UNICODE
|
|
|
|
|
|
INTERNETAPI_(BOOL) InternetEnumPerSiteCookieDecisionA(OUT LPSTR pszSiteName, IN OUT unsigned long *pcSiteNameSize, OUT unsigned long *pdwDecision, IN unsigned long dwIndex);
|
|
INTERNETAPI_(BOOL) InternetEnumPerSiteCookieDecisionW(OUT LPWSTR pszSiteName, IN OUT unsigned long *pcSiteNameSize, OUT unsigned long *pdwDecision, IN unsigned long dwIndex);
|
|
#ifdef UNICODE
|
|
#define InternetEnumPerSiteCookieDecision InternetEnumPerSiteCookieDecisionW
|
|
#else
|
|
#define InternetEnumPerSiteCookieDecision InternetEnumPerSiteCookieDecisionA
|
|
#endif // !UNICODE
|
|
|
|
//
|
|
// Privacy settings values and APIs
|
|
//
|
|
|
|
#define PRIVACY_TEMPLATE_NO_COOKIES 0
|
|
#define PRIVACY_TEMPLATE_HIGH 1
|
|
#define PRIVACY_TEMPLATE_MEDIUM_HIGH 2
|
|
#define PRIVACY_TEMPLATE_MEDIUM 3
|
|
#define PRIVACY_TEMPLATE_MEDIUM_LOW 4
|
|
#define PRIVACY_TEMPLATE_LOW 5
|
|
#define PRIVACY_TEMPLATE_CUSTOM 100
|
|
#define PRIVACY_TEMPLATE_ADVANCED 101
|
|
|
|
#define PRIVACY_TEMPLATE_MAX PRIVACY_TEMPLATE_LOW
|
|
|
|
#define PRIVACY_TYPE_FIRST_PARTY 0
|
|
#define PRIVACY_TYPE_THIRD_PARTY 1
|
|
|
|
INTERNETAPI_(DWORD)
|
|
PrivacySetZonePreferenceW(
|
|
DWORD dwZone,
|
|
DWORD dwType,
|
|
DWORD dwTemplate,
|
|
LPCWSTR pszPreference
|
|
);
|
|
|
|
INTERNETAPI_(DWORD)
|
|
PrivacyGetZonePreferenceW(
|
|
DWORD dwZone,
|
|
DWORD dwType,
|
|
LPDWORD pdwTemplate,
|
|
LPWSTR pszBuffer,
|
|
LPDWORD pdwBufferLength
|
|
);
|
|
|
|
#define _P3PGLOBAL_H_
|
|
|
|
typedef char P3PCHAR;
|
|
typedef char *P3PURL;
|
|
typedef char *P3PVERB;
|
|
typedef const char *P3PCURL;
|
|
typedef BSTR P3PCXSL;
|
|
typedef void *P3PHANDLE;
|
|
|
|
#define URL_LIMIT INTERNET_MAX_URL_LENGTH
|
|
|
|
struct P3PResource {
|
|
|
|
P3PCURL pszLocation;
|
|
P3PVERB pszVerb;
|
|
|
|
P3PCURL pszP3PHeaderRef;
|
|
P3PCURL pszLinkTagRef;
|
|
|
|
struct P3PResource *pContainer;
|
|
};
|
|
|
|
struct P3PSignal {
|
|
|
|
/* Window handle for PostMessage and corresponding msg value */
|
|
HWND hwnd;
|
|
unsigned int message;
|
|
|
|
/* Event handle to signal */
|
|
HANDLE hEvent;
|
|
|
|
/* Application-defined context */
|
|
void *pContext;
|
|
|
|
/* OUT: request handle */
|
|
P3PHANDLE hRequest;
|
|
};
|
|
|
|
typedef enum {
|
|
|
|
P3P_Done = 0x0,
|
|
P3P_Success = 0x0,
|
|
|
|
P3P_NoPolicy = 0x2,
|
|
P3P_InProgress = 0x3,
|
|
P3P_Failed = 0x4,
|
|
P3P_NotFound = 0x5,
|
|
P3P_FormatErr = 0x6,
|
|
P3P_Cancelled = 0x7,
|
|
P3P_NotStarted = 0x8,
|
|
P3P_XMLError = 0x9,
|
|
P3P_Expired = 0xA,
|
|
|
|
P3P_Error = 0xFF,
|
|
}
|
|
P3PStatus;
|
|
|
|
INTERNETAPI_(int) MapResourceToPolicy(struct P3PResource *pResource, P3PURL pszPolicy, unsigned long dwSize, struct P3PSignal *pSignal);
|
|
|
|
INTERNETAPI_(int) GetP3PPolicy(P3PCURL pszPolicyURL, HANDLE hDestination, P3PCXSL pszXSLtransform, struct P3PSignal *pSignal);
|
|
|
|
INTERNETAPI_(int) FreeP3PObject(P3PHANDLE hObject);
|
|
|
|
INTERNETAPI_(int) GetP3PRequestStatus(P3PHANDLE hObject);
|
|
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif // !define(_WININETEX_)
|