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
Вывод: неправильный метод аллокации, не изучен пример в статье MSDN.