reactos操作系统实现(117)
在Reactos里,磁盘类的驱动程序是由disk.sys实现的。从文件系统上输出和读取的调用,就是需要通过这个驱动程序来实现,在这个驱动程序下面就是PCIIDE和ATAPI的驱动程序了,后面这些驱动程序,在前面已经分析过,现在来学习disk类驱动程序。
10.4.1 DriverEntry入口函数
分析这个程序还是从这个驱动程序的入口函数开始,这个函数是初始化SCSI的硬盘类驱动程序,具体实现代码如下:
#001 NTSTATUS
#002 NTAPI
#003 DriverEntry(
#004 IN PDRIVER_OBJECT DriverObject,
#005 IN PUNICODE_STRING RegistryPath
#006 )
#007
#008 /*++
#009
#010 Routine Description:
#011
#012 This routine initializes the SCSI hard disk class driver.
#013
#014 Arguments:
#015
#016 DriverObject - Pointer to driver object created by system.
#017
#018 RegistryPath - Pointer to the name of the services node for this driver.
#019
#020 Return Value:
#021
#022 The function value is the final status from the initialization operation.
#023
#024 --*/
#025
#026 {
#027 CLASS_INIT_DATA InitializationData;
#028
#029 //
#030 // Zero InitData
#031 //
#032
清空初始化结构。
#033 RtlZeroMemory (&InitializationData, sizeof(CLASS_INIT_DATA));
#034
#035 //
#036 // Set sizes
#037 //
#038
设置结构的大小。
#039 InitializationData.InitializationDataSize = sizeof(CLASS_INIT_DATA);
设置驱动程序使用空间的大小。
#040 InitializationData.DeviceExtensionSize = DEVICE_EXTENSION_SIZE;
#041
指明这个驱动程序对象是磁盘驱动程序。
#042 InitializationData.DeviceType = FILE_DEVICE_DISK;
#043 InitializationData.DeviceCharacteristics = 0;
#044
#045 //
#046 // Set entry points
#047 //
#048
设置类调用的回调函数。
#049 InitializationData.ClassError = ScsiDiskProcessError;
#050 InitializationData.ClassReadWriteVerification = ScsiDiskReadWriteVerification;
#051 InitializationData.ClassFindDevices = FindScsiDisks;
#052 InitializationData.ClassFindDeviceCallBack = ScsiDiskDeviceVerification;
#053 InitializationData.ClassDeviceControl = ScsiDiskDeviceControl;
#054 InitializationData.ClassShutdownFlush = ScsiDiskShutdownFlush;
#055 InitializationData.ClassCreateClose = NULL;
#056
#057 //
#058 // Call the class init routine
#059 //
#060
调用ScsiClassInitialize函数初始化驱动程序对象。
#061 return ScsiClassInitialize( DriverObject, RegistryPath, &InitializationData);
#062
#063 } // end DriverEntry()
相关文章
- 操作系统进程的实现---中---05
- 检测设备平台,操作系统,方向 Javascript 库:Device.js
- user创建Linux用户:实现自由度的操作系统之旅(linuxcreate)
- Linux:让世界更美好的开源操作系统(linux系统什么意思)
- 操作系统用Linux体验Mac的美妙体验!(仿mac的linux)
- 框架:学习Linux操作系统(linux跳出)
- 操作系统破茧成蝶:Linux 实现国产操作系统梦(linux国产)
- Linux交叉编译驱动:实现操作系统跨平台之路(linux交叉编译驱动)
- Linux下的设备管理:实现更高效的操作系统管理(linux的设备管理器)
- Linux操作系统更改时区的实现方式(linux更改时区)
- Linux操作系统移植:实现技术的深度探索(linux操作系统移植)
- Linux的分支:实现创新的操作系统(linux的分支)
- Linux操作系统世界:从分支到未来(linux的分支)
- 在安卓手机上实现Linux操作系统.(安卓安装linux系统)
- 在Linux上使用wchar操作系统(wcharlinux)
- 用光驱安装Linux操作系统(光驱安装linux)
- Linux之分支—多样化的操作系统实现(linux的分支)
- Linux的发展史:从分支到领先的操作系统(linux的分支)
- Cub Linux:一款简单易用的轻量级操作系统(cublinux)
- 使用Linux操作系统安装Ant的步骤指南(linux安装ant)
- Linux USB安装:轻松实现操作系统的快速部署(linuxusb安装)
- 串Linux操作系统中插入字符串的技巧(linux插入字符)
- Linux操作系统:轻松实现文件移动技巧(文件移动linux)
- Linux下实现:让你的操作系统更高效(linux下实现)
- Linux命令行入门:如何在Linux操作系统中输入命令?(linux哪里输入命令)
- Linux操作系统持续更新,实现更安全性能体验(linux更新)
- 如何实现Linux操作系统的自动登录
- 利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
- 国产中文操作系统OpenDesktop