RtmCreateRouteEnum 函数 (rtmv2.h)

RtmCreateRouteEnum 函数为路由表中的特定目标或目标范围创建路由的枚举。 客户端可以枚举一个或多个视图或所有视图的路由。

语法

DWORD RtmCreateRouteEnum(
  [in]  RTM_ENTITY_HANDLE RtmRegHandle,
  [in]  RTM_DEST_HANDLE   DestHandle,
  [in]  RTM_VIEW_SET      TargetViews,
  [in]  RTM_ENUM_FLAGS    EnumFlags,
  [in]  PRTM_NET_ADDRESS  StartDest,
  [in]  RTM_MATCH_FLAGS   MatchingFlags,
  [in]  PRTM_ROUTE_INFO   CriteriaRoute,
  [in]  ULONG             CriteriaInterface,
  [out] PRTM_ENUM_HANDLE  RtmEnumHandle
);

参数

[in] RtmRegHandle

从先前调用 RtmRegisterEntity 获取的客户端的句柄。

[in] DestHandle

要枚举其路由的目标的句柄。 此参数是可选的,可以设置为 NULL;指定 NULL 将枚举所有目标的所有路由。 如果 EnumFlags 包含RTM_ENUM_START,则指定 NULL

[in] TargetViews

指定创建枚举时要使用的视图集。 使用以下标志。

返回的常量 含义
RTM_VIEW_MASK_ANY
从所有视图返回目标。 这是默认值。
RTM_VIEW_MASK_UCAST
从单播视图返回目标。
RTM_VIEW_MASK_MCAST
从多播视图返回目标。

[in] EnumFlags

指定要包含在枚举中的路由。 使用两组标志:使用每个集 ((如 RTM_ENUM_ALL_ROUTES 和 RTM_ENUM_START) )的一个标志。

返回的常量 含义
RTM_ENUM_ALL_ROUTES
返回所有路由。
RTM_ENUM_OWN_ROUTES
仅返回客户端拥有的那些路由。
 
返回的常量 含义
RTM_ENUM_NEXT
枚举从指定地址/掩码长度 (开始的路由,例如 10/8) 。 枚举一直持续到路由表的末尾。
RTM_ENUM_RANGE
枚举地址/掩码长度 (指定范围内的路由,例如 10/8) 。
RTM_ENUM_START
枚举从 0/0 开始的路由。 为 NetAddress 指定 NULL

[in] StartDest

指向包含枚举起始地址 的RTM_NET_ADDRESS 结构的指针。 如果 EnumFlags 包含RTM_ENUM_START,则忽略此参数。

[in] MatchingFlags

指定要匹配的路由的元素。 除非另有说明,否则仅返回与 CriteriaRouteCriteriaInterface 中指定的条件匹配的路由。 使用以下标志。

返回的常量 含义
RTM_MATCH_FULL
匹配具有所有条件的路由。
RTM_MATCH_INTERFACE
匹配同一接口上的路由。 客户端可以为 CriteriaRoute 指定 NULL
RTM_MATCH_NEIGHBOUR
匹配具有相同邻居的路由。
RTM_MATCH_NEXTHOP
匹配具有相同下一跃点的路由。
RTM_MATCH_NONE
不匹配任何条件;返回目标的所有路由。 如果设置了此标志,则忽略 CriteriaRoute 参数。
RTM_MATCH_OWNER
匹配具有相同所有者的路由。
RTM_MATCH_PREF
匹配具有相同首选项的路由。

[in] CriteriaRoute

指定要枚举的路由。 此参数是可选的,如果 MatchingFlags 包含RTM_MATCH_INTERFACE或RTM_MATCH_NONE,则可以将其设置为 NULL

[in] CriteriaInterface

指向 ULONG 的指针,该 ULONG 指定路由应位于哪些接口上。 除非 MatchingFlags 包含RTM_MATCH_INTERFACE,否则将忽略此参数。

[out] RtmEnumHandle

输入时, RtmEnumHandle 是指向 NULL 的指针。

输出时, RtmEnumHandle 接收指向枚举句柄的指针。 在对 RtmGetEnumRoutesRtmReleaseRoutesRtmDeleteEnumHandle 的所有后续调用中使用此句柄。

返回值

如果函数成功,则返回值NO_ERROR。

如果函数失败,则返回值为以下错误代码之一。

含义
ERROR_INVALID_PARAMETER
参数包含不正确的信息。
ERROR_NOT_ENOUGH_MEMORY
内存不足,无法完成此操作。
ERROR_NOT_SUPPORTED
不支持一个或多个指定的视图。
 
 

注解

如果 EnumFlags 包含RTM_ENUM_RANGE,请使用 NetAddress 指定要枚举的路由表的范围。 例如,如果客户端将 NetAddress 设置为 10/8,则返回范围 10.0.0.0/8 到 10.255.255.255/32 的目标。

如果不再需要枚举句柄,请通过调用 RtmDeleteEnumHandle 释放它。

有关使用此函数的示例代码,请参阅 枚举所有路由

要求

要求
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 rtmv2.h
Library Rtm.lib
DLL Rtm.dll

另请参阅

RTM_NET_ADDRESS

RTM_ROUTE_INFO

RtmDeleteEnumHandle

RtmGetEnumRoutes

RtmReleaseRoutes