RtmGetLessSpecificDestination 函数 (rtmv2.h)

在给定目标前缀的情况下, RtmGetLessSpecificDestination 函数在路由表中搜索具有下一个最佳匹配 (最长) 前缀的目标。 返回请求的目标信息。

语法

DWORD RtmGetLessSpecificDestination(
  [in]  RTM_ENTITY_HANDLE RtmRegHandle,
  [in]  RTM_DEST_HANDLE   DestHandle,
  [in]  ULONG             ProtocolId,
  [in]  RTM_VIEW_SET      TargetViews,
  [out] PRTM_DEST_INFO    DestInfo
);

parameters

[in] RtmRegHandle

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

[in] DestHandle

目标句柄。

[in] ProtocolId

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

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

[in] TargetViews

指定要从中返回信息的视图。 如果客户端指定RTM_VIEW_MASK_ANY,则会从所有视图返回目标信息;但是,不会返回特定于视图的信息。

[out] DestInfo

在输入时, DestInfo 是指向 RTM_DEST_INFO 结构的指针。

在输出中,使用请求的目标信息填充 DestInfo

返回值

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

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

含义
ERROR_INVALID_PARAMETER
参数包含不正确的信息。
ERROR_NOT_FOUND
找不到下一个最佳目标。
 
 

注解

DestInfo 参数是一个大小可变的RTM_DEST_INFO结构。 如果客户端使用 TargetViews 指定多个视图,则每个视图的 DestInfo 大小都会增加。 在调用此函数之前,使用 RTM_SIZE_OF_DEST_INFO 宏确定要为 DestInfo 结构分配的内存量。 使用为 TargetViews 指定的值作为参数来 RTM_SIZE_OF_DEST_INFO

在调用 RtmGetMostSpecificDestination 后使用 RtmGetLessSpecificDestination 函数,以返回目标的下一个最佳匹配项。 在先前调用 RtmGetLessSpecificDestination 之后,也使用此调用返回下一个连续不太具体的匹配项。 客户端可以使用此函数来“向上”查找目标前缀树。

在调用返回 RTM_DEST_INFO 结构的函数(如 RtmGetDestInfoRtmGetChangedDests)之后,也使用此调用。

RtmGetLessSpecificDestination 函数将返回匹配项,直到它到达默认路由(如果存在)。 找到默认路由后, RtmGetLessSpecificDestination 将返回ERROR_NOT_FOUND。

RtmGetLessSpecificDestinationRtmGetMostSpecificDestination 函数的一个常见用途是检索每个匹配的目标。

有关使用此函数的示例代码,请参阅 使用前缀树搜索路由

要求

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

请参阅

RTM_DEST_INFO

RtmGetExactMatchDestination

RtmGetExactMatchRoute

RtmGetMostSpecificDestination

RtmIsBestRoute