Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La función GetInterfaceInfo rellena un puntero a una estructura de IP_INTERFACE_INFO con información sobre las interfaces asociadas al sistema.
Para usar GetInterfaceInfo
Declare un puntero a un objeto IP_INTERFACE_INFO denominado
pInfoy un objeto ULONG denominadoulOutBufLen. Declare también un objeto DWORD denominadodwRetVal(usado para la comprobación de errores).ULONG ulOutBufLen; DWORD dwRetVal; unsigned int i; IP_INTERFACE_INFO* pInterfaceInfo;Asigne memoria para las estructuras.
Nota
El tamaño de
ulOutBufLenno es suficiente para contener la información. Vea el paso siguiente.pInterfaceInfo = (IP_INTERFACE_INFO *) malloc(sizeof (IP_INTERFACE_INFO)); ulOutBufLen = sizeof(IP_INTERFACE_INFO);Realice una llamada inicial a GetInterfaceInfo para obtener el tamaño necesario en la
ulOutBufLenvariable.Nota
Esta llamada a la función está pensada para producir un error y se usa para asegurarse de que la
ulOutBufLenvariable especifica un tamaño suficiente para contener toda la información devuelta apInfo. Se trata de un modelo de programación común en el asistente de IP para estructuras de datos y funciones de este tipo.if (GetInterfaceInfo(pInterfaceInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) { free(pInterfaceInfo); pInterfaceInfo = (IP_INTERFACE_INFO *) malloc(ulOutBufLen); }Realice una segunda llamada a GetInterfaceInfo con comprobación de errores general y devuelva su valor a la variable
dwRetValDWORD (para una comprobación de errores más avanzada).if ((dwRetVal = GetInterfaceInfo(pInterfaceInfo, &ulOutBufLen)) != NO_ERROR) { printf(" GetInterfaceInfo failed with error: %d\n", dwRetVal); }Si la llamada se realizó correctamente, acceda a los datos de la
pInfoestructura de datos.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); } }Nota
%ws de la primera línea denota una cadena ancha. Esto se usa porque el atributo Name de la estructura
AdapterIP_ADAPTER_INDEX_MAP es un WCHAR, que es una cadena Unicode.Libere cualquier memoria asignada para la estructura pInfo .
if (pInterfaceInfo) { free(pInterfaceInfo); pInterfaceInfo = NULL; }
Paso siguiente: Administración de direcciones IP mediante GetIpAddrTable
Paso anterior: Administrar adaptadores de red mediante GetAdaptersInfo