seahawk
驱动牛犊
驱动牛犊
  • 注册日期2005-02-13
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2266回复:4

能不能讨论一下Session Manager?

楼主#
更多 发布于:2005-03-02 10:08
据说ntldr调用smss,然后smss调用csrss然后winlogon然后完成初始化的,对吗?
可是ntldr载入smss后smss是从哪里开始执行的呢?
smss.exe中是用哪一个函数来调用csrss的呢?
而且smss中有一个函数叫SmpParseCommandLine(x,x,x,x,x);难道smss可以接受命令行参数?

最新喜欢:

vxer_moonvxer_m...
傍海渔村酣睡足 斜阳一脉洒千山 鲲鹏不待风潮起 万古江山多寂寥
seahawk
驱动牛犊
驱动牛犊
  • 注册日期2005-02-13
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-02 10:30
smss的入口点应该是NtProcessStartupForGS(x),对不对?或者是_main?

[编辑 -  3/2/05 by  seahawk]
傍海渔村酣睡足 斜阳一脉洒千山 鲲鹏不待风潮起 万古江山多寂寥
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-02 11:55
据说ntldr调用smss,然后smss调用csrss然后winlogon然后完成初始化的,对吗?
可是ntldr载入smss后smss是从哪里开始执行的呢?
smss.exe中是用哪一个函数来调用csrss的呢?
而且smss中有一个函数叫SmpParseCommandLine(x,x,x,x,x);难道smss可以接受命令行参数?

我觉得ntldr不会调用smss,ntoskrnl.exe才是核心,只有有了它,系统才能展开,加载驱动,创建各个子系统,加载各种文件的Image。ntoskrnl.exe才会启动smss
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
seahawk
驱动牛犊
驱动牛犊
  • 注册日期2005-02-13
  • 最后登录2006-03-08
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-02 14:29
[quote]据说ntldr调用smss,然后smss调用csrss然后winlogon然后完成初始化的,对吗?
可是ntldr载入smss后smss是从哪里开始执行的呢?
smss.exe中是用哪一个函数来调用csrss的呢?
而且smss中有一个函数叫SmpParseCommandLine(x,x,x,x,x);难道smss可以接受命令行参数?

我觉得ntldr不会调用smss,ntoskrnl.exe才是核心,只有有了它,系统才能展开,加载驱动,创建各个子系统,加载各种文件的Image。ntoskrnl.exe才会启动smss [/quote]
说的是!应该是ntoskrnl调用smss.exe,smss大量使用ntXXX函数。
根据某牛人的总结,smss应该是按照如下顺序工作:
1、创建 LPC 端口对象( \\SmApiPort )和两个等待客户请求的线程。客户请求包括装载一个新的子系统或者创建一个会话等。
2、为 MS-DOS 设备名,如 COM1 和 LPT1 定义符号链接。
3、如果安装了终端服务(Terminal Services),在对象管理器的名字空间创建 \\Sessions 目录。
4、运行 HKLM\\SYSTEM\\CurrentControlSet\\ Control\\Session Manager\\BootExecute 定义的程序,典型的是运行 Autochk (Chkdsk在引导其间的版本)。
5、按照 HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\PendingFileRenameOperations 的指令,进行延迟文件改名操作。挂起文件删除在 PendingFileRenameOperations2 。
6、打开已知的 DLL 。
7、创建另外的分页文件。
8、初始化注册表。配置管理器刷新注册表, 为HKLM\\SAM, HKLM\\SECURITY, 和 HKLM\\SOFTWARE 关键字装载注册文件。HKLM\\SYSTEM\\ CurrentControlSet\\Control\\hivelist 在硬盘上搜索注册表文件,配置管理器在 \\Winnt\\System32\\Config 寻找。
9、创建系统环境变量。
10、装载Win32子系统内核模式部分(Win32k.sys)。Smss 在 HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager 下寻找 Win32k.sys 和其它要装载组件的路径,确定它们的位置。Win32k.sys 中的初始化代码使用视频驱动程序,屏幕的分辨率转换到缺省概貌文件定义的值。因此,屏幕从引导视频驱动程序使用的VGA模式转到系统选择的缺省的分辨率。
11、启动子系统进程,包括 Csrss 。
12、启动登陆进程 (Winlogon) 。
13、为调试事件信息创建LPC口(DbgSsApiPort 和 DbgUiApiPort),并创建监听这些口的线程。

可是这些工作具体在smss中是由那些函数实现的呢?能不能探讨一下?
btw:windows internal 4th胶印什么时候能到呀?里面不知道有没有相关的讲解?
傍海渔村酣睡足 斜阳一脉洒千山 鲲鹏不待风潮起 万古江山多寂寥
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-02 15:44
znsoft说下周发货
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部