Partager via


Fonction RtmCreateRouteEnum (rtmv2.h)

La fonction RtmCreateRouteEnum crée une énumération des itinéraires pour une destination ou une plage particulière de destinations dans la table de routage. Un client peut énumérer des itinéraires pour une ou plusieurs vues, ou pour toutes les vues.

Syntaxe

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
);

Paramètres

[in] RtmRegHandle

Gérez le client obtenu à partir d’un appel précédent à RtmRegisterEntity.

[in] DestHandle

Gérez jusqu’à la destination pour laquelle énumérer les itinéraires. Ce paramètre est facultatif et peut être défini sur NULL ; la spécification de NULL énumère tous les itinéraires pour toutes les destinations. Spécifiez NULL si EnumFlags contient RTM_ENUM_START.

[in] TargetViews

Spécifie l’ensemble de vues à utiliser lors de la création de l’énumération. Les indicateurs suivants sont utilisés.

Constant Signification
RTM_VIEW_MASK_ANY
Retourner les destinations de toutes les vues. Il s’agit de la valeur par défaut.
RTM_VIEW_MASK_UCAST
Retourner des destinations à partir de la vue monodiffusion.
RTM_VIEW_MASK_MCAST
Retourner les destinations à partir de la vue multidiffusion.

[in] EnumFlags

Spécifie les itinéraires à inclure dans l’énumération. Deux ensembles d’indicateurs sont utilisés ; utiliser un indicateur de chaque ensemble (par exemple, RTM_ENUM_ALL_ROUTES et RTM_ENUM_START).

Constant Signification
RTM_ENUM_ALL_ROUTES
Retourne tous les itinéraires.
RTM_ENUM_OWN_ROUTES
Retourne uniquement les routes dont le client est propriétaire.
 
Constant Signification
RTM_ENUM_NEXT
Énumérez les itinéraires en commençant à la longueur d’adresse/de masque spécifiée (par exemple, 10/8). L’énumération se poursuit jusqu’à la fin de la table de routage.
RTM_ENUM_RANGE
Énumérez les itinéraires dans la plage spécifiée spécifiée par la longueur d’adresse/masque (par exemple, 10/8).
RTM_ENUM_START
Énumérez les itinéraires à partir de 0/0. Spécifiez NULL pour NetAddress.

[in] StartDest

Pointeur vers une structure RTM_NET_ADDRESS qui contient l’adresse de départ de l’énumération. Ce paramètre est ignoré si EnumFlags contient RTM_ENUM_START.

[in] MatchingFlags

Spécifie les éléments de l’itinéraire à mettre en correspondance. Sauf indication contraire, seuls les itinéraires qui correspondent aux critères spécifiés dans CriteriaRoute et CriteriaInterface sont retournés. Les indicateurs suivants sont utilisés.

Constant Signification
RTM_MATCH_FULL
Mettre en correspondance les itinéraires avec tous les critères.
RTM_MATCH_INTERFACE
Mettre en correspondance les itinéraires qui se trouvent sur la même interface. Le client peut spécifier NULL pour CriteriaRoute.
RTM_MATCH_NEIGHBOUR
Mettre en correspondance les itinéraires avec le même voisin.
RTM_MATCH_NEXTHOP
Mettre en correspondance les itinéraires qui ont le même tronçon suivant.
RTM_MATCH_NONE
Ne correspondent à aucun des critères ; tous les itinéraires pour la destination sont retournés. Le paramètre CriteriaRoute est ignoré si cet indicateur est défini.
RTM_MATCH_OWNER
Mettre en correspondance les itinéraires avec le même propriétaire.
RTM_MATCH_PREF
Mettre en correspondance les itinéraires qui ont la même préférence.

[in] CriteriaRoute

Spécifie les routes à énumérer. Ce paramètre est facultatif et peut être défini sur NULL si MatchingFlags contient RTM_MATCH_INTERFACE ou RTM_MATCH_NONE.

[in] CriteriaInterface

Pointeur vers un ULONG qui spécifie sur quelles interfaces les itinéraires doivent se trouver. Ce paramètre est ignoré, sauf si MatchingFlags contient RTM_MATCH_INTERFACE.

[out] RtmEnumHandle

Lors de l’entrée, RtmEnumHandle est un pointeur vers NULL.

À la sortie, RtmEnumHandle reçoit un pointeur vers un handle vers l’énumération. Utilisez ce handle dans tous les appels suivants à RtmGetEnumRoutes, RtmReleaseRoutes et RtmDeleteEnumHandle.

Valeur retournée

Si la fonction réussit, la valeur de retour est NO_ERROR.

Si la fonction échoue, la valeur de retour est l’un des codes d’erreur suivants.

Valeur Signification
ERROR_INVALID_PARAMETER
Un paramètre contient des informations incorrectes.
ERROR_NOT_ENOUGH_MEMORY
La mémoire est insuffisante pour effectuer cette opération.
ERROR_NOT_SUPPORTED
Une ou plusieurs des vues spécifiées ne sont pas prises en charge.
 
 

Remarques

Si EnumFlags contient RTM_ENUM_RANGE, utilisez NetAddress pour spécifier la plage de la table de routage à énumérer. Par exemple, si un client définit NetAddress sur 10/8, les destinations comprises entre 10.0.0.0/8 et 10.255.255.255/32 sont retournées.

Lorsque le handle d’énumération n’est plus nécessaire, relâchez-le en appelant RtmDeleteEnumHandle.

Pour obtenir un exemple de code utilisant cette fonction, consultez Énumérer tous les itinéraires.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucun pris en charge
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête rtmv2.h
Bibliothèque Rtm.lib
DLL Rtm.dll

Voir aussi

RTM_NET_ADDRESS

RTM_ROUTE_INFO

RtmDeleteEnumHandle

RtmGetEnumRoutes

RtmReleaseRoutes