// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! Windows Internet Services API procedure declarations, types and constants. use ctypes::c_int; use shared::basetsd::DWORD_PTR; use shared::minwindef::{ BOOL, DWORD, FALSE, FILETIME, INT, LPBYTE, LPCVOID, LPDWORD, LPVOID, PBYTE, PDWORD, TRUE, WORD, }; use shared::ntdef::{LONG, LONGLONG, PLONG}; use shared::windef::HWND; use um::minwinbase::{LPWIN32_FIND_DATAA, LPWIN32_FIND_DATAW, SYSTEMTIME}; use um::winineti::INTERNET_FLAG_BGUPDATE; use um::winnt::{ CHAR, DWORDLONG, HANDLE, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, PSTR, PWSTR, WCHAR, }; pub type HINTERNET = LPVOID; pub type LPHINTERNET = *mut HINTERNET; pub type INTERNET_PORT = WORD; pub type LPINTERNET_PORT = *mut INTERNET_PORT; pub const INTERNET_INVALID_PORT_NUMBER: DWORD = 0; pub const INTERNET_DEFAULT_FTP_PORT: DWORD = 21; pub const INTERNET_DEFAULT_GOPHER_PORT: DWORD = 70; pub const INTERNET_DEFAULT_HTTP_PORT: DWORD = 80; pub const INTERNET_DEFAULT_HTTPS_PORT: DWORD = 443; pub const INTERNET_DEFAULT_SOCKS_PORT: DWORD = 1080; pub const INTERNET_MAX_HOST_NAME_LENGTH: usize = 256; pub const INTERNET_MAX_USER_NAME_LENGTH: usize = 128; pub const INTERNET_MAX_PASSWORD_LENGTH: usize = 128; pub const INTERNET_MAX_PORT_NUMBER_LENGTH: usize = 5; pub const INTERNET_MAX_PORT_NUMBER_VALUE: DWORD = 65535; pub const INTERNET_MAX_PATH_LENGTH: usize = 2048; pub const INTERNET_MAX_SCHEME_LENGTH: usize = 32; pub const INTERNET_MAX_URL_LENGTH: usize = INTERNET_MAX_SCHEME_LENGTH + 3 + INTERNET_MAX_PATH_LENGTH; pub const INTERNET_KEEP_ALIVE_UNKNOWN: DWORD = -1i32 as u32; pub const INTERNET_KEEP_ALIVE_ENABLED: DWORD = 1; pub const INTERNET_KEEP_ALIVE_DISABLED: DWORD = 0; pub const INTERNET_REQFLAG_FROM_CACHE: DWORD = 0x00000001; pub const INTERNET_REQFLAG_ASYNC: DWORD = 0x00000002; pub const INTERNET_REQFLAG_VIA_PROXY: DWORD = 0x00000004; pub const INTERNET_REQFLAG_NO_HEADERS: DWORD = 0x00000008; pub const INTERNET_REQFLAG_PASSIVE: DWORD = 0x00000010; pub const INTERNET_REQFLAG_CACHE_WRITE_DISABLED: DWORD = 0x00000040; pub const INTERNET_REQFLAG_NET_TIMEOUT: DWORD = 0x00000080; pub const INTERNET_FLAG_IDN_DIRECT: DWORD = 0x00000001; pub const INTERNET_FLAG_IDN_PROXY: DWORD = 0x00000002; pub const INTERNET_FLAG_RELOAD: DWORD = 0x80000000; pub const INTERNET_FLAG_RAW_DATA: DWORD = 0x40000000; pub const INTERNET_FLAG_EXISTING_CONNECT: DWORD = 0x20000000; pub const INTERNET_FLAG_ASYNC: DWORD = 0x10000000; pub const INTERNET_FLAG_PASSIVE: DWORD = 0x08000000; pub const INTERNET_FLAG_NO_CACHE_WRITE: DWORD = 0x04000000; pub const INTERNET_FLAG_DONT_CACHE: DWORD = INTERNET_FLAG_NO_CACHE_WRITE; pub const INTERNET_FLAG_MAKE_PERSISTENT: DWORD = 0x02000000; pub const INTERNET_FLAG_FROM_CACHE: DWORD = 0x01000000; pub const INTERNET_FLAG_OFFLINE: DWORD = INTERNET_FLAG_FROM_CACHE; pub const INTERNET_FLAG_SECURE: DWORD = 0x00800000; pub const INTERNET_FLAG_KEEP_CONNECTION: DWORD = 0x00400000; pub const INTERNET_FLAG_NO_AUTO_REDIRECT: DWORD = 0x00200000; pub const INTERNET_FLAG_READ_PREFETCH: DWORD = 0x00100000; pub const INTERNET_FLAG_NO_COOKIES: DWORD = 0x00080000; pub const INTERNET_FLAG_NO_AUTH: DWORD = 0x00040000; pub const INTERNET_FLAG_RESTRICTED_ZONE: DWORD = 0x00020000; pub const INTERNET_FLAG_CACHE_IF_NET_FAIL: DWORD = 0x00010000; pub const INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP: DWORD = 0x00008000; pub const INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS: DWORD = 0x00004000; pub const INTERNET_FLAG_IGNORE_CERT_DATE_INVALID: DWORD = 0x00002000; pub const INTERNET_FLAG_IGNORE_CERT_CN_INVALID: DWORD = 0x00001000; pub const INTERNET_FLAG_RESYNCHRONIZE: DWORD = 0x00000800; pub const INTERNET_FLAG_HYPERLINK: DWORD = 0x00000400; pub const INTERNET_FLAG_NO_UI: DWORD = 0x00000200; pub const INTERNET_FLAG_PRAGMA_NOCACHE: DWORD = 0x00000100; pub const INTERNET_FLAG_CACHE_ASYNC: DWORD = 0x00000080; pub const INTERNET_FLAG_FORMS_SUBMIT: DWORD = 0x00000040; pub const INTERNET_FLAG_FWD_BACK: DWORD = 0x00000020; pub const INTERNET_FLAG_NEED_FILE: DWORD = 0x00000010; pub const INTERNET_FLAG_MUST_CACHE_REQUEST: DWORD = INTERNET_FLAG_NEED_FILE; pub const INTERNET_FLAG_TRANSFER_ASCII: DWORD = FTP_TRANSFER_TYPE_ASCII; pub const INTERNET_FLAG_TRANSFER_BINARY: DWORD = FTP_TRANSFER_TYPE_BINARY; pub const SECURITY_INTERNET_MASK: DWORD = INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS | INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; pub const SECURITY_IGNORE_ERROR_MASK: DWORD = INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_REVOCATION; pub const INTERNET_FLAGS_MASK: DWORD = INTERNET_FLAG_RELOAD | INTERNET_FLAG_RAW_DATA | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_ASYNC | INTERNET_FLAG_PASSIVE | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_MAKE_PERSISTENT | INTERNET_FLAG_FROM_CACHE | INTERNET_FLAG_SECURE | INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_READ_PREFETCH | INTERNET_FLAG_NO_COOKIES | INTERNET_FLAG_NO_AUTH | INTERNET_FLAG_CACHE_IF_NET_FAIL | SECURITY_INTERNET_MASK | INTERNET_FLAG_RESYNCHRONIZE | INTERNET_FLAG_HYPERLINK | INTERNET_FLAG_NO_UI | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_CACHE_ASYNC | INTERNET_FLAG_FORMS_SUBMIT | INTERNET_FLAG_NEED_FILE | INTERNET_FLAG_RESTRICTED_ZONE | INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_FWD_BACK | INTERNET_FLAG_BGUPDATE; pub const INTERNET_ERROR_MASK_INSERT_CDROM: DWORD = 0x1; pub const INTERNET_ERROR_MASK_COMBINED_SEC_CERT: DWORD = 0x2; pub const INTERNET_ERROR_MASK_NEED_MSN_SSPI_PKG: DWORD = 0x4; pub const INTERNET_ERROR_MASK_LOGIN_FAILURE_DISPLAY_ENTITY_BODY: DWORD = 0x8; pub const INTERNET_OPTIONS_MASK: DWORD = !INTERNET_FLAGS_MASK; pub const WININET_API_FLAG_ASYNC: DWORD = 0x00000001; pub const WININET_API_FLAG_SYNC: DWORD = 0x00000004; pub const WININET_API_FLAG_USE_CONTEXT: DWORD = 0x00000008; pub const INTERNET_NO_CALLBACK: DWORD = 0; ENUM!{enum INTERNET_SCHEME { INTERNET_SCHEME_PARTIAL = -2i32 as u32, INTERNET_SCHEME_UNKNOWN = -1i32 as u32, INTERNET_SCHEME_DEFAULT = 0, INTERNET_SCHEME_FTP, INTERNET_SCHEME_GOPHER, INTERNET_SCHEME_HTTP, INTERNET_SCHEME_HTTPS, INTERNET_SCHEME_FILE, INTERNET_SCHEME_NEWS, INTERNET_SCHEME_MAILTO, INTERNET_SCHEME_SOCKS, INTERNET_SCHEME_JAVASCRIPT, INTERNET_SCHEME_VBSCRIPT, INTERNET_SCHEME_RES, INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, INTERNET_SCHEME_LAST = INTERNET_SCHEME_RES, }} pub type LPINTERNET_SCHEME = *mut INTERNET_SCHEME; STRUCT!{struct INTERNET_ASYNC_RESULT { dwResult: DWORD_PTR, dwError: DWORD, }} pub type LPINTERNET_ASYNC_RESULT = *mut INTERNET_ASYNC_RESULT; STRUCT!{struct INTERNET_DIAGNOSTIC_SOCKET_INFO { Socket: DWORD_PTR, SourcePort: DWORD, DestPort: DWORD, Flags: DWORD, }} pub type LPINTERNET_DIAGNOSTIC_SOCKET_INFO = *mut INTERNET_DIAGNOSTIC_SOCKET_INFO; pub const IDSI_FLAG_KEEP_ALIVE: DWORD = 0x00000001; pub const IDSI_FLAG_SECURE: DWORD = 0x00000002; pub const IDSI_FLAG_PROXY: DWORD = 0x00000004; pub const IDSI_FLAG_TUNNEL: DWORD = 0x00000008; STRUCT!{struct INTERNET_PROXY_INFO { dwAccessType: DWORD, lpszProxy: LPCWSTR, lpszProxyBypass: LPCWSTR, }} pub type LPINTERNET_PROXY_INFO = *mut INTERNET_PROXY_INFO; UNION!{union INTERNET_PER_CONN_OPTIONA_Value { [u32; 2] [u64; 1], dwValue dwValue_mut: DWORD, pszValue pszValue_mut: LPSTR, ftValue ftValue_mut: FILETIME, }} STRUCT!{struct INTERNET_PER_CONN_OPTIONA { dwOption: DWORD, Value: INTERNET_PER_CONN_OPTIONA_Value, }} pub type LPINTERNET_PER_CONN_OPTIONA = *mut INTERNET_PER_CONN_OPTIONA; UNION!{union INTERNET_PER_CONN_OPTIONW_Value { [u32; 2] [u64; 1], dwValue dwValue_mut: DWORD, pszValue pszValue_mut: LPWSTR, ftValue ftValue_mut: FILETIME, }} STRUCT!{struct INTERNET_PER_CONN_OPTIONW { dwOption: DWORD, Value: INTERNET_PER_CONN_OPTIONW_Value, }} pub type LPINTERNET_PER_CONN_OPTIONW = *mut INTERNET_PER_CONN_OPTIONW; STRUCT!{struct INTERNET_PER_CONN_OPTION_LISTA { dwSize: DWORD, pszConnection: LPSTR, dwOptionCount: DWORD, dwOptionError: DWORD, pOptions: LPINTERNET_PER_CONN_OPTIONA, }} pub type LPINTERNET_PER_CONN_OPTION_LISTA = *mut INTERNET_PER_CONN_OPTION_LISTA; STRUCT!{struct INTERNET_PER_CONN_OPTION_LISTW { dwSize: DWORD, pszConnection: LPWSTR, dwOptionCount: DWORD, dwOptionError: DWORD, pOptions: LPINTERNET_PER_CONN_OPTIONW, }} pub type LPINTERNET_PER_CONN_OPTION_LISTW = *mut INTERNET_PER_CONN_OPTION_LISTW; pub const INTERNET_PER_CONN_FLAGS: DWORD = 1; pub const INTERNET_PER_CONN_PROXY_SERVER: DWORD = 2; pub const INTERNET_PER_CONN_PROXY_BYPASS: DWORD = 3; pub const INTERNET_PER_CONN_AUTOCONFIG_URL: DWORD = 4; pub const INTERNET_PER_CONN_AUTODISCOVERY_FLAGS: DWORD = 5; pub const INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL: DWORD = 6; pub const INTERNET_PER_CONN_AUTOCONFIG_RELOAD_DELAY_MINS: DWORD = 7; pub const INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_TIME: DWORD = 8; pub const INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_URL: DWORD = 9; pub const INTERNET_PER_CONN_FLAGS_UI: DWORD = 10; pub const PROXY_TYPE_DIRECT: DWORD = 0x00000001; pub const PROXY_TYPE_PROXY: DWORD = 0x00000002; pub const PROXY_TYPE_AUTO_PROXY_URL: DWORD = 0x00000004; pub const PROXY_TYPE_AUTO_DETECT: DWORD = 0x00000008; pub const AUTO_PROXY_FLAG_USER_SET: DWORD = 0x00000001; pub const AUTO_PROXY_FLAG_ALWAYS_DETECT: DWORD = 0x00000002; pub const AUTO_PROXY_FLAG_DETECTION_RUN: DWORD = 0x00000004; pub const AUTO_PROXY_FLAG_MIGRATED: DWORD = 0x00000008; pub const AUTO_PROXY_FLAG_DONT_CACHE_PROXY_RESULT: DWORD = 0x00000010; pub const AUTO_PROXY_FLAG_CACHE_INIT_RUN: DWORD = 0x00000020; pub const AUTO_PROXY_FLAG_DETECTION_SUSPECT: DWORD = 0x00000040; STRUCT!{struct INTERNET_VERSION_INFO { dwMajorVersion: DWORD, dwMinorVersion: DWORD, }} pub type LPINTERNET_VERSION_INFO = *mut INTERNET_VERSION_INFO; STRUCT!{struct HTTP_VERSION_INFO { dwMajorVersion: DWORD, dwMinorVersion: DWORD, }} pub type LPHTTP_VERSION_INFO = *mut HTTP_VERSION_INFO; STRUCT!{struct INTERNET_CONNECTED_INFO { dwConnectedState: DWORD, dwFlags: DWORD, }} pub type LPINTERNET_CONNECTED_INFO = *mut INTERNET_CONNECTED_INFO; pub const ISO_FORCE_DISCONNECTED: DWORD = 0x00000001; STRUCT!{struct URL_COMPONENTSA { dwStructSize: DWORD, lpszScheme: LPSTR, dwSchemeLength: DWORD, nScheme: INTERNET_SCHEME, lpszHostName: LPSTR, dwHostNameLength: DWORD, nPort: INTERNET_PORT, lpszUserName: LPSTR, dwUserNameLength: DWORD, lpszPassword: LPSTR, dwPasswordLength: DWORD, lpszUrlPath: LPSTR, dwUrlPathLength: DWORD, lpszExtraInfo: LPSTR, dwExtraInfoLength: DWORD, }} pub type LPURL_COMPONENTSA = *mut URL_COMPONENTSA; STRUCT!{struct URL_COMPONENTSW { dwStructSize: DWORD, lpszScheme: LPWSTR, dwSchemeLength: DWORD, nScheme: INTERNET_SCHEME, lpszHostName: LPWSTR, dwHostNameLength: DWORD, nPort: INTERNET_PORT, lpszUserName: LPWSTR, dwUserNameLength: DWORD, lpszPassword: LPWSTR, dwPasswordLength: DWORD, lpszUrlPath: LPWSTR, dwUrlPathLength: DWORD, lpszExtraInfo: LPWSTR, dwExtraInfoLength: DWORD, }} pub type LPURL_COMPONENTSW = *mut URL_COMPONENTSW; STRUCT!{struct INTERNET_CERTIFICATE_INFO { ftExpiry: FILETIME, ftStart: FILETIME, lpszSubjectInfo: LPWSTR, lpszIssuerInfo: LPWSTR, lpszProtocolName: LPWSTR, lpszSignatureAlgName: LPWSTR, lpszEncryptionAlgName: LPWSTR, dwKeySize: DWORD, }} pub type LPINTERNET_CERTIFICATE_INFO = *mut INTERNET_CERTIFICATE_INFO; STRUCT!{struct INTERNET_BUFFERSA { dwStructSize: DWORD, Next: *mut INTERNET_BUFFERSA, lpcszHeader: LPCSTR, dwHeadersLength: DWORD, dwHeadersTotal: DWORD, lpvBuffer: LPVOID, dwBufferLength: DWORD, dwBufferTotal: DWORD, dwOffsetLow: DWORD, dwOffsetHigh: DWORD, }} pub type LPINTERNET_BUFFERSA = *mut INTERNET_BUFFERSA; STRUCT!{struct INTERNET_BUFFERSW { dwStructSize: DWORD, Next: *mut INTERNET_BUFFERSW, lpcszHeader: LPCWSTR, dwHeadersLength: DWORD, dwHeadersTotal: DWORD, lpvBuffer: LPVOID, dwBufferLength: DWORD, dwBufferTotal: DWORD, dwOffsetLow: DWORD, dwOffsetHigh: DWORD, }} pub type LPINTERNET_BUFFERSW = *mut INTERNET_BUFFERSW; pub const INTERNET_RFC1123_FORMAT: DWORD = 0; pub const INTERNET_RFC1123_BUFSIZE: DWORD = 30; pub const ICU_ESCAPE: DWORD = 0x80000000; pub const ICU_USERNAME: DWORD = 0x40000000; pub const ICU_NO_ENCODE: DWORD = 0x20000000; pub const ICU_DECODE: DWORD = 0x10000000; pub const ICU_NO_META: DWORD = 0x08000000; pub const ICU_ENCODE_SPACES_ONLY: DWORD = 0x04000000; pub const ICU_BROWSER_MODE: DWORD = 0x02000000; pub const ICU_ENCODE_PERCENT: DWORD = 0x00001000; pub const INTERNET_OPEN_TYPE_PRECONFIG: DWORD = 0; pub const INTERNET_OPEN_TYPE_DIRECT: DWORD = 1; pub const INTERNET_OPEN_TYPE_PROXY: DWORD = 3; pub const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY: DWORD = 4; pub const PRE_CONFIG_INTERNET_ACCESS: DWORD = INTERNET_OPEN_TYPE_PRECONFIG; pub const LOCAL_INTERNET_ACCESS: DWORD = INTERNET_OPEN_TYPE_DIRECT; pub const CERN_PROXY_INTERNET_ACCESS: DWORD = INTERNET_OPEN_TYPE_PROXY; pub const INTERNET_SERVICE_FTP: DWORD = 1; pub const INTERNET_SERVICE_GOPHER: DWORD = 2; pub const INTERNET_SERVICE_HTTP: DWORD = 3; pub const IRF_ASYNC: DWORD = WININET_API_FLAG_ASYNC; pub const IRF_SYNC: DWORD = WININET_API_FLAG_SYNC; pub const IRF_USE_CONTEXT: DWORD = WININET_API_FLAG_USE_CONTEXT; pub const IRF_NO_WAIT: DWORD = 0x00000008; pub const ISO_GLOBAL: DWORD = 0x00000001; pub const ISO_REGISTRY: DWORD = 0x00000002; pub const ISO_VALID_FLAGS: DWORD = ISO_GLOBAL | ISO_REGISTRY; pub const INTERNET_OPTION_CALLBACK: DWORD = 1; pub const INTERNET_OPTION_CONNECT_TIMEOUT: DWORD = 2; pub const INTERNET_OPTION_CONNECT_RETRIES: DWORD = 3; pub const INTERNET_OPTION_CONNECT_BACKOFF: DWORD = 4; pub const INTERNET_OPTION_SEND_TIMEOUT: DWORD = 5; pub const INTERNET_OPTION_CONTROL_SEND_TIMEOUT: DWORD = INTERNET_OPTION_SEND_TIMEOUT; pub const INTERNET_OPTION_RECEIVE_TIMEOUT: DWORD = 6; pub const INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT: DWORD = INTERNET_OPTION_RECEIVE_TIMEOUT; pub const INTERNET_OPTION_DATA_SEND_TIMEOUT: DWORD = 7; pub const INTERNET_OPTION_DATA_RECEIVE_TIMEOUT: DWORD = 8; pub const INTERNET_OPTION_HANDLE_TYPE: DWORD = 9; pub const INTERNET_OPTION_LISTEN_TIMEOUT: DWORD = 11; pub const INTERNET_OPTION_READ_BUFFER_SIZE: DWORD = 12; pub const INTERNET_OPTION_WRITE_BUFFER_SIZE: DWORD = 13; pub const INTERNET_OPTION_ASYNC_ID: DWORD = 15; pub const INTERNET_OPTION_ASYNC_PRIORITY: DWORD = 16; pub const INTERNET_OPTION_PARENT_HANDLE: DWORD = 21; pub const INTERNET_OPTION_KEEP_CONNECTION: DWORD = 22; pub const INTERNET_OPTION_REQUEST_FLAGS: DWORD = 23; pub const INTERNET_OPTION_EXTENDED_ERROR: DWORD = 24; pub const INTERNET_OPTION_OFFLINE_MODE: DWORD = 26; pub const INTERNET_OPTION_CACHE_STREAM_HANDLE: DWORD = 27; pub const INTERNET_OPTION_USERNAME: DWORD = 28; pub const INTERNET_OPTION_PASSWORD: DWORD = 29; pub const INTERNET_OPTION_ASYNC: DWORD = 30; pub const INTERNET_OPTION_SECURITY_FLAGS: DWORD = 31; pub const INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT: DWORD = 32; pub const INTERNET_OPTION_DATAFILE_NAME: DWORD = 33; pub const INTERNET_OPTION_URL: DWORD = 34; pub const INTERNET_OPTION_SECURITY_CERTIFICATE: DWORD = 35; pub const INTERNET_OPTION_SECURITY_KEY_BITNESS: DWORD = 36; pub const INTERNET_OPTION_REFRESH: DWORD = 37; pub const INTERNET_OPTION_PROXY: DWORD = 38; pub const INTERNET_OPTION_SETTINGS_CHANGED: DWORD = 39; pub const INTERNET_OPTION_VERSION: DWORD = 40; pub const INTERNET_OPTION_USER_AGENT: DWORD = 41; pub const INTERNET_OPTION_END_BROWSER_SESSION: DWORD = 42; pub const INTERNET_OPTION_PROXY_USERNAME: DWORD = 43; pub const INTERNET_OPTION_PROXY_PASSWORD: DWORD = 44; pub const INTERNET_OPTION_CONTEXT_VALUE: DWORD = 45; pub const INTERNET_OPTION_CONNECT_LIMIT: DWORD = 46; pub const INTERNET_OPTION_SECURITY_SELECT_CLIENT_CERT: DWORD = 47; pub const INTERNET_OPTION_POLICY: DWORD = 48; pub const INTERNET_OPTION_DISCONNECTED_TIMEOUT: DWORD = 49; pub const INTERNET_OPTION_CONNECTED_STATE: DWORD = 50; pub const INTERNET_OPTION_IDLE_STATE: DWORD = 51; pub const INTERNET_OPTION_OFFLINE_SEMANTICS: DWORD = 52; pub const INTERNET_OPTION_SECONDARY_CACHE_KEY: DWORD = 53; pub const INTERNET_OPTION_CALLBACK_FILTER: DWORD = 54; pub const INTERNET_OPTION_CONNECT_TIME: DWORD = 55; pub const INTERNET_OPTION_SEND_THROUGHPUT: DWORD = 56; pub const INTERNET_OPTION_RECEIVE_THROUGHPUT: DWORD = 57; pub const INTERNET_OPTION_REQUEST_PRIORITY: DWORD = 58; pub const INTERNET_OPTION_HTTP_VERSION: DWORD = 59; pub const INTERNET_OPTION_RESET_URLCACHE_SESSION: DWORD = 60; pub const INTERNET_OPTION_ERROR_MASK: DWORD = 62; pub const INTERNET_OPTION_FROM_CACHE_TIMEOUT: DWORD = 63; pub const INTERNET_OPTION_BYPASS_EDITED_ENTRY: DWORD = 64; pub const INTERNET_OPTION_HTTP_DECODING: DWORD = 65; pub const INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO: DWORD = 67; pub const INTERNET_OPTION_CODEPAGE: DWORD = 68; pub const INTERNET_OPTION_CACHE_TIMESTAMPS: DWORD = 69; pub const INTERNET_OPTION_DISABLE_AUTODIAL: DWORD = 70; pub const INTERNET_OPTION_MAX_CONNS_PER_SERVER: DWORD = 73; pub const INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER: DWORD = 74; pub const INTERNET_OPTION_PER_CONNECTION_OPTION: DWORD = 75; pub const INTERNET_OPTION_DIGEST_AUTH_UNLOAD: DWORD = 76; pub const INTERNET_OPTION_IGNORE_OFFLINE: DWORD = 77; pub const INTERNET_OPTION_IDENTITY: DWORD = 78; pub const INTERNET_OPTION_REMOVE_IDENTITY: DWORD = 79; pub const INTERNET_OPTION_ALTER_IDENTITY: DWORD = 80; pub const INTERNET_OPTION_SUPPRESS_BEHAVIOR: DWORD = 81; pub const INTERNET_OPTION_AUTODIAL_MODE: DWORD = 82; pub const INTERNET_OPTION_AUTODIAL_CONNECTION: DWORD = 83; pub const INTERNET_OPTION_CLIENT_CERT_CONTEXT: DWORD = 84; pub const INTERNET_OPTION_AUTH_FLAGS: DWORD = 85; pub const INTERNET_OPTION_COOKIES_3RD_PARTY: DWORD = 86; pub const INTERNET_OPTION_DISABLE_PASSPORT_AUTH: DWORD = 87; pub const INTERNET_OPTION_SEND_UTF8_SERVERNAME_TO_PROXY: DWORD = 88; pub const INTERNET_OPTION_EXEMPT_CONNECTION_LIMIT: DWORD = 89; pub const INTERNET_OPTION_ENABLE_PASSPORT_AUTH: DWORD = 90; pub const INTERNET_OPTION_HIBERNATE_INACTIVE_WORKER_THREADS: DWORD = 91; pub const INTERNET_OPTION_ACTIVATE_WORKER_THREADS: DWORD = 92; pub const INTERNET_OPTION_RESTORE_WORKER_THREAD_DEFAULTS: DWORD = 93; pub const INTERNET_OPTION_SOCKET_SEND_BUFFER_LENGTH: DWORD = 94; pub const INTERNET_OPTION_PROXY_SETTINGS_CHANGED: DWORD = 95; pub const INTERNET_OPTION_DATAFILE_EXT: DWORD = 96; pub const INTERNET_OPTION_CODEPAGE_PATH: DWORD = 100; pub const INTERNET_OPTION_CODEPAGE_EXTRA: DWORD = 101; pub const INTERNET_OPTION_IDN: DWORD = 102; pub const INTERNET_OPTION_MAX_CONNS_PER_PROXY: DWORD = 103; pub const INTERNET_OPTION_SUPPRESS_SERVER_AUTH: DWORD = 104; pub const INTERNET_OPTION_SERVER_CERT_CHAIN_CONTEXT: DWORD = 105; pub const INTERNET_OPTION_ENABLE_REDIRECT_CACHE_READ: DWORD = 122; pub const INTERNET_OPTION_ENCODE_EXTRA: DWORD = 155; pub const INTERNET_FIRST_OPTION: DWORD = INTERNET_OPTION_CALLBACK; pub const INTERNET_LAST_OPTION: DWORD = INTERNET_OPTION_ENCODE_EXTRA; pub const INTERNET_PRIORITY_FOREGROUND: DWORD = 1000; pub const INTERNET_HANDLE_TYPE_INTERNET: DWORD = 1; pub const INTERNET_HANDLE_TYPE_CONNECT_FTP: DWORD = 2; pub const INTERNET_HANDLE_TYPE_CONNECT_GOPHER: DWORD = 3; pub const INTERNET_HANDLE_TYPE_CONNECT_HTTP: DWORD = 4; pub const INTERNET_HANDLE_TYPE_FTP_FIND: DWORD = 5; pub const INTERNET_HANDLE_TYPE_FTP_FIND_HTML: DWORD = 6; pub const INTERNET_HANDLE_TYPE_FTP_FILE: DWORD = 7; pub const INTERNET_HANDLE_TYPE_FTP_FILE_HTML: DWORD = 8; pub const INTERNET_HANDLE_TYPE_GOPHER_FIND: DWORD = 9; pub const INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML: DWORD = 10; pub const INTERNET_HANDLE_TYPE_GOPHER_FILE: DWORD = 11; pub const INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML: DWORD = 12; pub const INTERNET_HANDLE_TYPE_HTTP_REQUEST: DWORD = 13; pub const INTERNET_HANDLE_TYPE_FILE_REQUEST: DWORD = 14; pub const AUTH_FLAG_DISABLE_NEGOTIATE: DWORD = 0x00000001; pub const AUTH_FLAG_ENABLE_NEGOTIATE: DWORD = 0x00000002; pub const AUTH_FLAG_DISABLE_BASIC_CLEARCHANNEL: DWORD = 0x00000004; pub const AUTH_FLAG_DISABLE_SERVER_AUTH: DWORD = 0x00000008; pub const SECURITY_FLAG_SECURE: DWORD = 0x00000001; pub const SECURITY_FLAG_STRENGTH_WEAK: DWORD = 0x10000000; pub const SECURITY_FLAG_STRENGTH_MEDIUM: DWORD = 0x40000000; pub const SECURITY_FLAG_STRENGTH_STRONG: DWORD = 0x20000000; pub const SECURITY_FLAG_UNKNOWNBIT: DWORD = 0x80000000; pub const SECURITY_FLAG_FORTEZZA: DWORD = 0x08000000; pub const SECURITY_FLAG_NORMALBITNESS: DWORD = SECURITY_FLAG_STRENGTH_WEAK; pub const SECURITY_FLAG_SSL: DWORD = 0x00000002; pub const SECURITY_FLAG_SSL3: DWORD = 0x00000004; pub const SECURITY_FLAG_PCT: DWORD = 0x00000008; pub const SECURITY_FLAG_PCT4: DWORD = 0x00000010; pub const SECURITY_FLAG_IETFSSL4: DWORD = 0x00000020; pub const SECURITY_FLAG_40BIT: DWORD = SECURITY_FLAG_STRENGTH_WEAK; pub const SECURITY_FLAG_128BIT: DWORD = SECURITY_FLAG_STRENGTH_STRONG; pub const SECURITY_FLAG_56BIT: DWORD = SECURITY_FLAG_STRENGTH_MEDIUM; pub const SECURITY_FLAG_IGNORE_REVOCATION: DWORD = 0x00000080; pub const SECURITY_FLAG_IGNORE_UNKNOWN_CA: DWORD = 0x00000100; pub const SECURITY_FLAG_IGNORE_WRONG_USAGE: DWORD = 0x00000200; pub const SECURITY_FLAG_IGNORE_CERT_CN_INVALID: DWORD = INTERNET_FLAG_IGNORE_CERT_CN_INVALID; pub const SECURITY_FLAG_IGNORE_CERT_DATE_INVALID: DWORD = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID; pub const SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS: DWORD = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS; pub const SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP: DWORD = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; pub const SECURITY_SET_MASK: DWORD = SECURITY_FLAG_IGNORE_REVOCATION | SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID | SECURITY_FLAG_IGNORE_WRONG_USAGE; pub const AUTODIAL_MODE_NEVER: DWORD = 1; pub const AUTODIAL_MODE_ALWAYS: DWORD = 2; pub const AUTODIAL_MODE_NO_NETWORK_PRESENT: DWORD = 4; FN!{stdcall INTERNET_STATUS_CALLBACK( HINTERNET, DWORD_PTR, DWORD, LPVOID, DWORD, ) -> ()} pub type LPINTERNET_STATUS_CALLBACK = *mut INTERNET_STATUS_CALLBACK; pub const INTERNET_STATUS_RESOLVING_NAME: DWORD = 10; pub const INTERNET_STATUS_NAME_RESOLVED: DWORD = 11; pub const INTERNET_STATUS_CONNECTING_TO_SERVER: DWORD = 20; pub const INTERNET_STATUS_CONNECTED_TO_SERVER: DWORD = 21; pub const INTERNET_STATUS_SENDING_REQUEST: DWORD = 30; pub const INTERNET_STATUS_REQUEST_SENT: DWORD = 31; pub const INTERNET_STATUS_RECEIVING_RESPONSE: DWORD = 40; pub const INTERNET_STATUS_RESPONSE_RECEIVED: DWORD = 41; pub const INTERNET_STATUS_CTL_RESPONSE_RECEIVED: DWORD = 42; pub const INTERNET_STATUS_PREFETCH: DWORD = 43; pub const INTERNET_STATUS_CLOSING_CONNECTION: DWORD = 50; pub const INTERNET_STATUS_CONNECTION_CLOSED: DWORD = 51; pub const INTERNET_STATUS_HANDLE_CREATED: DWORD = 60; pub const INTERNET_STATUS_HANDLE_CLOSING: DWORD = 70; pub const INTERNET_STATUS_DETECTING_PROXY: DWORD = 80; pub const INTERNET_STATUS_REQUEST_COMPLETE: DWORD = 100; pub const INTERNET_STATUS_REDIRECT: DWORD = 110; pub const INTERNET_STATUS_INTERMEDIATE_RESPONSE: DWORD = 120; pub const INTERNET_STATUS_USER_INPUT_REQUIRED: DWORD = 140; pub const INTERNET_STATUS_STATE_CHANGE: DWORD = 200; pub const INTERNET_STATUS_COOKIE_SENT: DWORD = 320; pub const INTERNET_STATUS_COOKIE_RECEIVED: DWORD = 321; pub const INTERNET_STATUS_PRIVACY_IMPACTED: DWORD = 324; pub const INTERNET_STATUS_P3P_HEADER: DWORD = 325; pub const INTERNET_STATUS_P3P_POLICYREF: DWORD = 326; pub const INTERNET_STATUS_COOKIE_HISTORY: DWORD = 327; pub const INTERNET_STATE_CONNECTED: DWORD = 0x00000001; pub const INTERNET_STATE_DISCONNECTED: DWORD = 0x00000002; pub const INTERNET_STATE_DISCONNECTED_BY_USER: DWORD = 0x00000010; pub const INTERNET_STATE_IDLE: DWORD = 0x00000100; pub const INTERNET_STATE_BUSY: DWORD = 0x00000200; ENUM!{enum InternetCookieState { COOKIE_STATE_UNKNOWN = 0x0, COOKIE_STATE_ACCEPT = 0x1, COOKIE_STATE_PROMPT = 0x2, COOKIE_STATE_LEASH = 0x3, COOKIE_STATE_DOWNGRADE = 0x4, COOKIE_STATE_REJECT = 0x5, COOKIE_STATE_MAX = COOKIE_STATE_REJECT, }} STRUCT!{struct IncomingCookieState { cSession: c_int, cPersistent: c_int, cAccepted: c_int, cLeashed: c_int, cDowngraded: c_int, cBlocked: c_int, pszLocation: LPCSTR, }} STRUCT!{struct OutgoingCookieState { cSent: c_int, cSuppressed: c_int, pszLocation: LPCSTR, }} STRUCT!{struct InternetCookieHistory { fAccepted: BOOL, fLeashed: BOOL, fDowngraded: BOOL, fRejected: BOOL, }} STRUCT!{struct CookieDecision { dwCookieState: DWORD, fAllowSession: BOOL, }} pub const INTERNET_INVALID_STATUS_CALLBACK: usize = -1isize as usize; pub const FTP_TRANSFER_TYPE_UNKNOWN: DWORD = 0x00000000; pub const FTP_TRANSFER_TYPE_ASCII: DWORD = 0x00000001; pub const FTP_TRANSFER_TYPE_BINARY: DWORD = 0x00000002; pub const FTP_TRANSFER_TYPE_MASK: DWORD = FTP_TRANSFER_TYPE_ASCII | FTP_TRANSFER_TYPE_BINARY; pub const MAX_GOPHER_DISPLAY_TEXT: usize = 128; pub const MAX_GOPHER_SELECTOR_TEXT: usize = 256; pub const MAX_GOPHER_HOST_NAME: usize = INTERNET_MAX_HOST_NAME_LENGTH; pub const MAX_GOPHER_LOCATOR_LENGTH: usize = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 1 + 1 + 2; STRUCT!{struct GOPHER_FIND_DATAA { DisplayString: [CHAR; MAX_GOPHER_DISPLAY_TEXT+ 1], GopherType: DWORD, SizeLow: DWORD, SizeHigh: DWORD, LastModificationTime: FILETIME, Locator: [CHAR; MAX_GOPHER_LOCATOR_LENGTH + 1], }} pub type LPGOPHER_FIND_DATAA = *mut GOPHER_FIND_DATAA; STRUCT!{struct GOPHER_FIND_DATAW { DisplayString: [WCHAR; MAX_GOPHER_DISPLAY_TEXT+ 1], GopherType: DWORD, SizeLow: DWORD, SizeHigh: DWORD, LastModificationTime: FILETIME, Locator: [WCHAR; MAX_GOPHER_LOCATOR_LENGTH + 1], }} pub type LPGOPHER_FIND_DATAW = *mut GOPHER_FIND_DATAW; pub const GOPHER_TYPE_TEXT_FILE: DWORD = 0x00000001; pub const GOPHER_TYPE_DIRECTORY: DWORD = 0x00000002; pub const GOPHER_TYPE_CSO: DWORD = 0x00000004; pub const GOPHER_TYPE_ERROR: DWORD = 0x00000008; pub const GOPHER_TYPE_MAC_BINHEX: DWORD = 0x00000010; pub const GOPHER_TYPE_DOS_ARCHIVE: DWORD = 0x00000020; pub const GOPHER_TYPE_UNIX_UUENCODED: DWORD = 0x00000040; pub const GOPHER_TYPE_INDEX_SERVER: DWORD = 0x00000080; pub const GOPHER_TYPE_TELNET: DWORD = 0x00000100; pub const GOPHER_TYPE_BINARY: DWORD = 0x00000200; pub const GOPHER_TYPE_REDUNDANT: DWORD = 0x00000400; pub const GOPHER_TYPE_TN3270: DWORD = 0x00000800; pub const GOPHER_TYPE_GIF: DWORD = 0x00001000; pub const GOPHER_TYPE_IMAGE: DWORD = 0x00002000; pub const GOPHER_TYPE_BITMAP: DWORD = 0x00004000; pub const GOPHER_TYPE_MOVIE: DWORD = 0x00008000; pub const GOPHER_TYPE_SOUND: DWORD = 0x00010000; pub const GOPHER_TYPE_HTML: DWORD = 0x00020000; pub const GOPHER_TYPE_PDF: DWORD = 0x00040000; pub const GOPHER_TYPE_CALENDAR: DWORD = 0x00080000; pub const GOPHER_TYPE_INLINE: DWORD = 0x00100000; pub const GOPHER_TYPE_UNKNOWN: DWORD = 0x20000000; pub const GOPHER_TYPE_ASK: DWORD = 0x40000000; pub const GOPHER_TYPE_GOPHER_PLUS: DWORD = 0x80000000; #[inline] pub fn IS_GOPHER_FILE(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_FILE_MASK) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_DIRECTORY(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_DIRECTORY) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_PHONE_SERVER(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_CSO) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_ERROR(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_ERROR) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_INDEX_SERVER(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_INDEX_SERVER) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_TELNET_SESSION(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_TELNET) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_BACKUP_SERVER(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_REDUNDANT) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_TN3270_SESSION(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_TN3270) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_ASK(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_ASK) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_PLUS(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_GOPHER_PLUS) != 0 { TRUE } else { FALSE } } #[inline] pub fn IS_GOPHER_TYPE_KNOWN(type_: DWORD) -> BOOL { if (type_ & GOPHER_TYPE_UNKNOWN) != 0 { FALSE } else { TRUE } } pub const GOPHER_TYPE_FILE_MASK: DWORD = GOPHER_TYPE_TEXT_FILE | GOPHER_TYPE_MAC_BINHEX | GOPHER_TYPE_DOS_ARCHIVE | GOPHER_TYPE_UNIX_UUENCODED | GOPHER_TYPE_BINARY | GOPHER_TYPE_GIF | GOPHER_TYPE_IMAGE | GOPHER_TYPE_BITMAP | GOPHER_TYPE_MOVIE | GOPHER_TYPE_SOUND | GOPHER_TYPE_HTML | GOPHER_TYPE_PDF | GOPHER_TYPE_CALENDAR | GOPHER_TYPE_INLINE; STRUCT!{struct GOPHER_ADMIN_ATTRIBUTE_TYPE { Comment: LPCWSTR, EmailAddress: LPCWSTR, }} pub type LPGOPHER_ADMIN_ATTRIBUTE_TYPE = *mut GOPHER_ADMIN_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_MOD_DATE_ATTRIBUTE_TYPE { DateAndTime: FILETIME, }} pub type LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE = *mut GOPHER_MOD_DATE_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_TTL_ATTRIBUTE_TYPE { Ttl: DWORD, }} pub type LPGOPHER_TTL_ATTRIBUTE_TYPE = *mut GOPHER_TTL_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_SCORE_ATTRIBUTE_TYPE { Score: INT, }} pub type LPGOPHER_SCORE_ATTRIBUTE_TYPE = *mut GOPHER_SCORE_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE { LowerBound: INT, UpperBound: INT, }} pub type LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE = *mut GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_SITE_ATTRIBUTE_TYPE { Site: LPCWSTR, }} pub type LPGOPHER_SITE_ATTRIBUTE_TYPE = *mut GOPHER_SITE_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_ORGANIZATION_ATTRIBUTE_TYPE { Organization: LPCWSTR, }} pub type LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE = *mut GOPHER_ORGANIZATION_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_LOCATION_ATTRIBUTE_TYPE { Location: LPCWSTR, }} pub type LPGOPHER_LOCATION_ATTRIBUTE_TYPE = *mut GOPHER_LOCATION_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE { DegreesNorth: INT, MinutesNorth: INT, SecondsNorth: INT, DegreesEast: INT, MinutesEast: INT, SecondsEast: INT, }} pub type LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE = *mut GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_TIMEZONE_ATTRIBUTE_TYPE { Zone: INT, }} pub type LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE = *mut GOPHER_TIMEZONE_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_PROVIDER_ATTRIBUTE_TYPE { Provider: LPCWSTR, }} pub type LPGOPHER_PROVIDER_ATTRIBUTE_TYPE = *mut GOPHER_PROVIDER_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_VERSION_ATTRIBUTE_TYPE { Version: LPCWSTR, }} pub type LPGOPHER_VERSION_ATTRIBUTE_TYPE = *mut GOPHER_VERSION_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_ABSTRACT_ATTRIBUTE_TYPE { ShortAbstract: LPCWSTR, AbstractFile: LPCWSTR, }} pub type LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE = *mut GOPHER_ABSTRACT_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_VIEW_ATTRIBUTE_TYPE { ContentType: LPCWSTR, Language: LPCWSTR, Size: DWORD, }} pub type LPGOPHER_VIEW_ATTRIBUTE_TYPE = *mut GOPHER_VIEW_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_VERONICA_ATTRIBUTE_TYPE { TreeWalk: BOOL, }} pub type LPGOPHER_VERONICA_ATTRIBUTE_TYPE = *mut GOPHER_VERONICA_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_ASK_ATTRIBUTE_TYPE { QuestionType: LPCWSTR, QuestionText: LPCWSTR, }} pub type LPGOPHER_ASK_ATTRIBUTE_TYPE = *mut GOPHER_ASK_ATTRIBUTE_TYPE; STRUCT!{struct GOPHER_UNKNOWN_ATTRIBUTE_TYPE { Text: LPCWSTR, }} pub type LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE = *mut GOPHER_UNKNOWN_ATTRIBUTE_TYPE; UNION!{union GOPHER_ATTRIBUTE_TYPE_AttributeType { [u32; 6] [u64; 3], Admin Admin_mut: GOPHER_ADMIN_ATTRIBUTE_TYPE, ModDate ModDate_mut: GOPHER_MOD_DATE_ATTRIBUTE_TYPE, Ttl Ttl_mut: GOPHER_TTL_ATTRIBUTE_TYPE, Score Score_mut: GOPHER_SCORE_ATTRIBUTE_TYPE, ScoreRange ScoreRange_mut: GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, Site Site_mut: GOPHER_SITE_ATTRIBUTE_TYPE, Organization Organization_mut: GOPHER_ORGANIZATION_ATTRIBUTE_TYPE, Location Location_mut: GOPHER_LOCATION_ATTRIBUTE_TYPE, GeographicalLocation GeographicalLocation_mut: GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, TimeZone TimeZone_mut: GOPHER_TIMEZONE_ATTRIBUTE_TYPE, Provider Provider_mut: GOPHER_PROVIDER_ATTRIBUTE_TYPE, Version Version_mut: GOPHER_VERSION_ATTRIBUTE_TYPE, Abstract Abstract_mut: GOPHER_ABSTRACT_ATTRIBUTE_TYPE, View View_mut: GOPHER_VIEW_ATTRIBUTE_TYPE, Veronica Veronica_mut: GOPHER_VERONICA_ATTRIBUTE_TYPE, Ask Ask_mut: GOPHER_ASK_ATTRIBUTE_TYPE, Unknown Unknown_mut: GOPHER_UNKNOWN_ATTRIBUTE_TYPE, }} STRUCT!{struct GOPHER_ATTRIBUTE_TYPE { CategoryId: DWORD, AttributeId: DWORD, AttributeType: GOPHER_ATTRIBUTE_TYPE_AttributeType, }} pub type LPGOPHER_ATTRIBUTE_TYPE = *mut GOPHER_ATTRIBUTE_TYPE; pub const MAX_GOPHER_CATEGORY_NAME: DWORD = 128; pub const MAX_GOPHER_ATTRIBUTE_NAME: DWORD = 128; pub const MIN_GOPHER_ATTRIBUTE_LENGTH: DWORD = 256; pub const GOPHER_INFO_CATEGORY: &'static str = " + INFO"; pub const GOPHER_ADMIN_CATEGORY: &'static str = " + ADMIN"; pub const GOPHER_VIEWS_CATEGORY: &'static str = " + VIEWS"; pub const GOPHER_ABSTRACT_CATEGORY: &'static str = " + ABSTRACT"; pub const GOPHER_VERONICA_CATEGORY: &'static str = " + VERONICA"; pub const GOPHER_ADMIN_ATTRIBUTE: &'static str = "Admin"; pub const GOPHER_MOD_DATE_ATTRIBUTE: &'static str = "Mod-Date"; pub const GOPHER_TTL_ATTRIBUTE: &'static str = "TTL"; pub const GOPHER_SCORE_ATTRIBUTE: &'static str = "Score"; pub const GOPHER_RANGE_ATTRIBUTE: &'static str = "Score-range"; pub const GOPHER_SITE_ATTRIBUTE: &'static str = "Site"; pub const GOPHER_ORG_ATTRIBUTE: &'static str = "Org"; pub const GOPHER_LOCATION_ATTRIBUTE: &'static str = "Loc"; pub const GOPHER_GEOG_ATTRIBUTE: &'static str = "Geog"; pub const GOPHER_TIMEZONE_ATTRIBUTE: &'static str = "TZ"; pub const GOPHER_PROVIDER_ATTRIBUTE: &'static str = "Provider"; pub const GOPHER_VERSION_ATTRIBUTE: &'static str = "Version"; pub const GOPHER_ABSTRACT_ATTRIBUTE: &'static str = "Abstract"; pub const GOPHER_VIEW_ATTRIBUTE: &'static str = "View"; pub const GOPHER_TREEWALK_ATTRIBUTE: &'static str = "treewalk"; pub const GOPHER_ATTRIBUTE_ID_BASE: DWORD = 0xabcccc00; pub const GOPHER_CATEGORY_ID_ALL: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 1; pub const GOPHER_CATEGORY_ID_INFO: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 2; pub const GOPHER_CATEGORY_ID_ADMIN: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 3; pub const GOPHER_CATEGORY_ID_VIEWS: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 4; pub const GOPHER_CATEGORY_ID_ABSTRACT: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 5; pub const GOPHER_CATEGORY_ID_VERONICA: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 6; pub const GOPHER_CATEGORY_ID_ASK: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 7; pub const GOPHER_CATEGORY_ID_UNKNOWN: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 8; pub const GOPHER_ATTRIBUTE_ID_ALL: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 9; pub const GOPHER_ATTRIBUTE_ID_ADMIN: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 10; pub const GOPHER_ATTRIBUTE_ID_MOD_DATE: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 11; pub const GOPHER_ATTRIBUTE_ID_TTL: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 12; pub const GOPHER_ATTRIBUTE_ID_SCORE: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 13; pub const GOPHER_ATTRIBUTE_ID_RANGE: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 14; pub const GOPHER_ATTRIBUTE_ID_SITE: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 15; pub const GOPHER_ATTRIBUTE_ID_ORG: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 16; pub const GOPHER_ATTRIBUTE_ID_LOCATION: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 17; pub const GOPHER_ATTRIBUTE_ID_GEOG: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 18; pub const GOPHER_ATTRIBUTE_ID_TIMEZONE: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 19; pub const GOPHER_ATTRIBUTE_ID_PROVIDER: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 20; pub const GOPHER_ATTRIBUTE_ID_VERSION: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 21; pub const GOPHER_ATTRIBUTE_ID_ABSTRACT: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 22; pub const GOPHER_ATTRIBUTE_ID_VIEW: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 23; pub const GOPHER_ATTRIBUTE_ID_TREEWALK: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 24; pub const GOPHER_ATTRIBUTE_ID_UNKNOWN: DWORD = GOPHER_ATTRIBUTE_ID_BASE + 25; FN!{stdcall GOPHER_ATTRIBUTE_ENUMERATOR( LPGOPHER_ATTRIBUTE_TYPE, DWORD, ) -> BOOL} pub const HTTP_MAJOR_VERSION: DWORD = 1; pub const HTTP_MINOR_VERSION: DWORD = 0; pub const HTTP_VERSION: &'static str = "HTTP/1.0"; pub const HTTP_QUERY_MIME_VERSION: DWORD = 0; pub const HTTP_QUERY_CONTENT_TYPE: DWORD = 1; pub const HTTP_QUERY_CONTENT_TRANSFER_ENCODING: DWORD = 2; pub const HTTP_QUERY_CONTENT_ID: DWORD = 3; pub const HTTP_QUERY_CONTENT_DESCRIPTION: DWORD = 4; pub const HTTP_QUERY_CONTENT_LENGTH: DWORD = 5; pub const HTTP_QUERY_CONTENT_LANGUAGE: DWORD = 6; pub const HTTP_QUERY_ALLOW: DWORD = 7; pub const HTTP_QUERY_PUBLIC: DWORD = 8; pub const HTTP_QUERY_DATE: DWORD = 9; pub const HTTP_QUERY_EXPIRES: DWORD = 10; pub const HTTP_QUERY_LAST_MODIFIED: DWORD = 11; pub const HTTP_QUERY_MESSAGE_ID: DWORD = 12; pub const HTTP_QUERY_URI: DWORD = 13; pub const HTTP_QUERY_DERIVED_FROM: DWORD = 14; pub const HTTP_QUERY_COST: DWORD = 15; pub const HTTP_QUERY_LINK: DWORD = 16; pub const HTTP_QUERY_PRAGMA: DWORD = 17; pub const HTTP_QUERY_VERSION: DWORD = 18; pub const HTTP_QUERY_STATUS_CODE: DWORD = 19; pub const HTTP_QUERY_STATUS_TEXT: DWORD = 20; pub const HTTP_QUERY_RAW_HEADERS: DWORD = 21; pub const HTTP_QUERY_RAW_HEADERS_CRLF: DWORD = 22; pub const HTTP_QUERY_CONNECTION: DWORD = 23; pub const HTTP_QUERY_ACCEPT: DWORD = 24; pub const HTTP_QUERY_ACCEPT_CHARSET: DWORD = 25; pub const HTTP_QUERY_ACCEPT_ENCODING: DWORD = 26; pub const HTTP_QUERY_ACCEPT_LANGUAGE: DWORD = 27; pub const HTTP_QUERY_AUTHORIZATION: DWORD = 28; pub const HTTP_QUERY_CONTENT_ENCODING: DWORD = 29; pub const HTTP_QUERY_FORWARDED: DWORD = 30; pub const HTTP_QUERY_FROM: DWORD = 31; pub const HTTP_QUERY_IF_MODIFIED_SINCE: DWORD = 32; pub const HTTP_QUERY_LOCATION: DWORD = 33; pub const HTTP_QUERY_ORIG_URI: DWORD = 34; pub const HTTP_QUERY_REFERER: DWORD = 35; pub const HTTP_QUERY_RETRY_AFTER: DWORD = 36; pub const HTTP_QUERY_SERVER: DWORD = 37; pub const HTTP_QUERY_TITLE: DWORD = 38; pub const HTTP_QUERY_USER_AGENT: DWORD = 39; pub const HTTP_QUERY_WWW_AUTHENTICATE: DWORD = 40; pub const HTTP_QUERY_PROXY_AUTHENTICATE: DWORD = 41; pub const HTTP_QUERY_ACCEPT_RANGES: DWORD = 42; pub const HTTP_QUERY_SET_COOKIE: DWORD = 43; pub const HTTP_QUERY_COOKIE: DWORD = 44; pub const HTTP_QUERY_REQUEST_METHOD: DWORD = 45; pub const HTTP_QUERY_REFRESH: DWORD = 46; pub const HTTP_QUERY_CONTENT_DISPOSITION: DWORD = 47; pub const HTTP_QUERY_AGE: DWORD = 48; pub const HTTP_QUERY_CACHE_CONTROL: DWORD = 49; pub const HTTP_QUERY_CONTENT_BASE: DWORD = 50; pub const HTTP_QUERY_CONTENT_LOCATION: DWORD = 51; pub const HTTP_QUERY_CONTENT_MD5: DWORD = 52; pub const HTTP_QUERY_CONTENT_RANGE: DWORD = 53; pub const HTTP_QUERY_ETAG: DWORD = 54; pub const HTTP_QUERY_HOST: DWORD = 55; pub const HTTP_QUERY_IF_MATCH: DWORD = 56; pub const HTTP_QUERY_IF_NONE_MATCH: DWORD = 57; pub const HTTP_QUERY_IF_RANGE: DWORD = 58; pub const HTTP_QUERY_IF_UNMODIFIED_SINCE: DWORD = 59; pub const HTTP_QUERY_MAX_FORWARDS: DWORD = 60; pub const HTTP_QUERY_PROXY_AUTHORIZATION: DWORD = 61; pub const HTTP_QUERY_RANGE: DWORD = 62; pub const HTTP_QUERY_TRANSFER_ENCODING: DWORD = 63; pub const HTTP_QUERY_UPGRADE: DWORD = 64; pub const HTTP_QUERY_VARY: DWORD = 65; pub const HTTP_QUERY_VIA: DWORD = 66; pub const HTTP_QUERY_WARNING: DWORD = 67; pub const HTTP_QUERY_EXPECT: DWORD = 68; pub const HTTP_QUERY_PROXY_CONNECTION: DWORD = 69; pub const HTTP_QUERY_UNLESS_MODIFIED_SINCE: DWORD = 70; pub const HTTP_QUERY_ECHO_REQUEST: DWORD = 71; pub const HTTP_QUERY_ECHO_REPLY: DWORD = 72; pub const HTTP_QUERY_ECHO_HEADERS: DWORD = 73; pub const HTTP_QUERY_ECHO_HEADERS_CRLF: DWORD = 74; pub const HTTP_QUERY_PROXY_SUPPORT: DWORD = 75; pub const HTTP_QUERY_AUTHENTICATION_INFO: DWORD = 76; pub const HTTP_QUERY_PASSPORT_URLS: DWORD = 77; pub const HTTP_QUERY_PASSPORT_CONFIG: DWORD = 78; pub const HTTP_QUERY_X_CONTENT_TYPE_OPTIONS: DWORD = 79; pub const HTTP_QUERY_P3P: DWORD = 80; pub const HTTP_QUERY_X_P2P_PEERDIST: DWORD = 81; pub const HTTP_QUERY_TRANSLATE: DWORD = 82; pub const HTTP_QUERY_X_UA_COMPATIBLE: DWORD = 83; pub const HTTP_QUERY_DEFAULT_STYLE: DWORD = 84; pub const HTTP_QUERY_X_FRAME_OPTIONS: DWORD = 85; pub const HTTP_QUERY_X_XSS_PROTECTION: DWORD = 86; pub const HTTP_QUERY_SET_COOKIE2: DWORD = 87; pub const HTTP_QUERY_DO_NOT_TRACK: DWORD = 88; pub const HTTP_QUERY_KEEP_ALIVE: DWORD = 89; pub const HTTP_QUERY_MAX: DWORD = 89; pub const HTTP_QUERY_CUSTOM: DWORD = 65535; pub const HTTP_QUERY_FLAG_REQUEST_HEADERS: DWORD = 0x80000000; pub const HTTP_QUERY_FLAG_SYSTEMTIME: DWORD = 0x40000000; pub const HTTP_QUERY_FLAG_NUMBER: DWORD = 0x20000000; pub const HTTP_QUERY_FLAG_COALESCE: DWORD = 0x10000000; pub const HTTP_QUERY_FLAG_NUMBER64: DWORD = 0x08000000; pub const HTTP_QUERY_MODIFIER_FLAGS_MASK: DWORD = HTTP_QUERY_FLAG_REQUEST_HEADERS | HTTP_QUERY_FLAG_SYSTEMTIME | HTTP_QUERY_FLAG_NUMBER | HTTP_QUERY_FLAG_COALESCE | HTTP_QUERY_FLAG_NUMBER64; pub const HTTP_QUERY_HEADER_MASK: DWORD = !HTTP_QUERY_MODIFIER_FLAGS_MASK; pub const HTTP_STATUS_CONTINUE: DWORD = 100; pub const HTTP_STATUS_SWITCH_PROTOCOLS: DWORD = 101; pub const HTTP_STATUS_OK: DWORD = 200; pub const HTTP_STATUS_CREATED: DWORD = 201; pub const HTTP_STATUS_ACCEPTED: DWORD = 202; pub const HTTP_STATUS_PARTIAL: DWORD = 203; pub const HTTP_STATUS_NO_CONTENT: DWORD = 204; pub const HTTP_STATUS_RESET_CONTENT: DWORD = 205; pub const HTTP_STATUS_PARTIAL_CONTENT: DWORD = 206; pub const HTTP_STATUS_AMBIGUOUS: DWORD = 300; pub const HTTP_STATUS_MOVED: DWORD = 301; pub const HTTP_STATUS_REDIRECT: DWORD = 302; pub const HTTP_STATUS_REDIRECT_METHOD: DWORD = 303; pub const HTTP_STATUS_NOT_MODIFIED: DWORD = 304; pub const HTTP_STATUS_USE_PROXY: DWORD = 305; pub const HTTP_STATUS_REDIRECT_KEEP_VERB: DWORD = 307; pub const HTTP_STATUS_BAD_REQUEST: DWORD = 400; pub const HTTP_STATUS_DENIED: DWORD = 401; pub const HTTP_STATUS_PAYMENT_REQ: DWORD = 402; pub const HTTP_STATUS_FORBIDDEN: DWORD = 403; pub const HTTP_STATUS_NOT_FOUND: DWORD = 404; pub const HTTP_STATUS_BAD_METHOD: DWORD = 405; pub const HTTP_STATUS_NONE_ACCEPTABLE: DWORD = 406; pub const HTTP_STATUS_PROXY_AUTH_REQ: DWORD = 407; pub const HTTP_STATUS_REQUEST_TIMEOUT: DWORD = 408; pub const HTTP_STATUS_CONFLICT: DWORD = 409; pub const HTTP_STATUS_GONE: DWORD = 410; pub const HTTP_STATUS_LENGTH_REQUIRED: DWORD = 411; pub const HTTP_STATUS_PRECOND_FAILED: DWORD = 412; pub const HTTP_STATUS_REQUEST_TOO_LARGE: DWORD = 413; pub const HTTP_STATUS_URI_TOO_LONG: DWORD = 414; pub const HTTP_STATUS_UNSUPPORTED_MEDIA: DWORD = 415; pub const HTTP_STATUS_RETRY_WITH: DWORD = 449; pub const HTTP_STATUS_SERVER_ERROR: DWORD = 500; pub const HTTP_STATUS_NOT_SUPPORTED: DWORD = 501; pub const HTTP_STATUS_BAD_GATEWAY: DWORD = 502; pub const HTTP_STATUS_SERVICE_UNAVAIL: DWORD = 503; pub const HTTP_STATUS_GATEWAY_TIMEOUT: DWORD = 504; pub const HTTP_STATUS_VERSION_NOT_SUP: DWORD = 505; pub const HTTP_STATUS_FIRST: DWORD = HTTP_STATUS_CONTINUE; pub const HTTP_STATUS_LAST: DWORD = HTTP_STATUS_VERSION_NOT_SUP; pub const HTTP_ADDREQ_INDEX_MASK: DWORD = 0x0000FFFF; pub const HTTP_ADDREQ_FLAGS_MASK: DWORD = 0xFFFF0000; pub const HTTP_ADDREQ_FLAG_ADD_IF_NEW: DWORD = 0x10000000; pub const HTTP_ADDREQ_FLAG_ADD: DWORD = 0x20000000; pub const HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA: DWORD = 0x40000000; pub const HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON: DWORD = 0x01000000; pub const HTTP_ADDREQ_FLAG_COALESCE: DWORD = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA; pub const HTTP_ADDREQ_FLAG_REPLACE: DWORD = 0x80000000; pub const HSR_ASYNC: DWORD = WININET_API_FLAG_ASYNC; pub const HSR_SYNC: DWORD = WININET_API_FLAG_SYNC; pub const HSR_USE_CONTEXT: DWORD = WININET_API_FLAG_USE_CONTEXT; pub const HSR_INITIATE: DWORD = 0x00000008; pub const HSR_DOWNLOAD: DWORD = 0x00000010; pub const HSR_CHUNKED: DWORD = 0x00000020; STRUCT!{struct INTERNET_COOKIE2 { pwszName: PWSTR, pwszValue: PWSTR, pwszDomain: PWSTR, pwszPath: PWSTR, dwFlags: DWORD, ftExpires: FILETIME, fExpiresSet: BOOL, }} pub const INTERNET_COOKIE_IS_SECURE: DWORD = 0x01; pub const INTERNET_COOKIE_IS_SESSION: DWORD = 0x02; pub const INTERNET_COOKIE_THIRD_PARTY: DWORD = 0x10; pub const INTERNET_COOKIE_PROMPT_REQUIRED: DWORD = 0x20; pub const INTERNET_COOKIE_EVALUATE_P3P: DWORD = 0x40; pub const INTERNET_COOKIE_APPLY_P3P: DWORD = 0x80; pub const INTERNET_COOKIE_P3P_ENABLED: DWORD = 0x100; pub const INTERNET_COOKIE_IS_RESTRICTED: DWORD = 0x200; pub const INTERNET_COOKIE_IE6: DWORD = 0x400; pub const INTERNET_COOKIE_IS_LEGACY: DWORD = 0x800; pub const INTERNET_COOKIE_NON_SCRIPT: DWORD = 0x00001000; pub const INTERNET_COOKIE_HTTPONLY: DWORD = 0x00002000; pub const FLAG_ICC_FORCE_CONNECTION: DWORD = 0x00000001; pub const FLAGS_ERROR_UI_FILTER_FOR_ERRORS: DWORD = 0x01; pub const FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS: DWORD = 0x02; pub const FLAGS_ERROR_UI_FLAGS_GENERATE_DATA: DWORD = 0x04; pub const FLAGS_ERROR_UI_FLAGS_NO_UI: DWORD = 0x08; pub const FLAGS_ERROR_UI_SERIALIZE_DIALOGS: DWORD = 0x10; FN!{stdcall PFN_AUTH_NOTIFY( DWORD_PTR, DWORD, LPVOID, ) -> DWORD} STRUCT!{struct INTERNET_AUTH_NOTIFY_DATA { cbStruct: DWORD, dwOptions: DWORD, pfnNotify: PFN_AUTH_NOTIFY, dwContext: DWORD_PTR, }} pub const INTERNET_ERROR_BASE: DWORD = 12000; pub const ERROR_INTERNET_OUT_OF_HANDLES: DWORD = INTERNET_ERROR_BASE + 1; pub const ERROR_INTERNET_TIMEOUT: DWORD = INTERNET_ERROR_BASE + 2; pub const ERROR_INTERNET_EXTENDED_ERROR: DWORD = INTERNET_ERROR_BASE + 3; pub const ERROR_INTERNET_INTERNAL_ERROR: DWORD = INTERNET_ERROR_BASE + 4; pub const ERROR_INTERNET_INVALID_URL: DWORD = INTERNET_ERROR_BASE + 5; pub const ERROR_INTERNET_UNRECOGNIZED_SCHEME: DWORD = INTERNET_ERROR_BASE + 6; pub const ERROR_INTERNET_NAME_NOT_RESOLVED: DWORD = INTERNET_ERROR_BASE + 7; pub const ERROR_INTERNET_PROTOCOL_NOT_FOUND: DWORD = INTERNET_ERROR_BASE + 8; pub const ERROR_INTERNET_INVALID_OPTION: DWORD = INTERNET_ERROR_BASE + 9; pub const ERROR_INTERNET_BAD_OPTION_LENGTH: DWORD = INTERNET_ERROR_BASE + 10; pub const ERROR_INTERNET_OPTION_NOT_SETTABLE: DWORD = INTERNET_ERROR_BASE + 11; pub const ERROR_INTERNET_SHUTDOWN: DWORD = INTERNET_ERROR_BASE + 12; pub const ERROR_INTERNET_INCORRECT_USER_NAME: DWORD = INTERNET_ERROR_BASE + 13; pub const ERROR_INTERNET_INCORRECT_PASSWORD: DWORD = INTERNET_ERROR_BASE + 14; pub const ERROR_INTERNET_LOGIN_FAILURE: DWORD = INTERNET_ERROR_BASE + 15; pub const ERROR_INTERNET_INVALID_OPERATION: DWORD = INTERNET_ERROR_BASE + 16; pub const ERROR_INTERNET_OPERATION_CANCELLED: DWORD = INTERNET_ERROR_BASE + 17; pub const ERROR_INTERNET_INCORRECT_HANDLE_TYPE: DWORD = INTERNET_ERROR_BASE + 18; pub const ERROR_INTERNET_INCORRECT_HANDLE_STATE: DWORD = INTERNET_ERROR_BASE + 19; pub const ERROR_INTERNET_NOT_PROXY_REQUEST: DWORD = INTERNET_ERROR_BASE + 20; pub const ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND: DWORD = INTERNET_ERROR_BASE + 21; pub const ERROR_INTERNET_BAD_REGISTRY_PARAMETER: DWORD = INTERNET_ERROR_BASE + 22; pub const ERROR_INTERNET_NO_DIRECT_ACCESS: DWORD = INTERNET_ERROR_BASE + 23; pub const ERROR_INTERNET_NO_CONTEXT: DWORD = INTERNET_ERROR_BASE + 24; pub const ERROR_INTERNET_NO_CALLBACK: DWORD = INTERNET_ERROR_BASE + 25; pub const ERROR_INTERNET_REQUEST_PENDING: DWORD = INTERNET_ERROR_BASE + 26; pub const ERROR_INTERNET_INCORRECT_FORMAT: DWORD = INTERNET_ERROR_BASE + 27; pub const ERROR_INTERNET_ITEM_NOT_FOUND: DWORD = INTERNET_ERROR_BASE + 28; pub const ERROR_INTERNET_CANNOT_CONNECT: DWORD = INTERNET_ERROR_BASE + 29; pub const ERROR_INTERNET_CONNECTION_ABORTED: DWORD = INTERNET_ERROR_BASE + 30; pub const ERROR_INTERNET_CONNECTION_RESET: DWORD = INTERNET_ERROR_BASE + 31; pub const ERROR_INTERNET_FORCE_RETRY: DWORD = INTERNET_ERROR_BASE + 32; pub const ERROR_INTERNET_INVALID_PROXY_REQUEST: DWORD = INTERNET_ERROR_BASE + 33; pub const ERROR_INTERNET_NEED_UI: DWORD = INTERNET_ERROR_BASE + 34; pub const ERROR_INTERNET_HANDLE_EXISTS: DWORD = INTERNET_ERROR_BASE + 36; pub const ERROR_INTERNET_SEC_CERT_DATE_INVALID: DWORD = INTERNET_ERROR_BASE + 37; pub const ERROR_INTERNET_SEC_CERT_CN_INVALID: DWORD = INTERNET_ERROR_BASE + 38; pub const ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR: DWORD = INTERNET_ERROR_BASE + 39; pub const ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR: DWORD = INTERNET_ERROR_BASE + 40; pub const ERROR_INTERNET_MIXED_SECURITY: DWORD = INTERNET_ERROR_BASE + 41; pub const ERROR_INTERNET_CHG_POST_IS_NON_SECURE: DWORD = INTERNET_ERROR_BASE + 42; pub const ERROR_INTERNET_POST_IS_NON_SECURE: DWORD = INTERNET_ERROR_BASE + 43; pub const ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED: DWORD = INTERNET_ERROR_BASE + 44; pub const ERROR_INTERNET_INVALID_CA: DWORD = INTERNET_ERROR_BASE + 45; pub const ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP: DWORD = INTERNET_ERROR_BASE + 46; pub const ERROR_INTERNET_ASYNC_THREAD_FAILED: DWORD = INTERNET_ERROR_BASE + 47; pub const ERROR_INTERNET_REDIRECT_SCHEME_CHANGE: DWORD = INTERNET_ERROR_BASE + 48; pub const ERROR_INTERNET_DIALOG_PENDING: DWORD = INTERNET_ERROR_BASE + 49; pub const ERROR_INTERNET_RETRY_DIALOG: DWORD = INTERNET_ERROR_BASE + 50; pub const ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR: DWORD = INTERNET_ERROR_BASE + 52; pub const ERROR_INTERNET_INSERT_CDROM: DWORD = INTERNET_ERROR_BASE + 53; pub const ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED: DWORD = INTERNET_ERROR_BASE + 54; pub const ERROR_INTERNET_SEC_CERT_ERRORS: DWORD = INTERNET_ERROR_BASE + 55; pub const ERROR_INTERNET_SEC_CERT_NO_REV: DWORD = INTERNET_ERROR_BASE + 56; pub const ERROR_INTERNET_SEC_CERT_REV_FAILED: DWORD = INTERNET_ERROR_BASE + 57; pub const ERROR_FTP_TRANSFER_IN_PROGRESS: DWORD = INTERNET_ERROR_BASE + 110; pub const ERROR_FTP_DROPPED: DWORD = INTERNET_ERROR_BASE + 111; pub const ERROR_FTP_NO_PASSIVE_MODE: DWORD = INTERNET_ERROR_BASE + 112; pub const ERROR_GOPHER_PROTOCOL_ERROR: DWORD = INTERNET_ERROR_BASE + 130; pub const ERROR_GOPHER_NOT_FILE: DWORD = INTERNET_ERROR_BASE + 131; pub const ERROR_GOPHER_DATA_ERROR: DWORD = INTERNET_ERROR_BASE + 132; pub const ERROR_GOPHER_END_OF_DATA: DWORD = INTERNET_ERROR_BASE + 133; pub const ERROR_GOPHER_INVALID_LOCATOR: DWORD = INTERNET_ERROR_BASE + 134; pub const ERROR_GOPHER_INCORRECT_LOCATOR_TYPE: DWORD = INTERNET_ERROR_BASE + 135; pub const ERROR_GOPHER_NOT_GOPHER_PLUS: DWORD = INTERNET_ERROR_BASE + 136; pub const ERROR_GOPHER_ATTRIBUTE_NOT_FOUND: DWORD = INTERNET_ERROR_BASE + 137; pub const ERROR_GOPHER_UNKNOWN_LOCATOR: DWORD = INTERNET_ERROR_BASE + 138; pub const ERROR_HTTP_HEADER_NOT_FOUND: DWORD = INTERNET_ERROR_BASE + 150; pub const ERROR_HTTP_DOWNLEVEL_SERVER: DWORD = INTERNET_ERROR_BASE + 151; pub const ERROR_HTTP_INVALID_SERVER_RESPONSE: DWORD = INTERNET_ERROR_BASE + 152; pub const ERROR_HTTP_INVALID_HEADER: DWORD = INTERNET_ERROR_BASE + 153; pub const ERROR_HTTP_INVALID_QUERY_REQUEST: DWORD = INTERNET_ERROR_BASE + 154; pub const ERROR_HTTP_HEADER_ALREADY_EXISTS: DWORD = INTERNET_ERROR_BASE + 155; pub const ERROR_HTTP_REDIRECT_FAILED: DWORD = INTERNET_ERROR_BASE + 156; pub const ERROR_HTTP_NOT_REDIRECTED: DWORD = INTERNET_ERROR_BASE + 160; pub const ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION: DWORD = INTERNET_ERROR_BASE + 161; pub const ERROR_HTTP_COOKIE_DECLINED: DWORD = INTERNET_ERROR_BASE + 162; pub const ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION: DWORD = INTERNET_ERROR_BASE + 168; pub const ERROR_INTERNET_SECURITY_CHANNEL_ERROR: DWORD = INTERNET_ERROR_BASE + 157; pub const ERROR_INTERNET_UNABLE_TO_CACHE_FILE: DWORD = INTERNET_ERROR_BASE + 158; pub const ERROR_INTERNET_TCPIP_NOT_INSTALLED: DWORD = INTERNET_ERROR_BASE + 159; pub const ERROR_INTERNET_DISCONNECTED: DWORD = INTERNET_ERROR_BASE + 163; pub const ERROR_INTERNET_SERVER_UNREACHABLE: DWORD = INTERNET_ERROR_BASE + 164; pub const ERROR_INTERNET_PROXY_SERVER_UNREACHABLE: DWORD = INTERNET_ERROR_BASE + 165; pub const ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT: DWORD = INTERNET_ERROR_BASE + 166; pub const ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT: DWORD = INTERNET_ERROR_BASE + 167; pub const ERROR_INTERNET_SEC_INVALID_CERT: DWORD = INTERNET_ERROR_BASE + 169; pub const ERROR_INTERNET_SEC_CERT_REVOKED: DWORD = INTERNET_ERROR_BASE + 170; pub const ERROR_INTERNET_FAILED_DUETOSECURITYCHECK: DWORD = INTERNET_ERROR_BASE + 171; pub const ERROR_INTERNET_NOT_INITIALIZED: DWORD = INTERNET_ERROR_BASE + 172; pub const ERROR_INTERNET_NEED_MSN_SSPI_PKG: DWORD = INTERNET_ERROR_BASE + 173; pub const ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY: DWORD = INTERNET_ERROR_BASE + 174; pub const ERROR_INTERNET_DECODING_FAILED: DWORD = INTERNET_ERROR_BASE + 175; pub const INTERNET_ERROR_LAST: DWORD = ERROR_INTERNET_DECODING_FAILED; pub const NORMAL_CACHE_ENTRY: DWORD = 0x00000001; pub const STICKY_CACHE_ENTRY: DWORD = 0x00000004; pub const EDITED_CACHE_ENTRY: DWORD = 0x00000008; pub const TRACK_OFFLINE_CACHE_ENTRY: DWORD = 0x00000010; pub const TRACK_ONLINE_CACHE_ENTRY: DWORD = 0x00000020; pub const SPARSE_CACHE_ENTRY: DWORD = 0x00010000; pub const COOKIE_CACHE_ENTRY: DWORD = 0x00100000; pub const URLHISTORY_CACHE_ENTRY: DWORD = 0x00200000; pub const URLCACHE_FIND_DEFAULT_FILTER: DWORD = NORMAL_CACHE_ENTRY | COOKIE_CACHE_ENTRY | URLHISTORY_CACHE_ENTRY | TRACK_OFFLINE_CACHE_ENTRY | TRACK_ONLINE_CACHE_ENTRY | STICKY_CACHE_ENTRY; UNION!{union INTERNET_CACHE_ENTRY_INFOA_u { [u32; 1], dwReserved dwReserved_mut: DWORD, dwExemptDelta dwExemptDelta_mut: DWORD, }} STRUCT!{struct INTERNET_CACHE_ENTRY_INFOA { dwStructSize: DWORD, lpszSourceUrlName: LPSTR, lpszLocalFileName: LPSTR, CacheEntryType: DWORD, dwUseCount: DWORD, dwHitRate: DWORD, dwSizeLow: DWORD, dwSizeHigh: DWORD, LastModifiedTime: FILETIME, ExpireTime: FILETIME, LastAccessTime: FILETIME, LastSyncTime: FILETIME, lpHeaderInfo: LPSTR, dwHeaderInfoSize: DWORD, lpszFileExtension: LPSTR, u: INTERNET_CACHE_ENTRY_INFOA_u, }} pub type LPINTERNET_CACHE_ENTRY_INFOA = *mut INTERNET_CACHE_ENTRY_INFOA; UNION!{union INTERNET_CACHE_ENTRY_INFOW_u { [u32; 1], dwReserved dwReserved_mut: DWORD, dwExemptDelta dwExemptDelta_mut: DWORD, }} STRUCT!{struct INTERNET_CACHE_ENTRY_INFOW { dwStructSize: DWORD, lpszSourceUrlName: LPWSTR, lpszLocalFileName: LPWSTR, CacheEntryType: DWORD, dwUseCount: DWORD, dwHitRate: DWORD, dwSizeLow: DWORD, dwSizeHigh: DWORD, LastModifiedTime: FILETIME, ExpireTime: FILETIME, LastAccessTime: FILETIME, LastSyncTime: FILETIME, lpHeaderInfo: LPWSTR, dwHeaderInfoSize: DWORD, lpszFileExtension: LPWSTR, u: INTERNET_CACHE_ENTRY_INFOW_u, }} pub type LPINTERNET_CACHE_ENTRY_INFOW = *mut INTERNET_CACHE_ENTRY_INFOW; STRUCT!{struct INTERNET_CACHE_TIMESTAMPS { ftExpires: FILETIME, ftLastModified: FILETIME, }} pub type LPINTERNET_CACHE_TIMESTAMPS = *mut INTERNET_CACHE_TIMESTAMPS; pub type GROUPID = LONGLONG; pub const CACHEGROUP_ATTRIBUTE_GET_ALL: DWORD = 0xffffffff; pub const CACHEGROUP_ATTRIBUTE_BASIC: DWORD = 0x00000001; pub const CACHEGROUP_ATTRIBUTE_FLAG: DWORD = 0x00000002; pub const CACHEGROUP_ATTRIBUTE_TYPE: DWORD = 0x00000004; pub const CACHEGROUP_ATTRIBUTE_QUOTA: DWORD = 0x00000008; pub const CACHEGROUP_ATTRIBUTE_GROUPNAME: DWORD = 0x00000010; pub const CACHEGROUP_ATTRIBUTE_STORAGE: DWORD = 0x00000020; pub const CACHEGROUP_FLAG_NONPURGEABLE: DWORD = 0x00000001; pub const CACHEGROUP_FLAG_GIDONLY: DWORD = 0x00000004; pub const CACHEGROUP_FLAG_FLUSHURL_ONDELETE: DWORD = 0x00000002; pub const CACHEGROUP_SEARCH_ALL: DWORD = 0x00000000; pub const CACHEGROUP_SEARCH_BYURL: DWORD = 0x00000001; pub const CACHEGROUP_TYPE_INVALID: DWORD = 0x00000001; pub const CACHEGROUP_READWRITE_MASK: DWORD = CACHEGROUP_ATTRIBUTE_TYPE | CACHEGROUP_ATTRIBUTE_QUOTA | CACHEGROUP_ATTRIBUTE_GROUPNAME | CACHEGROUP_ATTRIBUTE_STORAGE; pub const GROUPNAME_MAX_LENGTH: usize = 120; pub const GROUP_OWNER_STORAGE_SIZE: usize = 4; STRUCT!{struct INTERNET_CACHE_GROUP_INFOA { dwGroupSize: DWORD, dwGroupFlags: DWORD, dwGroupType: DWORD, dwDiskUsage: DWORD, dwDiskQuota: DWORD, dwOwnerStorage: [DWORD; GROUP_OWNER_STORAGE_SIZE], szGroupName: [CHAR; GROUPNAME_MAX_LENGTH], }} pub type LPINTERNET_CACHE_GROUP_INFOA = *mut INTERNET_CACHE_GROUP_INFOA; STRUCT!{struct INTERNET_CACHE_GROUP_INFOW { dwGroupSize: DWORD, dwGroupFlags: DWORD, dwGroupType: DWORD, dwDiskUsage: DWORD, dwDiskQuota: DWORD, dwOwnerStorage: [DWORD; GROUP_OWNER_STORAGE_SIZE], szGroupName: [WCHAR; GROUPNAME_MAX_LENGTH], }} pub type LPINTERNET_CACHE_GROUP_INFOW = *mut INTERNET_CACHE_GROUP_INFOW; pub const CACHE_ENTRY_ATTRIBUTE_FC: DWORD = 0x00000004; pub const CACHE_ENTRY_HITRATE_FC: DWORD = 0x00000010; pub const CACHE_ENTRY_MODTIME_FC: DWORD = 0x00000040; pub const CACHE_ENTRY_EXPTIME_FC: DWORD = 0x00000080; pub const CACHE_ENTRY_ACCTIME_FC: DWORD = 0x00000100; pub const CACHE_ENTRY_SYNCTIME_FC: DWORD = 0x00000200; pub const CACHE_ENTRY_HEADERINFO_FC: DWORD = 0x00000400; pub const CACHE_ENTRY_EXEMPT_DELTA_FC: DWORD = 0x00000800; pub const INTERNET_CACHE_GROUP_ADD: DWORD = 0; pub const INTERNET_CACHE_GROUP_REMOVE: DWORD = 1; pub const INTERNET_DIAL_FORCE_PROMPT: DWORD = 0x2000; pub const INTERNET_DIAL_SHOW_OFFLINE: DWORD = 0x4000; pub const INTERNET_DIAL_UNATTENDED: DWORD = 0x8000; pub const INTERENT_GOONLINE_REFRESH: DWORD = 0x00000001; pub const INTERENT_GOONLINE_NOPROMPT: DWORD = 0x00000002; pub const INTERENT_GOONLINE_MASK: DWORD = 0x00000003; pub const INTERNET_AUTODIAL_FORCE_ONLINE: DWORD = 1; pub const INTERNET_AUTODIAL_FORCE_UNATTENDED: DWORD = 2; pub const INTERNET_AUTODIAL_FAILIFSECURITYCHECK: DWORD = 4; pub const INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT: DWORD = 8; pub const INTERNET_AUTODIAL_FLAGS_MASK: DWORD = INTERNET_AUTODIAL_FORCE_ONLINE | INTERNET_AUTODIAL_FORCE_UNATTENDED | INTERNET_AUTODIAL_FAILIFSECURITYCHECK | INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT; pub const PROXY_AUTO_DETECT_TYPE_DHCP: DWORD = 1; pub const PROXY_AUTO_DETECT_TYPE_DNS_A: DWORD = 2; STRUCT!{struct AutoProxyHelperVtbl { IsResolvable: Option BOOL>, GetIPAddress: Option DWORD>, ResolveHostName: Option DWORD>, IsInNet: Option BOOL>, IsResolvableEx: Option BOOL>, GetIPAddressEx: Option DWORD>, ResolveHostNameEx: Option DWORD>, IsInNetEx: Option BOOL>, SortIpList: Option DWORD>, }} STRUCT!{struct AUTO_PROXY_SCRIPT_BUFFER { dwStructSize: DWORD, lpszScriptBuffer: LPSTR, dwScriptBufferSize: DWORD, }} pub type LPAUTO_PROXY_SCRIPT_BUFFER = *mut AUTO_PROXY_SCRIPT_BUFFER; STRUCT!{struct AutoProxyHelperFunctions { lpVtbl: *const AutoProxyHelperVtbl, }} FN!{stdcall pfnInternetInitializeAutoProxyDll( DWORD, LPSTR, LPSTR, *mut AutoProxyHelperFunctions, LPAUTO_PROXY_SCRIPT_BUFFER, ) -> BOOL} FN!{stdcall pfnInternetDeInitializeAutoProxyDll( LPSTR, DWORD, ) -> BOOL} FN!{stdcall pfnInternetGetProxyInfo( LPCSTR, DWORD, LPSTR, DWORD, *mut LPSTR, LPDWORD, ) -> BOOL} ENUM!{enum WPAD_CACHE_DELETE { WPAD_CACHE_DELETE_CURRENT = 0x0, WPAD_CACHE_DELETE_ALL = 0x1, }} pub const INTERNET_CONNECTION_MODEM: DWORD = 0x01; pub const INTERNET_CONNECTION_LAN: DWORD = 0x02; pub const INTERNET_CONNECTION_PROXY: DWORD = 0x04; pub const INTERNET_CONNECTION_MODEM_BUSY: DWORD = 0x08; pub const INTERNET_RAS_INSTALLED: DWORD = 0x10; pub const INTERNET_CONNECTION_OFFLINE: DWORD = 0x20; pub const INTERNET_CONNECTION_CONFIGURED: DWORD = 0x40; FN!{stdcall PFN_DIAL_HANDLER( HWND, LPCSTR, DWORD, LPDWORD, ) -> DWORD} pub const INTERNET_CUSTOMDIAL_CONNECT: DWORD = 0; pub const INTERNET_CUSTOMDIAL_UNATTENDED: DWORD = 1; pub const INTERNET_CUSTOMDIAL_DISCONNECT: DWORD = 2; pub const INTERNET_CUSTOMDIAL_SHOWOFFLINE: DWORD = 4; pub const INTERNET_CUSTOMDIAL_SAFE_FOR_UNATTENDED: DWORD = 1; pub const INTERNET_CUSTOMDIAL_WILL_SUPPLY_STATE: DWORD = 2; pub const INTERNET_CUSTOMDIAL_CAN_HANGUP: DWORD = 4; pub const INTERNET_DIALSTATE_DISCONNECTED: DWORD = 1; pub const INTERNET_IDENTITY_FLAG_PRIVATE_CACHE: DWORD = 0x01; pub const INTERNET_IDENTITY_FLAG_SHARED_CACHE: DWORD = 0x02; pub const INTERNET_IDENTITY_FLAG_CLEAR_DATA: DWORD = 0x04; pub const INTERNET_IDENTITY_FLAG_CLEAR_COOKIES: DWORD = 0x08; pub const INTERNET_IDENTITY_FLAG_CLEAR_HISTORY: DWORD = 0x10; pub const INTERNET_IDENTITY_FLAG_CLEAR_CONTENT: DWORD = 0x20; pub const INTERNET_SUPPRESS_RESET_ALL: DWORD = 0x00; pub const INTERNET_SUPPRESS_COOKIE_POLICY: DWORD = 0x01; pub const INTERNET_SUPPRESS_COOKIE_POLICY_RESET: DWORD = 0x02; pub const PRIVACY_TEMPLATE_NO_COOKIES: DWORD = 0; pub const PRIVACY_TEMPLATE_HIGH: DWORD = 1; pub const PRIVACY_TEMPLATE_MEDIUM_HIGH: DWORD = 2; pub const PRIVACY_TEMPLATE_MEDIUM: DWORD = 3; pub const PRIVACY_TEMPLATE_MEDIUM_LOW: DWORD = 4; pub const PRIVACY_TEMPLATE_LOW: DWORD = 5; pub const PRIVACY_TEMPLATE_CUSTOM: DWORD = 100; pub const PRIVACY_TEMPLATE_ADVANCED: DWORD = 101; pub const PRIVACY_TEMPLATE_MAX: DWORD = PRIVACY_TEMPLATE_LOW; pub const PRIVACY_TYPE_FIRST_PARTY: DWORD = 0; pub const PRIVACY_TYPE_THIRD_PARTY: DWORD = 1; extern "system" { pub fn CommitUrlCacheEntryA( lpszUrlName: LPCSTR, lpszLocalFileName: LPCSTR, ExpireTime: FILETIME, LastModifiedTime: FILETIME, CacheEntryType: DWORD, lpHeaderInfo: LPBYTE, cchHeaderInfo: DWORD, lpszFileExtension: LPCSTR, lpszOriginalUrl: LPCSTR, ) -> BOOL; pub fn CommitUrlCacheEntryW( lpszUrlName: LPCWSTR, lpszLocalFileName: LPCWSTR, ExpireTime: FILETIME, LastModifiedTime: FILETIME, CacheEntryType: DWORD, lpszHeaderInfo: LPWSTR, cchHeaderInfo: DWORD, lpszFileExtension: LPCWSTR, lpszOriginalUrl: LPCWSTR, ) -> BOOL; pub fn CreateMD5SSOHash ( pszChallengeInfo: PWSTR, pwszRealm: PWSTR, pwszTarget: PWSTR, pbHexHash: PBYTE, ) -> BOOL; pub fn CreateUrlCacheEntryA( lpszUrlName: LPCSTR, dwExpectedFileSize: DWORD, lpszFileExtension: LPCSTR, lpszFileName: LPSTR, dwReserved: DWORD, ) -> BOOL; pub fn CreateUrlCacheEntryW( lpszUrlName: LPCWSTR, dwExpectedFileSize: DWORD, lpszFileExtension: LPCWSTR, lpszFileName: LPWSTR, dwReserved: DWORD, ) -> BOOL; pub fn CreateUrlCacheGroup( dwFlags: DWORD, lpReserved: LPVOID, ) -> GROUPID; pub fn DeleteUrlCacheEntryA( lpszUrlName: LPCSTR, ) -> BOOL; pub fn DeleteUrlCacheEntryW( lpszUrlName: LPCWSTR, ) -> BOOL; pub fn DeleteUrlCacheGroup( GroupId: GROUPID, dwFlags: DWORD, lpReserved: LPVOID, ) -> BOOL; pub fn DeleteWpadCacheForNetworks( arg0: WPAD_CACHE_DELETE, ) -> BOOL; pub fn DetectAutoProxyUrl( pszAutoProxyUrl: PSTR, cchAutoProxyUrl: DWORD, dwDetectFlags: DWORD, ) -> BOOL; pub fn FindCloseUrlCache( hEnumHandle: HANDLE, ) -> BOOL; pub fn FindFirstUrlCacheEntryA( lpszUrlSearchPattern: LPCSTR, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, ) -> HANDLE; pub fn FindFirstUrlCacheEntryExA( lpszUrlSearchPattern: LPCSTR, dwFlags: DWORD, dwFilter: DWORD, GroupId: GROUPID, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID, ) -> HANDLE; pub fn FindFirstUrlCacheEntryExW( lpszUrlSearchPattern: LPCWSTR, dwFlags: DWORD, dwFilter: DWORD, GroupId: GROUPID, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID, ) -> HANDLE; pub fn FindFirstUrlCacheEntryW( lpszUrlSearchPattern: LPCWSTR, lpFirstCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, ) -> HANDLE; pub fn FindFirstUrlCacheGroup( dwFlags: DWORD, dwFilter: DWORD, lpSearchCondition: LPVOID, dwSearchCondition: DWORD, lpGroupId: *mut GROUPID, lpReserved: LPVOID, ) -> HANDLE; pub fn FindNextUrlCacheEntryA( hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, ) -> BOOL; pub fn FindNextUrlCacheEntryExA( hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID, ) -> BOOL; pub fn FindNextUrlCacheEntryExW( hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, lpGroupAttributes: LPVOID, lpcbGroupAttributes: LPDWORD, lpReserved: LPVOID, ) -> BOOL; pub fn FindNextUrlCacheEntryW( hEnumHandle: HANDLE, lpNextCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, ) -> BOOL; pub fn FindNextUrlCacheGroup( hFind: HANDLE, lpGroupId: *mut GROUPID, lpReserved: LPVOID, ) -> BOOL; pub fn FtpCommandA( hConnect: HINTERNET, fExpectResponse: BOOL, dwFlags: DWORD, lpszCommand: LPCSTR, dwContext: DWORD_PTR, phFtpCommand: *mut HINTERNET, ) -> BOOL; pub fn FtpCommandW( hConnect: HINTERNET, fExpectResponse: BOOL, dwFlags: DWORD, lpszCommand: LPCWSTR, dwContext: DWORD_PTR, phFtpCommand: *mut HINTERNET, ) -> BOOL; pub fn FtpCreateDirectoryA( hConnect: HINTERNET, lpszDirectory: LPCSTR, ) -> BOOL; pub fn FtpCreateDirectoryW( hConnect: HINTERNET, lpszDirectory: LPCWSTR, ) -> BOOL; pub fn FtpDeleteFileA( hConnect: HINTERNET, lpszFileName: LPCSTR, ) -> BOOL; pub fn FtpDeleteFileW( hConnect: HINTERNET, lpszFileName: LPCWSTR, ) -> BOOL; pub fn FtpFindFirstFileA( hConnect: HINTERNET, lpszSearchFile: LPCSTR, lpFindFileData: LPWIN32_FIND_DATAA, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn FtpFindFirstFileW( hConnect: HINTERNET, lpszSearchFile: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATAW, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn FtpGetCurrentDirectoryA( hConnect: HINTERNET, lpszCurrentDirectory: LPSTR, lpdwCurrentDirectory: LPDWORD, ) -> BOOL; pub fn FtpGetCurrentDirectoryW( hConnect: HINTERNET, lpszCurrentDirectory: LPWSTR, lpdwCurrentDirectory: LPDWORD, ) -> BOOL; pub fn FtpGetFileA( hConnect: HINTERNET, lpszRemoteFile: LPCSTR, lpszNewFile: LPCSTR, fFailIfExists: BOOL, dwFlagsAndAttributes: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn FtpGetFileEx( hFtpSession: HINTERNET, lpszRemoteFile: LPCSTR, lpszNewFile: LPCWSTR, fFailIfExists: BOOL, dwFlagsAndAttributes: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn FtpGetFileSize( hFile: HINTERNET, lpdwFileSizeHigh: LPDWORD, ) -> DWORD; pub fn FtpGetFileW( hConnect: HINTERNET, lpszRemoteFile: LPCWSTR, lpszNewFile: LPCWSTR, fFailIfExists: BOOL, dwFlagsAndAttributes: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn FtpOpenFileA( hConnect: HINTERNET, lpszFileName: LPCSTR, dwAccess: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn FtpOpenFileW( hConnect: HINTERNET, lpszFileName: LPCWSTR, dwAccess: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn FtpPutFileA( hConnect: HINTERNET, lpszLocalFile: LPCSTR, lpszNewRemoteFile: LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn FtpPutFileEx( hFtpSession: HINTERNET, lpszLocalFile: LPCWSTR, lpszNewRemoteFile: LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn FtpPutFileW( hConnect: HINTERNET, lpszLocalFile: LPCWSTR, lpszNewRemoteFile: LPCWSTR, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn FtpRemoveDirectoryA( hConnect: HINTERNET, lpszDirectory: LPCSTR, ) -> BOOL; pub fn FtpRemoveDirectoryW( hConnect: HINTERNET, lpszDirectory: LPCWSTR, ) -> BOOL; pub fn FtpRenameFileA( hConnect: HINTERNET, lpszExisting: LPCSTR, lpszNew: LPCSTR, ) -> BOOL; pub fn FtpRenameFileW( hConnect: HINTERNET, lpszExisting: LPCWSTR, lpszNew: LPCWSTR, ) -> BOOL; pub fn FtpSetCurrentDirectoryA( hConnect: HINTERNET, lpszDirectory: LPCSTR, ) -> BOOL; pub fn FtpSetCurrentDirectoryW( hConnect: HINTERNET, lpszDirectory: LPCWSTR, ) -> BOOL; pub fn GetUrlCacheEntryInfoA( lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, ) -> BOOL; pub fn GetUrlCacheEntryInfoExA( lpszUrl: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, lpszRedirectUrl: LPSTR, lpcbRedirectUrl: LPDWORD, lpReserved: LPVOID, dwFlags: DWORD, ) -> BOOL; pub fn GetUrlCacheEntryInfoExW( lpszUrl: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, lpszRedirectUrl: LPWSTR, lpcbRedirectUrl: LPDWORD, lpReserved: LPVOID, dwFlags: DWORD, ) -> BOOL; pub fn GetUrlCacheEntryInfoW( lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, ) -> BOOL; pub fn GetUrlCacheGroupAttributeA( gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA, lpcbGroupInfo: LPDWORD, lpReserved: LPVOID, ) -> BOOL; pub fn GetUrlCacheGroupAttributeW( gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW, lpcbGroupInfo: LPDWORD, lpReserved: LPVOID, ) -> BOOL; pub fn GopherCreateLocatorA( lpszHost: LPCSTR, nServerPort: INTERNET_PORT, lpszDisplayString: LPCSTR, lpszSelectorString: LPCSTR, dwGopherType: DWORD, lpszLocator: LPSTR, lpdwBufferLength: LPDWORD, ) -> BOOL; pub fn GopherCreateLocatorW( lpszHost: LPCWSTR, nServerPort: INTERNET_PORT, lpszDisplayString: LPCWSTR, lpszSelectorString: LPCWSTR, dwGopherType: DWORD, lpszLocator: LPWSTR, lpdwBufferLength: LPDWORD, ) -> BOOL; pub fn GopherFindFirstFileA( hConnect: HINTERNET, lpszLocator: LPCSTR, lpszSearchString: LPCSTR, lpFindData: LPGOPHER_FIND_DATAA, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn GopherFindFirstFileW( hConnect: HINTERNET, lpszLocator: LPCWSTR, lpszSearchString: LPCWSTR, lpFindData: LPGOPHER_FIND_DATAW, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn GopherGetAttributeA( hConnect: HINTERNET, lpszLocator: LPCSTR, lpszAttributeName: LPCSTR, lpBuffer: LPBYTE, dwBufferLength: DWORD, lpdwCharactersReturned: LPDWORD, lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR, dwContext: DWORD_PTR, ) -> BOOL; pub fn GopherGetAttributeW( hConnect: HINTERNET, lpszLocator: LPCWSTR, lpszAttributeName: LPCWSTR, lpBuffer: LPBYTE, dwBufferLength: DWORD, lpdwCharactersReturned: LPDWORD, lpfnEnumerator: GOPHER_ATTRIBUTE_ENUMERATOR, dwContext: DWORD_PTR, ) -> BOOL; pub fn GopherGetLocatorTypeA( lpszLocator: LPCSTR, lpdwGopherType: LPDWORD, ) -> BOOL; pub fn GopherGetLocatorTypeW( lpszLocator: LPCWSTR, lpdwGopherType: LPDWORD, ) -> BOOL; pub fn GopherOpenFileA( hConnect: HINTERNET, lpszLocator: LPCSTR, lpszView: LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn GopherOpenFileW( hConnect: HINTERNET, lpszLocator: LPCWSTR, lpszView: LPCWSTR, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn HttpAddRequestHeadersA( hRequest: HINTERNET, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, dwModifiers: DWORD, ) -> BOOL; pub fn HttpAddRequestHeadersW( hRequest: HINTERNET, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, dwModifiers: DWORD, ) -> BOOL; pub fn HttpEndRequestA( hRequest: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSA, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn HttpEndRequestW( hRequest: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSW, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn HttpOpenRequestA( hConnect: HINTERNET, lpszVerb: LPCSTR, lpszObjectName: LPCSTR, lpszVersion: LPCSTR, lpszReferrer: LPCSTR, lplpszAcceptTypes: *mut LPCSTR, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn HttpOpenRequestW( hConnect: HINTERNET, lpszVerb: LPCWSTR, lpszObjectName: LPCWSTR, lpszVersion: LPCWSTR, lpszReferrer: LPCWSTR, lplpszAcceptTypes: *mut LPCWSTR, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn HttpQueryInfoA( hRequest: HINTERNET, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, lpdwIndex: LPDWORD, ) -> BOOL; pub fn HttpQueryInfoW( hRequest: HINTERNET, dwInfoLevel: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, lpdwIndex: LPDWORD, ) -> BOOL; pub fn HttpSendRequestA( hRequest: HINTERNET, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, lpOptional: LPVOID, dwOptionalLength: DWORD, ) -> BOOL; pub fn HttpSendRequestExA( hRequest: HINTERNET, lpBuffersIn: LPINTERNET_BUFFERSA, lpBuffersOut: LPINTERNET_BUFFERSA, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn HttpSendRequestExW( hRequest: HINTERNET, lpBuffersIn: LPINTERNET_BUFFERSW, lpBuffersOut: LPINTERNET_BUFFERSW, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn HttpSendRequestW( hRequest: HINTERNET, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, lpOptional: LPVOID, dwOptionalLength: DWORD, ) -> BOOL; pub fn InternetAttemptConnect( dwReserved: DWORD, ) -> DWORD; pub fn InternetAutodial( dwFlags: DWORD, hwndParent: HWND, ) -> BOOL; pub fn InternetAutodialHangup( dwReserved: DWORD, ) -> BOOL; pub fn InternetCanonicalizeUrlA( lpszUrl: LPCSTR, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD, ) -> BOOL; pub fn InternetCanonicalizeUrlW( lpszUrl: LPCWSTR, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD, ) -> BOOL; pub fn InternetCheckConnectionA( lpszUrl: LPCSTR, dwFlags: DWORD, dwReserved: DWORD, ) -> BOOL; pub fn InternetCheckConnectionW( lpszUrl: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD, ) -> BOOL; pub fn InternetClearAllPerSiteCookieDecisions() -> BOOL; pub fn InternetCloseHandle( hInternet: HINTERNET, ) -> BOOL; pub fn InternetCombineUrlA( lpszBaseUrl: LPCSTR, lpszRelativeUrl: LPCSTR, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD, ) -> BOOL; pub fn InternetCombineUrlW( lpszBaseUrl: LPCWSTR, lpszRelativeUrl: LPCWSTR, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD, dwFlags: DWORD, ) -> BOOL; pub fn InternetConfirmZoneCrossingA( hWnd: HWND, szUrlPrev: LPSTR, szUrlNew: LPSTR, bPost: BOOL, ) -> DWORD; pub fn InternetConfirmZoneCrossingW( hWnd: HWND, szUrlPrev: LPWSTR, szUrlNew: LPWSTR, bPost: BOOL, ) -> DWORD; pub fn InternetConnectA( hInternet: HINTERNET, lpszServerName: LPCSTR, nServerPort: INTERNET_PORT, lpszUserName: LPCSTR, lpszPassword: LPCSTR, dwService: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn InternetConnectW( hInternet: HINTERNET, lpszServerName: LPCWSTR, nServerPort: INTERNET_PORT, lpszUserName: LPCWSTR, lpszPassword: LPCWSTR, dwService: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn InternetCrackUrlA( lpszUrl: LPCSTR, dwUrlLength: DWORD, dwFlags: DWORD, lpUrlComponents: LPURL_COMPONENTSA, ) -> BOOL; pub fn InternetCrackUrlW( lpszUrl: LPCWSTR, dwUrlLength: DWORD, dwFlags: DWORD, lpUrlComponents: LPURL_COMPONENTSW, ) -> BOOL; pub fn InternetCreateUrlA( lpUrlComponents: LPURL_COMPONENTSA, dwFlags: DWORD, lpszUrl: LPSTR, lpdwUrlLength: LPDWORD, ) -> BOOL; pub fn InternetCreateUrlW( lpUrlComponents: LPURL_COMPONENTSW, dwFlags: DWORD, lpszUrl: LPWSTR, lpdwUrlLength: LPDWORD, ) -> BOOL; pub fn InternetDialA( hwndParent: HWND, lpszConnectoid: LPSTR, dwFlags: DWORD, lpdwConnection: *mut DWORD_PTR, dwReserved: DWORD, ) -> DWORD; pub fn InternetDialW( hwndParent: HWND, lpszConnectoid: LPWSTR, dwFlags: DWORD, lpdwConnection: *mut DWORD_PTR, dwReserved: DWORD, ) -> DWORD; pub fn InternetEnumPerSiteCookieDecisionA( pszSiteName: LPSTR, pcSiteNameSize: *mut u32, pdwDecision: *mut u32, dwIndex: u32, ) -> BOOL; pub fn InternetEnumPerSiteCookieDecisionW( pszSiteName: LPWSTR, pcSiteNameSize: *mut u32, pdwDecision: *mut u32, dwIndex: u32, ) -> BOOL; pub fn InternetErrorDlg( hWnd: HWND, hRequest: HINTERNET, dwError: DWORD, dwFlags: DWORD, lppvData: *mut LPVOID, ) -> DWORD; pub fn InternetFindNextFileA( hFind: HINTERNET, lpvFindData: LPVOID, ) -> BOOL; pub fn InternetFindNextFileW( hFind: HINTERNET, lpvFindData: LPVOID, ) -> BOOL; pub fn InternetFreeCookies( pCookies: *mut INTERNET_COOKIE2, dwCookieCount: DWORD, ) -> (); pub fn InternetGetConnectedState( lpdwFlags: LPDWORD, dwReserved: DWORD, ) -> BOOL; pub fn InternetGetConnectedStateExA( lpdwFlags: LPDWORD, lpszConnectionName: LPSTR, cchNameLen: DWORD, dwReserved: DWORD, ) -> BOOL; pub fn InternetGetConnectedStateExW( lpdwFlags: LPDWORD, lpszConnectionName: LPWSTR, cchNameLen: DWORD, dwReserved: DWORD, ) -> BOOL; pub fn InternetGetCookieA( lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPSTR, lpdwSize: LPDWORD, ) -> BOOL; pub fn InternetGetCookieEx2( pcwszUrl: PCWSTR, pcwszCookieName: PCWSTR, dwFlags: DWORD, ppCookies: *mut *mut INTERNET_COOKIE2, pdwCookieCount: PDWORD, ) -> DWORD; pub fn InternetGetCookieExA( lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPSTR, lpdwSize: LPDWORD, dwFlags: DWORD, lpReserved: LPVOID, ) -> BOOL; pub fn InternetGetCookieExW( lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPWSTR, lpdwSize: LPDWORD, dwFlags: DWORD, lpReserved: LPVOID, ) -> BOOL; pub fn InternetGetCookieW( lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPWSTR, lpdwSize: LPDWORD, ) -> BOOL; pub fn InternetGetLastResponseInfoA( lpdwError: LPDWORD, lpszBuffer: LPSTR, lpdwBufferLength: LPDWORD, ) -> BOOL; pub fn InternetGetLastResponseInfoW( lpdwError: LPDWORD, lpszBuffer: LPWSTR, lpdwBufferLength: LPDWORD, ) -> BOOL; pub fn InternetGetPerSiteCookieDecisionA( pchHostName: LPCSTR, pResult: *mut u32, ) -> BOOL; pub fn InternetGetPerSiteCookieDecisionW( pchHostName: LPCWSTR, pResult: *mut u32, ) -> BOOL; pub fn InternetGoOnlineA( lpszURL: LPCSTR, hwndParent: HWND, dwFlags: DWORD, ) -> BOOL; pub fn InternetGoOnlineW( lpszURL: LPCWSTR, hwndParent: HWND, dwFlags: DWORD, ) -> BOOL; pub fn InternetHangUp( dwConnection: DWORD_PTR, dwReserved: DWORD, ) -> DWORD; pub fn InternetInitializeAutoProxyDll( dwReserved: DWORD, ) -> BOOL; pub fn InternetLockRequestFile( hInternet: HINTERNET, lphLockRequestInfo: *mut HANDLE, ) -> BOOL; pub fn InternetOpenA( lpszAgent: LPCSTR, dwAccessType: DWORD, lpszProxy: LPCSTR, lpszProxyBypass: LPCSTR, dwFlags: DWORD, ) -> HINTERNET; pub fn InternetOpenUrlA( hInternet: HINTERNET, lpszUrl: LPCSTR, lpszHeaders: LPCSTR, dwHeadersLength: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn InternetOpenUrlW( hInternet: HINTERNET, lpszUrl: LPCWSTR, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> HINTERNET; pub fn InternetOpenW( lpszAgent: LPCWSTR, dwAccessType: DWORD, lpszProxy: LPCWSTR, lpszProxyBypass: LPCWSTR, dwFlags: DWORD, ) -> HINTERNET; pub fn InternetQueryDataAvailable( hFile: HINTERNET, lpdwNumberOfBytesAvailable: LPDWORD, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn InternetQueryOptionA( hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, ) -> BOOL; pub fn InternetQueryOptionW( hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, ) -> BOOL; pub fn InternetReadFile( hFile: HINTERNET, lpBuffer: LPVOID, dwNumberOfBytesToRead: DWORD, lpdwNumberOfBytesRead: LPDWORD, ) -> BOOL; pub fn InternetReadFileExA( hFile: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSA, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn InternetReadFileExW( hFile: HINTERNET, lpBuffersOut: LPINTERNET_BUFFERSW, dwFlags: DWORD, dwContext: DWORD_PTR, ) -> BOOL; pub fn InternetSetCookieA( lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPCSTR, ) -> BOOL; pub fn InternetSetCookieEx2( pcwszUrl: PCWSTR, pCookie: *const INTERNET_COOKIE2, pcwszP3PPolicy: PCWSTR, dwFlags: DWORD, pdwCookieState: PDWORD, ) -> DWORD; pub fn InternetSetCookieExA( lpszUrl: LPCSTR, lpszCookieName: LPCSTR, lpszCookieData: LPCSTR, dwFlags: DWORD, dwReserved: DWORD_PTR, ) -> DWORD; pub fn InternetSetCookieExW( lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPCWSTR, dwFlags: DWORD, dwReserved: DWORD_PTR, ) -> DWORD; pub fn InternetSetCookieW( lpszUrl: LPCWSTR, lpszCookieName: LPCWSTR, lpszCookieData: LPCWSTR, ) -> BOOL; pub fn InternetSetDialStateA( lpszConnectoid: LPCSTR, dwState: DWORD, dwReserved: DWORD, ) -> BOOL; pub fn InternetSetDialStateW( lpszConnectoid: LPCWSTR, dwState: DWORD, dwReserved: DWORD, ) -> BOOL; pub fn InternetSetFilePointer( hFile: HINTERNET, lDistanceToMove: LONG, lpDistanceToMoveHigh: PLONG, dwMoveMethod: DWORD, dwContext: DWORD_PTR, ) -> DWORD; pub fn InternetSetOptionA( hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD, ) -> BOOL; pub fn InternetSetOptionExA( hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD, dwFlags: DWORD, ) -> BOOL; pub fn InternetSetOptionExW( hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD, dwFlags: DWORD, ) -> BOOL; pub fn InternetSetOptionW( hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD, ) -> BOOL; pub fn InternetSetPerSiteCookieDecisionA( pchHostName: LPCSTR, dwDecision: DWORD, ) -> BOOL; pub fn InternetSetPerSiteCookieDecisionW( pchHostName: LPCWSTR, dwDecision: DWORD, ) -> BOOL; pub fn InternetSetStatusCallbackA( hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK, ) -> INTERNET_STATUS_CALLBACK; pub fn InternetSetStatusCallbackW( hInternet: HINTERNET, lpfnInternetCallback: INTERNET_STATUS_CALLBACK, ) -> INTERNET_STATUS_CALLBACK; pub fn InternetTimeFromSystemTimeA( pst: *const SYSTEMTIME, dwRFC: DWORD, lpszTime: LPSTR, cbTime: DWORD, ) -> BOOL; pub fn InternetTimeFromSystemTimeW( pst: *const SYSTEMTIME, dwRFC: DWORD, lpszTime: LPWSTR, cbTime: DWORD, ) -> BOOL; pub fn InternetTimeToSystemTimeA( lpszTime: LPCSTR, pst: *mut SYSTEMTIME, dwReserved: DWORD, ) -> BOOL; pub fn InternetTimeToSystemTimeW( lpszTime: LPCWSTR, pst: *mut SYSTEMTIME, dwReserved: DWORD, ) -> BOOL; pub fn InternetUnlockRequestFile( hLockRequestInfo: HANDLE, ) -> BOOL; pub fn InternetWriteFile( hFile: HINTERNET, lpBuffer: LPCVOID, dwNumberOfBytesToWrite: DWORD, lpdwNumberOfBytesWritten: LPDWORD, ) -> BOOL; pub fn PrivacyGetZonePreferenceW( dwZone: DWORD, dwType: DWORD, pdwTemplate: LPDWORD, pszBuffer: LPWSTR, pdwBufferLength: LPDWORD, ) -> DWORD; pub fn PrivacySetZonePreferenceW( dwZone: DWORD, dwType: DWORD, dwTemplate: DWORD, pszPreference: LPCWSTR, ) -> DWORD; pub fn ReadUrlCacheEntryStream( hUrlCacheStream: HANDLE, dwLocation: DWORD, lpBuffer: LPVOID, lpdwLen: LPDWORD, Reserved: DWORD, ) -> BOOL; pub fn ReadUrlCacheEntryStreamEx( hUrlCacheStream: HANDLE, qwLocation: DWORDLONG, lpBuffer: LPVOID, lpdwLen: LPDWORD, ) -> BOOL; pub fn ResumeSuspendedDownload( hRequest: HINTERNET, dwResultCode: DWORD, ) -> BOOL; pub fn RetrieveUrlCacheEntryFileA( lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, dwReserved: DWORD, ) -> BOOL; pub fn RetrieveUrlCacheEntryFileW( lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, dwReserved: DWORD, ) -> BOOL; pub fn RetrieveUrlCacheEntryStreamA( lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, lpcbCacheEntryInfo: LPDWORD, fRandomRead: BOOL, dwReserved: DWORD, ) -> HANDLE; pub fn RetrieveUrlCacheEntryStreamW( lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, lpcbCacheEntryInfo: LPDWORD, fRandomRead: BOOL, dwReserved: DWORD, ) -> HANDLE; pub fn SetUrlCacheEntryGroupA( lpszUrlName: LPCSTR, dwFlags: DWORD, GroupId: GROUPID, pbGroupAttributes: LPBYTE, cbGroupAttributes: DWORD, lpReserved: LPVOID, ) -> BOOL; pub fn SetUrlCacheEntryGroupW( lpszUrlName: LPCWSTR, dwFlags: DWORD, GroupId: GROUPID, pbGroupAttributes: LPBYTE, cbGroupAttributes: DWORD, lpReserved: LPVOID, ) -> BOOL; pub fn SetUrlCacheEntryInfoA( lpszUrlName: LPCSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOA, dwFieldControl: DWORD, ) -> BOOL; pub fn SetUrlCacheEntryInfoW( lpszUrlName: LPCWSTR, lpCacheEntryInfo: LPINTERNET_CACHE_ENTRY_INFOW, dwFieldControl: DWORD, ) -> BOOL; pub fn SetUrlCacheGroupAttributeA( gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOA, lpReserved: LPVOID, ) -> BOOL; pub fn SetUrlCacheGroupAttributeW( gid: GROUPID, dwFlags: DWORD, dwAttributes: DWORD, lpGroupInfo: LPINTERNET_CACHE_GROUP_INFOW, lpReserved: LPVOID, ) -> BOOL; pub fn UnlockUrlCacheEntryFileA( lpszUrlName: LPCSTR, dwReserved: DWORD, ) -> BOOL; pub fn UnlockUrlCacheEntryFileW( lpszUrlName: LPCWSTR, dwReserved: DWORD, ) -> BOOL; pub fn UnlockUrlCacheEntryStream( hUrlCacheStream: HANDLE, Reserved: DWORD, ) -> BOOL; }