Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
pInfo, bem como 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;Aloque memória para as estruturas.
Observação
O tamanho do
ulOutBufLennão é suficiente para armazenar as informações. Veja o próximo passo.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 na variável
ulOutBufLen.Observação
Essa chamada para a função deve falhar e é usada para garantir que a variável
ulOutBufLenespecifique um tamanho suficiente para armazenar todas as informações retornadas parapInfo. Este é um modelo de programação comum no IP Helper para estruturas de dados e funções deste 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 geral de erros e retorne seu valor para a variável DWORD
dwRetVal(para verificação de erros mais avançada).if ((dwRetVal = GetInterfaceInfo(pInterfaceInfo, &ulOutBufLen)) != NO_ERROR) { printf(" GetInterfaceInfo failed with error: %d\n", dwRetVal); }Se a chamada foi bem-sucedida, acesse os dados da estrutura de dados
pInfo.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
A %ws na primeira linha denota uma cadeia larga. Isso é usado porque o atributo Name da estrutura IP_ADAPTER_INDEX_MAP
Adapteré um WCHAR, que é uma cadeia de caracteres Unicode.Liberte qualquer memória alocada para a estrutura pInfo.
if (pInterfaceInfo) { free(pInterfaceInfo); pInterfaceInfo = NULL; }
Próxima etapa: gerenciando endereços IP usando GetIpAddrTable
Etapa anterior: gerenciando adaptadores de rede usando GetAdaptersInfo