2010-10-15 155 views
0

呼叫CreateIpForwardEntry返回ERROR_INVALID_PARAMETER。所述PSDK文档描述误差为:如何判断* MIB_IPFORWARDROW结构中哪个*成员无效?

的pRoute参数为NULL, SetIpForwardEntry无法读取 从存储器所指向的pRoute, 或 MIB_IPFORWARDROW结构的构件中的一个是无效的。

我肯定知道pRoute不为空,并且以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

我对IP路由没有任何了解,但documentation for MIB_IPFORWARDROW没有列出0作为dwForwardType的有效值。另外,documentation for CreateIpForwardEntry指示dwForwardProto必须是3(MIB_IPPROTO_NETMGMT)。

+0

+1在文档中查找我无法找到的内容。我正在使用我的PSDK版本(Server 2003 R2)附带的文档版本,并且链接中的文档版本是最新和最好的版本。我会给你+10,但StackOverflow只允许+1。 :)现在......我急于阅读并尝试你指出的内容,并试图理解为什么我无法发现那些信息(睡眠不足?)。如果是这样,我会报告回来并相应地接受。 – 2010-10-15 22:46:02

+0

更新:我刚刚检查了PSDK Server 2003 R2文档:(1)我的确遗漏了旧版文档中提到的dwForwardType要求。 (2)无法找到MIB_IPPROTO_NETMGMT。我会尝试隐含的代码修复并回报。 – 2010-10-15 22:59:12

+0

最终评论,允许接受这个答案,原来的问题是*如何*告诉...确定哪个参数不正确的最快捷方式是使用Windows命令ROUTE ADD在命令行上尝试它们。 – 2010-11-05 19:27:10

相关问题