阅读:2391回复:11
两个有关VToolsD的问题
1、在VToolsD中如何精确延时,以ms即可
我用Time_Slice_Sleep(1),可在示波器上看 至少>5ms,有没有其它办法,还是我用的不对 2、我做了一个中断处理程序,可能是时间太长 在数据量大的情况下,会影响系统的响应速度 鼠标都变慢了 我在中断处理程序中加入了Release_Time_Slice() 结果鼠标倒是好了,但不定期死机 这个函数应该不能用在中断处理程序中吧? 有什么办法可以解决吗? |
|
最新喜欢:fueana |
沙发#
发布于:2001-05-08 14:52
我可以回答第二个问题:
你的中断服务程序不能进行大量的数据操作,应该越快越好。所有大量的操作,应该在DPC 中进行,这样就可以了。在dpc运行时,即使你友好几次中断,也只有一个dpc 在运行。 |
|
板凳#
发布于:2001-05-08 20:59
什么是DPC?
望大虾详细说一下 |
|
地板#
发布于:2001-05-12 16:30
就是在中断处理程序中,设置一个 CallBack 函数,等到中断结束时,系统会自动调用这个函数,这也是CallBack 的来历
|
|
地下室#
发布于:2001-05-16 15:59
我还是不太明白,小子愚笨之极:-(
是不是把中断处理程序中的代码段单独拿出来放到一个函数里 然后声明这个函数为CALLBACK 在中断处理中调用它 BTW:我这样做了一下,CALLBACK这个保留字无法编译 |
|
5楼#
发布于:2001-05-16 16:05
callback是回调,这样解释吧:你用过vc之类的开发工具吗?
每个窗口的消息都要一个处理过程的。当发生窗口事件时就调用它。 举个例子: 比如老板告诉你:有人来时就迎接.(这个是回调事件) 有人来了:你去迎接。(这就是回调函数).hehe |
|
|
6楼#
发布于:2001-05-16 21:18
我不知道你用的是不是 VToolsD ,我用的是,代码如下:
在 .h中声明如下: class MyGlobalEvent :public VGlobalEvent { public: MyGlobalEvent():VGlobalEvent(){}; virtual void handler(VMHANDLE hVM,CLIENT_STRUCT *pREgs,PVOID refData); }; 在中断处理程序中: pEvent = new MyGlobalEvent(); if(pEvent) pEvent->schedule(); 在 void MyGlobalEvent::handler(VMHANDLE hVM,CLIENT_STRUCT* pRegs,PVOID refData) { } 这个函数中添加你想要做的代码。如果你不会c++,我劝你去买或是借一本书吧,我不想在这里多说。 |
|
7楼#
发布于:2001-05-17 09:18
我已经明白了,现在去试一下
多谢两位大虾了!!!!!!!!!!!! |
|
8楼#
发布于:2001-05-17 10:35
我用了您说的方法,但好像那个函数没有执行
而且debug monitor中不断的出现EventInit not called这句话 |
|
9楼#
发布于:2001-05-18 16:36
对不起 ,我忘了说了
要在你的程序初始化时 加上这么一句: VEvent::initEvents(); 直接加上就行了。如: BOOL LogicDevice::OnSysDynamicDeviceInit() { VEvent::initEvents(); } |
|
10楼#
发布于:2001-05-20 08:49
关注
|
|
11楼#
发布于:2005-05-09 13:10
用一下driverstudio试一下
|
|