Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как програмнно включить WiFi на WinCE?  (Прочитано 38293 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mika505
Новенький

ru
Offline Offline

« : 28-10-2010 15:20 » 

Привет всем!
Столкнулся с проблемой включения WiFi адаптера.
Адаптер AR6K_SD1 в реестре:

[HKEY_LOCAL_MACHINE\Comm\AR6K_SD1]
Display Name=AR6000 WLAN Adapter SD
Group=NDIS
ImagePath=ar6k_ndis_sdio.dll
Wireless=1

[HKEY_LOCAL_MACHINE\Comm\AR6K_SD1\Parms]
powerSaveMode=2
currentPowerState=1
BusType=0
BusNumber=0
BtCoexAntConfig=0
eepromFile=NULL

Пытался через SetDevicePower(szName, POWER_NAME, PwrDeviceUnspecified) - включение, и SetDevicePower(szName, POWER_NAME, D4) - выключение.
Где szName={98C5250D-C29A-4985-AE5F-AFE5367E5006}\AR6K_SD1.

Проблема в том, что при перезагрузке, когда адаптер выключен, функция включения не работает. Если включить через навигатор WiFi, то SetDevicePower начинает работать и на включение, и на выключение.

Как я понял проблема в том, что адаптер необходимо сначала активировать.
Проверил регистр до включения WiFi и после - разница в том, что появляется новый ключ
[HKEY_LOCAL_MACHINE\Drivers\Active\103]
Hnd=3582778688
Name=DRG1:
Key=\Drivers\SDCARD\ClientDrivers\Custom\MANF-0271-CARDID-0201-FUNC-1
BusParent=3489963616
InterfaceType=0
BusName=SDBus_1_0_1
ClientInfo=686337

Сам ключ [HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Custom\MANF-0271-CARDID-0201-FUNC-1] выглядит так
Dll=ar6k_ndis_sdio.dll
Prefix=DRG

В общем, тогда пробовал до вызова SetDevicePower на включение вызывать
handle = ActivateDevice(L"\\Drivers\\SDCARD\\ClientDrivers\\Custom\\MANF-0271-CARDID-0201-FUNC-1",NULL);
на что выдовало handle=NULL, а GetLastError()=110(ERROR_OPEN_FAILED
)

В общем, больше пока ничего в голову не пришло.

Если есть идеи, пишите, буду благодарен.
« Последнее редактирование: 01-11-2010 10:08 от Sel » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 30-10-2010 22:04 » 

mika505, а нет ли там утилиты netsh?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
mika505
Новенький

ru
Offline Offline

« Ответ #2 : 02-11-2010 10:43 » 

нет, она вообще для WinCE есть?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 02-11-2010 17:55 » 

Я с WinCE в жисть не встречался. Потому и спрашиваю. Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
dusty
Интересующийся

ru
Offline Offline

« Ответ #4 : 09-11-2010 17:44 » 

Ключи грузят проги только в момент загрузки оси.  Win32 API твой зверёк поддерживат. Поэтому:
winexec('c:\command.com', SW_MAXiMIZE); <---------- пример 1.

ИЛИ

ShellExecute(NULL,NULL,pathexe,path,param,SW_SHOW);<---------- пример 2.
/*
где
pathexe - путь к exe "c:\\windows\\notepad.exe";
path - путь к директории с exe "c:\\windows"
param - передаваеммых параметры
*/

(громкие продолжительные апплодисменты)
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 09-11-2010 18:08 » 

dusty, поясни твои примеры - что-то совсем не понятно, какое отношение имеет command.com и notepad.exe к WiFi?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
dusty
Интересующийся

ru
Offline Offline

« Ответ #6 : 10-11-2010 18:00 » new

RXL, пусть вызывает нужный ему *.exe с помощью подобных примеров. Естественно, вместо "command.com" и "notepad.exe" нужно задействовать ту программу, которая включает WiFi.
Если тут нужно задействовать драйвер содержащийся в *.sys, *.lib или *.dll, то я не знаю точно можно ли так его вызвать или нет. В этом случае можно попробовать хотя бы, написать программу вызова данного драйвера. Средствами С,С++ компилятора, если драйвер уже есть, или, если драйвера нет, то средствами NuMega.DriverStudio.v3.0Beta2 например.

Добавлено через 15 минут и 55 секунд:
Или хотя бы нужно знать что шлет драйвер девайсу и наоборот и по каким адресам в системе.
« Последнее редактирование: 10-11-2010 18:15 от dusty » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines