如何判断* MIB_IPFORWARDROW结构中哪个*成员无效?
呼叫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()不会同意接受上述参数?
提示,想法,见解将不胜感激。
谢谢。
我对IP路由没有任何了解,但documentation for MIB_IPFORWARDROW没有列出0作为dwForwardType的有效值。另外,documentation for CreateIpForwardEntry指示dwForwardProto必须是3(MIB_IPPROTO_NETMGMT)。
+1在文档中查找我无法找到的内容。我正在使用我的PSDK版本(Server 2003 R2)附带的文档版本,并且链接中的文档版本是最新和最好的版本。我会给你+10,但*只允许+1。 :)现在......我急于阅读并尝试你指出的内容,并试图理解为什么我无法发现那些信息(睡眠不足?)。如果是这样,我会报告回来并相应地接受。 – 2010-10-15 22:46:02
更新:我刚刚检查了PSDK Server 2003 R2文档:(1)我的确遗漏了旧版文档中提到的dwForwardType要求。 (2)无法找到MIB_IPPROTO_NETMGMT。我会尝试隐含的代码修复并回报。 – 2010-10-15 22:59:12
最终评论,允许接受这个答案,原来的问题是*如何*告诉...确定哪个参数不正确的最快捷方式是使用Windows命令ROUTE ADD在命令行上尝试它们。 – 2010-11-05 19:27:10