CreateIpForwardEntry2 函式 (netioapi.h)
CreateIpForwardEntry2 函式會在本機計算機上建立新的IP路由專案。
語法
IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API CreateIpForwardEntry2(
[in] const MIB_IPFORWARD_ROW2 *Row
);
參數
[in] Row
IP 路由專案的 MIB_IPFORWARD_ROW2 結構專案的指標。
傳回值
如果函式成功,傳回值會NO_ERROR。
如果函式失敗,傳回值就是下列其中一個錯誤碼。
傳回碼 | Description |
---|---|
|
存取遭到拒絕。 此錯誤會在數種狀況下傳回:使用者缺少本機電腦上的必要系統管理許可權,或應用程式未在增強殼層中執行,因為內建系統管理員 (RunAs 系統管理員) 。 |
|
無效的參數已傳遞至 函式。 如果未指定 Row 參數所指向之數據列參數所指向之MIB_IPFORWARD_ROW2的 DestinationPrefix 成員、Row 參數所指向之 MIB_IPFORWARD_ROW2 MIB_IPFORWARD_ROW2的 NextHop 成員、未指定 Row 參數所指向的InterfaceLuid 或 InterfaceIndex 成員,則會傳回此錯誤參數未指定。 如果MIB_IPFORWARD_ROW2中指定的 PreferredLifetime 成員大於 ValidLifetime 成員,或是MIB_IPFORWARD_ROW2中的 SitePrefixLength 大於 DestinationPrefix 中指定的前置長度,也會傳回此錯誤。 |
|
找不到指定的介面。 如果找不到 Row 參數所指向之MIB_IPNET_ROW2的 InterfaceLuid 或 InterfaceIndex 成員所指定的網路介面,就會傳回此錯誤。 |
|
不支援此要求。 如果指定的介面不支援路由,就會傳回此錯誤。 如果本機計算機上沒有IPv4堆棧,而且在Row參數所指向之 MIB_IPFORWARD_ROW2的 DestinationPrefix 成員的 address 系列中指定了AF_INET,也會傳回此錯誤。 如果本機計算機上沒有IPv6堆棧,而且已針對 DestinationPrefix 成員中的位址系列指定AF_INET6,也會傳回此錯誤。 |
|
物件已存在。 如果 Row 參數所指向之MIB_IPFORWARD_ROW2的 DestinationPrefix 成員是 MIB_IPFORWARD_ROW2 之 InterfaceLuid 或 InterfaceIndex 成員所指定介面上現有 IP 路由專案的重複專案,就會傳回此錯誤。 |
|
使用 FormatMessage 取得傳回錯誤的訊息字串。 |
備註
CreateIpForwardEntry2 函式是在 Windows Vista 和更新版本上定義。
CreateIpForwardEntry2 函式可用來在本機計算機上新增鄰近IP位址專案。 InitializeIpForwardEntry 函式應該用來初始化具有預設值之MIB_IPFORWARD_ROW2結構項目的成員。 然後,應用程式可以變更其想要修改 之MIB_IPFORWARD_ROW2 專案中的成員,然後呼叫 CreateIpForwardEntry2 函式。
Row 參數所指向之MIB_IPFORWARD_ROW2結構中的 DestinationPrefix 成員必須初始化為有效的 IPv4 或 IPv6 位址前置詞。 Row 參數所指向之MIB_IPFORWARD_ROW2結構中的 NextHop 成員必須初始化為有效的 IPv4 或 IPv6 位址和系列。 此外,指向 Row 參數的MIB_IPFORWARD_ROW2結構中至少必須初始化下列其中一個成員:InterfaceLuid 或 InterfaceIndex。
欄位會依照上面所列的順序使用。 因此,如果指定 InterfaceLuid ,則會使用此成員來判斷要新增 IP 路由專案的介面。 如果未為 InterfaceLuid 成員設定任何值, (此成員的值設定為零) ,則下一步會使用 InterfaceIndex 成員來判斷介面。
Row 參數所指向之MIB_IPFORWARD_ROW2結構之計量成員中指定的路由計量位移只代表完整路由計量的一部分。 完整計量是這個路由計量位移的組合,其新增至相關聯介面之MIB_IPINTERFACE_ROW結構之計量成員中指定的介面計量。 應用程式可以藉由呼叫 GetIpInterfaceEntry 函式來擷取介面計量。
呼叫 CreateIpForwardEntry2 函式時,會忽略 Row 所指向之MIB_IPFORWARD_ROW2結構的 Age 和 Origin 成員。 這些成員是由網路堆疊所設定,而且無法使用 CreateIpForwardEntry2 函式進行設定。
如果 Row 參數所指向之MIB_IPFORWARD_ROW2的 DestinationPrefix 和 NextHop 成員在 InterfaceLuid 或 InterfaceIndex 成員中指定的介面上,現有的 IP 路由專案重複,CreateIpForwardEntry2 函式將會失敗。
CreateIpForwardEntry2 函式只能由以 Administrators 群組成員身分登入的使用者呼叫。 如果 CreateIpForwardEntry2 是由不是 Administrators 群組成員的使用者呼叫,則函式呼叫將會失敗,並 傳回ERROR_ACCESS_DENIED 。 此函式也可能因為 Windows Vista 和更新版本上的用戶帳戶控制 (UAC) 而失敗。 如果包含此函式的應用程式是由使用者以系統管理員以外的系統管理員群組成員身分登入來執行,除非應用程式已在指令清單檔中標示為 requestedExecutionLevel 設定為 requireAdministrator,否則此呼叫將會失敗。 如果應用程式缺少此指令清單檔,則身為系統管理員以外的 Administrators 群組成員登入的使用者,就必須在增強殼層中執行應用程式,因為內建系統管理員 (RunAs 系統管理員) ,此函式才能成功。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | netioapi.h (包括 Iphlpapi.h) |
程式庫 | Iphlpapi.lib |
Dll | Iphlpapi.dll |