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

两个有关VToolsD的问题

楼主#
更多 发布于:2001-05-06 11:41
1、在VToolsD中如何精确延时,以ms即可
我用Time_Slice_Sleep(1),可在示波器上看
至少>5ms,有没有其它办法,还是我用的不对

2、我做了一个中断处理程序,可能是时间太长
在数据量大的情况下,会影响系统的响应速度
鼠标都变慢了
我在中断处理程序中加入了Release_Time_Slice()
结果鼠标倒是好了,但不定期死机
这个函数应该不能用在中断处理程序中吧?
有什么办法可以解决吗?

最新喜欢:

fueanafueana
principal
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2014-02-12
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望62点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-05-08 14:52
我可以回答第二个问题:
   你的中断服务程序不能进行大量的数据操作,应该越快越好。所有大量的操作,应该在DPC 中进行,这样就可以了。在dpc运行时,即使你友好几次中断,也只有一个dpc 在运行。
lig
lig
驱动牛犊
驱动牛犊
  • 注册日期2001-04-24
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-05-08 20:59
什么是DPC?
望大虾详细说一下
principal
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2014-02-12
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望62点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-05-12 16:30
就是在中断处理程序中,设置一个 CallBack 函数,等到中断结束时,系统会自动调用这个函数,这也是CallBack 的来历
lig
lig
驱动牛犊
驱动牛犊
  • 注册日期2001-04-24
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-05-16 15:59
我还是不太明白,小子愚笨之极:-(
是不是把中断处理程序中的代码段单独拿出来放到一个函数里
然后声明这个函数为CALLBACK
在中断处理中调用它

BTW:我这样做了一下,CALLBACK这个保留字无法编译
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
5楼#
发布于:2001-05-16 16:05
callback是回调,这样解释吧:你用过vc之类的开发工具吗?
每个窗口的消息都要一个处理过程的。当发生窗口事件时就调用它。
举个例子:
比如老板告诉你:有人来时就迎接.(这个是回调事件)
有人来了:你去迎接。(这就是回调函数).hehe
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
principal
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2014-02-12
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望62点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
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++,我劝你去买或是借一本书吧,我不想在这里多说。
lig
lig
驱动牛犊
驱动牛犊
  • 注册日期2001-04-24
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-05-17 09:18
我已经明白了,现在去试一下
多谢两位大虾了!!!!!!!!!!!!
lig
lig
驱动牛犊
驱动牛犊
  • 注册日期2001-04-24
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-05-17 10:35
我用了您说的方法,但好像那个函数没有执行
而且debug monitor中不断的出现EventInit not called这句话
principal
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2014-02-12
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望62点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-05-18 16:36
对不起 ,我忘了说了
 要在你的程序初始化时 加上这么一句:
   VEvent::initEvents();
直接加上就行了。如:
BOOL LogicDevice::OnSysDynamicDeviceInit()
{
   VEvent::initEvents();
}
rich
驱动牛犊
驱动牛犊
  • 注册日期2001-05-15
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2001-05-20 08:49
  关注
a0041059a
驱动小牛
驱动小牛
  • 注册日期2005-05-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分46分
  • 威望6点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-05-09 13:10
用一下driverstudio试一下
游客

返回顶部