阅读:4632回复:13
请教Passthru如何修改数据包、发送自定义包
以前一直做用户态下的Windows系统程序开发,发现不涉及内核驱动,就谈不上真正的系统编程。这段时间尝试着看了一下NDIS相关的东西,看得是一头雾水,在驱网的这个论坛也浏览了很多贴子,发现很多新手聚焦的两个问题就是 “如何在IMD修改数据包” 和 “如何发送自定义的数据包” ,各位大侠给出的提示也是只言片语,零零碎碎。请哪位有经验的老大不吝赐教,稍微系统地介绍一下,为各位新手指点指点迷津。叩谢叩谢!
|
|
最新喜欢:123abc |
沙发#
发布于:2007-03-23 14:46
顶.我现在就是被这个问题困扰着.
|
|
板凳#
发布于:2007-03-24 13:05
DDK例子里有源代码的,看一下就清楚了
|
|
地板#
发布于:2007-03-26 13:31
恳请楼上的指点,是哪个例子啊?
|
|
地下室#
发布于:2007-03-27 12:12
passthru
|
|
5楼#
发布于:2007-03-28 18:46
如何把UCHAR buf[100]中的内容弄到NDIS_BUFFER中?
|
|
6楼#
发布于:2007-03-31 13:20
NidsAllocateBuffer函数可以实现
|
|
|
7楼#
发布于:2007-03-31 13:20
最好把passthru例子通读一下
理解每个函数的意义所在 |
|
|
8楼#
发布于:2007-04-02 15:23
用NdisAllocateBuffer之前必须调用NdisAllocateBufferPool(),但在PtDispatch()相应CASE语包中调用NdisAllocateBufferPool()会导致系统蓝屏.
|
|
9楼#
发布于:2007-04-03 08:42
NdisAllocateBufferPool可以在driver入口初始化
|
|
|
10楼#
发布于:2007-04-03 11:35
呵呵,谢谢!
|
|
11楼#
发布于:2007-04-03 16:11
我根据<<网络驱动程序设计>>介绍的方法
调用以下NDIS函数分配上面所要求的缓冲区: 1. 用NdisAllocateBufferPool 获取用于分配缓冲区描述符的句柄; 2. 用NdisAllocateMemory或NdisAllocateMemoryWithTag分配缓冲区; 3. 用NdisAllocateBuffer 分配和设置缓冲区描述符, 映射由 NdisAllocateMemory(WithTag)分配的缓冲区,并链接到NdisAllocatePacket分配的包 描述符上。 但当调用NdisSend()函数时,机子蓝屏,出错码Stop: 0x000000D1(....) NDIS.SYS 我感觉是NDIS_PACKET结构填充有问题. 知道的请提示下. |
|
12楼#
发布于:2007-04-06 09:18
我现在已经做到能够封装(修改)发送的数据包了,比如,从192。168。7。146中,发往192。168。7。148的所有TCP数据包中添加“1234567890”,然后,在192。168。7。148的接收处理例程(PtReceivePacket)中接收到后,能够解出“1234567890”。
但是,在PtReceivePacket中重新组织原始包并调用“NdisMIndicateReceivePacket”往上传时,好象就有问题了,请哪位大牛指点一下。等到整个过程都走通了,我就把代码贴出来。新手学NDIS真的好艰难啊。 尤其是想请教:在NDIS中,Send和Recieve的相关例程的调用顺序、过程,以及各例程的作用。 叩谢各位大老不吝赐教! |
|
13楼#
发布于:2007-05-07 13:38
在passthru中miniport的MPSendPackets函数中可以捕获所有要发送的分组,对其中的MyPacket进行操作就可以了
|
|