Compartilhar via


estrutura IP_INTERFACE_INFO (ipexport.h)

A estrutura IP_INTERFACE_INFO contém uma lista dos adaptadores de interface de rede com IPv4 habilitado no sistema local.

Sintaxe

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

Membros

NumAdapters

O número de adaptadores listados na matriz apontada pelo membro do Adaptador .

Adapter[1]

Uma matriz de estruturas IP_ADAPTER_INDEX_MAP . Cada estrutura mapeia um índice de adaptador para o nome desse adaptador. O índice do adaptador pode ser alterado quando um adaptador é desabilitado e, em seguida, habilitado ou em outras circunstâncias, e não deve ser considerado persistente.

Comentários

A estrutura IP_INTERFACE_INFO é específica para adaptadores de rede com IPv4 habilitado. A estrutura IP_INTERFACE_INFO contém o número de adaptadores de rede com IPv4 habilitado no sistema local e uma matriz de estruturas IP_ADAPTER_INDEX_MAP com informações sobre cada adaptador de rede com IPv4 habilitado. A estrutura IP_INTERFACE_INFO contém pelo menos uma estrutura IP_ADAPTER_INDEX_MAP mesmo que o membro NumAdapters da estrutura IP_INTERFACE_INFO indique que nenhum adaptador de rede com IPv4 está habilitado. Quando o membro NumAdapters da estrutura IP_INTERFACE_INFO é zero, o valor dos membros da estrutura de IP_ADAPTER_INDEX_MAP única retornada na estrutura IP_INTERFACE_INFO é indefinido.

A estrutura IP_INTERFACE_INFO não pode ser usada para retornar informações sobre a interface de loopback.

No Windows Vista e posterior, o membro Name da estrutura IP_ADAPTER_INDEX_MAP na estrutura IP_INTERFACE_INFO pode ser uma cadeia de caracteres Unicode do GUID para o adaptador de rede (a cadeia de caracteres começa com o caractere '{').

Essa estrutura é definida no arquivo de cabeçalho Ipexport.h , que é incluído automaticamente no arquivo de cabeçalho Iphlpapi.h . O arquivo de cabeçalho Ipexport.h nunca deve ser usado diretamente.

Exemplos

O exemplo a seguir recupera a lista de adaptadores de rede com IPv4 habilitado no sistema local e imprime várias propriedades do primeiro adaptador.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho ipexport.h (inclua Iphlpapi.h)

Confira também

GetInterfaceInfo

Página Inicial do Auxiliar de IP

Estruturas auxiliares de IP

IP_ADAPTER_INDEX_MAP