edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2472回复:32

VxD 如何跟 Win32 应用程序通信?

楼主#
更多 发布于:2002-04-20 11:29
Win32 应用程序主动跟 VxD 通讯(或者调用 VxD 的服务)可以用 DeviceIoControl(),那么 VxD 想主动跟 Win32 应用程序通信怎么办呢?

比如传给 Win32 应用程序字符串或者干脆调用 Win32 应用程序的函数。

再问个弱智问题:VxD 可以使用 API 函数吗?比如 SendMessage()?

谢谢大家帮助!

最新喜欢:

flyajiflyaji
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-20 12:58
其实我很想回答你,那么多分呐!
但是我觉得这个问题已经有太多太多的帖子,你难道不能够多search下?
在问问题之前,你尽力了么????????
一剑西来,天外飞仙
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-20 13:14
对不起,我刚来这里不久,还不熟悉,那我先找找看。

然后把找到的排除,找不到的写在下面请您回复好吗?

我刚接触驱动开发不久,很迷茫,请您帮助我,也请您批评我。
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-21 18:15
To flyfox:

    我已经找了 50 多页了,确实没有啊!能不能帮帮忙呀?
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-21 19:45
App:
   PVOID Input[1];
   HANDLE ApphWnd;

   Input[0] = hWndApphWnd;
   DeviceIoControl()
Driver:
   ApphWnd = *(HANDLE*)p->dioc_InBuf;
   SHELL_PostMessage(ApphWnd,MSG,NULL,NULL);
如还有问题给我发E_MAIL吧!!祝你好运!!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-21 21:36
To monkeyy:

非常感谢你的帮助!!!唉!高手是不明白我们的心情和处境的。

还有上面那个问题:VxD可以使用 API 函数吗?
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-04-22 15:00
在VXD中不能使用API!绝对不能,因为VXD比windows的三大组件要
先与装载!所以绝对不能!
但是SHELL.VXD提供了许多要用到的!如:SHELL_PostMessage()
兄弟:我很穷的!能不能给点分呀!!!下载要用的,再说现在好象
看文章也要用分了!!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-04-22 15:21
To monkeyy:

我觉得你这个人很热心(姑且不论用心^_^),放心吧,这些分已经全部属于你了!

再问两个小问题,回复后马上给分!!!

(1) 你提到的这个 SHELL.VXD 是系统自带的吗?也就是说当 Win 9x/Me/2k/NT/XP 安装的时候它就有了,而且可以使用了。
我在 2k DDK 文档中找不到那个 SHELL_PostMessage 函数。

(2) 怎么给分?(不要晕倒)
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-04-22 15:25
再 To monkeyy:

我查了一下你参与的帖子,发现你好象对 NDIS Hook 比较有研究!我现在正在攻这个,希望我们能多交流!分不成问题!!!
另外你是不是也常去 CSDN 呀?
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-04-23 20:10
首先我不是高手,只不过经历了许多痛苦之后,知道去读代码了!我不是常去csdn,以前是。SHELL.vxd是系统提供的,如你所说“也就是说当 Win 9x/Me/2k/NT/XP 安装的时候它就有了,而且可以使用了。”用VToolsD自带的VXD Viewer就可以看到了!SHELL_PostMessage()在2K下能不能用我不知道!反正98可用就行了
其实就看你作什么了,一般还是用队列比较好(98ddk上有例子)
按你所说SHELL_PostMessage()可能在2K不可用了。

给分呀 :) :) 你的第一个帖子处有个给分!请单击。。。。
然后就知道了!以后有事再聊吧!!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-04-23 20:13
你究竟要干啥??写防火墙还是别的!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-04-23 20:18
我要做一个 NAT 代理,现在正在苦读 PCAUSA 的 PIM 代码!!!

可是由于以前从没有接触过 NDIS 驱动开发,所以现在异常艰难!!!

以后有问题可否给你写信?
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-04-24 16:05
NAT我也是刚刚想到一个比较好的算法(自己认为 :)!)
不过现在还不知道如何一次性分配许多端口以供Driver使用。应该在App中申请,然后在Driver中使用。因为在Dirver中无Port的概念。他是传输层的东东,估计在伪IM中没法做。还要研究呀。其实NAT就是对数据报的截获,只不过必须在IP层,不然会被Router给屏蔽的。“PCAUSA ”我没有细看。在98下好象只有hook或者是Protocol。不过Protocol的代码比较多还是hook舒服了。你是计算机的学生吗?
我是学电子信息的。不知道以后前途如何??
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-04-24 16:26
To monkeyy:

能跟你交流一下 NAT 的算法吗?如果你认为这里不方便的话我们可以 E-mail 联系(liu-zhf@sohu.com)。

你为什么要说分配端口给 Driver 用呀?你指的是 NAPT 方式吗?记录下 App 使用的端口不就行了,分配端口是应用程序关心的事,NAT 只要管理就可以了。

解释从 PIM 中得到的包的 TCP 协议信息就可以得到端口号了。我也是刚看过一些资料 ^_^

对,我是学计算机的,不过也就比你们多学了一两门计算机方面的专业课而已。我现在实习所在的这家公司就不看重这个,只要你编程能力了得,大概中文系的也可以。再说电子信息也不错啊?!要不是初中的时候兴趣转向计算机,说不定我现在学的也是你的专业!

你大几了?不会还没毕业吧?要是现在还没毕业就开始研究驱动开发了,呵呵,前途无量啊!!!
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-04-25 19:25
我大三,你说的是对TCP和UDP的处理。看来你对TCP/IP不太熟喔。
:)!如果只对TCP UDP处理那简直太Easy!主要是ICMP,我想实现智能化,实现动态IP。不知道行不行?
反正作就是了!!!!!我崇尚技术,所以如此作了!
NAT算法其实主要在与你如何存储转换表,(我认为 :))!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-04-25 20:15
你能回答一下我的另外一个帖子吗?
一定给分!
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-04-25 20:49
试试吧!我的OICQ:17051412
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-04-25 20:53
不好意思,我这里不能用 QQ。
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-04-25 20:54
哪儿?试试吧!!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-04-25 20:55
可以和你怎么交流!!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
上一页
游客

返回顶部