使用以下代码,或多或少从GetAdaptersAddresses 的 MSDN 示例复制粘贴,我得到返回值 122,这意味着 ERROR_INSUFFICIENT_BUFFER(根据此系统错误代码列表)。
ULONG outBufLen = 150000; // Tried for different (large) values here...
PIP_ADAPTER_ADDRESSES pAddresses = (IP_ADAPTER_ADDRESSES *) malloc(outBufLen);
DWORD dwRetVal = GetAdaptersAddresses(AF_INET, 0, NULL, pAddresses, &outBufLen);
// ....
free(pAddresses);
GetAdaptersAddresses 的文档未将 ERROR_INSUFFICIENT_BUFFER 列为预期返回值之一。(它列出了 ERROR_BUFFER_OVERFLOW,它应该将 outBufLen 调整为所需的值,但保持不变)。
相反,使用 GetAdaptersInfo 会导致相同的症状。
此错误不会发生在我的开发机器上,而是在一个虚拟和一个真正干净的 Windows 7 x86 SP1 安装上(添加了 VC++ 可再发行组件)。
作为一个 c++ 新手,我做错了吗?什么可能导致此错误以及如何解决?=)