15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Функция GetNetworkParams.

Функция GetNetworkParams позволяет узнать сетевые настройки локального компьютера.

Внимание: Для использования этой функции необходимо, чтобы был установлен Platform SDK!

DWORD GetNetworkParams(
  PFIXED_INFO pFixedInfo,
  PULONG pOutBufLen
);

Параметры

pFixedInfo
Указатель на структуру FIXED_INFO в которой после вызова функции будут находиться сетевые настройки локального компьютера.
pOutBufLen
Указатель на переменную ULONG которая содержит размер структуры FIXED_INFO. Если размер недостаточен для хранения информации, то GetNetworkParams возвращает в этой переменной требуемый размер, а так же возвращает код ошибки ERROR_BUFFER_OVERFLOW.

Возвращаемое значение

В случае успеха, функция должна вернуть ERROR_SUCCESS.

В случае ошибки, функция вернёт одно из следующих значений.

 

Значение Описание
ERROR_BUFFER_OVERFLOW Размер буфера, указанный в переменной pOutBufLen недостаточен для хранения информации. Параметр pOutBufLen указывает на требуемый размер.
ERROR_INVALID_PARAMETER Параметр pOutBufLen равен NULL, либо вызывающий процесс не имеет прав на запись/чтение в памяти по адресу pOutBufLen, либо вызывающий процесс не имеет прав на запись в памяти по адресу pAdapterInfo.
ERROR_NO_DATA Функции не удалось получить информацию.
ERROR_NOT_SUPPORTED GetNetworkParams не поддерживается данной операционной системой.
другое В случае ошибки, воспользуйтесь функцией FormatMessage для получения подробной строки об ошибке.


Пример использования функции

//
// Не забудьте подключить к проекту IPHlpAPI.lib
//
#include <stdio.h>
#include <windows.h>
#include <iphlpapi.h>

main() {
   
   FIXED_INFO * FixedInfo;
   ULONG    ulOutBufLen;
   DWORD    dwRetVal;
   IP_ADDR_STRING * pIPAddr;

   FixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) );
   ulOutBufLen = sizeof( FIXED_INFO );
   
   if(ERROR_BUFFER_OVERFLOW == GetNetworkParams(FixedInfo, &ulOutBufLen)) {
      GlobalFree( FixedInfo );
      FixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, ulOutBufLen );
   }

   if ( dwRetVal = GetNetworkParams( FixedInfo, &ulOutBufLen ) ) {
     printf( "GetNetworkParams failed. Return Value: %08x\n", dwRetVal);
   }
   else {
      printf( "Host Name: %s\n", FixedInfo -> HostName );
      printf( "Domain Name: %s\n", FixedInfo -> DomainName );
      
      printf( "DNS Servers:\n" );
      printf( "\t%s\n", FixedInfo -> DnsServerList.IpAddress.String );
      
      pIPAddr = FixedInfo -> DnsServerList.Next;
      while ( pIPAddr ) {
         printf( "\t%s\n", pIPAddr ->IpAddress.String );
         pIPAddr = pIPAddr ->Next;
      }
   }
   exit( 0 );
}

Дополнительная информация

Windows NT/2000/XP: Включена в Windows 2000 и выше.
Windows 95/98/Me: Включена в Windows 98 и выше.
Заголовок: Объявлена в Iphlpapi.h.
Библиотека: Iphlpapi.lib.