1、在ring3定义一个HANDLE 指针,传递到ring0,在底层分配一个new (NonPagedPool) KEvent(hEvent, OBJECT_TYPE_ALL_ACCESS);线程中::WaitForSingleleObjects()没有问题。
2、8253是用来产生中断脉冲的吧?Win9x下VC可以直接读写端口,但是WinNT下就不行了,为了以后移植方便,我觉得还是把8253的操作放到ring0去吧。用一个KIoRange封装8253的几个口,用起来很方便,用几次都没有什么关系吧!?
3、ring0的事件直接Set();ring3就知道了,因为ring0和ring3的事件指针指向的内存地址是一样的,呵呵。【注】我用的是DriverWork,所以具体VToolsD中是否通用,要试试才知道。