RtmAddRoute 函数
[此 API 已被 路由表管理器版本 2 API 取代,在 Windows Server 2003 之后不可用。 应用程序应使用路由表管理器版本 2 API。]
RtmAddRoute 函数添加路由条目或更新现有路由条目。
语法
DWORD RtmAddRoute(
_In_ HANDLE ClientHandle,
_In_ PVOID Route,
_In_ DWORD TimeToLive,
_Out_ DWORD Flags,
_Out_ PVOID CurBestRoute,
_Out_ PVOID PrevBestRoute
);
parameters
-
ClientHandle [in]
-
标识已添加或更新路由的客户端的句柄,因此标识路由协议。 通过调用 RtmRegisterClient 获取此句柄。
-
路由 [in]
-
指向协议系列特定的结构的指针,该结构指定新的或更新的路由。 路由表管理器使用以下字段来更新路由表:
值 含义 - RR_Network
指定目标网络编号。 - RR_InterfaceID
指定通过该接口接收路由的索引。 - RR_NextHopAddress
指定下一跃点路由器的地址。 - RR_FamilySpecificData
指定特定于协议系列的数据。 尽管数据对路由表管理器是透明的,但在比较路由以确定路由信息是否已更改时,会考虑这些数据。 数据还用于设置独立于路由协议的指标值。 因此,此数据用于确定目标网络的最佳路由。 - RR_ProtocolSpecificData
指定特定于提供路由的路由协议的数据。 - RR_TimeStamp
指定当前系统时间。 此字段由路由表管理器设置。 -
TimeToLive [in]
-
指定指定路由应在路由表中保留的秒数。 如果此参数设置为 INFINITE,则会保留路由,直到显式删除。 TimeToLive 的当前限制为 2147483 秒 (24 天以上) 。
-
标志 [out]
-
指向 DWORD 变量的指针。 此变量的值由路由表管理器设置。 值指示更改的类型,以及所提供的缓冲区中返回的信息。 此参数为下列参数之一。
Flags 含义 - RTM_NO_CHANGE
添加或更新未更改任何重要的路由参数,或者受影响的路由条目不是目标网络条目中的最佳路由。 - RTM_ROUTE_ADDED
为目标网络添加了路由。 CurBestRoute 参数指向所添加路由的信息。 - RTM_ROUTE_CHANGED
至少更改了一个重要参数,以获得最佳路由到目标网络。 重要参数包括:
协议标识符
接口索引
下一跃点地址
特定于协议系列的数据 (包括路由指标)PrevBestRoute 参数指向更改前的路由信息。 CurBestRoute 参数指向当前 (,即更改后) 路由信息。
-
CurBestRoute [out]
-
指向接收当前最佳路由信息的结构的指针(如果有)。 结构的类型特定于协议系列,例如 IP 或 IPX。
此参数可选。 如果调用方为此参数指定 NULL ,则不会返回当前最佳路由信息。
-
PrevBestRoute [out]
-
指向接收上一个最佳路由信息的结构的指针(如果有)。 结构的类型特定于协议系列,例如 IP 或 IPX。
此参数可选。 如果调用方为此参数指定 NULL ,则不会返回以前的最佳路由信息。
返回值
返回值是以下代码之一。
值 | 说明 |
---|---|
|
已成功添加或更新路由。 |
|
客户端句柄参数不是有效的句柄。 |
|
路由结构包含无效参数。 |
|
资源不足,无法执行该操作。 |
|
内存不足,无法分配路由条目。 |
备注
如果到目标网络的最佳路由因此操作而更改,则函数将生成路由更改消息。 但是,路由更改消息不会发送到进行此调用的客户端。 相反,此函数通过 Flags、 CurBestRoute 和 PrevBestRoute 参数将相关信息直接返回给该客户端。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
无受支持的版本 |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
终止服务器支持 |
Windows Server 2003 |
标头 |
|
库 |
|
DLL |
|
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈