fanny8102
驱动牛犊
驱动牛犊
  • 注册日期2006-05-17
  • 最后登录2011-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望24点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
阅读:2060回复:13

帮助:passthru中获取本机的MAC地址时的问题

楼主#
更多 发布于:2007-12-06 16:23
        我想在Passthru中获取本机的MAC地址,我知道有两种方法:第一种是通过NdisRequest来获得;第二种是通过NdisReadNetworkAddress函数来获得。
        我采用的第二种方法,在MPInitalize例程中,调用下列代码,但 Status却返回NDIS_STATUS_FAILED,这是为何?
            NdisOpenConfiguration(&Status,&ConfigurationHandle,WrapperConfigurationContext);
    if(Status == NDIS_STATUS_SUCCESS)
    {
        NdisReadNetworkAddress( &Status,(PVOID)&NetworkAddress ,&NetworkAddressLength ,ConfigurationHandle);
        DbgPrint("Status is 0x%x\n",Status);
        DbgPrint("NetworkAddressLength is %d\n",NetworkAddressLength);
        for(i= 0;i<NetworkAddressLength ; i++)
        {
            DbgPrint("NetworkAddress[%d] is 0x%x\n",i,NetworkAddress);
        }
    }
    else
        DbgPrint("NdisOpenConfigration is Failed, Status is 0x%x\n",Status);

    if( ConfigurationHandle!=NULL)
        NdisCloseConfiguration(ConfigurationHandle);
fanny8102
驱动牛犊
驱动牛犊
  • 注册日期2006-05-17
  • 最后登录2011-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望24点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-12-07 13:10
NdisReadNetworkAddress例程应该在MPInitialize中调用吧?但为何我调后返回值是NDIS_STATUS_FAILED?用Windbg跟后,在RtlQueryRegistryValues函数返回失败,难道此时网卡为绑定,那我应该在何时调?
zz123439
驱动牛犊
驱动牛犊
  • 注册日期2007-11-21
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分341分
  • 威望45点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-12-08 15:46
同问
fanny8102
驱动牛犊
驱动牛犊
  • 注册日期2006-05-17
  • 最后登录2011-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望24点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-12-10 10:18
高人快点帮帮忙,谢谢!
poor shusheng
驱动牛犊
驱动牛犊
  • 注册日期2006-09-04
  • 最后登录2011-10-13
  • 粉丝0
  • 关注0
  • 积分540分
  • 威望55点
  • 贡献值0点
  • 好评度54点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-12-10 15:45
引用第1楼fanny8102于2007-12-07 13:10发表的  :
NdisReadNetworkAddress例程应该在MPInitialize中调用吧?但为何我调后返回值是NDIS_STATUS_FAILED?用Windbg跟后,在RtlQueryRegistryValues函数返回失败,难道此时网卡为绑定,那我应该在何时调?

不知道楼主可以帮忙给点关于配置windbg调试passthru的方法的资料么,就是配置windbg的过程。或者大概说说过程也可以,万分感激。
挥剑问情...
xiaoks46
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2011-06-22
  • 粉丝0
  • 关注0
  • 积分501分
  • 威望170点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-12-28 16:44
同4楼
我总是拦不住
断点总是设不了
yellowzzp
驱动小牛
驱动小牛
  • 注册日期2007-07-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1015分
  • 威望131点
  • 贡献值0点
  • 好评度117点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-01-03 17:25
可能是你前面有个  UNREFERENCED_PARAMETER 吧?
是不是这个问题

按说应该没问题 你去掉这个呢?
fanny8102
驱动牛犊
驱动牛犊
  • 注册日期2006-05-17
  • 最后登录2011-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望24点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-01-08 12:59
我的程序中没有UNREFERENCED_PARAMETER 。
还有没有其他原因?
fanny8102
驱动牛犊
驱动牛犊
  • 注册日期2006-05-17
  • 最后登录2011-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望24点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-01-08 13:03
to 四五楼:
         Debug的配置方法在他的帮助文档中说得很明了,你么按它的方法做就行!
yellowzzp
驱动小牛
驱动小牛
  • 注册日期2007-07-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1015分
  • 威望131点
  • 贡献值0点
  • 好评度117点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-01-23 13:35
大哥 你这帖子好久了。。。还没有答案啊。。偶也想知道
yellowzzp
驱动小牛
驱动小牛
  • 注册日期2007-07-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1015分
  • 威望131点
  • 贡献值0点
  • 好评度117点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-01-23 13:36
我跟你的方法差不多 , 也用的这函数  。不过我是能取到, 取到的是空。。返回的啥的都是正确。。。现在跟应用层通信 , 取mac..也凑合着呢。。。就等哪高人 路过 点播一下  ,我就在更新版本中 给他改了。。
fanny8102
驱动牛犊
驱动牛犊
  • 注册日期2006-05-17
  • 最后登录2011-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望24点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2008-01-25 14:54
    帖子是发了很久了,就是没高人指点!
  我用此方法不行,就改用查询IRP来获得MAC地址了,但还是想知道此方法是如何来获得MAC的。
请求高人指点!
plgundam
驱动牛犊
驱动牛犊
  • 注册日期2007-09-17
  • 最后登录2011-03-18
  • 粉丝1
  • 关注0
  • 积分11分
  • 威望79点
  • 贡献值0点
  • 好评度40点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2008-01-28 15:14
直接截获或发送OID_802_3_CURRENT_ADDRESS请求就行了
在ptrequestcomplete中
wollok
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2012-07-18
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望335点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2008-05-25 08:10
都不用自己去查询,因为Windows每次初始化都要查询MAC地址的。
直接在PtRequestComplete中处理就是,我在里面加了下面几行
    switch (NdisRequest->RequestType)
    {
      case NdisRequestQueryInformation:


        //    如果是查询MAC地址
        if ((Oid == OID_802_3_CURRENT_ADDRESS) && (Status == NDIS_STATUS_SUCCESS))
        {    //    复制MAC地址到缓冲区
            memcpy(&pAdapt->bMAC,NdisRequest->DATA.QUERY_INFORMATION.InformationBuffer,6);
        }
游客

返回顶部