0

CreateIpForwardEntryを呼び出すと、 ERROR_INVALID_PARAMETERが返されます。PSDKのドキュメントでは、このエラーを次のように説明しています。

pRouteパラメータがNULLであるか、SetIpForwardEntryがpRouteが指すメモリから読み取ることができないか、MIB_IPFORWARDROW構造体のメンバーの1つが無効です。

pRouteがNULLではなく、SetIpForwardEntryの呼び出しが含まれていないことは確かです。これにより、「MIB_IPFORWARDROW構造体のメンバーの1つが無効です」というエラーの唯一の原因が残ります。

MIB_IPFORWARDROWのどのメンバーが無効であるかを知るはどうすればよいですか?

私の質問をさらに明確にするために:私はこれらのメンバーのそれぞれがどのような価値を持っているかを正確に知っています(私はそれらを記録します)。ただし、現時点では、どちらが間違っているかわかりません。それらはすべて私には有効に見えます。メンバーの1人が無効である理由を知っておくと便利です。しかし、そのためには、最初にそれらのどれが無効であるかを知る必要があります。

たとえば、テストケースの1つ(前述のエラーが発生する)では、次のようになります。

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構造体のどのメンバーが無効であるかを判断する方法を実際には提供していませんでした。上記の2つのメンバーを修正しましたが、問題は解決しません。

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のドキュメントには、dwForwardTypeの有効な値として0が記載されていません。また、CreateIpForwardEntryのドキュメントには、dwForwardProtoは3(MIB_IPPROTO_NETMGMT)でなければならないことが示されています。

于 2010-10-15T18:09:44.477 に答える