right_wind
驱动中牛
驱动中牛
  • 注册日期2001-10-12
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分60分
  • 威望66点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2735回复:11

请教高手:如何在Passthru中获取本地IP地址

楼主#
更多 发布于:2003-02-25 11:55
我想在Passthru中的注册协议期间或Query信息期间获取所绑定的网卡的IP地址,不知道有没有办法?我看DDK中有一个OID_GEN_NETWORK_LAYER_ADDRESSES的OID查询,但查询时返回的Status值不是Success。有请高手指点。

最新喜欢:

txysptxysp
good good study, day day up。
right_wind
驱动中牛
驱动中牛
  • 注册日期2001-10-12
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分60分
  • 威望66点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-02-25 11:57
我写的函数代码如下:
VOID
GetLocalIPAddr(
OUT IPAddr *ipAddr,
IN PADAPT pAdapt
)
{
NDIS_REQUEST ndisRequest;
NDIS_STATUS status;
NETWORK_ADDRESS_LIST *net_addr_list;

status = NdisAllocateMemoryWithTag(&net_addr_list, 200, TAG);
if(status == NDIS_STATUS_SUCCESS )
{
ndisRequest.RequestType = NdisRequestQueryInformation;
ndisRequest.DATA.QUERY_INFORMATION.Oid = OID_GEN_NETWORK_LAYER_ADDRESSES;
ndisRequest.DATA.QUERY_INFORMATION.InformationBuffer = net_addr_list;
ndisRequest.DATA.QUERY_INFORMATION.InformationBufferLength = 200;
ndisRequest.DATA.QUERY_INFORMATION.BytesWritten = 0;
ndisRequest.DATA.QUERY_INFORMATION.BytesNeeded = 0;

NdisRequest(&status, pAdapt->BindingHandle, &ndisRequest);
DBGPRINT(\"--- GetLocalIPAddr --- \");
DbgPrint(\" status = 0x%lx \\n\", status);

NdisFreeMemory(net_addr_list, 200, TAG);
}
}
请高手指教。
good good study, day day up。
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-25 11:57
那就到requestcomplete里面去处理
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
right_wind
驱动中牛
驱动中牛
  • 注册日期2001-10-12
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分60分
  • 威望66点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-02-25 12:04
谢谢mike的关注,我获得的Status值是NDIS_STATUS_INVALID_OID,可能在requestcomplete中处理不行吧!
good good study, day day up。
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-25 12:46
这个是步不行了,

看一下ddk里面对那些oid的声明,我也没有记住那个版本支持那些。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
right_wind
驱动中牛
驱动中牛
  • 注册日期2001-10-12
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分60分
  • 威望66点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2003-03-05 09:58
顶一下,不知道那位高手有没有别的办法实现?
good good study, day day up。
ooze
驱动牛犊
驱动牛犊
  • 注册日期2001-09-26
  • 最后登录2004-03-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-06 09:49
我不知道,但我获得的Status值不是NDIS_STATUS_INVALID_OID
Be a true hacker of Windows NT alike
right_wind
驱动中牛
驱动中牛
  • 注册日期2001-10-12
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分60分
  • 威望66点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2003-03-06 10:19
我认为可以从注册表中获得这些值,不用查Oid的方法了。
good good study, day day up。
ooze
驱动牛犊
驱动牛犊
  • 注册日期2001-09-26
  • 最后登录2004-03-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-03-06 18:15
有wmi方法查得
好象DDK里有说对大多数OID都定义了类似UUID的系统常量,通过WMI啥方法可以得到

但这仍然没有解决,为什么在驱动里面不行的原因,呜
Be a true hacker of Windows NT alike
right_wind
驱动中牛
驱动中牛
  • 注册日期2001-10-12
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分60分
  • 威望66点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2003-03-12 14:56
自己搞定了 :)
good good study, day day up。
byssx752
驱动牛犊
驱动牛犊
  • 注册日期2008-06-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2009-06-05 16:03
如何搞定的大牛,能告诉我以下吗,谢谢
xu5ei
驱动牛犊
驱动牛犊
  • 注册日期2008-10-03
  • 最后登录2009-09-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2009-09-15 23:25
我认为可以从注册表中获得这些值,不用查Oid的方法了。
游客

返回顶部