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 GetIpAddrTable preenche um ponteiro para uma estrutura de MIB_IPADDRTABLE com informações sobre os endereços IP atuais associados ao sistema.
Para usar GetIpAddrTable
Declare um ponteiro para um objeto chamado MIB_IPADDRTABLE, chamado pIPAddrTable, e um objeto chamado DWORD, chamado dwSize. Essas variáveis são passadas como parâmetros para o função GetIpAddrTable. Crie também uma variável DWORD chamada dwRetVal (usada para verificação de erros).
MIB_IPADDRTABLE *pIPAddrTable; DWORD dwSize = 0; DWORD dwRetVal;Aloque memória para a estrutura.
Observação
O tamanho de dwSize não é suficiente para armazenar as informações. Veja o próximo passo.
pIPAddrTable = (MIB_IPADDRTABLE*) malloc( sizeof(MIB_IPADDRTABLE) );Faça uma chamada inicial para GetIpAddrTable para obter o tamanho necessário na variável dwSize.
Observação
Essa chamada para a função deve falhar e é usada para garantir que a variável dwSize especifique um tamanho suficiente para armazenar todas as informações retornadas para pIPAddrTable. Este é um modelo de programação comum para estruturas de dados e funções deste tipo.
if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER) { free( pIPAddrTable ); pIPAddrTable = (MIB_IPADDRTABLE *) malloc ( dwSize ); }Faça uma segunda chamada para GetIpAddrTable com verificação geral de erros e retorne seu valor para a variável DWORDdwRetVal (para verificação de erro mais avançada).
if ( (dwRetVal = GetIpAddrTable( pIPAddrTable, &dwSize, 0 )) != NO_ERROR ) { printf("GetIpAddrTable call failed with %d\n", dwRetVal); }Se a chamada foi bem-sucedida, aceda aos dados da estrutura de dados pIPAddrTable.
printf("IP Address: %ld\n", pIPAddrTable->table[0].dwAddr); printf("IP Mask: %ld\n", pIPAddrTable->table[0].dwMask); printf("IF Index: %ld\n", pIPAddrTable->table[0].dwIndex); printf("Broadcast Addr: %ld\n", pIPAddrTable->table[0].dwBCastAddr); printf("Re-assembly size: %ld\n", pIPAddrTable->table[0].dwReasmSize);Libere qualquer memória alocada para a estrutura de pIPAddrTable.
if (pIPAddrTable) free(pIPAddrTable);
Observação
Os objetos DWORDdwAddr e dwMask são retornados como valores numéricos na ordem de bytes do host, não na ordem de bytes da rede. Esses valores não são endereços IP pontilhados.
Próxima etapa: gerenciando concessões DHCP usando IpReleaseAddress e IpRenewAddress
Etapa anterior: gerenciando interfaces usando GetInterfaceInfo