Leaked source code of windows server 2003
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.
 
 
 
 
 
 

1356 lines
39 KiB

#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
);
// causes InternetCreateUrlA to escape chars in authority components (user, pwd, host)
#define ICU_ESCAPE_AUTHORITY 0x00002000
#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) 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_)