0

调用CreateIpForwardEntry返回 ERROR_INVALID_PARAMETER。PSDK 文档将此错误描述为:

pRoute 参数为 NULL,SetIpForwardEntry 无法从 pRoute 指向的内存中读取,或者 MIB_IPFORWARDROW 结构的成员之一无效。

我确定 pRoute 不为 NULL 并且不涉及对 SetIpForwardEntry 的调用,这使得错误的唯一原因是“MIB_IPFORWARDROW 结构的成员之一无效”。

我如何知道MIB_IPFORWARDROW 的哪些成员无效?

为了进一步澄清我的问题:我确切地知道这些成员中的每一个都有什么价值(我记录它们)。然而,在这一点上,我无法判断哪个是不正确的。它们对我来说都是有效的。很高兴知道为什么其中一名成员无效。但为此,我首先需要知道其中哪些是无效的。

例如,在其中一个测试用例(产生上述错误)中,我有:

dwForwardDest = 199.239.136.200
dwForwardMask = 255.255.255.255
dwForwardPolicy = 0
dwForwardNextHop = 127.0.0.1
dwForwardIfIndex = 1
dwForwardType = 0
dwForwardProto = 0X2
dwForwardAge = 0
dwForwardNextHopAS = 0
dwForwardMetric1 =  1
dwForwardMetric2 =  -1
dwForwardMetric3 = -1
dwForwardMetric4 = -1
dwForwardMetric5 = 0

知道为什么 CreateIpForwardEntry() 不同意接受上述参数吗?

更新:下面提供的提示非常有用,但并没有真正提供如何判断MIB_IPFORWARDROW 结构中的哪个成员无效的方法。我确实纠正了提到的两个成员,但问题仍然存在:

Dest = 199.239.136.200
Mask = 255.255.255.255
Policy = 0
NextHop = 127.0.0.1
IfIndex = 1
Type = 0X3
Proto = 0X3
Age = 0
NextHopAS = 0
Metric1 = 1
Metric2 = -1
Metric3 = -1
Metric4 = -1
Metric5 = -1

知道为什么 CreateIpForwardEntry() 不同意接受上述参数吗?

提示,想法,见解将不胜感激。

谢谢。

4

1 回答 1

1

我对 IP 路由一无所知,但MIB_IPFORWARDROW 的文档没有将 0 列为 dwForwardType 的有效值。此外,CreateIpForwardEntry 的文档表明 dwForwardProto 必须为 3 (MIB_IPPROTO_NETMGMT)。

于 2010-10-15T18:09:44.477 回答