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 ,则不会返回以前的最佳路由信息。

返回值

返回值是以下代码之一。

说明
NO_ERROR
已成功添加或更新路由。
ERROR_INVALID_HANDLE
客户端句柄参数不是有效的句柄。
ERROR_INVALID_PARAMETER
路由结构包含无效参数。
ERROR_NO_SYSTEM_RESOURCES
资源不足,无法执行该操作。
ERROR_NOT_ENOUGH_MEMORY
内存不足,无法分配路由条目。

备注

如果到目标网络的最佳路由因此操作而更改,则函数将生成路由更改消息。 但是,路由更改消息不会发送到进行此调用的客户端。 相反,此函数通过 FlagsCurBestRoutePrevBestRoute 参数将相关信息直接返回给该客户端。

要求

要求
最低受支持的客户端
无受支持的版本
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
终止服务器支持
Windows Server 2003
标头
Rtm.h

Rtm.lib
DLL
Rtm.dll

另请参阅

路由表管理器版本 1 参考

路由表管理器版本 1 函数

RtmDeleteRoute

RtmDequeueRouteChangeMessage