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()が上記のパラメーターを受け入れることに同意しない理由はありますか?
ヒント、アイデア、洞察をいただければ幸いです。
ありがとう。