2010-10-15 3 views
0

Вызов CreateIpForwardEntry возвращает ERROR_INVALID_PARAMETER. Документация PSDK описывает эту ошибку как:Как указать *, который * член в структуре MIB_IPFORWARDROW недействителен?

Параметр 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() не согласились бы принять вышеуказанные параметры?

Подсказки, идеи, идеи были бы оценены.

Спасибо.

ответ

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. :) Теперь ... Я спешу читать и пробовать то, на что вы указали мне, и попытаться понять, почему я не смог определить эту информацию (лишение сна?). Я отчитаю, если это было так, и отметьте принятые соответственно. –

+0

Обновление: я просто проверил документацию PSDK Server 2003 R2: (1) Я действительно пропустил требование dwForwardType, о котором говорится в старой документации. (2) MIB_IPPROTO_NETMGMT нигде не встречается. Я попытаюсь исправить исправления кода и отчитаться. –

+0

Заключительный комментарий, который позволяет принять этот ответ, поскольку исходный вопрос был * Как * сказать ...Самый быстрый способ определить, какой из параметров неверен, - попробовать их в командной строке, используя команду Windows ROUTE ADD. –