Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fonction GetInterfaceInfo remplit un pointeur vers une structure de IP_INTERFACE_INFO avec des informations sur les interfaces associées au système.
Pour utiliser GetInterfaceInfo
Déclarez un pointeur vers un objet IP_INTERFACE_INFO appelé
pInfoet un objet ULONG appeléulOutBufLen. Déclarez également un objet DWORD appelédwRetVal(utilisé pour la vérification des erreurs).ULONG ulOutBufLen; DWORD dwRetVal; unsigned int i; IP_INTERFACE_INFO* pInterfaceInfo;Allouez de la mémoire pour les structures.
Notes
La taille de n’est
ulOutBufLenpas suffisante pour contenir les informations. Consultez l’étape suivante.pInterfaceInfo = (IP_INTERFACE_INFO *) malloc(sizeof (IP_INTERFACE_INFO)); ulOutBufLen = sizeof(IP_INTERFACE_INFO);Effectuez un appel initial à GetInterfaceInfo pour obtenir la taille nécessaire dans la
ulOutBufLenvariable.Notes
Cet appel à la fonction est destiné à échouer et permet de s’assurer que la
ulOutBufLenvariable spécifie une taille suffisante pour contenir toutes les informations retournées àpInfo. Il s’agit d’un modèle de programmation courant dans IP Helper pour les structures de données et les fonctions de ce type.if (GetInterfaceInfo(pInterfaceInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) { free(pInterfaceInfo); pInterfaceInfo = (IP_INTERFACE_INFO *) malloc(ulOutBufLen); }Effectuez un deuxième appel à GetInterfaceInfo avec une vérification générale des erreurs et retournez sa valeur à la variable
dwRetValDWORD (pour une vérification des erreurs plus avancée).if ((dwRetVal = GetInterfaceInfo(pInterfaceInfo, &ulOutBufLen)) != NO_ERROR) { printf(" GetInterfaceInfo failed with error: %d\n", dwRetVal); }Si l’appel a réussi, accédez aux données à partir de la
pInfostructure de données.printf(" GetInterfaceInfo succeeded.\n"); printf(" Num Adapters: %ld\n\n", pInterfaceInfo->NumAdapters); for (i = 0; i < (unsigned int) pInterfaceInfo->NumAdapters; i++) { printf(" Adapter Index[%d]: %ld\n", i, pInterfaceInfo->Adapter[i].Index); printf(" Adapter Name[%d]: %ws\n\n", i, pInterfaceInfo->Adapter[i].Name); } }Notes
%ws de la première ligne indique une chaîne large. Cela est utilisé, car l’attribut Name de la structure
AdapterIP_ADAPTER_INDEX_MAP est une chaîne WCHAR, qui est une chaîne Unicode.Libérez toute la mémoire allouée à la structure pInfo .
if (pInterfaceInfo) { free(pInterfaceInfo); pInterfaceInfo = NULL; }
Étape suivante : Gestion des adresses IP à l’aide de GetIpAddrTable
Étape précédente : Gestion des cartes réseau à l’aide de GetAdaptersInfo