阅读:2735回复:11
请教高手:如何在Passthru中获取本地IP地址
我想在Passthru中的注册协议期间或Query信息期间获取所绑定的网卡的IP地址,不知道有没有办法?我看DDK中有一个OID_GEN_NETWORK_LAYER_ADDRESSES的OID查询,但查询时返回的Status值不是Success。有请高手指点。
|
|
最新喜欢:txysp
|
沙发#
发布于: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); } } 请高手指教。 |
|
|
板凳#
发布于:2003-02-25 11:57
那就到requestcomplete里面去处理
|
|
|
地板#
发布于:2003-02-25 12:04
谢谢mike的关注,我获得的Status值是NDIS_STATUS_INVALID_OID,可能在requestcomplete中处理不行吧!
|
|
|
地下室#
发布于:2003-02-25 12:46
这个是步不行了,
看一下ddk里面对那些oid的声明,我也没有记住那个版本支持那些。 |
|
|
5楼#
发布于:2003-03-05 09:58
顶一下,不知道那位高手有没有别的办法实现?
|
|
|
6楼#
发布于:2003-03-06 09:49
我不知道,但我获得的Status值不是NDIS_STATUS_INVALID_OID
|
|
|
7楼#
发布于:2003-03-06 10:19
我认为可以从注册表中获得这些值,不用查Oid的方法了。
|
|
|
8楼#
发布于:2003-03-06 18:15
有wmi方法查得
好象DDK里有说对大多数OID都定义了类似UUID的系统常量,通过WMI啥方法可以得到 但这仍然没有解决,为什么在驱动里面不行的原因,呜 |
|
|
9楼#
发布于:2003-03-12 14:56
自己搞定了 :)
|
|
|
10楼#
发布于:2009-06-05 16:03
如何搞定的大牛,能告诉我以下吗,谢谢
|
|
11楼#
发布于:2009-09-15 23:25
我认为可以从注册表中获得这些值,不用查Oid的方法了。
|
|