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
指定创建枚举时要使用的视图集。 使用以下标志。
返回的常量 | 含义 |
---|---|
|
从所有视图返回目标。 这是默认值。 |
|
从单播视图返回目标。 |
|
从多播视图返回目标。 |
[in] EnumFlags
指定要包含在枚举中的路由。 使用两组标志:使用每个集 ((如 RTM_ENUM_ALL_ROUTES 和 RTM_ENUM_START) )的一个标志。
返回的常量 | 含义 |
---|---|
|
返回所有路由。 |
|
仅返回客户端拥有的那些路由。 |
返回的常量 | 含义 |
---|---|
|
枚举从指定地址/掩码长度 (开始的路由,例如 10/8) 。 枚举一直持续到路由表的末尾。 |
|
枚举地址/掩码长度 (指定范围内的路由,例如 10/8) 。 |
|
枚举从 0/0 开始的路由。 为 NetAddress 指定 NULL。 |
[in] StartDest
指向包含枚举起始地址 的RTM_NET_ADDRESS 结构的指针。 如果 EnumFlags 包含RTM_ENUM_START,则忽略此参数。
[in] MatchingFlags
指定要匹配的路由的元素。 除非另有说明,否则仅返回与 CriteriaRoute 和 CriteriaInterface 中指定的条件匹配的路由。 使用以下标志。
[in] CriteriaRoute
指定要枚举的路由。 此参数是可选的,如果 MatchingFlags 包含RTM_MATCH_INTERFACE或RTM_MATCH_NONE,则可以将其设置为 NULL。
[in] CriteriaInterface
指向 ULONG 的指针,该 ULONG 指定路由应位于哪些接口上。 除非 MatchingFlags 包含RTM_MATCH_INTERFACE,否则将忽略此参数。
[out] RtmEnumHandle
输入时, RtmEnumHandle 是指向 NULL 的指针。
输出时, RtmEnumHandle 接收指向枚举句柄的指针。 在对 RtmGetEnumRoutes、 RtmReleaseRoutes 和 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 |