- 博客(23)
- 收藏
- 关注
reactos操作系统实现(121)
CreatePartitionDeviceObjects函数是通过分析MBR扇区的数据,然后来创建所有分区对象。具体实现代码如下: #001 NTSTATUS #002 NTAPI #003 CreatePartitionDeviceObjects( #004 IN PDEVICE_OBJECT PhysicalDeviceObject, #005 IN PUNICODE_STRIN...
2009-10-31 22:10:00 62
reactos操作系统实现(120)
CreateDiskDeviceObject函数主要就是为了物理设备创建磁盘对象,并且查找磁盘上每个分区和创建相应的对象。具体实现代码如下: #001 NTSTATUS #002 NTAPI #003 CreateDiskDeviceObject( #004 IN PDRIVER_OBJECT DriverObject, #005 IN PUNICODE_STRING Registr...
2009-10-30 22:40:00 64
reactos操作系统实现(119)
前介绍了初始化函数ScsiClassInitialize,那么在这个函数里使用下面的语句来查找SCSI的磁盘,如下: if (InitializationData->ClassFindDevices(DriverObject, Argument2, InitializationData,portDeviceObject, portNumber)) 其实这里的函数Initializati...
2009-10-29 22:33:00 50
reactos操作系统实现(118)
ScsiClassInitialize函数初始化驱动程序对象,主要是找到合适的端口驱动程序,并设置它来处理磁盘的命令,具体实现代码如下: #001 ULONG #002 NTAPI #003 ScsiClassInitialize( #004 IN PVOID Argument1, #005 IN PVOID Argument2, #006 IN PCLASS_INIT_DATA In...
2009-10-28 21:42:00 59
reactos操作系统实现(117)
在Reactos里,磁盘类的驱动程序是由disk.sys实现的。从文件系统上输出和读取的调用,就是需要通过这个驱动程序来实现,在这个驱动程序下面就是PCIIDE和ATAPI的驱动程序了,后面这些驱动程序,在前面已经分析过,现在来学习disk类驱动程序。 10.4.1 DriverEntry入口函数 分析这个程序还是从这个驱动程序的入口函数开始,这个函数是初始化SCSI的硬盘类驱动程序...
2009-10-27 21:36:00 54
reactos操作系统实现(116)
PciIdeXFdoStartDevice函数是用来处理即插即用的启动设备消息,主要设置了DMA操作和保存设备端口的基地址,这里就是启动PCIIDE的物理设备,具体实现代码如下: #001 static NTSTATUS #002 PciIdeXFdoStartDevice( #003 IN PDEVICE_OBJECT DeviceObject, #004 IN PIRP Ir...
2009-10-26 22:05:00 62
reactos操作系统实现(115)
PciIdeXFdoPnpDispatch函数主要处理PCIIDE即插即用的消息处理。具体实现代码如下: #001 NTSTATUS NTAPI #002 PciIdeXFdoPnpDispatch( #003 IN PDEVICE_OBJECT DeviceObject, #004 IN PIRP Irp) #005 { #006 ULONG MinorFunction;...
2009-10-25 14:05:00 57
reactos操作系统实现(114)
PciIdeXAddDevice函数是用来添加PCIIDEX的设备,设置一个功能设备,并读取PCI总线的配置参数。具体实现代码如下: #001 NTSTATUS NTAPI #002 PciIdeXAddDevice( #003 IN PDRIVER_OBJECT DriverObject, #004 IN PDEVICE_OBJECT Pdo) #005 { #006 P...
2009-10-24 21:08:00 82
reactos操作系统实现(113)
下面来分析PCIIDE和PCIIDEX驱动程序,这两个都是PCI的IDE总线驱动程序。 先从PCIIDE的入口函数开始,具体实现代码如下: #001 NTSTATUS NTAPI #002 DriverEntry( #003 IN PDRIVER_OBJECT DriverObject, #004 IN PUNICODE_STRING RegistryPath) #005...
2009-10-23 21:53:00 59
reactos操作系统实现(112)
IdeReadWrite函数主要实现了IDE设备的读和写命令发送。具体实现函数如下: #001 ULONG #002 NTAPI #003 IdeReadWrite( #004 IN PVOID HwDeviceExtension, #005 IN PSCSI_REQUEST_BLOCK Srb #006 ) #007 #008 /*++ #009 #010 Ro...
2009-10-22 22:01:00 64
reactos操作系统实现(111)
IdeSendSmartCommand函数主要发送IDE的命令。具体实现代码如下: #001 ULONG #002 NTAPI #003 IdeSendSmartCommand( #004 IN PVOID HwDeviceExtension, #005 IN PSCSI_REQUEST_BLOCK Srb #006 ) #007 #008 /*++ #009 #...
2009-10-21 20:59:00 69
reactos操作系统实现(110)
AtapiStartIo函数主要处理同步的IO请求包。具代的实现代码如下: #001 BOOLEAN #002 NTAPI #003 AtapiStartIo( #004 IN PVOID HwDeviceExtension, #005 IN PSCSI_REQUEST_BLOCK Srb #006 ) #007 #008 /*++ #009 #010 Routi...
2009-10-20 22:02:00 68
reactos操作系统实现(109)
AtapiInterrupt函数是实现ATAPI的中断功能,主要根据SRB来判断是读取数据还是写入数据,然后对IDE设备读取或写入数据,还需要处理很多出错的情况。具体实现代码如下: #001 BOOLEAN #002 NTAPI #003 AtapiInterrupt( #004 IN PVOID HwDeviceExtension #005 ) #006 #007 /*+...
2009-10-19 22:11:00 68
reactos操作系统实现(108)
AtapiHwInitialize函数初始化不是ATAPT设备,设置它支持多块传送。接着判断那些设备是CD-ROM设备,还清除忙状态。具体实现代码如下: #001 BOOLEAN #002 NTAPI #003 AtapiHwInitialize( #004 IN PVOID HwDeviceExtension #005 ) #006 #007 /*++ #008 #...
2009-10-18 11:04:00 62
reactos操作系统实现(107)
IssueIdentify函数主要是发送IDENTIFY命令给一个ATAPI设备,并且获取这个设备相关信息,比如磁头的个数。 #001 BOOLEAN #002 NTAPI #003 IssueIdentify( #004 IN PVOID HwDeviceExtension, #005 IN ULONG DeviceNumber, #006 IN ULONG Channel,...
2009-10-17 22:46:00 68
reactos操作系统实现(106)
FindDevices函数主要用来查找ATAPI控制器,并且获取磁盘的参数。如果找到IDE的设备就返回TRUE,否则返回FALSE。其实是通过ATAPI的标志和IssueIdentify命令来判断IDE设备。 #001 BOOLEAN #002 NTAPI #003 FindDevices( #004 IN PVOID HwDeviceExtension, #005 IN BOO...
2009-10-16 21:41:00 68
reactos操作系统实现(105)
AtapiFindController函数主要用来查找ATAPI控制器,也就是IDE控制器。同时收集IDE控制器相关配置信息,比如磁盘的访问方式。 #001 ULONG #002 NTAPI #003 AtapiFindController( #004 IN PVOID HwDeviceExtension, #005 IN PVOID Context, #006 IN PVOI...
2009-10-15 22:15:00 67
reactos操作系统实现(104)
AtapiFindPCIController函数是用来发现PCI总线上所有的IDE控制器,并发现相关的IDE设备。具体实现代码如下: #001 ULONG #002 NTAPI #003 AtapiFindPCIController( #004 IN PVOID HwDeviceExtension, #005 IN PVOID Context, #006 IN PVOID Bu...
2009-10-14 21:17:00 84
reactos操作系统实现(103)
ScsiPortInitialize函数用来初始化总线上设备,并查找每个总线上所有出现的设备,主要是SCSI相关的设备,当然这里SCSI设备是包括IDE控制器。找到每个设备之后,就会创建这个设备的设备对象,并且设置每个设备的参数、中断相关函数。 #001 ULONG NTAPI #002 ScsiPortInitialize(IN PVOID Argument1, #003 I...
2009-10-13 21:44:00 70
reactos操作系统实现(102)
ATAPI驱动程序的源码在目录drivers/storage/ide/atapi里,其实ATAPI是一个IDE的小端口驱动程序,主要初始化不同总线上的ATAPI设备,其中最重要的就是从PCI总线里查找到IDE控制器。下面来分析这个驱动程序的入口函数: #001 ULONG #002 NTAPI #003 DriverEntry( #004 IN PVOID DriverObject,...
2009-10-12 21:52:00 98
reactos操作系统实现(101)
这里主要来分析ATAPI驱动程序,那么就要先了解ATAPI的相关知识了。 1. AT ATTACHMENT (ATA):ATA接口是个人电脑上最具有实力的存储接口,ATA接口早先被广泛应用于IBM及其兼容机,它被定义为标准的硬盘接口。 2. ATA-1:ATA硬盘接口的第一代标准ANSI X3.279-1994,也就是早期的IDE接口。 3. ATA-2:ATA硬盘接口的...
2009-10-11 22:28:00 87
reactos操作系统实现(100)
在分析文件所有操作之前,先来看看文件操作的基来流程,与那些系统是相关联的。如下图所示: 应用程序先发起文件的操作,接着就调用到IO管理器的内核函数,IO管理器函数就会生成IRP请求包,并把IRP请求包传送给文件系统驱动程序,接着文件系统把请求生成SRB请求包发送给类驱动程序。最后类驱动程序把SRB请求包发送给PCI驱动程序,再转给ATAPI的驱动程序来访问IDE的硬盘。下面就ATAP...
2009-10-10 21:33:00 83
miniport, port driver,disk.sys 之间的关系(转)
miniport, port driver,disk.sys 之间关系 驱动程序由CLASS DRIVER,PORT DRIVER,MINIPORT,三部分组成,从层次上来说,LCASS DRIVER是针对几大类设备的驱动,比如存储设备驱动,就可以通过一个CLASS DRIVER来统一管理,完成一些这类设备共有的操作,主要是与设备无关的操作.PORT DRIVER从层次上来说,是在C...
2009-10-06 11:42:00 234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人