Вверх ↑
Ответов: 5446
Рейтинг: 323
#1: 2007-09-30 19:58:00 ЛС | профиль | цитата
nesco, опробовал твой код. У меня 4 сетевых адаптера в системе (LAN 10/100, WiFi, Bluetooth network, IEEE1394 Network). Твой код дал фигу. Первое предположение: функция GetAdaptersInfo вернула ошибку. Проверка:
   Size := Sizeof( IP_ADAPTER_INFO );
   L:= GetAdaptersInfo(@AdapterInfo, @Size);
_debug (L); //проверка
if L = NO_ERROR then begin

Запустил, действительно ошибка. Код 111 - ERROR_BUFFER_OVERFLOW.

MSDN писал(а):

ERROR_BUFFER_OVERFLOW

The buffer to receive the adapter information is too small. This value is returned if the buffer size indicated by the pOutBufLen parameter is too small to hold the adapter information or the pAdapterInfo parameter was a NULL pointer. When this error code is returned, the pOutBufLen parameter points to the required buffer size.


Копаю дальше. Ещё одна правка кода:
   Size := Sizeof( IP_ADAPTER_INFO );
   _debug (Size); //раз
L:= GetAdaptersInfo(@AdapterInfo, @Size);
_debug (Size); //два
if L = NO_ERROR then begin
Строка "раз" выдала "840", строка "два" - "1280".

Вывод: неправильный метод аллокации, не изучен пример в статье MSDN.
карма: 1

0