RtmCreateDestEnum 函数 (rtmv2.h)

RtmCreateDestEnum 函数启动路由表中目标的枚举。 客户端可以枚举一个或多个视图或所有视图的目标。

语法

DWORD RtmCreateDestEnum(
  [in]  RTM_ENTITY_HANDLE RtmRegHandle,
  [in]  RTM_VIEW_SET      TargetViews,
  [in]  RTM_ENUM_FLAGS    EnumFlags,
  [in]  PRTM_NET_ADDRESS  NetAddress,
  [in]  ULONG             ProtocolId,
  [out] PRTM_ENUM_HANDLE  RtmEnumHandle
);

参数

[in] RtmRegHandle

从上一次调用 RtmRegisterEntity 获取的客户端的句柄。

[in] TargetViews

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

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

[in] EnumFlags

指定要包含在枚举中的目标。 使用两组标志:使用每个集中的一个标志 (例如,使用 RTM_ENUM_ALL_DESTS 和 RTM_ENUM_START) 。

返回的常量 含义
RTM_ENUM_ALL_DESTS
返回所有目标。
RTM_ENUM_OWN_DESTS
返回客户端拥有到任何指定视图中目标的最佳路由的目标。
 
返回的常量 含义
RTM_ENUM_NEXT
枚举从指定地址/掩码长度 ((例如 10/8) )开始的目标。 枚举一直持续到路由表的末尾。
RTM_ENUM_RANGE
枚举地址/掩码长度 (指定范围内的目标,例如 10/8) 。
RTM_ENUM_START
枚举从 0/0 开始的目标。 为 NetAddress 指定 NULL

[in] NetAddress

指向包含枚举起始地址 的RTM_NET_ADDRESS 结构的指针。 如果 EnumFlags 包含RTM_ENUM_START,则指定 NULL

[in] ProtocolId

指定用于确定 RtmGetEnumDests 函数返回的最佳路由信息的协议标识符。 ProtocolID 不是搜索条件的一部分。 路由表管理器使用此标识符来确定要返回哪些路由信息 (例如,如果客户端指定 RIP 协议标识符,则返回最佳 RIP 路由,即使非 RIP 路由是指向目标) 的最佳路由也是如此。

指定RTM_BEST_PROTOCOL以返回路由,而不考虑哪个协议拥有路由。 指定RTM_THIS_PROTOCOL以返回调用协议的最佳路由。

[out] RtmEnumHandle

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

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

返回值

如果函数成功,则返回值 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

RtmDeleteEnumHandle

RtmGetEnumDests

RtmReleaseDests