大坡3D软件开发

因我而不同--用软件来改变世界

reactos操作系统实现(147)

通过上面的学习,可以了解到GDI最终的输出都是通过小端口向显示硬件输出,以便在显示器上显示所需要显示的内容。那为什么需要有小端口驱动程序呢?其实这是为了方便所有显示卡制造厂家编写驱动程序,同时又可以让制造厂家保密他们的内部技术秘密。使用小端口的驱动程序,也可以统一显示驱动程序的接口,也就把显示驱动...

2009-11-30 22:32:00

阅读数:1362

评论数:0

reactos操作系统实现(146)

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

2009-11-29 18:52:00

阅读数:1397

评论数:0

reactos操作系统实现(145)

 前面的函数已经介绍怎么样显示一个字符串了,那么下面就来仔细地实查看怎么样实现一个字符的显示,当然这里字符的显示,只是字母的显示,没有中文显示,如果需要实现中文字符的显示,就需要修改这个函数和相应的排版函数、读取相应的字体文件。由于显示卡已经被初始化为图形模式,那么所有字符的显示都生成图形方式来显...

2009-11-28 22:35:00

阅读数:1142

评论数:0

reactos操作系统实现(144)

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

2009-11-27 23:24:00

阅读数:1507

评论数:0

reactos操作系统实现(143)

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

2009-11-26 21:59:00

阅读数:1461

评论数:0

reactos操作系统实现(142)

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

2009-11-25 23:14:00

阅读数:1338

评论数:1

reactos操作系统实现(141)

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

2009-11-24 23:34:00

阅读数:2052

评论数:3

reactos操作系统实现(140)

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

2009-11-23 22:29:00

阅读数:1402

评论数:0

reactos操作系统实现(139)

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

2009-11-22 11:58:00

阅读数:1296

评论数:0

reactos操作系统实现(138)

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

2009-11-21 23:40:00

阅读数:1195

评论数:0

reactos操作系统实现(137)

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

2009-11-20 23:08:00

阅读数:1511

评论数:0

reactos操作系统实现(136)

 VfatMount函数主要用来安装FAT文件卷,具体实现代码如下:#001  static NTSTATUS#002  VfatMount (PVFAT_IRP_CONTEXTIrpContext)#003  /*#004   * FUNCTION: Mount thefilesystem#00...

2009-11-19 23:28:00

阅读数:1971

评论数:0

reactos操作系统实现(135)

 当从IO管理器里调用函数IopParseDevice来分析设备时,就可以找到相应的磁盘设备,并在这个函数里调用函数IopCheckVpbMounted来检查这个文件系统是否加载,如果没有加载,就会调用函数IopMountVolume来加载文件卷,那么在这个函数里就会构造一个IRP发送给文件系统驱...

2009-11-18 22:34:00

阅读数:1802

评论数:0

reactos操作系统实现(134)

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

2009-11-16 22:59:00

阅读数:1256

评论数:0

reactos操作系统实现(133)

 VfatReadDiskPartial函数主要用来构造一个IRP给底层驱动程序去读取数据返回。具体实现代码如下:#001  NTSTATUS#002  VfatReadDiskPartial (INPVFAT_IRP_CONTEXT IrpContext,#003              IN...

2009-11-15 22:23:00

阅读数:1261

评论数:1

reactos操作系统实现(132)

 VfatReadFileData函数主要用来从磁盘上读取文件数据,具体实现代码如下:#001  static NTSTATUS#002  VfatReadFileData(PVFAT_IRP_CONTEXT IrpContext,#003                    ULONGLeng...

2009-11-14 23:00:00

阅读数:1064

评论数:0

reactos操作系统实现(131)

 VfatRead函数用来读取FAT文件系统里的文件数据,如果缓冲区里有数据就直接从缓冲区里读取,否则就从磁盘上读取。具体实现如下:#001  NTSTATUS#002  VfatRead(PVFAT_IRP_CONTEXTIrpContext)#003  {#004     NTSTATUS S...

2009-11-12 23:26:00

阅读数:1774

评论数:2

reactos操作系统实现(130)

 vfatMakeRootFCB函数是用来创建FAT文件系统的根目录,实现代码如下:#001  PVFATFCB#002  vfatMakeRootFCB(PDEVICE_EXTENSION  pVCB)#003  {#004     PVFATFCB  FCB;#005     ULONG Fi...

2009-11-10 22:43:00

阅读数:1021

评论数:0

reactos操作系统实现(129)

 功能驱动将构造请求包,就可以发送到底层总线驱动上。因此需要创建一个IRP,这就需要用IoBuildDeviceIoControlRequest创建一个IO控制码的IRP,用IoCallDriver将URB发送到底层总线驱动上。由于上层驱动无法知道底层驱动是同步还是异步完成的,因此需要做一个判断。...

2009-11-09 23:10:00

阅读数:1114

评论数:0

reactos操作系统实现(128)

 VfatOpenFile函数主要用来打开FAT的文件。具体实现代码如下:#001  static#002  NTSTATUS#003  VfatOpenFile (#004     PDEVICE_EXTENSION DeviceExt,#005          PUNICODE_STRING...

2009-11-08 23:22:00

阅读数:1166

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭