GetAdaptersAddressesアダプタ情報の取得
教材の上の知識はいつも少し遅い.
アダプタ情報を取得するGetAdaptersInfo関数は推奨関数ではありません.
Windows Xp以上のオペレーティングシステムではGetAdaptersAddressesを推奨します.
まず、関数のプロトタイプを見てみましょう.
参考資料:
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値はこのときループを飛び出して必要なデータを取得する.
参考ソース:ダウンロードをクリック
アダプタ情報を取得する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値はこのときループを飛び出して必要なデータを取得する.
参考ソース:ダウンロードをクリック