【问题标题】:How to tell *which* member in MIB_IPFORWARDROW structure is invalid?如何判断 MIB_IPFORWARDROW 结构中的 *which* 成员无效?
【发布时间】:2010-10-15 01:39:51
【问题描述】:

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

我们将不胜感激提示、想法和见解。

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • +1 用于在文档中查找我无法找到的内容。我正在使用我的 PSDK 版本(Server 2003 R2)附带的文档版本,并且您的链接中的版本是最新和最好的。我会给你 +10,但 StackOverflow 只允许 +1。 :) 现在...我急于阅读并尝试您指出的内容,并尝试了解为什么我无法发现该信息(睡眠不足?)。如果是这样,我会报告并相应地标记接受。
    • 更新:我刚刚检查了 PSDK Server 2003 R2 文档:(1) 我确实错过了旧文档中提到的 dwForwardType 要求。 (2) MIB_IPPROTO_NETMGMT 无处可寻。我会尝试隐含的代码修复并报告。
    • 允许接受此答案的最终评论,因为原始问题是如何告诉...确定哪些参数不正确的最快方法是尝试它们命令行,使用 Windows 命令 ROUTE ADD。
    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2019-04-15
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    相关资源
    最近更新 更多