阅读:1922回复:16
怎样让我的网卡接收到所有“流”过它的包?
在没有安装一个网络应用程序的时候,我的网卡只能收到包头部目的物理地址为FF-FF-FF-FF-FF-FF和我的物理地址的包,
而在安装那个程序以后,就能收到其它一些物理地址的包,请问:我怎样才能设置我的网卡可以接收所有“流”过的包,不把其它的物理地址过滤掉? 谢谢! 在线等待。。。 |
|
最新喜欢:![]() |
沙发#
发布于:2003-07-21 10:13
将网卡设为混杂模式
|
|
|
板凳#
发布于:2003-07-21 10:24
怎样设呢?
|
|
地板#
发布于:2003-07-21 10:32
请问你是用什么走.如果是SOCKET RAW的话,很简单
如果NDIS的话,发OID,论坛里有很多这样的帖子 :) |
|
|
地下室#
发布于:2003-07-21 10:38
可以二种都简单介绍一下吗?谢谢了
|
|
5楼#
发布于:2003-07-21 10:55
第一种方法.网上到处时,.
第二种方法: 设置混杂模式,只需要向miniport发送一个ndisrequest。 可以在核心态符合irql的任何地方发送这个request. OidData = NDIS_PACKET_TYPE_PROMISCUOUS; pRequest->RequestType=NdisRequestSetInformation; pRequest->DATA.SET_INFORMATION.Oid=OID_GEN_CURRENT_PACKET_FILTER; pRequest->DATA.SET_INFORMATION.InformationBuffer=OidData; pRequest->DATA.SET_INFORMATION.InformationBufferLength=sizeof(ULONG); NdisRequest(&Sts,pAdapt->BindingHandle,pRequest); //记得释放内存 |
|
|
6楼#
发布于:2003-07-22 09:50
我试了,不行啊,机器非法重启了,
要分配空间给pRequset吗?怎样分配? 能给我帖一些完整的代码吗? 谢谢了! |
|
7楼#
发布于:2003-07-22 10:04
我试了,不行啊,机器非法重启了, 要分配空间给pRequset吗?怎样分配? //用exallocatepool申请 能给我帖一些完整的代码吗? 完整的代码我现在手头没有.你随便找找,到处都有 |
|
|
8楼#
发布于:2003-07-22 10:09
我用exallocatepool申请,也包含了<ntddk.h>但编译说exallocatepool没定义,怎么回事呢?
|
|
9楼#
发布于:2003-07-22 10:19
我在文章搜索里找到了有关文章,谢谢了!
|
|
10楼#
发布于:2003-07-22 10:21
这偶就不明白了
你去参考一下DDK下packet下的哪个“李子”吧 |
|
|
11楼#
发布于:2003-07-22 10:21
这偶就不明白了
你去参考一下DDK下packet下的哪个“李子”吧 :D :D |
|
|
12楼#
发布于:2003-07-23 10:06
我把下面一段代码分别加在了MPInitialize()和PtBindAdapter()后面,编译后没有错误,但在添加了这个SYS后,就非法重启,然后蓝屏,我只得进安全模式停止设备,然后在重启,现在没办法了,好欲闷!不知道是哪里错了,请高人指教,谢谢了!
oiddata=NDIS_PACKET_TYPE_PROMISCUOUS; pRequest=ExAllocatePool(NonPagedPool,sizeof(NDIS_REQUEST)); if(NULL==pRequest) { DBGPRINT(\"Can not allocate buffer for requestn\"); } pRequest->RequestType=NdisRequestSetInformation; pRequest->DATA.SET_INFORMATION.Oid=OID_GEN_CURRENT_PACKET_FILTER; pRequest->DATA.SET_INFORMATION.InformationBuffer=&oiddata; pRequest->DATA.SET_INFORMATION.InformationBufferLength=sizeof(NDIS_OID); NdisRequest(&st,pAdapt->BindingHandle,pRequest); if(st!=NDIS_STATUS_PENDING) { if(pRequest){ DBGPRINT(\"Free request\\n\"); ExFreePool(pRequest); } } |
|
13楼#
发布于:2003-07-23 10:38
不要在那两个地方做这个工作,兰屏应该是一定的了。
换个地方。mpsetinformation里面。 |
|
|
14楼#
发布于:2003-07-23 11:12
谢谢
|
|
15楼#
发布于:2004-07-27 11:22
我在mpsetinformation()下加入以下代码,编译可以通过,但是一安装系统就自己重启了,在重新启动后,显示驱动程序不正确
oiddata = 100; pAdapt->Request.RequestType=NdisRequestSetInformation; pAdapt->Request.DATA.SET_INFORMATION.Oid= OID_GEN_MAXIMUM_SEND_PACKETS; pAdapt->Request.DATA.SET_INFORMATION.InformationBuffer = &oiddata; pAdapt->Request.DATA.SET_INFORMATION.InformationBufferLength = sizeof(int); pAdapt->BytesNeeded = BytesNeeded; pAdapt->BytesReadOrWritten = BytesRead; pAdapt->OutstandingRequests = TRUE; NdisRequest(&Status, pAdapt->BindingHandle, &pAdapt->Request); 那位能告诉我这是怎么回事呀 |
|
16楼#
发布于:2004-07-28 10:48
上面的问题已经解决了,但是返回的Status是NDIS_STATUS_PENDING,这是什么原因?
|
|