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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |