E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
ReactOS
reactos
操作系统实现(46)
在线程调度里可以看到,需要调用函数KiSwapContext来进行运行环境切换,由于每个CPU都是只能运行一个线程,而多个线程在运行过程中被中断了,那么就需要保存CPU所有寄存器,以便下一次恢复线程时可以接续运行。现在就来分析这个函数是怎么样实现这些工作的,代码如下: #001 /*++ #002 * KiSwapContext #003 
·
2015-11-13 19:27
react
reactos
操作系统实现(45)
怎么样从一个延迟就绪队列里选择合适的线程运行呢?下面就来分析这段代码,如下: #001 // #002 // This routine scans for an appropriate ready thread to select at the #003 // given priority and for the given CPU. #004&n
·
2015-11-13 19:26
react
reactos
操作系统实现(2)
目前
reactos
是基于C来开发的,那么对于C的语法是要了解的,并且熟练地使用C来
·
2015-11-13 19:21
react
reactos
操作系统实现(1)
reactos
是什么操作系统呢?它是一个开源的操作系统,并且是兼容Windows XP的应用程序和驱动程序的操作系统。
·
2015-11-13 19:19
react
reactos
操作系统实现(72)
ReactOS
通过对象管理机制为内核提供了一致的和安全的访问方式。对象管理器是一个用于创建、删除、保护和跟踪对象的内核一部份。
·
2015-11-13 19:36
react
reactos
操作系统实现(71)
I/O管理器的初始化调用是在文件
reactos
/ntoskrnl/ex/init.c里,它主要调用I/O管理器的函数IoInitSystem()来实现,这个函数在文件
reactos
/ntoskrnl/io
·
2015-11-13 19:29
react
reactos
操作系统实现(69)
当用户安装系统时,就会出现几个向导界面,这几个向导界面是怎么样实现的呢?具体又是做些什么样的功能呢?它的实现代码如下: #001 VOID #002 InstallWizard(VOID) #003 { #004 PROPSHEETHEADER psh; #005 HPROPSHE
·
2015-11-13 19:27
react
reactos
操作系统实现(68)
前面介绍怎么样调用动态连接库里的InstallReactOS函数,下面就来分析这个函数的代码,看看这个函数是怎么运行向导界面,又做了些什么样的工作。如下: #001 DWORD WINAPI #002 InstallReactOS(HINSTANCE hInstance) #003 { #004 &nb
·
2015-11-13 19:26
react
reactos
操作系统实现(67)
前面分析安装后,就会调用setup.exe程序运行,在入口函数里处理命令行参数newsetup后,就会调用函数newsetup来运行,下面来仔细地分析这个函数是到底做什么事情。如下: #001 static VOID #002 RunNewSetup (HINSTANCE hInstance) #003 { #004 &nbs
·
2015-11-13 19:25
react
reactos
操作系统实现(66)
这里主要通过程序setup.exe来实现的,它的实现代码在目录
reactos
/base/setup/setup里。
·
2015-11-13 19:23
react
reactos
操作系统实现(65)
激动人心的时刻到了,最后安装成功了。会出现下面的界面,如下: 上面成功的实现代码如下: #001 static PAGE_NUMBER #002 SuccessPage(PINPUT_RECORD Ir) #003 { 显示成功安装的信息。 #004 &
·
2015-11-13 19:20
react
reactos
操作系统实现(64)
在安装一个操作系统时,绝大多数都是把引导程序安装在硬盘里,下面就来了解安装到硬盘里具体过程,实现代码如下: #001 static PAGE_NUMBER #002 BootLoaderHarddiskPage(PINPUT_RECORD Ir) #003 { #004 UCHAR Par
·
2015-11-13 19:18
react
reactos
操作系统实现(63)
前面把注册表初始化完成之后,就开始进行安装引导程序了。这里安装的引导程序是分区引导程序,或者安装到软盘引导程序。当然也可以选择跳过不安装它,界面如下: 这个函数的代码如下: #001 static PAGE_NUMBER #002 BootLoaderPage(PINPUT_RECORD Ir) #003
·
2015-11-13 19:13
react
reactos
操作系统实现(62)
当文件拷贝完成后,主要就是把已经拷贝的文件进行注册表登记,还需要把用户在安装过程里选择的配置保存到注册表,同时也需要把检查到的硬件保存到注册表里。其实注册表,就是保存一些配置信息,这样下一次启动时,就可以直接把这些信息加载到内存就行了,不需要用户重新选择,也不需要重新搜索硬盘配置。代码如下: #001 static PAGE_NUMBER #002 Registr
·
2015-11-13 19:11
react
reactos
操作系统实现(93)
现在来分析一下键盘驱动程序里主要使用的IRP主功能代码,由于每一个IRP都在首部包括有一个主功能代码码,并且还可能有次功能代码。大体有下面几种主功能代码: IRP_MJ_CREATE &n
·
2015-11-13 19:22
react
reactos
操作系统实现(92)
在DirverEntry函数,可以看到下面这句: #054 DriverObject->DriverExtension->AddDevice = i8042AddDevice; 这里是设置了驱动程序的AddDevice函数指针,它是指向函数i8042AddDevice。PnP管理器将为每个硬件调用一次AddDevice函数,如下: 下面
·
2015-11-13 19:21
react
reactos
操作系统实现(91)
驱动程序很多配置参数是保存在注册表里,比如IO资源参数,中断号等内容。因此只有了解注册表的读取,以及相关内容才可以清楚知道键盘驱动程序,主要操作那些相关的端口,还有配置参数。下面来分析函数ReadRegistryEntries的实现,如下: #001 NTSTATUS #002 ReadRegistryEntries( #003 &nbs
·
2015-11-13 19:19
react
reactos
操作系统实现(90)
下面来分析函数IoAllocateDriverObjectExtension的实现,这个函数主要实现创建驱动程序扩展内存。 #001 NTSTATUS #002 NTAPI #003 IoAllocateDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, #004 &nb
·
2015-11-13 19:17
react
reactos
操作系统实现(89)
键盘驱动程序是一个最基本的驱动程序,通过学习这个简单而实用的驱动程序来了解
ReactOS
驱动程序的结构,驱动程序的运行流程。
·
2015-11-13 19:16
react
reactos
操作系统实现(88)
IRP 是 I/O request packet 的缩写,即 I/O 请求包。驱动与驱动之间通过 IRP 进行通信。而使用驱动的应用层调用的 CreatFile,ReadFile,WriteFile,DeviceIoControl 等函数,说到底也是使用 IRP 和驱动进行通信。 一个 IRP 由两部分组成。首先是头部或者叫包的固定部分,是一个 IRP 结构。紧跟在这个头部之后的是 I/O
·
2015-11-13 19:15
react
reactos
操作系统实现(87)
应用程序对设备I/O进行Win32调用,这个调用由I/O系统服务接收,然后I/O管理器从这个请求构造一个合适的I/O请求包(IRP)。那么I/O管理器是怎么样创建这个I/O请求包(IRP)的呢?又是怎么样传送给驱动程序的呢?我们带着这两个问题来分析下面实现文件读取的代码,如下: #001 NTSTATUS #002 NTAPI #003 NtRead
·
2015-11-13 19:11
react
reactos
操作系统实现(86)
创建完成端口需要调用Windows API CreateIoCompletionPort: HANDLE CreateIoCompletionPort( HANDLE FileHandle, HANDLE ExistingCompletionPort, DWORD C
·
2015-11-13 19:10
react
reactos
操作系统实现(85)
在
ReactOS
主要有两种方法:一种是使用缓冲I/O的方法,在驱动程序运行前,I/O管理器把写数据复制到这个缓冲区,并在请求完成时把读数据复制回到用户空间;另一种是使用直接I/O,这是优先的技术,因为它减少数据复制
·
2015-11-13 19:09
react
reactos
操作系统实现(74)
很多驱动程序,都是通过硬件检测时写到注册表里保存起来的,因此读取注册表里键值列表,就知道有多少设备需要需要加载了。下面就从注册表里创建一组驱动程序列表,实现的代码如下: #001 NTSTATUS INIT_FUNCTION #002 IoCreateDriverList(VOID) #003 { #004 &n
·
2015-11-13 19:56
react
reactos
操作系统实现(73)
即插即用(Plug and Play,PnP)是计算机系统I/O设备与部件配置的应用技术。PnP就是指插入就可以使用,不需要进行任何的硬件配置。其实还是需要安装相应的驱动程序才可以使用的。随着人们对计算机使用多样化,不断地需要添加各种各样的硬件卡到计算机的主板上,这样就需要配置硬件卡的中断、I/O所占用的资源,才能正常工作。这个过程是非常复杂的,经常需要手工配置,还需要查看计算机那里中断是空
·
2015-11-13 19:53
react
reactos
操作系统实现(109)
AtapiInterrupt函数是实现ATAPI的中断功能,主要根据SRB来判断是读取数据还是写入数据,然后对IDE设备读取或写入数据,还需要处理很多出错的情况。具体实现代码如下: #001 BOOLEAN #002 NTAPI #003 AtapiInterrupt( #004 IN P
·
2015-11-13 18:29
react
reactos
操作系统实现(108)
AtapiHwInitialize函数初始化不是ATAPT设备,设置它支持多块传送。接着判断那些设备是CD-ROM设备,还清除忙状态。具体实现代码如下: #001 BOOLEAN #002 NTAPI #003 AtapiHwInitialize( #004 IN PVOID HwDevi
·
2015-11-13 18:26
react
reactos
操作系统实现(107)
IssueIdentify函数主要是发送IDENTIFY命令给一个ATAPI设备,并且获取这个设备相关信息,比如磁头的个数。 #001 BOOLEAN #002 NTAPI #003 IssueIdentify( #004 IN PVOID HwDeviceExtension, #005
·
2015-11-13 18:25
react
reactos
操作系统实现(99)
下面来分析键盘的中断处理函数的实现,如下: #001 BOOLEAN NTAPI #002 i8042KbdInterruptService( #003 IN PKINTERRUPT Interrupt, #004 PVOID Context) #005 { #006&
·
2015-11-13 18:10
react
reactos
操作系统实现(98)
通过上面的分析,发现设置一个中断处理是非常复杂的,下面就来通过图来分析一个中断发生时,中断处理的过程如下图: 其实所有上面代码,就是设置这些流程里工作的函数关键代码,以便整个中断连接起来。其中一些函数是在汇编代码里面,这些都需要仔细分析才能理解。 主要调用下面这两个汇编代码,如下: #001 .func KiInte
·
2015-11-13 18:09
react
reactos
操作系统实现(97)
在这个函数里,又继续地调用内核的两个函数KiConnectVectorToInterrupt和HalEnableSystemInterrupt来处理。 #001 VOID #002 NTAPI #003 KiConnectVectorToInterrupt(IN PKINTERRUPT Interrupt, #004 &nb
·
2015-11-13 18:08
react
reactos
操作系统实现(96)
调用函数IoConnectInterrupt来设置键中断处理函数。 #028 Status = IoConnectInterrupt( #029 &PortDeviceExtension->KeyboardInterrupt.Object, #030
·
2015-11-13 18:05
react
reactos
操作系统实现(95)
在PNP管理器里,最重要的处理,就是即插即用消息。下面来分析键盘的即插即用消息处理函数,实现的代码如下: #001 NTSTATUS NTAPI #002 i8042Pnp( #003 IN PDEVICE_OBJECT DeviceObject, #004 IN PIRP Irp)
·
2015-11-13 18:04
react
reactos
操作系统实现(94)
现在就来依次分析函数i8042Create、i8042Cleanup、i8042Close、i8042DeviceControl、i8042InternalDeviceControl和i8042Pnp。首先分析函数i8042Create,它的实现代码如下: #001 NTSTATUS NTAPI #002 i8042Create( #003 &nbs
·
2015-11-13 18:03
react
reactos
操作系统实现(121)
CreatePartitionDeviceObjects函数是通过分析MBR扇区的数据,然后来创建所有分区对象。具体实现代码如下: #001 NTSTATUS #002 NTAPI #003 CreatePartitionDeviceObjects( #004 IN PDEVICE_
·
2015-11-13 18:49
react
reactos
操作系统实现(120)
CreateDiskDeviceObject函数主要就是为了物理设备创建磁盘对象,并且查找磁盘上每个分区和创建相应的对象。具体实现代码如下: #001 NTSTATUS #002 NTAPI #003 CreateDiskDeviceObject( #004 IN PDRIVER_O
·
2015-11-13 18:47
react
reactos
操作系统实现(119)
前介绍了初始化函数ScsiClassInitialize,那么在这个函数里使用下面的语句来查找SCSI的磁盘,如下: if (InitializationData->ClassFindDevices(DriverObject, Argument2, InitializationData,portDeviceObject, portNumber)) 其实这里的函数Initial
·
2015-11-13 18:45
react
reactos
操作系统实现(118)
ScsiClassInitialize函数初始化驱动程序对象,主要是找到合适的端口驱动程序,并设置它来处理磁盘的命令,具体实现代码如下: #001 ULONG #002 NTAPI #003 ScsiClassInitialize( #004 IN PVOID
·
2015-11-13 18:44
react
reactos
操作系统实现(117)
在
Reactos
里,磁盘类的驱动程序是由disk.sys实现的。
·
2015-11-13 18:42
react
reactos
操作系统实现(116)
PciIdeXFdoStartDevice函数是用来处理即插即用的启动设备消息,主要设置了DMA操作和保存设备端口的基地址,这里就是启动PCIIDE的物理设备,具体实现代码如下: #001 static NTSTATUS #002 PciIdeXFdoStartDevice( #003 IN PDEVICE_OBJECT D
·
2015-11-13 18:40
react
reactos
操作系统实现(115)
PciIdeXFdoPnpDispatch函数主要处理PCIIDE即插即用的消息处理。具体实现代码如下: #001 NTSTATUS NTAPI #002 PciIdeXFdoPnpDispatch( #003 IN PDEVICE_OBJECT DeviceObject, #004
·
2015-11-13 18:37
react
reactos
操作系统实现(114)
PciIdeXAddDevice函数是用来添加PCIIDEX的设备,设置一个功能设备,并读取PCI总线的配置参数。具体实现代码如下: #001 NTSTATUS NTAPI #002 PciIdeXAddDevice( #003 IN PDRIVER_OBJECT DriverObject, #004 &nbs
·
2015-11-13 18:36
react
reactos
操作系统实现(113)
下面来分析PCIIDE和PCIIDEX驱动程序,这两个都是PCI的IDE总线驱动程序。 先从PCIIDE的入口函数开始,具体实现代码如下: #001 NTSTATUS NTAPI #002 DriverEntry( #003 IN PDRIVER_OBJECT DriverObject, #004 &n
·
2015-11-13 18:35
react
reactos
操作系统实现(112)
IdeReadWrite函数主要实现了IDE设备的读和写命令发送。具体实现函数如下: #001 ULONG #002 NTAPI #003 IdeReadWrite( #004 IN PVOID HwDeviceExtension, #005  
·
2015-11-13 18:34
react
reactos
操作系统实现(111)
IdeSendSmartCommand函数主要发送IDE的命令。具体实现代码如下: #001 ULONG #002 NTAPI #003 IdeSendSmartCommand( #004 IN PVOID HwDeviceExtension, #005  
·
2015-11-13 18:33
react
reactos
操作系统实现(110)
AtapiStartIo函数主要处理同步的IO请求包。具代的实现代码如下: #001 BOOLEAN #002 NTAPI #003 AtapiStartIo( #004 IN PVOID HwDeviceExtension, #005 &n
·
2015-11-13 18:30
react
reactos
操作系统实现(160)
CreateWindowExW函数主要用来根据已经注册窗口类来创建一个窗口。它在User32.dll实现代码如下: #001 HWND WINAPI #002 CreateWindowExW(DWORD dwExStyle, #003  
·
2015-11-13 18:01
react
reactos
操作系统实现(159)
NtUserRegisterClassEx函数是Win32k.sys里实现窗口类的注册,那么窗口类的注册是什么意思呢?到底注册是为了什么样的目的呢?下面就通过实现代码的分析来解决这些问题,代码如下: #001 RTL_ATOM APIENTRY #002 NtUserRegisterClassEx(IN CONST WNDCLASSEXW* lpwcx, #00
·
2015-11-13 18:59
react
reactos
操作系统实现(158)
在
ReactOS
的应用程序里,每个有窗口的应用程序都需要注册一个窗口类,然后根据窗口类来创建窗口。
·
2015-11-13 18:58
react
reactos
操作系统实现(147)
下面来分析目录里
reactos
/drivers/video/miniport/
·
2015-11-13 18:56
react
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他