jjw
jjw
驱动牛犊
驱动牛犊
  • 注册日期2001-11-01
  • 最后登录2008-11-05
  • 粉丝0
  • 关注0
  • 积分-6分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1379回复:14

vtoolsd中的异步事件类能否设置事件触发w32的线程?

楼主#
更多 发布于:2002-06-14 13:34
jjw
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-15 14:02
当然可以的。
hemu
驱动小牛
驱动小牛
  • 注册日期2002-04-10
  • 最后登录2004-06-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-16 16:34
建议你使用win32事件,它的效率确实比较高
jjw
jjw
驱动牛犊
驱动牛犊
  • 注册日期2001-11-01
  • 最后登录2008-11-05
  • 粉丝0
  • 关注0
  • 积分-6分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-17 14:42
可我在HELP中没有看到关于这方面的内容?
jjw
hemu
驱动小牛
驱动小牛
  • 注册日期2002-04-10
  • 最后登录2004-06-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-18 20:16
可以自己试一试将中断靠近几毫秒,区别就有了。
cc_mcy
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2005-06-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-19 15:18
楼上说的有...一定道理。
 :D
三人行,必有我师! [email]cc_mcy@163.com[/email]
cc_mcy
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2005-06-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-19 15:28
要使用win32事件编程,你需要先创建一个事件和一个县城,在将ring3级事件句柄转化为ring0级句柄,传给vxd,用这个线程等待vxd发送的事件消息。这样就ok了。

答的好,给兄弟点分吧!! ;)
三人行,必有我师! [email]cc_mcy@163.com[/email]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-06-19 18:37
楼上说的,对。
wolfzhu
驱动牛犊
驱动牛犊
  • 注册日期2002-06-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-19 20:42
请问应该如何在RING0和RING3地址之间转换呢?
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-19 21:13
灌水:
HANDLE (WINAPI *GetAddressOfOpenVxDHandle(void))(HANDLE)
{
CHAR K32Path[MAX_PATH];
HINSTANCE hK32;

GetSystemDirectory(K32Path, MAX_PATH);
strcat(K32Path, \"\\\\kernel32.dll\");
if ((hK32 = GetModuleHandle(K32Path)) == 0)
return NULL;

return (HANDLE(WINAPI *)(HANDLE))GetProcAddress(hK32, \"OpenVxDHandle\");
}
//---------------------------------------------------------------------------
BOOL CreateCommonEvent(HANDLE* pr3Evt, HANDLE* pr0Evt, BOOL bManualReset,
BOOL bInitialState)
{
static HANDLE (WINAPI *pOpenVxDHandle)(HANDLE)=0;
*pr3Evt = CreateEvent(0, bManualReset, bInitialState, NULL);
if (pOpenVxDHandle == 0)
pOpenVxDHandle = GetAddressOfOpenVxDHandle();
if (pOpenVxDHandle && *pr3Evt)
*pr0Evt = pOpenVxDHandle(*pr3Evt);
else
*pr0Evt = 0;
return ( (*pr3Evt != 0) && (*pr0Evt != 0) );
}

使用时:CreateCommonEvent(&hEvent2R3, &hEvent2R0, TRUE, FALSE)
在发给驱动:
inBuf[0] = hEventR0;
inBuf[1] = hEvent2R0;
DeviceIoControl(hVxd,GETEVENT,inBuf,2*sizeof(PVOID),NULL,0,&cbBytesReturned, NULL)

应用用WaitForSingleObject和ResetEvent等;驱动用VWIN32_SetWin32Event等,二者相互通信。当然在ISR中加上GlobalEvent。



请问应该如何在RING0和RING3地址之间转换呢
----------------------------------------------------------------------
转换什么地址?
wolfzhu
驱动牛犊
驱动牛犊
  • 注册日期2002-06-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-06-20 08:57
要使用win32事件编程,你需要先创建一个事件和一个县城,在将ring3级事件句柄转化为ring0级句柄,传给vxd,用这个线程等待vxd发送的事件消息。这样就ok了。
--------------------------------------------
就是将ring3中创建的句柄转化为在ring0级vxd中能够使用的句柄。
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2002-06-20 09:12
真细心呀。
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-06-20 09:59
就是将ring3中创建的句柄转化为在ring0级vxd中能够使用的句柄。
-----------------------------------------------------------------------
\"OpenVxDHandle\",即

pOpenVxDHandle = GetAddressOfOpenVxDHandle();
if (pOpenVxDHandle && *pr3Evt)
*pr0Evt = pOpenVxDHandle(*pr3Evt);
wolfzhu
驱动牛犊
驱动牛犊
  • 注册日期2002-06-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-06-20 14:59
谢谢,我懂了!
jjw
jjw
驱动牛犊
驱动牛犊
  • 注册日期2001-11-01
  • 最后登录2008-11-05
  • 粉丝0
  • 关注0
  • 积分-6分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-06-22 12:03
我意思是能否用vtoolsd中的自己带的类来做ring0 到ring3的转换?
jjw
游客

返回顶部