2007-10-22

IP Helper APIを使う

無線LANの MACアドレスを調べる方法を探していて IP Helper APIというものを見つけました。
その中の GetIfTableを使うことで MACアドレスを調べることはできたのですが、使い方がわからずにしばらく悩んだので自分用にメモを残しておきます。
 
ポイントは、情報取得に必要なサイズを取得するために 1回余分に GetIfTableを呼ぶことと、初回の呼び出し時にも pdwSizeパラメータの初期化が必要という事でしょうか。
 
PMIB_IFTABLE    pMibIfTable;
ULONG           ulSize;

// NICの情報取得に必要なサイズを取得
ulSize = 0l; // GetIfTableの呼び出し前に初期化が必要
if (ERROR_INSUFFICIENT_BUFFER == GetIfTable(NULL, &ulSize, FALSE)) {
    // 必要分の領域を確保(結構大きいサイズが必要)
    pMibIfTable = (PMIB_IFTABLE)malloc(ulSize);
}

// NICの情報を取得
if (NO_ERROR == GetIfTable(pMibIfTable, &ulSize, FALSE)) {
    for (int i = 0; i < pMibIfTable->dwNumEntries; i++) {
        // 各NICの情報
    }
    free(pMibIfTable);
}
 
ところで、NICの情報として取得できる MIB_IFROWには dwSpeedという気になるメンバがあります。
ちょっと期待したのですが、アドエスの無線LANはここでも 11Mbpsとなっていました。
何とかしてリンク速度も取得したいものですね。
 

0 件のコメント: