Поделиться через


структура IP_INTERFACE_INFO (ipexport.h)

Структура IP_INTERFACE_INFO содержит список сетевых адаптеров с включенным протоколом IPv4 в локальной системе.

Синтаксис

typedef struct _IP_INTERFACE_INFO {
  LONG                 NumAdapters;
  IP_ADAPTER_INDEX_MAP Adapter[1];
} IP_INTERFACE_INFO, *PIP_INTERFACE_INFO;

Члены

NumAdapters

Число адаптеров, перечисленных в массиве, на который указывает член Адаптера .

Adapter[1]

Массив структур IP_ADAPTER_INDEX_MAP . Каждая структура сопоставляет индекс адаптера с именем этого адаптера. Индекс адаптера может измениться, когда адаптер отключен, а затем включен, или при других обстоятельствах, и не должен считаться постоянным.

Комментарии

Структура IP_INTERFACE_INFO зависит от сетевых адаптеров с включенным протоколом IPv4. Структура IP_INTERFACE_INFO содержит число сетевых адаптеров с включенным протоколом IPv4 в локальной системе и массив IP_ADAPTER_INDEX_MAP структур с информацией о каждом сетевом адаптере с включенным протоколом IPv4. Структура IP_INTERFACE_INFO содержит по крайней мере одну IP_ADAPTER_INDEX_MAP структуру, даже если элемент NumAdaptersструктуры IP_INTERFACE_INFO указывает, что сетевые адаптеры с IPv4 не включены. Если элемент NumAdapters структуры IP_INTERFACE_INFO равен нулю, значение членов одной структуры IP_ADAPTER_INDEX_MAP , возвращаемое в IP_INTERFACE_INFO структуре, не определено.

Структура IP_INTERFACE_INFO не может использоваться для возврата сведений об интерфейсе замыкания на себя.

В Windows Vista и более поздних версиях элемент name структуры IP_ADAPTER_INDEX_MAP в структуре IP_INTERFACE_INFO может быть строкой Юникода GUID для сетевого интерфейса (строка начинается с символа "{").

Эта структура определяется в файле заголовка Ipexport.h , который автоматически включается в файл заголовка Iphlpapi.h . Файл заголовка Ipexport.h никогда не следует использовать напрямую.

Примеры

В следующем примере извлекается список сетевых адаптеров с включенным протоколом IPv4 в локальной системе и выводится на печать различных свойств первого адаптера.

// Declare and initialize variables
PIP_INTERFACE_INFO pInfo;
pInfo = (IP_INTERFACE_INFO *) malloc( sizeof(IP_INTERFACE_INFO) );
ULONG ulOutBufLen = 0;
DWORD dwRetVal = 0;


// Make an initial call to GetInterfaceInfo to get
// the necessary size in the ulOutBufLen variable
if ( GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) {
  free(pInfo);
  pInfo = (IP_INTERFACE_INFO *) malloc (ulOutBufLen);
}

// Make a second call to GetInterfaceInfo to get
// the actual data we need
if ((dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen)) == NO_ERROR ) {
  printf("\tAdapter Name: %ws\n", pInfo->Adapter[0].Name);
  printf("\tAdapter Index: %ld\n", pInfo->Adapter[0].Index);
  printf("\tNum Adapters: %ld\n", pInfo->NumAdapters);

  // free memory allocated
  free(pInfo);
  pInfo = NULL;
}  
else if (dwRetVal == ERROR_NO_DATA) {
  printf("There are no network adapters with IPv4 enabled on the local system\n");
}

else {
  printf("GetInterfaceInfo failed.\n");
  LPVOID lpMsgBuf;
            
  if (FormatMessage( 
    FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    FORMAT_MESSAGE_FROM_SYSTEM | 
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    dwRetVal,
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
    (LPTSTR) &lpMsgBuf,
    0,
    NULL ))  {
    printf("\tError: %s", lpMsgBuf);
  }
  LocalFree( lpMsgBuf );
}

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть ipexport.h (включая Iphlpapi.h)

См. также раздел

GetInterfaceInfo

Начальная страница вспомогательного ip-адреса

Вспомогательные структуры IP-адресов

IP_ADAPTER_INDEX_MAP