wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1708回复:18

难题!

楼主#
更多 发布于:2003-05-14 17:48
我想在passthru中写这么一个函数,

//接收UDP数据,实现IP层的封包和发送功能
VOID UDP_SEND(UDP_HEADER *pUdpHeader)//模拟UDP层向IP层发送数据接口函数
{
   //将UDP数据报加IP报头和Ether帧头
   //。。。
   //从而得到 myPacket以太包
  
   //下面就是向下一层发送数据
    其间问题:
    想调用NdisSend(&Status,pAdapt->BindingHandle,myPacket);
    是否可行?
    1。可行,那么pAdapt->BindingHandle的问题怎么解决?
    2。不可行,那么有其他的方法么?

     请教各位!    
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-15 10:42
可以。

你如何接受到UDP数据呢?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-15 10:55
我的思路是:应用程序调用UDP_SEND_DATA(char*buffer)->UDP层ADD_UDPHEADR(char*buffer)->IP层UDP_SEND(UDP_HEADER *pUdpHeader)->NdisSend(...),这些函数都是由自己编写的,(似乎很复杂,不晓得可行么)

不知有没有其他的更好的方法,刚学,一头雾水,mikeluo大侠,请帮忙指点一下

[编辑 -  5/15/03 by  wangsj47]
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-15 11:03
这样是可以的,不过有一个应用层和驱动层通信的问题。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-15 11:09
恩,这个问题我不会,请问该怎么做?
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-15 11:25
看一下wdm驱动的书,一般的都会讲。用irp。

驱动程序之间可以使用一个lib。这个论坛里面有讨论的帖子,你可以查一下
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-15 12:14
恩,就去查,

对了,那个NdisSend函数中需要pAdapt->BindingHandle,这个参数怎么解决啊?

好象没了它NdisSend函数就不能用了

~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-15 13:57
passthru里面有吖,padapter结构里面保存了的
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-15 16:41
你的意思说叫我这样:
UDP_SEND(IN NDIS_HANDLE ProtocolBindingContext, UDP_HEADER *pUdpHeader)
{
    PADAPT pAdapt = (PADAPT)MiniportAdapterContext;
    //...
}

这样可否?
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-15 17:07
你哪里来的ProtocolBindingContext???

好好看一下passthru的例子,那里面已经保存过了,直接用就行了
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-05-15 17:32
哦!大意,错了,错了,mikeluo大哥教训的是
我想说的应该是
UDP_SEND(IN NDIS_HANDLE MiniportAdapterContext,, UDP_HEADER *pUdpHeader)
{
PADAPT pAdapt = (PADAPT)MiniportAdapterContext;
//...
}

这样可否?

,
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-05-15 17:43
你在UDP的驱动里面如何有的MiniportAdapterContext???一样没有的吖。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-05-15 17:47
难住了,一头雾水,NdisSend(...)该怎么用呢?
请指点指点!
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-05-15 17:58
mpsend是被ndissend调用的,他当然知道MiniportAdapterContext了。

你的函数不需要知道这些吖,padapter结构里面不是保存了那些相关的变量了么?你直接用就可以了吖。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-05-15 18:08
那NdisSend(...)中的三个参数怎么写啊

(不好意思,太笨,还是不太明白,能帮我写出里边的参数让我看看么?)

(不管怎样,先谢谢你了,给20分先,我再加了10分!麻烦再帮我指点指点)

[编辑 -  5/15/03 by  wangsj47]
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-05-15 21:04
passthru的例子里面不是就有么?
NdisSend(&Status, pAdapt->BindingHandle, MyPacket);
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-05-15 21:13
按这样来的话,是不是应该把
VOID UDP_SEND(UDP_HEADER *pUdpHeader)
{
//。。。
}
函数加在MPSend(...)所在的文件中定义了,是吧?

那我若是把它放在另外的一个.c文件中定义呢,该如何做呢?
就这样加进去好象不行吧。
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-05-15 21:22
你先仔细看看passthru的例子,那里面的padapter保存在一个全局链表里面,所以你在哪里都是可以使用的。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-05-15 21:27
恩,好,有你这话,我就有了十足的信心!
马上去看。。。
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
游客

返回顶部