GetAdaptersAddressesアダプタ情報の取得


教材の上の知識はいつも少し遅い.
アダプタ情報を取得するGetAdaptersInfo関数は推奨関数ではありません.
Windows Xp以上のオペレーティングシステムではGetAdaptersAddressesを推奨します.
 
まず、関数のプロトタイプを見てみましょう.
ULONG WINAPI GetAdaptersAddresses(
  __in          ULONG Family,
  __in          ULONG Flags,
  __in          PVOID Reserved,
  __in_out      PIP_ADAPTER_ADDRESSES AdapterAddresses,
  __in_out      PULONG SizePointer
);

 
参考資料:
GetAdaptersAddresses function http://msdn.microsoft.com/en-us/library/windows/desktop/aa365915(v=vs.85).aspx
 
次の点に注意してください.
GetAdaptersAddresses関数は、メモリを指定したヒープにコピーする方法でデータを取得するため、アダプタの数が不確定な値であるため、ヒープのサイズが不確定になります.したがって、最初に変更関数を実行すると、申請するスタックのサイズのみが取得され、ERROR_が返されます.BUFFER_MOVERFLOW値.したがって、アダプタ情報を取得するには、少なくとも2回実行する必要があります.データが正常に充填されている場合、2回目の充填時に、pAdapterAddressesが指すメモリスタック領域が申請されたため、ERROR_は返されません.BUFFER_OVERFLOW値はこのときループを飛び出して必要なデータを取得する.
 
 
参考ソース:ダウンロードをクリック