掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
IPアドレスからMACアドレスを取得するには? (ID:55131)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
かなさん ありがとうございました☆ こ〜んな感じで作ってみました。 int GetMACAddressDora(char *MACAddress, int Count); int main() { char MACAddress[64]; GetMACAddressDora(MACAddress, 1); printf("%s", MACAddress); } //MACアドレスを取得 int GetMACAddressDora(char *MACAddress, int Count) { DWORD d = 0; char Buf[1024]; //第1パラメータにNULLをおいて、必要サイズを DWORD d に取得する GetIfTable( NULL , &d, FALSE ); //MIB_IFADDRTABLEへのポインタに、必要サイズを確保する PMIB_IFTABLE IfTable = (PMIB_IFTABLE)new char[d] ; if( IfTable ) { //アドレステーブルの取得 if( GetIfTable( (PMIB_IFTABLE)IfTable,&d,FALSE) == NO_ERROR ) { //取得したテーブル数は、dwNumEntriesで分かる for(int i=0;i< (int)IfTable->dwNumEntries;i++ ) { if(i+1 == Count) { //MACを表示 wsprintf(Buf,"%2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x" ,(unsigned char)IfTable->table[i].bPhysAddr[0] ,(unsigned char)IfTable->table[i].bPhysAddr[1] ,(unsigned char)IfTable->table[i].bPhysAddr[2], (unsigned char)IfTable->table[i].bPhysAddr[3], (unsigned char)IfTable->table[i].bPhysAddr[4], (unsigned char)IfTable->table[i].bPhysAddr[5]); strcpy(MACAddress, Buf); //MIB_IFADDRTABLEへのポインタに、確保したメモリを解放する delete [] IfTable; //成功したら0を返す return 0; } } } else { //エラーが発生したときは1を返す //MIB_IFADDRTABLEへのポインタに、確保したメモリを解放する delete [] IfTable; return 1; } //MIB_IFADDRTABLEへのポインタに、確保したメモリを解放する delete [] IfTable; } //最後まできてしまったら、MACをみたいNICの枚数が多すぎ。この時は2を返す return 2; } 一部省略ですが、こんな感じで。 まだ試していないですが、複数NICがあったときに、いったんこの関数を使ってカウントし、そのうちの指定した番号のMACが取れたらいいな〜って感じで作っています。 現状では、まだNIC1枚挿しでしか試していませんが・・・ これからデバッグでっす☆ 本当にありがとうございました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.