1

上記をお願いしたいです。IP Helper API を見つけましたが、これは機能します。唯一の問題は、Vista より古いシステムでは、アダプタがワイヤレスか通常のイーサネットかを識別できないことです。WinXP と Server 2003 もサポートする必要があります。

ドキュメント(IP Helper)からの関連する引用は次のとおりです。

IEEE 802.11 ワイヤレス ネットワーク インターフェイス。注: このアダプターの種類は、Windows Vista 以降で返されます。Windows Server 2003 および >Windows XP では、IEEE 802.11 ワイヤレス ネットワーク インターフェイスは >MIB_IF_TYPE_ETHERNET のアダプタ タイプを返します。

では、WinXP/Server2003 以降でワイヤレス アダプタを識別し、MAC アドレスを取得するにはどうすればよいでしょうか?

4

2 に答える 2

0

GetAdapterAddressesは Windows API の一部であり、MAC アドレスと NIC タイプの両方に関する情報を提供する必要があります。

呼び出しは、アダプターのリンクされたリストを指す構造を返します。

IP_ADAPTER_ADDRESSESバージョン間で構造体のサイズが変更されているため、Windows バージョン間の移植性を維持するために、構造体のサイズをハード コーディングしないようにしてください。

編集:

Vista以降は正しいタイプのみを報告するため、これは明らかにMACアドレスのみを提供します

ただし、 GetIfTableMIB_IFTABLEは構造体を返しますMIB_IFROW。これから、IF_TYPE_IEEE80211 型であるかどうかにかかわらず、dwType を持つ a を読み取ることができます。これには、これが Vista に固有のものであり、MS がドキュメントを台無しにしない限り、XP に有効であるというメモはありません。

これらは両方とも物理アドレスを持つ必要があるため、これら 2 つのエントリを照合して 1 枚のカードを識別できるはずです。

于 2013-02-19T11:26:44.487 に答える
0

XP を最初からサポートする場合、これはネイティブ Wifi API が XP に導入される前です (SP 2 & 3 はネイティブ Wifi API をサポートします)。

WMIを通じて、まだ機会があるかもしれないと思います。(非推奨の WMI クラス)を作成できる可能性があります。このクラスでは、それがワイヤレス デバイスであるかどうかを示し、MAC アドレスを提供するものWin32_NetworkAdapterを抽出できるはずです。AdapterTypeIDMACAddress

したがって、Windows XP SP 2 以降をサポートするか、WMI および廃止されたクラスと統合する必要があるかのいずれかを選択すると思います。いずれにせよ、飲み込むラクダがいるようです。

于 2013-02-20T08:36:53.010 に答える