阅读:1815回复:0
请教ramdisk两个问题
driver studio2.01的例子程序中的nt下的ramdisk程序,其中定义了两个kdevice的类,
1.class RamdiskDevice : public KDevice{...} 2.class RamdiskControlDevice : public KDevice{...} 然后在入口的DriverEntry{...}中定义了一个RamdiskControlDevice的对象ControlDevice,这样的话各种irp就可以传到RamdiskControlDevice上,但是在RamdiskControlDevice的 RamdiskControlDevice::DeviceControl(KIrp I)中创建RamdiskDevice的对象是并未调用RamdiskDevice::DeviceControl(KIrp I)函数,那么程序是怎么调用从而将irp传到RamdiskDevice上的呢?? 另:为什么RamdiskControlDevice的很多函数诸如DeviceControl(KIrp I)等等都没有在头文件中调用,怎么都可以呢?怪哉@#¥%%……! 另: ramdisk中,函数NTSTATUS RamdiskDevice::ReadWrite(KIrp I)有如下一段不懂: // Ensure size of read/write is a multiple of sector size. if ( I.ReadOffset().QuadPart+I.ReadSize() > m_Size || I.ReadSize() & (BytesPerSector - 1) ) ///上面一句话.QuadPart是什么呢?I.ReadSize() & (BytesPerSector - 1)又是什么呢? { return I.Complete(STATUS_INVALID_PARAMETER); } |
|