当前搜索:

reactos操作系统实现(147)

通过上面的学习,可以了解到GDI最终的输出都是通过小端口向显示硬件输出,以便在显示器上显示所需要显示的内容。那为什么需要有小端口驱动程序呢?其实这是为了方便所有显示卡制造厂家编写驱动程序,同时又可以让制造厂家保密他们的内部技术秘密。使用小端口的驱动程序,也可以统一显示驱动程序的接口,也就把显示驱动程序功能简化开发。下面来分析目录里reactos/drivers/video/miniport/v...
阅读(1219) 评论(0)

reactos操作系统实现(146)

 Reactos的显示组成主要由GDI、视频端口驱动程序、小端口驱动程序和显示驱动程序组成。当GDI系统接到应用程序请求后,就会查找相应的小端口驱动程序,接着小端口驱动程序,就会设置视频端口驱动程序和显示驱动程序。在GDI和小端口驱动程序调用流程如下图所示:...
阅读(1260) 评论(0)

reactos操作系统实现(145)

 前面的函数已经介绍怎么样显示一个字符串了,那么下面就来仔细地实查看怎么样实现一个字符的显示,当然这里字符的显示,只是字母的显示,没有中文显示,如果需要实现中文字符的显示,就需要修改这个函数和相应的排版函数、读取相应的字体文件。由于显示卡已经被初始化为图形模式,那么所有字符的显示都生成图形方式来显示,文字也不例外,因此需要使用字体的点阵数据。具体实现代码如下:#001  VOID#002 ...
阅读(1012) 评论(0)

reactos操作系统实现(144)

 当操作系统引导过程中,需要输出一些信息给用户来查看,那么就需要这个简单的VGA驱动程序,可以输出字符串显示,实现这个功能的函数就是VidDisplayString函数,具体实现的代码如下:#001  VOID#002  NTAPI#003  VidDisplayString(PUCHARString)#004  {#005      ULONG TopDelta = 14...
阅读(1384) 评论(0)

reactos操作系统实现(143)

 VgaIsPresent函数通过读取图形模式的索引寄存器和数据寄存器来检查VGA显示卡是否安装,实现代码如下:#001  BOOLEAN#002  NTAPI#003  VgaIsPresent(VOID)#004  {#005      UCHAR VgaReg, VgaReg2,VgaReg3;#006      UCHAR SeqReg, SeqReg2;#...
阅读(1311) 评论(0)

reactos操作系统实现(142)

 VidInitialize函数主要进行VGA简单视频显示模式初始化。具体实现代码如下:#001  BOOLEAN#002  NTAPI#003  VidInitialize(IN BOOLEANSetMode)#004  {#005      ULONG Context = 0;#006      PHYSICAL_ADDRESSTranslatedAddress...
阅读(1212) 评论(1)

reactos操作系统实现(141)

 在操作系统启动的早期阶段,由于很多基本的功能没有初始化(比如IO管理器都没有初始化),因此完整和功能强大的显示驱动程序是不可能运行的,那么就需要在这个阶段写一个比较简单的VGA显示驱动程序给内核引导时使用,这个驱动程序就是bootvid.dll。 先来分析在内核里调用初始化的位置,具体如下:#001  VOID#002  NTAPI#003 Phase1Initializ...
阅读(1942) 评论(3)

reactos操作系统实现(140)

 在创建文件成功后,然后就往文件里写入数据,而写入数据说明就需要文件系统给文件分配储存空间,以便保存这些数据到磁盘里,下面就来分析分配文件大小的函数,如下:#001  NTSTATUS#002  VfatSetAllocationSizeInformation(PFILE_OBJECTFileObject,#003                  PVFATFCB Fcb,#...
阅读(1284) 评论(0)

reactos操作系统实现(139)

 当用户删除文件时,就会通过ReactOS的API调用IO管理器函数,然后创建IRP包发送到文件系统驱动程序来,然后就调用下面函数来把文件分配的簇从FAT分配表时删除。具体实现的代码如下:#001  static NTSTATUS#002  FATDelEntry(#003      IN PDEVICE_EXTENSIONDeviceExt,#004      IN PVFA...
阅读(1176) 评论(0)

reactos操作系统实现(138)

 在FAT里,需要从目录入口项里找到文件的首簇数,下面这段代码就是实现这样的功能,如下:#001  ULONG#002  vfatDirEntryGetFirstCluster(PDEVICE_EXTENSION  pDeviceExt,#003                               PDIR_ENTRY  pFatDirEntry)#004  {#0...
阅读(1102) 评论(0)

reactos操作系统实现(137)

 VfatHasFileSystem函数主要用来读取FAT文件系统信息,并且判断这个磁盘卷是否为FAT文件系统,具体实现如下:#001  static NTSTATUS#002 VfatHasFileSystem(PDEVICE_OBJECT DeviceToMount,#003                    PBOOLEANRecognizedFS,#004   ...
阅读(1338) 评论(0)

reactos操作系统实现(136)

 VfatMount函数主要用来安装FAT文件卷,具体实现代码如下:#001  static NTSTATUS#002  VfatMount (PVFAT_IRP_CONTEXTIrpContext)#003  /*#004   * FUNCTION: Mount thefilesystem#005   */#006  {#007     PDEVICE_OBJ...
阅读(1806) 评论(0)

reactos操作系统实现(135)

 当从IO管理器里调用函数IopParseDevice来分析设备时,就可以找到相应的磁盘设备,并在这个函数里调用函数IopCheckVpbMounted来检查这个文件系统是否加载,如果没有加载,就会调用函数IopMountVolume来加载文件卷,那么在这个函数里就会构造一个IRP发送给文件系统驱动程序,驱动程序就收到主功能码为IRP_MJ_FILE_SYSTEM_CONTROL和次功能码为IRP...
阅读(1670) 评论(0)

reactos操作系统实现(134)

 文件控制块主要用来表示一个ReactOS打开文件的对象。下面就来仔细地分析文件控制块的结构,如下:#001  typedef struct _VFATFCB#002  { ROS的文件头部,主要包括文件流的描述和系统使用的变量。#003    /* FCB header required byROS/NT */#004    FSRTL_COMMON_FCB_HEAD...
阅读(1151) 评论(0)

reactos操作系统实现(133)

 VfatReadDiskPartial函数主要用来构造一个IRP给底层驱动程序去读取数据返回。具体实现代码如下:#001  NTSTATUS#002  VfatReadDiskPartial (INPVFAT_IRP_CONTEXT IrpContext,#003              IN PLARGE_INTEGER ReadOffset,#004          ...
阅读(1151) 评论(1)
26条 共2页1 2 下一页 尾页
    个人资料
    • 访问:5901790次
    • 积分:76272
    • 等级:
    • 排名:第22名
    • 原创:1625篇
    • 转载:61篇
    • 译文:11篇
    • 评论:2102条
    文章存档