В настоящее время я пытаюсь создать некоторое оборудование для своего друга, и я заметил, что GetAdaptersInfo kinda ведет себя странно. Согласно MSDN pOutBufLen должен указывать на переменную, содержащую значение sizeof(IP_ADAPTER_INFO)
(640). Но когда я использую это значение, он возвращает 111 (ERROR_BUFFER_OVERFLOW
) и устанавливает outBufLen на 2560. При вызове функции с outBufLen, установленной на 2560, он просто сработает.GetAdaptersInfo crashing
Минимальный код воспроизводства:
#include <windows.h>
#include <Iphlpapi.h>
int main()
{
IP_ADAPTER_INFO adapter_inf;
unsigned long int outBufLen = sizeof(IP_ADAPTER_INFO);
GetAdaptersInfo(nullptr, &outBufLen); // returning 111 (ERROR_BUFFER_OVERFLOW) and setting outBufLen to 2560
GetAdaptersInfo(&adapter_inf, &outBufLen); // crash during this call
return 0;
}
Не знаю, если это имеет значение, но 64-битной Windows 8 здесь.
Просто случайно ненавидя себя после 3 часов депрессии. Спасибо. –
Значит ли это, что структура IP_ADAPTER_INFO меньше длины, возвращаемой первым вызовом? –
@ OtávioDécio Да. –