Мы используем WZC на XP и Native WiFi на Vista, но вот код, который мы используем на Vista, FWIW.
Создание профиля:
// open a handle to the service
if ((dwError = WlanOpenHandle(
WLAN_API_VERSION,
NULL, // reserved
&dwServiceVersion,
&hClient
)) != ERROR_SUCCESS)
{
hClient = NULL;
}
return dwError;
dwError=WlanSetProfile(hClient, &guid, 0, profile, NULL, TRUE, NULL, &reason_code);
Установите соединение:
WLAN_CONNECTION_PARAMETERS conn;
conn.wlanConnectionMode=wlan_connection_mode_profile;
conn.strProfile=name;
conn.pDot11Ssid=NULL;
conn.pDesiredBssidList=NULL;
conn.dot11BssType=dot11_BSS_type_independent;
conn.dwFlags=NULL;
dwError = WlanConnect(hClient, &guid, &conn, NULL);
Проверка соединения:
BOOL ret=FALSE;
DWORD dwError;
DWORD size;
void *p=NULL;
WLAN_INTERFACE_STATE *ps;
dwError = WlanQueryInterface(hClient, &guid, wlan_intf_opcode_interface_state, NULL, &size, &p, NULL);
ps=(WLAN_INTERFACE_STATE *)p;
if(dwError!=0)
ret=FALSE;
else
if(*ps==wlan_interface_state_connected)
ret=TRUE;
if(p!=NULL) WlanFreeMemory(p);
return ret;
Чтобы поддерживать соединение с сетью, просто создайте поток, затем продолжайте проверять соединение, а затем повторно подключайтесь, если это необходимо.
РЕДАКТИРОВАТЬ: Человек этот материал разметки хромой. Мне нужно 3 правки, чтобы правильно понять фаркинг.