reactos操作系统实现(117)

前端之家收集整理的这篇文章主要介绍了reactos操作系统实现(117)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Reactos里,磁盘类的驱动程序是由disk.sys实现的。从文件系统上输出和读取的调用,就是需要通过这个驱动程序来实现,在这个驱动程序下面就是PCIIDEATAPI的驱动程序了,后面这些驱动程序,在前面已经分析过,现在来学习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()

猜你在找的React相关文章