2016-08-18 8 views
1

Приложение разработано в .Net CF 3.5 для Windows CE 5.0.Windows CE 5.0 Обнаружение стыковки (подключение к ПК) с отключенным ActiveSync

Из-за соображений безопасности ActiveSync отключен на устройстве. следующие значения реестра были установлены для достижения этого:

HKEY_CURRENT_USER \ ControlPanel \ Comm \ AutoCnct: 0 HKEY_CURRENT_USER \ ControlPanel \ Comm \ CNCT: ""

Чтобы добавить к этому, Softtick CardExport используется чтобы открыть хранилище через USB Mass Storage. CardExport всегда работает в этом режиме с собственным USB-драйвером.

Цель заключалась в использовании CeRunAppAtEvent в coredll и зарегистрировать NOTIFICATION_EVENT_RS232_DETECTED

Однако это только кажется, работает, когда CardExport не активен и устройство находится в режиме ActiveSync. Я считаю, что это связано с тем, что ОС не принимает событие RS232, поскольку его собственные драйверы ActiveSync не работают.

В настоящее время переменный ток используется для обнаружения, что устройство закреплено в его колыбели, используя RequestPowerNotifications в coredll и GetSystemPowerStatusEx.

Однако это не жизнеспособное долгосрочное решение, так как не все колыбели в концевой системе будут иметь мощность переменного тока, что означает, что мы не можем обнаружить док.

Возможно, что-то, что могло быть пропущено, доступ к которому можно получить в Windows CE 5.0, чтобы помочь решить эту проблему?

+0

Вы смешиваете термины? ActiveSync является частью Windows Mobile x.y, а не Windows CE. Windows CE обычно использует RAS-соединение. Если это устройство Windows Mobile, просто замените файл replog.exe на что-то свое и активируйте ActiveSync, как обычно. Затем этот файл replog.exe вызывается для события NOTIFICATION_EVENT_RS232_DETECTED с именем события в args. На стороне ПК вы можете использовать GuestOnly и запустить wmdcbase.exe вместо wmdc, чтобы не запускать WMDC в GUI. – josef

+0

@josef Хотя он вызывает диалог «Центр мобильных устройств Windows», WindowsCE действительно поддерживает ActiveSync, см., Например, https://msdn.microsoft.com/en-us/library/aa513321.aspx –

+0

Я не писал о RAPI но о Windows CE не поставляется с приложением «ActiveSync», как это делает Windows Mobile. Итак, я полагаю, в Windows CE не будет replog.exe. – josef

ответ

0

ActiveSync определенно работает с любым общим устройством Windows CE (при условии, что он имеет ActiveSync в образе ОС, конечно).

К сожалению, CeRunAppAtEvent не является стартовой системой для вас, как вы нашли. IIRC, ни одно из событий не будет срабатывать, если вы в гостевом режиме, хотя только для усмешек я также пробовал NOTIFICATION_EVENT_SYNC_END.

Поскольку это соединение с клиентом USB, вероятно, вы вряд ли получите уведомление устройства от подсистемы драйвера устройства, но это направление, которое я бы склонил. Посмотрите, появилось ли уведомление (с использованием RequestDeviceNotifications). Просто перейдите в NULL для devclass, чтобы получить все уведомления, затем, если вы его найдете, перейдите к использованию этого devclass в процессе производства.

+0

" К сожалению, CeRunAppAtEvent - это не стартер для вас, как вы уже нашли. IIRC, ни одно из событий не будет срабатывать, если вы находитесь в гостевом режиме ». Событие запускается на устройстве, а GuestMode - это настройка на ПК. Я запускаю свой компьютер с помощью GuestMode (более 5 устройств в процессе изменения) и ActiveSync запускает на всех устройствах (WinCE5/6, WM6, WM65 или WEH65 и WEC7) и на моем ПК. Вы правы, мое устройство WEC7 имеет приложение под названием ActiveSync, но WinCE 6 его не имеет, оно использует RAS. – josef

+0

Спасибо за все отзывы, которые подтвердили мои выводы. В конечном итоге мне пришлось полагаться на USB-драйвер в CardExport, который обеспечивал обратную связь. – Kevlar81