[IE编程] 了解Urlmon.dll和Wininet.dll

本文探讨了Windows网络编程中常用的API库Winsock、Wininet和Urlmon,重点介绍了Wininet.dll的缓存、历史记录、身份验证等功能,以及Urlmon.dll的URL解析、GZIP压缩、安全区管理和异步协议处理等特性。

Windows 网络编程常用的API库有WinsockWininet Urlmon。Winsock 实现了基本的套接字(socket)功能, 而 wininet 和 urlmon在winsock 的基础上封装了HTTP, FTP, WWW 的协议。 这篇文章 《Under the Hood: WinINet》(http://blogs.technet.com/askperf/archive/2007/08/21/under-the-hood-wininet.aspx) 可以很好帮助了解wininet 和 urlmon 的功能和区别。

 

wininet.dll

  • Caching, History, Cookie Management
  • Authentication - Basic, NTLM, Kerberos
  • Connections - Both secure (schannel) and non-secure
  • Dial-up, Direct, Proxy
  • Protocol and HTTP header management

urlmon.dll

  • URL Parsing – breaking down URLs into the protocol used (HTTP, HTTPS, FTP, File, Gopher), address, and target.
  • GZIP compression/decompression – provides support for GZIP HTTP compression to deflate and inflate data.  IE6 and IE7 handle this slightly differently.  In IE7 this functionality is handled by WinINet.
  • Security and Zone Management – Identifies security zones, zone crossings, permissions, etc.
  • Asynchronous Pluggable Protocol Filter/Handler – correlates appropriate the protocol to the registered handler (HTTP, HTTPS, MAILTO, FILE, etc.).
  • Code Download Management, Install On Demand, and Just-In-Time.
  • Forms requests from the URL – creates the outbound data package and hands it off to WININET for transfer.
  • MIME (Multipurpose Internet Mail Extension) type management – examines the MIME type for data returned in an HTTP response and correlates that type with a specific handler. For example, URLMON would open a Microsoft Word document (MIME type .doc) with Microsoft Word. If the MIME type is not clear from the response, URLMON is capable of examining the binary data to determine the appropriate MIME type. MIME is described more thoroughly in RFC1521.

 

 

 

 

1> 已为配置“win-x64”启动 CMake 生成。 1> 环境设置: 1> CommandPromptType=Native 1> DevEnvDir=C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\ 1> ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs 1> EXTERNAL_INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\cppwinrt 1> Framework40Version=v4.0 1> FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework64\ 1> FrameworkDIR64=C:\WINDOWS\Microsoft.NET\Framework64 1> FrameworkVersion=v4.0.30319 1> FrameworkVersion64=v4.0.30319 1> INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\cppwinrt 1> LIB=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\lib\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.26100.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\\lib\10.0.26100.0\\um\x64 1> LIBPATH=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.26100.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.26100.0;C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319 1> Path=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\VCPackages;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\bin\Roslyn;C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\;C:\Program Files\Microsoft Visual Studio\2022\Community\Team Tools\DiagnosticsHub\Collector;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\\x64;C:\Program Files (x86)\Windows Kits\10\bin\\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\\MSBuild\Current\Bin\amd64;C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files\Java\jdk1.8.0_201\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Java\jdk1.8.0_201\jre\bin;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\MongoDB\Server\6.0\bin;C:\phpstudy_pro\Extensions\MySQL5.7.26\bin;C:\driver;C:\allure-2.17.3\allure-2.17.3\bin;C:\android-sdk-windows\tools;C:\android-sdk-windows\platform-tools;C:\android-sdk-windows\build-tools\29.0.3;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Users\86181\Desktop\cef_binary_121.3.15+g4d3b0b4+chromium-121.0.6167.184_windows64;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\python\Scripts\;C:\python\;C:\Users\86181\AppData\Local\Microsoft\WindowsApps;C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\bin;C:\Users\86181\AppData\Local\Microsoft\WindowsApps;C:\Users\86181\AppData\Roaming\npm;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\Linux\bin\ConnectionManagerExe;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg 1> PROMPT=$P$G 1> UCRTVersion=10.0.26100.0 1> UniversalCRTSdkDir=C:\Program Files (x86)\Windows Kits\10\ 1> VCIDEInstallDir=C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\ 1> VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\ 1> VCPKG_ROOT=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg 1> VCToolsInstallDir=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ 1> VCToolsRedistDir=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.44.35112\ 1> VCToolsVersion=14.44.35207 1> VS170COMNTOOLS=C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\ 1> VSCMD_ARG_app_plat=Desktop 1> VSCMD_ARG_HOST_ARCH=x64 1> VSCMD_ARG_no_logo=1 1> VSCMD_ARG_TGT_ARCH=x64 1> VSCMD_DEBUG=5 1> VSCMD_VER=17.14.13 1> VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio\2022\Community\ 1> WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.26100.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.26100.0 1> WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\ 1> WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\ 1> WindowsSDKLibVersion=10.0.26100.0\ 1> WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\ 1> WindowsSDKVersion=10.0.26100.0\ 1> WindowsSDK_ExecutablePath_x64=C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\ 1> WindowsSDK_ExecutablePath_x86=C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ 1> __DOTNET_ADD_64BIT=1 1> __DOTNET_PREFERRED_BITNESS=64 1> __VSCMD_PREINIT_PATH=C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files\Java\jdk1.8.0_201\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Java\jdk1.8.0_201\jre\bin;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\MongoDB\Server\6.0\bin;C:\phpstudy_pro\Extensions\MySQL5.7.26\bin;C:\driver;C:\allure-2.17.3\allure-2.17.3\bin;C:\android-sdk-windows\tools;C:\android-sdk-windows\platform-tools;C:\android-sdk-windows\build-tools\29.0.3;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Users\86181\Desktop\cef_binary_121.3.15+g4d3b0b4+chromium-121.0.6167.184_windows64;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\python\Scripts\;C:\python\;C:\Users\86181\AppData\Local\Microsoft\WindowsApps;C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\bin;C:\Users\86181\AppData\Local\Microsoft\WindowsApps;C:\Users\86181\AppData\Roaming\npm 1> OneDriveConsumer=C:\Users\86181\OneDrive 1> GLODON_COMMON_DOCUMENT=C:\Users\Public\Documents 1> USERNAME=86181 1> ProgramW6432=C:\Program Files 1> PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 11, GenuineIntel 1> TMP=C:\Users\86181\AppData\Local\Temp 1> PROCESSOR_ARCHITECTURE=AMD64 1> HOMEPATH=\Users\86181 1> PkgDefApplicationConfigFile=C:\Users\86181\AppData\Local\Temp\dev4C37.tmp 1> USERPROFILE=C:\Users\86181 1> GLODON_COMMON_DESKTOP=C:\Users\Public\Desktop 1> GLODON_COMMON_APPDATA=C:\ProgramData 1> PROCESSOR_REVISION=8e0b 1> GLODON_PROGRAM_FILES_64=C:\Program Files 1> ServiceHubLogSessionKey=5D92AE68 1> FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer 1> FPS_BROWSER_USER_PROFILE_STRING=Default 1> LOGONSERVER=\\LAPTOP-M7FLHRNQ 1> TEMP=C:\Users\86181\AppData\Local\Temp 1> ServiceHubHostServiceBrokerPipeName=\\.\pipe\DAEBE39E-0369-445F-B210-14A1E1D0B815 1> SystemRoot=C:\WINDOWS 1> VSSKUEDITION=Community 1> GLODON_SYSTEM_DRIVE=C: 1> GLODON_COMMON_FILES_32=C:\Program Files (x86)\Common Files 1> GLODON_WINDOWS_DIR=C:\WINDOWS 1> CommonProgramFiles=C:\Program Files\Common Files 1> ProgramFiles(x86)=C:\Program Files (x86) 1> JAVA_HOME=C:\Program Files\Java\jdk1.8.0_201 1> ANDROID_HOME=C:\android-sdk-windows 1> ThreadedWaitDialogDpiContext=-4 1> ProgramData=C:\ProgramData 1> VS_Perf_Session_GCHeapCount=2 1> VSAPPIDDIR=C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\ 1> IntelliJ IDEA=C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\bin; 1> COMPUTERNAME=LAPTOP-M7FLHRNQ 1> USERDOMAIN=LAPTOP-M7FLHRNQ 1> GLODON_SYSTEM_32=C:\WINDOWS\SysWOW64 1> CommonProgramW6432=C:\Program Files\Common Files 1> VisualStudioVersion=17.0 1> ss-root=C:\Program Files (x86)\senseshield\ss 1> VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\ 1> GCExpConfigUsedInSession=3 1> SignInWithHomeTenantOnly=False 1> DriverData=C:\Windows\System32\Drivers\DriverData 1> HOMEDRIVE=C: 1> windir=C:\WINDOWS 1> CLASSPATH=.;C:\Program Files\Java\jdk1.8.0_201\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_201\lib\tools.jar; 1> SystemDrive=C: 1> NUMBER_OF_PROCESSORS=8 1> OS=Windows_NT 1> ProgramFiles=C:\Program Files 1> ComSpec=C:\WINDOWS\system32\cmd.exe 1> VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ 1> USERDOMAIN_ROAMINGPROFILE=LAPTOP-M7FLHRNQ 1> PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 1> VSLANG=2052 1> ALLUSERSPROFILE=C:\ProgramData 1> PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules 1> APPDATA=C:\Users\86181\AppData\Roaming 1> OneDrive=C:\Users\86181\OneDrive 1> PROCESSOR_LEVEL=6 1> GLODON_COMMON_FILES_64=C:\Program Files\Common Files 1> LOCALAPPDATA=C:\Users\86181\AppData\Local 1> GLODON_PROGRAM_FILES_32=C:\Program Files (x86) 1> VisualStudioEdition=Microsoft Visual Studio Community 2022 1> VsPerMonitorDpiAwarenessEnabled.13716=TRUE 1> VisualStudioDir=C:\Users\86181\Documents\Visual Studio 2022 1> CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files 1> GLODON_SYSTEM_64=C:\WINDOWS\system32 1> PUBLIC=C:\Users\Public 1> VSAPPIDNAME=devenv.exe 1> MSBuildLoadMicrosoftTargetsReadOnly=true 1> 命令行: "C:\WINDOWS\system32\cmd.exe" /c "%SYSTEMROOT%\System32\chcp.com 65001 >NUL && "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" -G "Visual Studio 17 2022" -A x64 "C:\Users\86181\Desktop\cef" 2>&1" 1> 工作目录: C:/Users/86181/Desktop/cef/build/win-x64 1> [CMake] -- *** CEF CONFIGURATION SETTINGS *** 1> [CMake] -- Generator: Visual Studio 17 2022 1> [CMake] -- Platform: Windows 1> [CMake] -- Project architecture: x86_64 1> [CMake] -- Binary distribution root: C:/Users/86181/Desktop/cef 1> [CMake] -- Visual Studio ATL support: ON 1> [CMake] -- CEF sandbox: ON 1> [CMake] -- Standard libraries: comctl32.lib;gdi32.lib;rpcrt4.lib;shlwapi.lib;ws2_32.lib;Advapi32.lib;dbghelp.lib;Delayimp.lib;ntdll.lib;OleAut32.lib;PowrProf.lib;Propsys.lib;psapi.lib;SetupAPI.lib;Shell32.lib;Shcore.lib;Userenv.lib;version.lib;wbemuuid.lib;WindowsApp.lib;winmm.lib 1> [CMake] -- Compile defines: __STDC_CONSTANT_MACROS;__STDC_FORMAT_MACROS;WIN32;_WIN32;_WINDOWS;UNICODE;_UNICODE;WINVER=0x0A00;_WIN32_WINNT=0x0A00;NTDDI_VERSION=NTDDI_WIN10_FE;NOMINMAX;WIN32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0;PSAPI_VERSION=1;CEF_USE_SANDBOX;CEF_USE_ATL 1> [CMake] -- Compile defines (Debug): _HAS_ITERATOR_DEBUGGING=0 1> [CMake] -- Compile defines (Release): NDEBUG;_NDEBUG 1> [CMake] -- C compile flags: /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/wd4324;/wd4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi 1> [CMake] -- C compile flags (Debug): /MTd;/RTC1;/Od 1> [CMake] -- C compile flags (Release): /MT;/O2;/Ob2;/GF 1> [CMake] -- C++ compile flags: /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/wd4324;/wd4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi /std:c++17 1> [CMake] -- C++ compile flags (Debug): /MTd;/RTC1;/Od 1> [CMake] -- C++ compile flags (Release): /MT;/O2;/Ob2;/GF 1> [CMake] -- Exe link flags: /MANIFEST:NO;/LARGEADDRESSAWARE;/DELAYLOAD:api-ms-win-core-winrt-error-l1-1-0.dll;/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll;/DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll;/DELAYLOAD:advapi32.dll;/DELAYLOAD:comctl32.dll;/DELAYLOAD:comdlg32.dll;/DELAYLOAD:credui.dll;/DELAYLOAD:cryptui.dll;/DELAYLOAD:d3d11.dll;/DELAYLOAD:d3d9.dll;/DELAYLOAD:dwmapi.dll;/DELAYLOAD:dxgi.dll;/DELAYLOAD:dxva2.dll;/DELAYLOAD:esent.dll;/DELAYLOAD:gdi32.dll;/DELAYLOAD:hid.dll;/DELAYLOAD:imagehlp.dll;/DELAYLOAD:imm32.dll;/DELAYLOAD:msi.dll;/DELAYLOAD:netapi32.dll;/DELAYLOAD:ncrypt.dll;/DELAYLOAD:ole32.dll;/DELAYLOAD:oleacc.dll;/DELAYLOAD:propsys.dll;/DELAYLOAD:psapi.dll;/DELAYLOAD:rpcrt4.dll;/DELAYLOAD:rstrtmgr.dll;/DELAYLOAD:setupapi.dll;/DELAYLOAD:shell32.dll;/DELAYLOAD:shlwapi.dll;/DELAYLOAD:uiautomationcore.dll;/DELAYLOAD:urlmon.dll;/DELAYLOAD:user32.dll;/DELAYLOAD:usp10.dll;/DELAYLOAD:uxtheme.dll;/DELAYLOAD:wer.dll;/DELAYLOAD:wevtapi.dll;/DELAYLOAD:wininet.dll;/DELAYLOAD:winusb.dll;/DELAYLOAD:wsock32.dll;/DELAYLOAD:wtsapi32.dll;/STACK:0x800000 1> [CMake] -- Exe link flags (Debug): /DEBUG 1> [CMake] -- Exe link flags (Release): 1> [CMake] -- Shared link flags: 1> [CMake] -- Shared link flags (Debug): /DEBUG 1> [CMake] -- Shared link flags (Release): 1> [CMake] -- CEF Binary files: chrome_elf.dll;d3dcompiler_47.dll;libcef.dll;libEGL.dll;libGLESv2.dll;snapshot_blob.bin;v8_context_snapshot.bin;vk_swiftshader.dll;vk_swiftshader_icd.json;vulkan-1.dll;dxil.dll;dxcompiler.dll 1> [CMake] -- CEF Resource files: chrome_100_percent.pak;chrome_200_percent.pak;resources.pak;icudtl.dat;locales 1> [CMake] -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 1> [CMake] CMake Warning at CMakeLists.txt:254 (message): 1> [CMake] Doxygen must be installed to generate API documentation. 1> [CMake] 1> [CMake] 1> [CMake] -- Configuring done (0.7s) 1> [CMake] -- Generating done (0.6s) 1> [CMake] -- Build files have been written to: C:/Users/86181/Desktop/cef/build/win-x64 1> 已提取 CMake 变量。 1> 已提取源文件标头。 1> 已提取代码模型。 1> 已提取工具链配置。 1> 已提取包含路径。 1> CMake 生成完毕。
最新发布
09-01
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值