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
指定创建枚举时要使用的视图集。 使用以下标志。
返回的常量 | 含义 |
---|---|
|
从所有视图返回目标。 这是默认值。 |
|
从单播视图返回目标。 |
|
从多播视图返回目标。 |
[in] EnumFlags
指定要包含在枚举中的目标。 使用两组标志:使用每个集中的一个标志 (例如,使用 RTM_ENUM_ALL_DESTS 和 RTM_ENUM_START) 。
返回的常量 | 含义 |
---|---|
|
返回所有目标。 |
|
返回客户端拥有到任何指定视图中目标的最佳路由的目标。 |
返回的常量 | 含义 |
---|---|
|
枚举从指定地址/掩码长度 ((例如 10/8) )开始的目标。 枚举一直持续到路由表的末尾。 |
|
枚举地址/掩码长度 (指定范围内的目标,例如 10/8) 。 |
|
枚举从 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 接收指向枚举句柄的指针。 在对 RtmGetEnumDests、 RtmReleaseDests 和 RtmDeleteEnumHandle 的所有后续调用中使用此句柄。
返回值
如果函数成功,则返回值 NO_ERROR。
如果函数失败,则返回值为以下错误代码之一。
值 | 含义 |
---|---|
|
参数包含不正确的信息。 |
|
内存不足,无法完成此操作。 |
|
不支持一个或多个指定的视图。 |
注解
如果 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 |