OID_802_11_INFRASTRUCTURE_MODEで変更できそうだったのですが、残念なが動作しませんでした。
切り替えどころか、現在値を取得しようとしても常に Ndis802_11IBSS(アドホックモード)が返ってきます。
BOOL bRet = FALSE;
DWORD dwBytesReturned = 0,
dwError;
UCHAR ucQueryBuffer[sizeof(NDISUIO_QUERY_OID) + sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE)];
PNDISUIO_QUERY_OID pNdisQueryOid = (PNDISUIO_QUERY_OID)&ucQueryBuffer[0];
NDIS_802_11_POWER_MODE ndisPowerMode;
NDIS_802_11_NETWORK_INFRASTRUCTURE ndisNetworkInfrastructure
pNdisQueryOid->Oid = OID_802_11_INFRASTRUCTURE_MODE;
pNdisQueryOid->ptcDeviceName = WLAN_DEVICE_NAME;
if (DeviceIoControl(
g_hNdis ,
IOCTL_NDISUIO_QUERY_OID_VALUE ,
(LPVOID)&ucQueryBuffer[0] ,
sizeof(ucQueryBuffer) ,
(LPVOID)&ucQueryBuffer[0] ,
sizeof(ucQueryBuffer) ,
&dwBytesReturned ,
NULL
)) {
memcpy_s(&ndisNetworkInfrastructure, sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE), &pNdisQueryOid->Data[0], sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE));
bRet = TRUE;
} else {
dwError = GetLastError();
}
NDIS系の操作は未サポートのものが多いですね。
2 件のコメント:
インフラとアドホックの切り替えは面倒ですよね。
WM標準のWifi管理は使い勝手がなぁ。
接続はあれど切断は無いし、アドホックは相手側から起動しないと接続できないし(コンピュータからコンピュータへを選ぶとできる謎仕様)、アドホックに繋ぎたいのにインフラで繋がったり・・・
WifiInfoで長タップかセンターキー長押しでAP一覧のリストみたいなのが出てそれから選べれば良いんですけど、アドエスの仕様上、そういうのって可能なんでしょうか?
yamameさん こんにちは。
AP一覧は OID_802_11_BSSID_LISTで取得できそうですね。
複数のAPから接続先を選べるような環境では無いので試してなかったのですが、アドホックで待ち受けているPC等があればそちらに切り替えることができるかもしれません。
後で試してみます。
コメントを投稿