Функция GetAdaptersInfo.
Функция GetNetworkParams позволяет узнать
сетевые настройки сетевой карты локального
компьютера.
Внимание: Для использования этой
функции необходимо, чтобы был установлен Platform SDK!
DWORD GetAdaptersInfo(
PIP_ADAPTER_INFO pAdapterInfo,
PULONG pOutBufLen
);
Параметры
- pAdapterInfo
- Указатель на буфер, в который записывается
список структур IP_ADAPTER_INFO.
- pOutBufLen
- Указатель на переменную ULONG, которая
содержит размер, требуемый для буфера pAdapterInfo.
Если этого размера недостаточно для хранения
информации, то GetAdaptersInfo заносит в эту
переменную требуемый размер, и возвращает код
ошибки ERROR_BUFFER_OVERFLOW.
Возвращаемые значения
В случае успеха, функция вернёт ERROR_SUCCESS.
В случае ошибки, функция вернёт одно из
следующих значений:
Значение |
Описание |
ERROR_BUFFER_OVERFLOW |
Размер буфера, указанный в переменной pOutBufLen
недостаточен для хранения информации. Параметр pOutBufLen
указывает на требуемый размер. |
ERROR_INVALID_PARAMETER |
Параметр pOutBufLen равен NULL, либо
вызывающий процесс не имеет прав на
запись/чтение в памяти по адресу pOutBufLen, либо
вызывающий процесс не имеет прав на запись в
памяти по адресу pAdapterInfo. |
ERROR_NO_DATA |
No adapter information exists for the local computer. |
ERROR_NOT_SUPPORTED |
GetAdaptersInfo не поддерживается
данной операционной системой. |
другое |
В случае ошибки, воспользуйтесь
функцией FormatMessage
для получения подробной строки об ошибке. |
Замечания
Функции GetAdaptersInfo и GetInterfaceInfo
не возвращают информации об интерфейсе нулевого
кольца (loopback interface).
Пример использования
#include <stdio.h>
#include <windows.h>
#include <iphlpapi.h>
main() {
IP_ADAPTER_INFO * AdapterInfo;
ULONG ulOutBufLen;
DWORD dwRetVal;
IP_ADDR_STRING * pIPAddr;
AdapterInfo = (IP_ADAPTER_INFO *) GlobalAlloc(GPTR,sizeof(IP_ADAPTER_INFO));
ulOutBufLen = sizeof(IP_ADAPTER_INFO);
if( ERROR_BUFFER_OVERFLOW == GetAdaptersInfo(AdapterInfo, &ulOutBufLen)) {
GlobalFree( AdapterInfo );
AdapterInfo = (IP_ADAPTER_INFO *) GlobalAlloc(GPTR, ulOutBufLen );
}
if ( dwRetVal = GetAdaptersInfo( AdapterInfo, &ulOutBufLen ) ) {
printf("Call to GetAdaptersInfo failed. Return Value: %08x\n", dwRetVal);
}
else {
printf("Adapter Description: %s\n", AdapterInfo->Description);
printf("IP Address(s):\n" );
printf("\t%s\n", AdapterInfo->IpAddressList.IpAddress.String );
pIPAddr = AdapterInfo->IpAddressList.Next;
while (pIPAddr) {
printf("\t%s\n", pIPAddr->IpAddress.String);
pIPAddr = pIPAddr->Next;
}
printf("Default gateway(s):\n" );
printf("\t%s\n", AdapterInfo->GatewayList.IpAddress.String );
pIPAddr = AdapterInfo->GatewayList.Next;
while ( pIPAddr ) {
printf( "\t%s\n", pIPAddr ->IpAddress.String );
pIPAddr = pIPAddr ->Next;
}
if(AdapterInfo->DhcpEnabled == 1) {
printf("DHCP Server(s):\n" );
printf("\t%s\n", AdapterInfo->DhcpServer.IpAddress.String );
pIPAddr = AdapterInfo->DhcpServer.Next;
while ( pIPAddr ) {
printf( "\t%s\n", pIPAddr ->IpAddress.String );
pIPAddr = pIPAddr ->Next;
}
}
else {
printf("DHCP Disabled\n");
}
if(AdapterInfo->HaveWins == TRUE) {
printf("Primary WINS Server(s):\n" );
printf("\t%s\n", AdapterInfo->PrimaryWinsServer.IpAddress.String );
pIPAddr = AdapterInfo->PrimaryWinsServer.Next;
while ( pIPAddr ) {
printf( "\t%s\n", pIPAddr ->IpAddress.String );
pIPAddr = pIPAddr ->Next;
}
}
else {
printf("Adapter not used WINS servers\n" );
}
}
exit( 0 );
}
Дополнительная информация
Windows NT/2000/XP: Включена в Windows 2000 и выше.
Windows 95/98/Me: Включена в Windows 98 и выше.
Заголовок: Объявлена в Iphlpapi.h.
Библиотека: Iphlpapi.lib.
|