如何告诉* MIB_IPFORWARDROW结构中哪个*成员无效?

时间:2010-10-15 01:39:52

标签: windows winapi routing network-programming platform-sdk

调用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()不同意接受上述参数?

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

感谢。

1 个答案:

答案 0 :(得分:1)

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