06 2009 档案

摘要:IopCreateFile=>IoMountVolume=>IopMountFileSystemIopMountFileSystem构造IRP StackPtr->MajorFunction = IRP_MJ_FILE_SYSTEM_CONTROL; StackPtr->MinorFunction = IRP_MN_MOUNT_VOLUME; 然后依次查询注册过的分区驱动,... 阅读全文
posted @ 2009-06-24 17:29 Fan Zhang 阅读(304) 评论(0) 推荐(0)
摘要:make dist会将所有文件编译后,放在\dist目录下。 阅读全文
posted @ 2009-06-24 16:11 Fan Zhang 阅读(297) 评论(0) 推荐(0)
摘要:感觉IoCreateFile应该算是系统调用,它会调用ObCreateObject函数。 IoCreateFile和IoCreateDevice都会调用ObCreateObject函数。在中IoCreateFile中, Status = ObCreateObject(FileHandle, DesiredAccess, ObjectAttributes, IoFileObjectType, (PV... 阅读全文
posted @ 2009-06-24 15:40 Fan Zhang 阅读(826) 评论(0) 推荐(0)
摘要:http://melkov.narod.ru/misc/stl-fix/ 阅读全文
posted @ 2009-06-24 14:41 Fan Zhang 阅读(203) 评论(0) 推荐(0)
摘要:在DriverEntry中,创建了一个device,并调用IoRegisterFileSystem,将它注册到文件系统类型中。每个分区类型驱动加载时候,都会调用IoRegisterFileSystem。 阅读全文
posted @ 2009-06-24 13:11 Fan Zhang 阅读(209) 评论(0) 推荐(0)
摘要:ReactOS默认的log是关闭的,在进入系统选择菜单“ReactOS (Debug)”,此时log通过串口输出。打印log可以使用DbgPrint函数。NDEBUG宏控制DBG版本中输出log。在每个module里都定义了NDEBUG宏,如果想在DBG版本里打印log就注释掉NDEBUG宏。此时DPRINT,DPRINT1等输出log的宏被enable。对于freeldr,也是用DbgPrint函数。在debug.c里修改下列宏,可以控制是否在DBG版本里打印log://#define DEBUG_ALL//#define DEBUG_INIFILE//#define DEBUG_REACT 阅读全文
posted @ 2009-06-04 14:59 Fan Zhang 阅读(227) 评论(0) 推荐(0)
摘要:在调试窗口查看变量:@err,hr 阅读全文
posted @ 2009-06-04 14:04 Fan Zhang 阅读(263) 评论(0) 推荐(0)
摘要:在atapi.sys的DriverEntry里会调用ScsiPortInitialize。 PCI中有8个条PCI bus。在ScsiPortInitialize中对每条PCI Bus调用一次AtapiFindCompatiblePciController或AtapiFindIsaBusController,用来寻找ATAPI的Controller。如果发现HBA,则调用ScsiPortCreat... 阅读全文
posted @ 2009-06-03 23:28 Fan Zhang 阅读(586) 评论(0) 推荐(0)
摘要:#include <stdio.h>#include <windows.h>#include <winioctl.h>#include <ntddscsi.h>typedef struct _INQUIRYDATA{ UCHAR DeviceType:5; UCHAR DeviceTypeQualifier:3; UCHAR DeviceTyp... 阅读全文
posted @ 2009-06-03 18:35 Fan Zhang 阅读(477) 评论(0) 推荐(0)
摘要:ATA和ATAPI是广为使用的IDE和EIDE设备的相关标准。ATA是AT Attachment的缩写,意思是AT计算机上的附加设备(还记得IBM PC/AT吗?)。ATA可以使用户方便地在PC机上连接硬盘,但有时这样还不够。有些用户需要通过同样方便的手段连接CDROM、磁带机、MO驱动器等设备。ATAPI标准就是为了解决在IDE/EIDE接口上连接多种设备而制定的。ATAPI是AT Attach... 阅读全文
posted @ 2009-06-03 11:28 Fan Zhang 阅读(1086) 评论(0) 推荐(0)
摘要:我感觉磁盘驱动是mini driver+class driver。其中class2.sys就是类驱动而disk.sys就是mini drivermini driver的DriverEntry调用NTSTATUS STDCALLDriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath){ CLASS_I... 阅读全文
posted @ 2009-06-03 10:57 Fan Zhang 阅读(286) 评论(0) 推荐(0)
摘要:首先是在main.c中ExpInitializeExecutive函数。遍历所有加载的模块,其中有ntoskrnl、各个驱动、nls、注册表文件等。找出驱动程序,依次调用LdrInitializeBootStartDriver函数。然后调用IoCreateArcNames函数,将\reactos 变为 multi(0)disk(0)rdisk(0)partition(1)\reactos最后调用I... 阅读全文
posted @ 2009-06-02 15:47 Fan Zhang 阅读(600) 评论(0) 推荐(0)