XP上的无线管理(SP2/SP3)
Vista上的Wifi支持很好,但Native Wifi on XP已经完成了一半。 NDIS 802.11 Wireless LAN Miniport Drivers只会让你在那里的一部分(例如网络扫描)。从我读过的(并尝试过),在XP上的802.11 NDIS驱动程序将而不是允许您配置无线连接。您必须使用Native Wifi API才能执行此操作。 (请纠正我,如果我在这里错了。)应用程序,如InSSIDer已帮助我了解API,但InSSIDer只是一个扫描仪,并不旨在配置Wifi网络。XP上的无线管理(SP2/SP3)
所以,问题是:我在哪里可以找到一些处理XP上的Wifi网络配置的代码示例(C#或C++) - 例如配置文件创建和连接管理?
我应该注意到,这是一个封闭系统上的XP Embedded应用程序,我们无法使用内置的无线零配置(WZC)。我们必须在我们的.NET应用程序中构建所有Wifi管理功能。
是的,我把自己变成了蓝色。似乎有人应该解决这个问题,但我找不到它。这就是我在这里问的原因。
谢谢。
我们在XP上使用WZC和Vista上的本地WiFi,但是这里是我们在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个编辑来让事情正确。
感谢您的反馈尼克。我几乎已经获得了配置文件和连接管理工作。诀窍是搞清楚XP上支持的Native API的哪些部分是而不是。幸运的是,Managed Wifi API已连接/断开在XP上运行的通知事件(NetworkChange也提供了类似的更改事件)。