自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

reactos操作系统实现(74)

很多驱动程序,都是通过硬件检测时写到注册表里保存起来的,因此读取注册表里键值列表,就知道有多少设备需要需要加载了。下面就从注册表里创建一组驱动程序列表,实现的代码如下:#001 NTSTATUS INIT_FUNCTION#002 IoCreateDriverList(VOID)#003 {#004 RTL_QUERY_REGISTRY_TABLEQueryTable[...

2009-08-31 22:08:00 66

reactos操作系统实现(73)

即插即用(Plug and Play,PnP)是计算机系统I/O设备与部件配置的应用技术。PnP就是指插入就可以使用,不需要进行任何的硬件配置。其实还是需要安装相应的驱动程序才可以使用的。随着人们对计算机使用多样化,不断地需要添加各种各样的硬件卡到计算机的主板上,这样就需要配置硬件卡的中断、I/O所占用的资源,才能正常工作。这个过程是非常复杂的,经常需要手工配置,还需要查看计算机那里中断是空...

2009-08-29 21:54:00 71

reactos操作系统实现(72)

ReactOS通过对象管理机制为内核提供了一致的和安全的访问方式。对象管理器是一个用于创建、删除、保护和跟踪对象的内核一部份。由于I/O管理的设备是多方面的,就需要创建很多对象来表达这种设备,下面就来了解关于I/O相关的对象,初始化的代码如下:#001 BOOLEAN#002 INIT_FUNCTION#003 NTAPI#004 IopCreateObjectTypes(V...

2009-08-28 21:40:00 49

reactos操作系统实现(71)

I/O管理器是管理着整个计算机的输入和输出的操作,因此它是一个基本的组成部份。I/O管理器的初始化调用是在文件reactos/ntoskrnl/ex/init.c里,它主要调用I/O管理器的函数IoInitSystem()来实现,这个函数在文件reactos/ntoskrnl/io/iomgr/iomgr.c里。这个函数的实现代码如下:#001 BOOLEAN#002 INIT_FU...

2009-08-26 22:53:00 67

reactos操作系统实现(70)

安装和配置用户信息后,就会重新启动,ReactOS系统就会自动登录到正常的环境里,并且启动驱动程序安装向导,如下图:当驱动程序安装完成后,整个系统就可以使用了,如下:到这里就把从光盘开始安装到系统正常使用的过程分析完成,当然这个过程里,还有很多其它实现代码没有一一去解释,但这个主线已经完全清晰了,其它代码只需要顺藤摸瓜。...

2009-08-25 21:55:00 69

reactos操作系统实现(69)

当用户安装系统时,就会出现几个向导界面,这几个向导界面是怎么样实现的呢?具体又是做些什么样的功能呢?它的实现代码如下:#001 VOID#002 InstallWizard(VOID)#003 {#004 PROPSHEETHEADER psh;#005 HPROPSHEETPAGE ahpsp[8];#006 PROPSHEETPAGE psp = {0};#007 ...

2009-08-24 22:40:00 79

reactos操作系统实现(68)

前面介绍怎么样调用动态连接库里的InstallReactOS函数,下面就来分析这个函数的代码,看看这个函数是怎么运行向导界面,又做了些什么样的工作。如下:#001 DWORD WINAPI#002 InstallReactOS(HINSTANCE hInstance)#003 {#004 TCHAR szBuffer[MAX_PATH];#005 DWORD LastEr...

2009-08-23 09:55:00 79

reactos操作系统实现(67)

前面分析安装后,就会调用setup.exe程序运行,在入口函数里处理命令行参数newsetup后,就会调用函数newsetup来运行,下面来仔细地分析这个函数是到底做什么事情。如下:#001 static VOID#002 RunNewSetup (HINSTANCE hInstance)#003 {#004 HMODULE hDll;#005 PINSTALL_REAC...

2009-08-22 20:06:00 61

reactos操作系统实现(66)

当选择重新启动后,就会进入最后阶段安装,进入有界面安装。这里主要通过程序setup.exe来实现的,它的实现代码在目录reactos/base/setup/setup里。就可以进安装驱程序和系统一些配置信息,如下:下面就是程序入口点的代码,从这里可以看到这个程序与前面的安装程序是不一样的,它是采用应用程序的方式来运行,也就是加载了几个内核DLL才能运行这个程序。#001 int...

2009-08-21 22:55:00 86

reactos操作系统实现(65)

激动人心的时刻到了,最后安装成功了。会出现下面的界面,如下:上面成功的实现代码如下:#001 static PAGE_NUMBER#002 SuccessPage(PINPUT_RECORD Ir)#003 {显示成功安装的信息。#004 MUIDisplayPage(SUCCESS_PAGE);#005 #006 if (IsUnattendedS...

2009-08-20 21:32:00 65

reactos操作系统实现(64)

在安装一个操作系统时,绝大多数都是把引导程序安装在硬盘里,下面就来了解安装到硬盘里具体过程,实现代码如下:#001 static PAGE_NUMBER#002 BootLoaderHarddiskPage(PINPUT_RECORD Ir)#003 {#004 UCHAR PartitionType;#005 NTSTATUS Status;#006 获取硬...

2009-08-19 23:53:00 57

reactos操作系统实现(63)

前面把注册表初始化完成之后,就开始进行安装引导程序了。这里安装的引导程序是分区引导程序,或者安装到软盘引导程序。当然也可以选择跳过不安装它,界面如下:这个函数的代码如下:#001 static PAGE_NUMBER#002 BootLoaderPage(PINPUT_RECORD Ir)#003 {#004 UCHAR PartitionType;#005 B...

2009-08-18 21:38:00 78

reactos操作系统实现(62)

当文件拷贝完成后,主要就是把已经拷贝的文件进行注册表登记,还需要把用户在安装过程里选择的配置保存到注册表,同时也需要把检查到的硬件保存到注册表里。其实注册表,就是保存一些配置信息,这样下一次启动时,就可以直接把这些信息加载到内存就行了,不需要用户重新选择,也不需要重新搜索硬盘配置。代码如下:#001 static PAGE_NUMBER#002 RegistryPage(PINPUT...

2009-08-17 23:13:00 70

reactos操作系统实现(61)

前面准备好文件后,就需要从光盘里拷贝文件到安装目录,下面就是这个过程的界面:实现这个过程的代码如下:#001 static#002 PAGE_NUMBER#003 FileCopyPage(PINPUT_RECORD Ir)#004 {#005 COPYCONTEXT CopyContext;#006 显示拷贝文件的标题。#007 MUIDispla...

2009-08-16 22:32:00 102

reactos操作系统实现(60)

在拷贝文件到磁盘之前,需要把压缩包的文件解压,然后才能拷贝文件到安装目录里,它的代码如下:#001 static PAGE_NUMBER#002 PrepareCopyPage(PINPUT_RECORD Ir)#003 {#004 HINF InfHandle;#005 WCHAR PathBuffer[MAX_PATH];#006 INFCONTEXT Cabin...

2009-08-14 21:08:00 79

reactos操作系统实现(59)

当用户安装ReactOS系统时,需要选择合适的安装目录,因为同一个类型的操作系统,可以安装多次,可以选择不同的目录来安装,以便在同一台电脑,同一个磁盘分区里安装不同的系统。如下图:选择系统目录的实现代码如下:#001 static PAGE_NUMBER#002 InstallDirectoryPage(PINPUT_RECORD Ir)#003 {#004 PDISK...

2009-08-12 21:00:00 78

reactos操作系统实现(58)

格式化磁盘主要做什么样的工作呢?根据用户选择的文件系统,把格式化的数据和分区表写到磁盘,然后判断引导分区,写入引导代码到引导分区。具代实现代码如下:#001 static ULONG#002 FormatPartitionPage (PINPUT_RECORD Ir)#003 {#004 WCHAR PathBuffer[MAX_PATH];#005 PDISKENTRY...

2009-08-09 09:50:00 65

reactos操作系统实现(57)

当分区好后,就需要选择这些分区使用什么样的文件系统,目前主要支持FAT,FAT32,EXT2,NTFS等文件系统。这些功能是通过下面的函数实现的,如下:#001 static PAGE_NUMBER#002 SelectFileSystemPage (PINPUT_RECORD Ir)#003 {#004 PDISKENTRY DiskEntry;#005 PPARTEN...

2009-08-07 20:48:00 65

reactos操作系统实现(56)

在Reactos安装过程里,会出现下面的界面,如下:上面的界面就是创建磁盘分区显示的内容,那么这个界面下面主要做了那些工作呢?磁盘又是怎么样分区的呢?分区后的数据怎么样保存到磁盘里的呢?接着下来,就分析创建磁盘分区的代码,才能知道整个实现过程,如下:#001 static PAGE_NUMBER#002 CreatePartitionPage (PINPUT_RECORD ...

2009-08-06 21:21:00 70

reactos操作系统实现(55)

在语言选择里,倒底做了什么样的事情,让ROS系统可以选择不同的语言?ROS系统又是怎么样实现不同的语言支持的呢?#001 static PAGE_NUMBER#002 LanguagePage(PINPUT_RECORD Ir)#003 {初始化语言列表。#004 /* Initialize the computer settings list*/#005 i...

2009-08-06 00:35:00 58

reactos操作系统实现(54)

从函数RunUSetup的循环处理里,可以看到第一个应处理,就是启动页面,也就是调用函数SetupStartPage,它的代码如下:#001 /*#002 * Start page#003 * RETURNS#004 *Number of the next page.#005 */#006 static PAGE_NUMBER#007 SetupStartPa...

2009-08-04 21:40:00 64

reactos操作系统实现(53)

在前面的代码分析里,发现创建一个线程,而这个线程运行的主函数是PnpEventThread。那么创建这个线程是用来做什么事情的呢?那就得去分析文件reactos/base/setup/usetup/interface/devinst.c里的代码,如下:#001 DWORD WINAPI#002 PnpEventThread(IN LPVOID lpParameter)#003 {...

2009-08-03 22:55:00 151

reactos操作系统实现(52)

接着下来分析具体实现安装过程的函数RunUSetup代码,如下:#001 VOID#002 RunUSetup(VOID)#003 {#004 INPUT_RECORD Ir;#005 PAGE_NUMBER Page;#006 LARGE_INTEGER Time;#007 NTSTATUS Status;#008 查询系统时间保存到Time里面。...

2009-08-02 11:36:00 57

reactos操作系统实现(51)

从前面的分析可以知道,安装Reactos到硬盘里的过程,是由程序usetup.exe来实现的,那么下面就来分析这个程序的实现过程,了解操作系统的安装过程。打开Reactos源码的目录reactos/base/setup/usetup,就可以看到相关工程的代码。在仔细分析代码之前,我们需要了解什么是内核应用程序。从前面可以知道ntoskrnl.exe内核运行最后,就调用应用程序uset...

2009-08-01 21:38:00 73

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除