一汁三菜

自分が楽しいと思うこと、マラソン、旅行、その他日々の記録をしたい。

Wireless LAN APIを使ってみた

Windows XP SP3から標準搭載される予定の、Wireless LAN APIを使ってみています。Windows XP SP3でなくても、SP2ならばKB918997をインストールすれば使えます。

まず、Windows側で無線LANを管理していないといけないので、サードパーティ製ツールで接続管理をしている場合は、Windows側で管理するようにします。

それから、Windows Zero Configurationを有効にする必要がありますので、起動していなかったらサービスを見つけて立ち上げましょう。

とりあえず、Wireless LANのNIC一覧を取得するコードを書いてみました。

#include <windows.h>
#include <iostream>
#include <Wlanapi.h>
#pragma comment(lib, "wlanapi.lib")

int main(void)
{
	unsigned i;
	DWORD err, ver;
	HANDLE hClient;
	WLAN_INTERFACE_INFO_LIST *ifList;

	if((err = WlanOpenHandle(WLAN_API_MAKE_VERSION(1, 0), NULL, &ver, &hClient)) != ERROR_SUCCESS) {
		std::cerr << "error: WlanOpenHandle()" << std::endl;
		return 1;
	}

	// get interface list
	WlanEnumInterfaces(hClient, NULL, &ifList);
	std::cout << ifList->dwNumberOfItems << " interfaces found" << std::endl;
	for(i = 0; i < ifList->dwNumberOfItems; ++i) {
		WLAN_INTERFACE_INFO wii = ifList->InterfaceInfo[i];
		std::wcout << wii.strInterfaceDescription << std::endl;
	}

	WlanFreeMemory(ifList);
	WlanCloseHandle(hClient, NULL);
	return 0;
}