Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Функция 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.



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS