阅读:1660回复:4
各位老大我想用NDIS中间层驱动拦截NDISWAN的数据。
请问如何修改PASSTHRU才能够满足要求
我看过扩展的 PASSTHRU中只多了这么几项: 1,在PASSTHRU.C中定义 NDIS_MEDIUM MediumArray[4] = { NdisMedium802_3, // Ethernet NdisMedium802_5, // Token-ring NdisMediumFddi, // Fddi NdisMediumWan // NDISWAN }; 2,在MINIPORT.C中MPInitialize中有 if (Medium == NdisMediumWan) { Medium = NdisMedium802_3; } 3,在protocal.c中PtReceive中有: switch (pAdapt->Medium) { case NdisMedium802_3: case NdisMediumWan: NdisMEthIndicateReceive(pAdapt>MiniportHandle, MacReceiveContext,HeaderBuffer, HeaderBufferSize,LookAheadBuffer,LookAheadBufferSize, PacketSize); 除此之外还有没有和普通的PASSTHRU不同的地方,或要修改的地方? 请各位大侠门指教。 谢谢!!!!!!!!!!!!!!!!!!!!1 |
|
沙发#
发布于:2004-06-03 12:27
没有了。但处理包要注意:
MiniportWanSend和MiniportSend等函数的区别。 |
|
板凳#
发布于:2004-06-03 13:09
谢谢ASMSYS回答,还有个疑问:
当PACKET为NULL的时候 为什么NdisMedium802_3: 和 NdisMediumWan 都用NdisMEthIndicateReceive来向上指示? NdisMediumWan为什么不用NdisMWanIndicateReceive来指派? |
|
地板#
发布于:2004-06-03 13:42
这是NDIS。H的定义:
#define NdisMWanIndicateReceive(_S_, _M_, _C_, _P_, _Z_) \\ (*((PNDIS_MINIPORT_BLOCK)(_M_))->WanRcvHandler)(_S_, _M_, _C_, _P_, _Z_) 但xpddk的passthru在注册协议的时候没有注册WanRcvHandler。 既然微软这么做,肯定是没问题的。 |
|
地下室#
发布于:2004-06-04 13:36
ndiswan本身已经屏蔽了wan设备的操作,对于协议层来说,ndiswan和其他的802.3的miniport是一样的,不需要关注那些wan相关的操作,向ndiswan发包只需要nidssend。
|
|
|