darkme
驱动牛犊
驱动牛犊
  • 注册日期2004-07-17
  • 最后登录2006-03-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1648回复:2

关于设置网卡混杂模式(新旧帖子)

楼主#
更多 发布于:2004-08-19 17:56
阅读完从论坛搜索中查询“混杂模式”之后得到的帖子。感觉有点郁闷,也许这是新人所必经的烦恼吧。

1、帖子中很大一部分的回复都说要去看\src\network\ndis\packet中的例子。虽然我努力的逼自己去看源代码,不过怀着侥幸心理,希望能够在论坛上找到别人写好的源代码。

2、终于让我翻出了http://www.driverdevelop.com/forum/viewthread.php?tid=9249和http://www.driverdevelop.com/forum/viewthread.php?tid=4736这两篇帖子。

3、既然有源码,那还不快动手。根据4763这篇帖子的代码,我加在了MiniportInitialize()中(代码同4763)。

4、既然别人成功了,我也沾沾光。哇~~~~~,不是吧,蓝屏!!!

为什么?为什么?肚子饿饿,吃饭先。

各位大侠和斑竹大人们,各位高手中的高手们,帮帮忙吧。如果你们已经做过这方面的东西,就来点源码吧。也许这样太“厚颜无耻”,也许这样算不上刻苦学习NDIS的典范,甚至不配称之为“学习”,可是,和所有关心这个问题的人一样,我也只想快点解决这个问题,我也不过只想少走一些弯路,甚至尽量不要让自己在迷惘中停留。

//--------------------
或许我真的应该自己去把源码看懂吧:)

最新喜欢:

qiyidiqiyidi
darkme
驱动牛犊
驱动牛犊
  • 注册日期2004-07-17
  • 最后登录2006-03-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-19 21:31
自己的问题自己办。居然调通了。
//----------------------------
//    说明:根据http://www.driverdevelop.com/forum/viewthread.php?tid=9249这篇帖子中的提示,我在PtBindAdapter中添加了如下的代码,使之工作在混杂模式下。

源代码如下:
//--------------------
//    声明变量
NDIS_STATUS myStatus;
PNDIS_REQUEST pRequest;
ULONG OidData = NDIS_PACKET_TYPE_PROMISCUOUS;
 ... (略)

//-------------
//    设置混杂模式
myStatus = NdisAllocateMemory(&pRequest, sizeof(NDIS_REQUEST), 0, HighestAcceptableMax);
if( myStatus != NDIS_STATUS_SUCCESS )
{
DbgPrint("Error: Can not allocate the Memory for NDIS_REQUEST!");
}
else
{
DbgPrint("Success: Allocate the Memory for NDIS_REQUEST!");
if( pRequest == NULL )
{
DBGPRINT("Can not allocate buffer for requestn");
}
else
{
DbgPrint("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(ULONG);
NdisRequest(&myStatus, pAdapt->BindingHandle, pRequest);
if(myStatus != NDIS_STATUS_PENDING)
{
if(pRequest)
{
DBGPRINT("Free request.n");
NdisFreeMemory(pRequest, sizeof(NDIS_REQUEST), 0);
}
}
else
{
DbgPrint("myStatus == NDIS_STATUS_PENDING");
}
}
//--------------------------------
//    我想这只能说我自己运气好吧:)
//    坦白的说,我并不是很明白其具体的工作机制,而且对于那些意外的情况也不懂得该如何处理。继续努力学习吧。
}
lsn_061
驱动老牛
驱动老牛
  • 注册日期2002-05-09
  • 最后登录2006-10-06
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望261点
  • 贡献值0点
  • 好评度169点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-20 08:11
好,继续,聊聊好么,lsn061@hotmail.com
[img]http://bbs.zndev.com/image/medal/5.gif[/img]
游客

返回顶部