xiang
驱动牛犊
驱动牛犊
  • 注册日期2001-06-12
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1743回复:0

请教ramdisk两个问题

楼主#
更多 发布于:2001-06-07 20:15
 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);
}
游客

返回顶部