1. ホーム
  2. c++

[解決済み] GetAdaptersAddresses から返された ERROR_INSUFFICIENT_BUFFER

2022-02-15 16:04:51

質問

以下のコードを使用して、多かれ少なかれコピーペーストしたものです。 のMSDNサンプル GetAdaptersAddresses これは 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 のドキュメントには、期待される戻り値の 1 つとして ERROR_INSUFFICIENT_BUFFER が記載されていません。(それはERROR_BUFFER_OVERFLOWをリストし、それはoutBufLenを必要な値に調整すべきですが、それは変更されないままです)。

代わりにGetAdaptersInfoを使用すると、同じ症状になります。

このエラーは私の開発マシンでは発生せず、Windows 7 x86 SP1の仮想および実クリーンインストール(VC++再配布可能ファイルを追加)で発生します。

c++初心者の私は、何か間違ったことをしているのでしょうか?このエラーの原因は何でしょうか、そしてどうすれば直るのでしょうか?=)

解決方法は?

Visual Studioは、私のプロジェクトと一緒に"IPHLPAPI.dll"という名前のライブラリを展開し、問題を引き起こしました。このファイルを削除することで解決しました。

なぜそうなったかは、今後の研究課題です =)