见MSDN:
CurrentIrp
A pointer to the current IRP if the driver has a StartIo routine whose entry point was set in the driver object and if the driver is currently processing IRP(s). Otherwise, this member is NULL. For more information, see the IoStartPacket and IoStartNextPacket topics. This is a read-only member.
Timer
再次请教LS高人,kdbclass里面的DEVICE_EXTENSION结构体里面有一个PIRP WaitWakeIrp,注释是“Actual wait wake irp”,看样子很像是那个等待中的Irp。不过我不是在这个kdbclass基础上改的,而是通过IoGetDeviceObjectPointer得到了\Device\KeyboardClass0对应的DEVICE_OBJECT,虽然从名称看kbdclass和KeyboardClass0很像,但是它们的实现原理相同吗?我在XP-SP3的机器上测试过,WaitWakeIrp的值是0x89xxxxxx,比较像是一个Irp的地址,不过IoCancelIrp还是失败了,而在XP-SP1的机器上它的值是0。至于你说的ReadQueue,我是初学者,不知道怎么用,看定义就是双向链表,但是数据放哪?