reactos专题提供reactos的最新资讯内容,帮你更好的了解reactos。
AtapiHwInitialize函数初始化不是ATAPT设备,设置它支持多块传送。接着判断那些设备是CD-ROM设备,还清除忙状态。具体实现代码如下: #001  BOOLEAN #002  NTAPI #003  AtapiHwInitialize( #004      IN PVOID HwDeviceExtension #005      ) #006  #007  /*++ #008 
AtapiInterrupt函数是实现ATAPI的中断功能,主要根据SRB来判断是读取数据还是写入数据,然后对IDE设备读取或写入数据,还需要处理很多出错的情况。具体实现代码如下: #001  BOOLEAN #002  NTAPI #003  AtapiInterrupt( #004      IN PVOID HwDeviceExtension #005      ) #006  #007 
AtapiStartIo函数主要处理同步的IO请求包。具代的实现代码如下: #001  BOOLEAN #002  NTAPI #003  AtapiStartIo( #004      IN PVOID HwDeviceExtension, #005      IN PSCSI_REQUEST_BLOCK Srb #006      ) #007  #008  /*++ #009  #010 
IdeSendSmartCommand函数主要发送IDE的命令。具体实现代码如下: #001  ULONG #002  NTAPI #003  IdeSendSmartCommand( #004      IN PVOID HwDeviceExtension, #005      IN PSCSI_REQUEST_BLOCK Srb #006      ) #007  #008  /*++ #00
IdeReadWrite函数主要实现了IDE设备的读和写命令发送。具体实现函数如下: #001  ULONG #002  NTAPI #003  IdeReadWrite( #004      IN PVOID HwDeviceExtension, #005      IN PSCSI_REQUEST_BLOCK Srb #006      ) #007  #008  /*++ #009  #01
下面来分析PCIIDE和PCIIDEX驱动程序,这两个都是PCI的IDE总线驱动程序。 先从PCIIDE的入口函数开始,具体实现代码如下: #001  NTSTATUS NTAPI #002  DriverEntry( #003     IN PDRIVER_OBJECT DriverObject, #004     IN PUNICODE_STRING RegistryPath) #005  {
PciIdeXAddDevice函数是用来添加PCIIDEX的设备,设置一个功能设备,并读取PCI总线的配置参数。具体实现代码如下: #001  NTSTATUS NTAPI #002  PciIdeXAddDevice( #003     IN PDRIVER_OBJECT DriverObject, #004     IN PDEVICE_OBJECT Pdo) #005  { #006   
PciIdeXFdoPnpDispatch函数主要处理PCIIDE即插即用的消息处理。具体实现代码如下: #001  NTSTATUS NTAPI #002  PciIdeXFdoPnpDispatch( #003     IN PDEVICE_OBJECT DeviceObject, #004     IN PIRP Irp) #005  { #006     ULONG MinorFuncti
PciIdeXFdoStartDevice函数是用来处理即插即用的启动设备消息,主要设置了DMA操作和保存设备端口的基地址,这里就是启动PCIIDE的物理设备,具体实现代码如下: #001  static NTSTATUS #002  PciIdeXFdoStartDevice( #003     IN PDEVICE_OBJECT DeviceObject, #004     IN PIRP I
在Reactos里,磁盘类的驱动程序是由disk.sys实现的。从文件系统上输出和读取的调用,就是需要通过这个驱动程序来实现,在这个驱动程序下面就是PCIIDE和ATAPI的驱动程序了,后面这些驱动程序,在前面已经分析过,现在来学习disk类驱动程序。   10.4.1 DriverEntry入口函数 分析这个程序还是从这个驱动程序的入口函数开始,这个函数是初始化SCSI的硬盘类驱动程序,具体实现
 ScsiClassInitialize函数初始化驱动程序对象,主要是找到合适的端口驱动程序,并设置它来处理磁盘的命令,具体实现代码如下: #001  ULONG #002  NTAPI #003  ScsiClassInitialize( #004      IN  PVOID            Argument1, #005      IN  PVOID            Argume
 前介绍了初始化函数ScsiClassInitialize,那么在这个函数里使用下面的语句来查找SCSI的磁盘,如下: if (InitializationData->ClassFindDevices(DriverObject, Argument2, InitializationData,portDeviceObject, portNumber)) 其实这里的函数InitializationDat
 CreateDiskDeviceObject函数主要就是为了物理设备创建磁盘对象,并且查找磁盘上每个分区和创建相应的对象。具体实现代码如下: #001  NTSTATUS #002  NTAPI #003  CreateDiskDeviceObject( #004      IN PDRIVER_OBJECT DriverObject, #005      IN PUNICODE_STRING
 CreatePartitionDeviceObjects函数是通过分析MBR扇区的数据,然后来创建所有分区对象。具体实现代码如下: #001  NTSTATUS #002  NTAPI #003  CreatePartitionDeviceObjects( #004      IN PDEVICE_OBJECT PhysicalDeviceObject, #005      IN PUNICOD
 IoReadPartitionTable函数是读取磁盘分区表数据。它的实现代码如下: #001  NTSTATUS #002  FASTCALL #003  IoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject, #004                       IN ULONG SectorSize, #005               
 目前,Reactos主要使用FAT的文件系统,因此下面就先来分析这个文件系统,以便了解这个文件系统的功能。这个文件系统的实现是在驱动程序FASTFAT.SYS里实现的,所以来分析这个驱动程序的源码,就可以了解FAT文件系统了。   6.2.1 FAT文件系统驱动程序入口函数 FAT的文件系统是当作一个驱动程序来加载到系统里,因此它也有驱动程序的形式了,也就是它的入口点函数,还是DriverEnt
 从上面的入口函数里可以看到,很多消息处理函数都是调用函数VfatBuildRequest来处理的,具体实现代码如下: #001  NTSTATUS NTAPI VfatBuildRequest ( #002          IN PDEVICE_OBJECT DeviceObject, #003          IN PIRP Irp) #004  { #005     NTSTATUS S
 VfatCreate函数创建或者打开一个文件。具体实现代码如下: #001  NTSTATUS #002  VfatCreate (PVFAT_IRP_CONTEXT IrpContext) #003  /* #004   * FUNCTION: Create or open a file #005   */ #006  { #007     NTSTATUS Status; #008  #00
 VfatCreateFile函数主要用来创建或者打开一个文件,具体实现如下: #001  static NTSTATUS #002  VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp ) #003  /* #004   * FUNCTION: Create or open a file #005   */ #006  { #007   
 从上面的代码里可以看到调用函数VfatAddEntry来添加文件或目录的入口,其实现的代码如下: #001  NTSTATUS #002  VfatAddEntry( #003      IN PDEVICE_EXTENSION DeviceExt, #004      IN PUNICODE_STRING NameU, #005      IN PVFATFCB *Fcb, #006