阅读:2060回复:13
帮助:passthru中获取本机的MAC地址时的问题
我想在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); |
|
沙发#
发布于:2007-12-07 13:10
NdisReadNetworkAddress例程应该在MPInitialize中调用吧?但为何我调后返回值是NDIS_STATUS_FAILED?用Windbg跟后,在RtlQueryRegistryValues函数返回失败,难道此时网卡为绑定,那我应该在何时调?
|
|
板凳#
发布于:2007-12-08 15:46
同问
|
|
地板#
发布于:2007-12-10 10:18
高人快点帮帮忙,谢谢!
|
|
地下室#
发布于:2007-12-10 15:45
引用第1楼fanny8102于2007-12-07 13:10发表的 : 不知道楼主可以帮忙给点关于配置windbg调试passthru的方法的资料么,就是配置windbg的过程。或者大概说说过程也可以,万分感激。 ![]() |
|
|
5楼#
发布于:2007-12-28 16:44
同4楼
我总是拦不住 断点总是设不了 |
|
6楼#
发布于:2008-01-03 17:25
可能是你前面有个 UNREFERENCED_PARAMETER 吧?
是不是这个问题 按说应该没问题 你去掉这个呢? |
|
7楼#
发布于:2008-01-08 12:59
我的程序中没有UNREFERENCED_PARAMETER 。
还有没有其他原因? |
|
8楼#
发布于:2008-01-08 13:03
to 四五楼:
Debug的配置方法在他的帮助文档中说得很明了,你么按它的方法做就行! |
|
9楼#
发布于:2008-01-23 13:35
大哥 你这帖子好久了。。。还没有答案啊。。偶也想知道
|
|
10楼#
发布于:2008-01-23 13:36
我跟你的方法差不多 , 也用的这函数 。不过我是能取到, 取到的是空。。返回的啥的都是正确。。。现在跟应用层通信 , 取mac..也凑合着呢。。。就等哪高人 路过 点播一下 ,我就在更新版本中 给他改了。。
|
|
11楼#
发布于:2008-01-25 14:54
帖子是发了很久了,就是没高人指点!
我用此方法不行,就改用查询IRP来获得MAC地址了,但还是想知道此方法是如何来获得MAC的。 请求高人指点! |
|
12楼#
发布于:2008-01-28 15:14
直接截获或发送OID_802_3_CURRENT_ADDRESS请求就行了
在ptrequestcomplete中 |
|
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); } |
|