[Chrome源码阅读]Chrome启动代码流程1

本文详细介绍了Chrome浏览器在Windows平台上的启动流程,从WinMain函数开始,解析了如何加载dll,调用ChromeMain,初始化组件,处理不同进程类型的入口,特别是BrowserMain函数中的BrowserProcess初始化和Browser窗口的显示。通过对命令行参数的处理,启动Browser并打开URLs,深入理解Chrome的启动机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Chrome启动代码流程:(v2.0版,Windows平台)

应用程序启动过程:
1. WinMain函数为入口点,定义在文件\chrome\app\chrome_exe_main.cc文件中(位于chrome_exe工程项目中)
2. WinMain从注册表中找到当前版本的子目录,然后装载chrome.dll文件。如果没找到,则直接从当前exe目录查找dll文件,并装载。
3. 直接从chrome.dll中找到函数ChromeMain,然后调用它。ChromeMain函数定义在\chrome\app\chrome_dll_main.cc文件中,位于chrome_dll工程项目中。
 
HINSTANCE dll_handle = ::LoadLibraryEx (dll_name, NULL,
                                         LOAD_WITH_ALTERED_SEARCH_PATH);

  // Initialize the crash reporter.
  InitCrashReporter( client_util::GetDLLPath (dll_name, dll_path));

  bool exit_now = true ;
  if ( ShowRestartDialogIfCrashed(&exit_now )) {
    // We have restarted because of a previous crash. The user might
    // decide that he does not want to continue.
    if ( exit_now)
      return ResultCodes ::NORMAL_EXIT;
  }

  if ( NULL != dll_handle ) {
    client_util:: DLL_MAIN entry = reinterpret_cast< client_util::DLL_MAIN >(
        :: GetProcAddress(dll_handle , "ChromeMain"));
    if ( NULL != entry )
      return (entry )(instance, & sandbox_info, command_line );
  }

4. ChromeMain函数做一些通用组件的初始化工作,之后则根据命令行中的参数选项,要么调用RenderMain,要么调用BrowserMain函数,或者调用WorkMain或者PluginMain函数:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值