edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3980回复:36

关于调用 NdisRequest() 查询网卡 MAC 地址导致蓝屏的问题?[150 分]

楼主#
更多 发布于:2002-12-16 21:13
为了能让大家明白我的问题从而更快的给我建议我尽量把问题说清楚一点:

我改写的是 XP 版的 Passthru,用于 2000 中。我的目的是想要查询我的 IMD 绑定的网卡的 MAC 地址,于是我在 MPInitialize() 的结尾部分写了如下代码:
pAdapt->Request.RequestType = NdisRequestQueryInformation;
pAdapt->Request.DATA.QUERY_INFORMATION.Oid = OID_802_3_CURRENT_ADDRESS;
pAdapt->Request.DATA.QUERY_INFORMATION.InformationBuffer = pAdapt->MACAddress;
pAdapt->Request.DATA.QUERY_INFORMATION.InformationBufferLength = 6;
pAdapt->Request.DATA.QUERY_INFORMATION.BytesWritten = 0;
pAdapt->Request.DATA.QUERY_INFORMATION.BytesNeeded = 0;
NdisRequest( &Status, pAdapt->BindingHandle, &pAdapt->Request );

Request 就定义在原来的 ADAPT 结构中:
NDIS_REQUEST Request;

但是现在程序会因此蓝屏,我把上面代码放在 PtOpenAdapterComplete() 中也是一样。

希望各路高手帮忙,还要提供什么信息尽管问,谢谢大家!!!

最新喜欢:

txysptxysp
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-16 21:18
有没有分配空间?

还有换个地方?

MPInitialize的时候还没有binding到网卡呢吧
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-16 21:21
严重怀疑的的PNDIS_REQUEST没有分配空间
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-16 21:22
 
有没有分配空间?


你是说 pAdapt->MACAddress ?
CHAR MACAddress[6];

 
还有换个地方?
MPInitialize的时候还没有binding到网卡呢吧


可是 MPInitialize 是在 NdisOpenAdapter 之后被调用的啊,应该已经绑定了吧?
那换在哪里好呢?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-16 21:25
可我的 Request 是个变量啊,不是指针,还要分配空间?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-16 21:29
蓝屏的信息是什么 IRQL_NOT_EQUAL_OR_LESSTHAN

还有就是在 PtRequestComplete 里面用不用特别处理?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-16 21:35
先注册的设备,后注册的协议,注册了协议以后才binding到adapter,
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-16 21:40
你运行的时候IRQL太高,降低到<= DISPATCH_LEVEL
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-16 21:44
你试试用局部的Request呢?
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-12-16 21:46
IRQL好象不高,不是在PASSIVE_LEVEL上吗?怎么会呢?
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-12-16 22:07
 
你试试用局部的Request呢?


局部和全局也会影响吗?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-12-16 22:07
 
你运行的时候IRQL太高,降低到<= DISPATCH_LEVEL


应该是在 PASSIVE_LEVEL 上啊
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-12-16 22:33
你用windbg双机调试一下。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-12-16 23:04
又这么热闹了 :D
[color=red]大头鬼! :P[/color]
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-12-17 09:01
 
你用windbg双机调试一下


这样在蓝屏的时候就可以知道原因了?呵呵还从来没用过呢:)
zenghao
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2010-04-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-12-17 09:08
是否应该把你的代码放在MPQueryInformation中试一试?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-12-17 09:09
 
是否应该把你的代码放在MPQueryInformation中试一试?


你的意思是每当上层调用 MPQueryInformation,我就查一次吗?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-12-17 09:23
你是在注册协议之前查询的还是注册以后查询的?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-12-17 09:32
 
你是在注册协议之前查询的还是注册以后查询的?


是在之后啊,我现在是在 MPInitialize 的末尾查询,协议已经注册了。
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-12-17 09:50
应该在openadapter成功以后才去查询
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
上一页
游客

返回顶部