Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função GetInterfaceInfo preenche um ponteiro para uma estrutura IP_INTERFACE_INFO com informações sobre as interfaces associadas ao sistema.
Para usar GetInterfaceInfo
Declare um ponteiro para um objeto IP_INTERFACE_INFO chamado
pInfoe um objeto ULONG chamadoulOutBufLen. Declare também um objeto DWORD chamadodwRetVal(usado para verificação de erros).ULONG ulOutBufLen; DWORD dwRetVal; unsigned int i; IP_INTERFACE_INFO* pInterfaceInfo;Alocar memória para as estruturas.
Observação
O tamanho de
ulOutBufLennão é suficiente para manter as informações. Consulte a próxima etapa.pInterfaceInfo = (IP_INTERFACE_INFO *) malloc(sizeof (IP_INTERFACE_INFO)); ulOutBufLen = sizeof(IP_INTERFACE_INFO);Faça uma chamada inicial para GetInterfaceInfo para obter o tamanho necessário para a
ulOutBufLenvariável.Observação
Essa chamada para a função deve falhar e é usada para garantir que a
ulOutBufLenvariável especifique um tamanho suficiente para manter todas as informações retornadas parapInfo. Esse é um modelo de programação comum no Auxiliar de IP para estruturas de dados e funções desse tipo.if (GetInterfaceInfo(pInterfaceInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) { free(pInterfaceInfo); pInterfaceInfo = (IP_INTERFACE_INFO *) malloc(ulOutBufLen); }Faça uma segunda chamada para GetInterfaceInfo com verificação de erro geral e retorne seu valor para a variável
dwRetValDWORD (para verificação de erro mais avançada).if ((dwRetVal = GetInterfaceInfo(pInterfaceInfo, &ulOutBufLen)) != NO_ERROR) { printf(" GetInterfaceInfo failed with error: %d\n", dwRetVal); }Se a chamada tiver sido bem-sucedida, acesse os dados da
pInfoestrutura de dados.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); } }Observação
O %ws na primeira linha indica uma cadeia de caracteres larga. Isso é usado porque o atributo Name da estrutura
AdapterIP_ADAPTER_INDEX_MAP é um WCHAR, que é uma cadeia de caracteres Unicode.Libere qualquer memória alocada para a estrutura pInfo .
if (pInterfaceInfo) { free(pInterfaceInfo); pInterfaceInfo = NULL; }
Próxima etapa: gerenciar endereços IP usando GetIpAddrTable
Etapa anterior: gerenciando adaptadores de rede usando GetAdaptersInfo