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
操作系统实现(89)
键盘驱动程序是一个最基本的驱动程序,通过学习这个简单而实用的驱动程序来了解
ReactOS
驱动程序的结构,驱动程序的运行流程。
caimouse
·
2009-09-18 22:00
reactos
操作系统实现(88)
IRP是I/Orequestpacket的缩写,即I/O请求包。驱动与驱动之间通过IRP进行通信。而使用驱动的应用层调用的CreatFile,ReadFile,WriteFile,DeviceIoControl等函数,说到底也是使用IRP和驱动进行通信。一个IRP由两部分组成。首先是头部或者叫包的固定部分,是一个IRP结构。紧跟在这个头部之后的是I/O栈位置,这是一个IO_STACK_LOCATI
caimouse
·
2009-09-17 21:00
reactos
操作系统实现(87)
应用程序对设备I/O进行Win32调用,这个调用由I/O系统服务接收,然后I/O管理器从这个请求构造一个合适的I/O请求包(IRP)。那么I/O管理器是怎么样创建这个I/O请求包(IRP)的呢?又是怎么样传送给驱动程序的呢?我们带着这两个问题来分析下面实现文件读取的代码,如下:#001 NTSTATUS#002 NTAPI#003 NtReadFile(INHANDLEFileHandle,#00
caimouse
·
2009-09-13 19:00
exception
object
File
Integer
buffer
Allocation
reactos
操作系统实现(86)
创建完成端口需要调用WindowsAPI CreateIoCompletionPort:HANDLECreateIoCompletionPort( HANDLEFileHandle, HANDLEExistingCompletionPort, DWORDCompletionKey, DWORDNumberOfConcurrentThreads);创建一个完成端口时,通常对参数Exi
caimouse
·
2009-09-12 23:00
数据结构
exception
object
活动
null
Integer
reactos
操作系统实现(85)
在
ReactOS
主要有两种方法:一种是使用缓冲I/O的方法,在驱动程序运行前,I/O管理器把写数据复制到这个缓冲区,并在请求完成时把读数据复制回到用户空间;另一种是使用直接I/O,这是优先的技术,因为它减少数据复制
caimouse
·
2009-09-11 22:00
list
IO
System
insert
Descriptor
Allocation
Reactos
's resource
SourceCode:http://svn.
reactos
.org/svn/
reactos
/trunk/
reactos
'还不知从哪里看起-_-!!!
S.l.e!ep.¢%
·
2009-09-11 22:00
reactos
操作系统实现(74)
很多驱动程序,都是通过硬件检测时写到注册表里保存起来的,因此读取注册表里键值列表,就知道有多少设备需要需要加载了。下面就从注册表里创建一组驱动程序列表,实现的代码如下:#001 NTSTATUSINIT_FUNCTION#002 IoCreateDriverList(VOID)#003 {#004 RTL_QUERY_REGISTRY_TABLEQueryTable[2];#005
caimouse
·
2009-08-31 22:00
reactos
操作系统实现(73)
即插即用(PlugandPlay,PnP)是计算机系统I/O设备与部件配置的应用技术。PnP就是指插入就可以使用,不需要进行任何的硬件配置。其实还是需要安装相应的驱动程序才可以使用的。随着人们对计算机使用多样化,不断地需要添加各种各样的硬件卡到计算机的主板上,这样就需要配置硬件卡的中断、I/O所占用的资源,才能正常工作。这个过程是非常复杂的,经常需要手工配置,还需要查看计算机那里中断是空闲的,那些
caimouse
·
2009-08-29 21:00
reactos
操作系统实现(72)
ReactOS
通过对象管理机制为内核提供了一致的和安全的访问方式。对象管理器是一个用于创建、删除、保护和跟踪对象的内核一部份。
caimouse
·
2009-08-28 21:00
reactos
操作系统实现(71)
I/O管理器的初始化调用是在文件
reactos
/ntoskrnl/ex/init.c里,它主要调用I/O管理器的函数IoInitSystem()来实现,这个函数在文件
reactos
/ntoskrnl/io
caimouse
·
2009-08-26 22:00
reactos
操作系统实现(70)
安装和配置用户信息后,就会重新启动,
ReactOS
系统就会自动登录到正常的环境里,并且启动驱动程序安装向导,如下图: 当驱动程序安装完成后,整个系统就可以使用了,如下: 到这里就把从光盘开始安装到系统正常使用的过程分析完成
·
2009-08-25 21:00
react
reactos
操作系统实现(68)
前面介绍怎么样调用动态连接库里的InstallReactOS函数,下面就来分析这个函数的代码,看看这个函数是怎么运行向导界面,又做了些什么样的工作。如下:#001 DWORDWINAPI#002 InstallReactOS(HINSTANCEhInstance)#003 {#004 TCHARszBuffer[MAX_PATH];#005 DWORDLastError;#006
caimouse
·
2009-08-23 09:00
null
System
domain
token
NetWork
安全相关
reactos
操作系统实现(67)
前面分析安装后,就会调用setup.exe程序运行,在入口函数里处理命令行参数newsetup后,就会调用函数newsetup来运行,下面来仔细地分析这个函数是到底做什么事情。如下:#001 staticVOID#002 RunNewSetup(HINSTANCEhInstance)#003 {#004 HMODULEhDll;#005 PINSTALL_REACTOSInstallRea
caimouse
·
2009-08-22 20:00
reactos
操作系统实现(64)
在安装一个操作系统时,绝大多数都是把引导程序安装在硬盘里,下面就来了解安装到硬盘里具体过程,实现代码如下:#001 staticPAGE_NUMBER#002 BootLoaderHarddiskPage(PINPUT_RECORDIr)#003 {#004 UCHARPartitionType;#005 NTSTATUSStatus;#006 获取硬盘分区的类型,然后判断是否可
caimouse
·
2009-08-19 23:00
reactos
操作系统实现(62)
当文件拷贝完成后,主要就是把已经拷贝的文件进行注册表登记,还需要把用户在安装过程里选择的配置保存到注册表,同时也需要把检查到的硬件保存到注册表里。其实注册表,就是保存一些配置信息,这样下一次启动时,就可以直接把这些信息加载到内存就行了,不需要用户重新选择,也不需要重新搜索硬盘配置。代码如下:#001 staticPAGE_NUMBER#002 RegistryPage(PINPUT_RECORDI
caimouse
·
2009-08-17 23:00
reactos
操作系统实现(60)
在拷贝文件到磁盘之前,需要把压缩包的文件解压,然后才能拷贝文件到安装目录里,它的代码如下:#001 staticPAGE_NUMBER#002 PrepareCopyPage(PINPUT_RECORDIr)#003 {#004 HINFInfHandle;#005 WCHARPathBuffer[MAX_PATH];#006 INFCONTEXTCabinetsConte
caimouse
·
2009-08-14 21:00
reactos
操作系统实现(56)
在
Reactos
安装过程里,会出现下面的界面,如下: 上面的界面就是创建磁盘分区显示的内容,那么这个界面下面主要做了那些工作呢?磁盘又是怎么样分区的呢?分区后的数据怎么样保存到磁盘里的呢?
caimouse
·
2009-08-06 21:00
工作
String
null
dialog
disk
磁盘
reactos
操作系统实现(55)
在语言选择里,倒底做了什么样的事情,让ROS系统可以选择不同的语言?ROS系统又是怎么样实现不同的语言支持的呢?#001 staticPAGE_NUMBER#002 LanguagePage(PINPUT_RECORDIr)#003 { 初始化语言列表。#004 /*Initializethecomputersettingslist*/#005 if(LanguageList==N
caimouse
·
2009-08-06 00:00
IO
list
null
UP
语言
output
reactos
操作系统实现(54)
从函数RunUSetup的循环处理里,可以看到第一个应处理,就是启动页面,也就是调用函数SetupStartPage,它的代码如下:#001 /*#002 *Startpage#003 *RETURNS#004 * Numberofthenextpage.#005 */#006 staticPAGE_NUMBER#007 SetupStartPage(PINPUT_RECORDIr)#0
caimouse
·
2009-08-04 21:00
thread
String
list
null
System
Path
reactos
操作系统实现(53)
那就得去分析文件
reactos
/base/setup/usetup/interface/devinst.c里的代码,如下:#001 DWORDWINAPI#002 PnpEventThread(INLPVOIDlpParameter
caimouse
·
2009-08-03 22:00
reactos
操作系统实现(52)
接着下来分析具体实现安装过程的函数RunUSetup代码,如下:#001 VOID#002 RunUSetup(VOID)#003 {#004 INPUT_RECORDIr;#005 PAGE_NUMBERPage;#006 LARGE_INTEGERTime;#007 NTSTATUSStatus;#008 查询系统时间保存到Time里面。#009 Nt
caimouse
·
2009-08-02 11:00
reactos
操作系统实现(51)
从前面的分析可以知道,安装
Reactos
到硬盘里的过程,是由程序usetup.exe来实现的,那么下面就来分析这个程序的实现过程,了解操作系统的安装过程。
caimouse
·
2009-08-01 21:00
reactos
操作系统实现(50)
当运行到内核函数Phase1Initialization里,就是进行内核第一阶段初始化了,这时在这个函数又调用函数Phase1InitializationDiscard进行复杂的处理,在这里有一个重要的步骤,就是打开内核应用程序smss.exe来运行。具体代码如下:#001 /*Updateprogressbar*/#002 InbvUpdateProgressBar(90);#003
caimouse
·
2009-07-25 22:00
session
System
buffer
Parameters
Path
initialization
reactos
操作系统实现(49)
前面已经介绍怎么样从ISOBOOT里加载SETUPLDR.SYS,下面来分析一下这个程序与一般硬盘引导程序freeldr.sys有什么区别。在文件freeldr.c里是这样这样调用安装函数的:#001 VOIDBootMain(LPSTRCmdLine)#002 {#003 CmdLineParse(CmdLine);#004 #005 MachInit(CmdLine);#006
caimouse
·
2009-07-24 22:00
reactos
操作系统实现(48)
下面就来了解
Reactos
是怎么实现整个安装过程的。当使用makebootcd的编译命令时,就是编译一个可以启动并安装系统的光盘文件。
caimouse
·
2009-07-23 23:00
reactos
操作系统实现(47)
下面就来分析
Reactos
是怎么样通过光盘的格式来引导操作系统的。现今的计算机BIOS,会在开机时根据ElTorito规格,查找光盘上的开机代码。
caimouse
·
2009-07-22 20:00
reactos
操作系统实现(46)
在线程调度里可以看到,需要调用函数KiSwapContext来进行运行环境切换,由于每个CPU都是只能运行一个线程,而多个线程在运行过程中被中断了,那么就需要保存CPU所有寄存器,以便下一次恢复线程时可以接续运行。现在就来分析这个函数是怎么样实现这些工作的,代码如下:#001 /*++#002 *KiSwapContext#003 *#004 * TheKiSwapContextrou
caimouse
·
2009-07-21 21:00
thread
exception
list
byte
Descriptor
printing
reactos
操作系统实现(45)
怎么样从一个延迟就绪队列里选择合适的线程运行呢?下面就来分析这段代码,如下:#001 //#002 //Thisroutinescansforanappropriatereadythreadtoselectatthe#003 //givenpriorityandforthegivenCPU.#004 //#005 FORCEINLINE#006 PKTHREAD#007 KiSelectReady
caimouse
·
2009-07-20 21:00
thread
list
null
reactos
操作系统实现(44)
前面分析了怎么样把一个线程放到延迟就绪队列,接着下来的问题就是这些在就绪队列里的线程什么时候开始运行呢?又是怎么样把就绪队列的线程取出来运行的呢?线程调度的触发事件有以下四种:1)线程进入就绪状态,如一个刚创建的线程,或者一个刚结束的线程。2)线程的时间片用完。3)线程调用系统服务发生等待,或者被系统改变其优先级。4)线程改变自己运行的处理器。 先来分析第一种情况,当线程结束时产生的调度。可以从R
caimouse
·
2009-07-19 12:00
reactos
操作系统实现(43)
前面介绍放到延迟队列是单核的版本,下面来学习多核的版本,代码如下:#001 //#002 //ThisroutinemakesthethreaddeferredreadyonthebootCPU.#003 //#004 FORCEINLINE#005 VOID#006 KiInsertDeferredReadyList(INPKTHREADThread)#007 { 设置线程状态和运行线程的CPU
caimouse
·
2009-07-19 00:00
reactos
编译,安装篇
在这里我们将具体谈一下
reactos
的编译和安装。
sstower
·
2009-07-18 14:00
Module
工具
reactos
操作系统实现(42)
接着下来,就需要分析函数KiReadyThread的作用了。根据线程状态来判断是否可以放入延迟队列,还是设置它为转换状态,代码如下:#001 VOID#002 NTAPI#003 KiReadyThread(INPKTHREADThread)#004 { 获取当前线程的进程对象。#005 INPKPROCESSProcess=Thread->ApcState.Process;#006 检
caimouse
·
2009-07-15 21:00
thread
timer
struct
list
insert
transition
reactos
操作系统实现(41)
当线程初始化成功后,是怎么样放到推迟就绪队列的呢?通过下面这几个函数的分析,就会了解这个问题了。从以前的分析可以知道是调用函数KeReadyThread来执行的,这个函数的代码如下:#001 VOID#002 NTAPI#003 KeReadyThread(INPKTHREADThread)#004 {这里参数Thread就是刚刚创建的线程。 #005 KIRQLOldIrql;#006
caimouse
·
2009-07-14 22:00
thread
database
less
reactos
操作系统实现(40)
由于
Reactos
的调度单位是线程,所以它的状态机就是基于线程的。比如进程A有5个线程,进程B有2个线程,总共就是12个线程来进行调度,也就是把CPU的时间分成12等份。
caimouse
·
2009-07-13 22:00
thread
transition
reactos
操作系统实现(39)
到底一个线程是怎么样创建的呢?又是怎么样放到就绪队列呢?#001 NTSTATUS#002 NTAPI#003 PspCreateThread(OUTPHANDLEThreadHandle,#004 INACCESS_MASKDesiredAccess,#005 INPOBJECT_ATTRIBUTESObjectAttributes
caimouse
·
2009-07-12 11:00
thread
exception
null
System
Access
reference
另一个Windows —
ReactOS
,你知道吗?
一打开china-pub的首页,就看到了很醒目的新书推荐—毛德操老师的《Windows内核情景分析--采用开源代码
ReactOS
》。我的第一反应是,
ReactOS
是什么?难道是微软的开源项目?
李云
·
2009-07-12 08:26
职场
Windows
休闲
行业与职场
另一个Windows ―
ReactOS
,你知道吗?
一打开china-pub的首页,就看到了很醒目的新书推荐―毛德操老师的《Windows内核情景分析--采用开源代码
ReactOS
》。我的第一反应是,
ReactOS
是什么?难道是微软的开源项目?
李云
·
2009-07-12 08:26
windows
职场
休闲
ReactOS
另一个Windows ―
ReactOS
,你知道吗?
一打开china-pub的首页,就看到了很醒目的新书推荐―毛德操老师的《Windows内核情景分析--采用开源代码
ReactOS
》。我的第一反应是,
ReactOS
是什么?难道是微软的开源项目?
李云
·
2009-07-12 08:26
windows
职场
休闲
ReactOS
reactos
操作系统实现(38)
由于
Reactos
是以线程为最小的调度单位,如果仅仅创建进程的数据结构,不足以运行进程的任务,每个进程至少需要一个线程才可以运行,下面就来分析系统进程的线程创建,代码如下:#195 /*Setupthesysteminitializationthread
caimouse
·
2009-07-11 00:00
thread
数据结构
function
null
attributes
initialization
reactos
操作系统实现(37)
下面来继续分析创建进程函数,过程如下:保存工作集数据。#070 /*Saveworkingsetdata*/#071 MinWs=PsMinimumWorkingSet;#072 MaxWs=PsMaximumWorkingSet;#073 创建一个进程对象。#074 /*CreatetheObject*/#075 Status=ObCreateObjec
caimouse
·
2009-07-09 23:00
exception
object
null
Class
Access
reference
reactos
操作系统实现(36)
接着下来,我们来分析一下进程创建函数,看看进程在
Reactos
里是怎么样创建的,需要调用什么函数来创建进程,还有应用程序是怎么样调用API函数来创建进程的。
caimouse
·
2009-07-08 23:00
object
Access
reference
Descriptor
attributes
initialization
reactos
操作系统实现(35)
在
Reactos
里,系统初始化进程,最终就是
caimouse
·
2009-07-06 20:00
thread
object
null
Access
initialization
Allocation
reactos
操作系统实现(34)
现在就来分析第一阶段的进程管理器初始化函数PspInitPhase0,如下:#001 BOOLEAN#002 NTAPI#003 PspInitPhase0(INPLOADER_PARAMETER_BLOCKLoaderBlock)#004 {#005 NTSTATUSStatus;#006 OBJECT_ATTRIBUTESObjectAttributes;#007 HA
caimouse
·
2009-07-05 14:00
reactos
操作系统实现(33)
当
Reactos
在系统初始化时,就会调用进程管理初始化函数PsInitSystem来进行初始化。只有把进程管理初始化后,才可以创建进程,这样才可运行各种各样的任务。
caimouse
·
2009-07-02 20:00
化工
任务
initialization
reactos
操作系统实现(32)
这个函数主要功能就是实现访问不存在的页面。#001 NTSTATUS#002 NTAPI#003 MmNotPresentFault(KPROCESSOR_MODEMode,#004 ULONG_PTRAddress,#005 BOOLEANFromMdl)#006 {#007 PMM
caimouse
·
2009-07-01 21:00
漫谈兼容内核之一:
ReactOS
怎样实现系统调用
漫谈兼容内核之一:
ReactOS
怎样实现系统调用毛德操有网友在论坛上发贴,要求我谈谈
ReactOS
是怎样实现系统调用的。
b2b160
·
2009-06-16 10:00
thread
数据结构
windows
exception
null
linux内核
Windows之磁盘的设备驱动堆叠
磁盘的设备驱动堆叠本文节选自《Windows内核情景分析--采用开源代码
ReactOS
》一书 读者已经在前几节中看到,设备的驱动常常分成“类设备驱动”和“端口设备驱动”两层。
broadview2006
·
2009-05-15 09:00
专家读《Windows 内核情景分析》这本书
毛德操先生这本书,通过分析
ReactOS
的源程序代码,介绍了Windows操作系统内核的结构及其各种机制,使读者能深入理解Windows操作系统内核这个“黑盒子”的各个方面,这对于打破Windows的技术垄断
broadview2006
·
2009-05-11 14:00
ReactOS
中断处理之连接实际的中断处理。。
windows中实际的中断处理是通过IoConnectInterrupt注册的。。。。NTSTATUSNTAPIIoConnectInterrupt(OUTPKINTERRUPT*InterruptObject, INPKSERVICE_ROUTINEServiceRoutine, INPVOIDServiceContext,
adward
·
2009-04-28 09:00
ReactOS
v0.3.9 - 开源的FOSS操作系统
ReactOSv0.3.9-开源的FOSS操作系统
ReactOS
项目致力于开发一个免费软件,向大家提供完全兼容MicrosoftWindowsXP的操作系统。
iniwf
·
2009-04-27 22:00
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
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
其他