Добрый вечер.
Сталкнулся с RIL и не могу понять, что за дела.
Почему при вызове RIL_Initilization функция возращает значения не S_OK при любых комбинациях.
Дело в том, сто нужно получить хендл ком порта. Копал TAPI на ББ хендл я получаю и он ведёт себя так как надо (как обычный ком порт), а во на Win CE (в часности Win Mobile 6) не понятно.
Может хендл от RIL будет работать как "обычный" хендл ком порта?
Заранее благодарен...
RIL
Модератор: Модераторы
Доброго времени суток!
Вы имеете в виду RIL_Initilize? Вообще-то, не все функции RIL являются синхронными функциями, и если функция вернула не 0, то результат можно проверить специальной макро-функцией ISRILERROR на предмет, действительно ли произошла ошибка. Если ошибки-таки нет, то этот код будет передан в Вашу функцию обратного вызова типа RILRESULTCALLBACK вторым параметром (hrCmdID), чтобы можно было узнать, какая именно асинхронная операция завершена на этот раз.
Что касается RIL_Initilize, то насколько я помню, она вызывается синхронно. Возможно, Вы передали в нее ошибочный параметр?
Попробуйте использовать функцию RIL_GetSerialPortHandle или какую-либо подобную. Дескриптор, возвращаемый RIL_Initilize, дескриптором ком-порта не являеться.
Сейчас не помню ссылку, но прочитать о RIL можно в MSDN On-Line, там все толково описано.
Mr.Smart писал(а):Почему при вызове RIL_Initilization функция возращает значения не S_OK при любых комбинациях.
Вы имеете в виду RIL_Initilize? Вообще-то, не все функции RIL являются синхронными функциями, и если функция вернула не 0, то результат можно проверить специальной макро-функцией ISRILERROR на предмет, действительно ли произошла ошибка. Если ошибки-таки нет, то этот код будет передан в Вашу функцию обратного вызова типа RILRESULTCALLBACK вторым параметром (hrCmdID), чтобы можно было узнать, какая именно асинхронная операция завершена на этот раз.
Что касается RIL_Initilize, то насколько я помню, она вызывается синхронно. Возможно, Вы передали в нее ошибочный параметр?
Mr.Smart писал(а):Дело в том, сто нужно получить хендл ком порта. Копал TAPI на ББ хендл я получаю и он ведёт себя так как надо (как обычный ком порт), а во на Win CE (в часности Win Mobile 6) не понятно.
Может хендл от RIL будет работать как "обычный" хендл ком порта?
Попробуйте использовать функцию RIL_GetSerialPortHandle или какую-либо подобную. Дескриптор, возвращаемый RIL_Initilize, дескриптором ком-порта не являеться.
Сейчас не помню ссылку, но прочитать о RIL можно в MSDN On-Line, там все толково описано.
Fantomas писал(а):... Дескриптор, возвращаемый RIL_Initilize, дескриптором ком-порта не являеться....
Спасибо за ответ.
Кстати для ипользовании RIL_GetSerialPortHandle нужно ли подписывать приложение привелегированым сертификатом?
Mr.Smart писал(а):Кстати для ипользовании RIL_GetSerialPortHandle нужно ли подписывать приложение привелегированым сертификатом?
Не думаю, что надо что-либо подписывать.
Если честно, над этим я не задумывался. (У меня на PDA все равно проверка сертификатов отключена.)
Дело в том что в Win Mobile начиная с версии 5 действует привелегерованный доступ к API. Доступ ко многим функциям низко уровнего API возможен только из подписанного исполняемого файла. Сертификат должен иметь "уровень" необходимый для доступа к API.
Отключение проверки сертификатов не действует на привелегерованныу функции API.
Гдето читал, что привелегерованное будет API или нет определяет OEM создатель системы.
з.ы. Данным вопросом пока не занимался т.к. не было времени и всю реализацию сделал через TAPI (хотя мне не очень нравится как это всё работает!). Как появится время буду рать в сторону RIL.
Добавлено спустя 1 минуту 33 секунды:
на счёт "толково" вы пошутили?
Отключение проверки сертификатов не действует на привелегерованныу функции API.
Гдето читал, что привелегерованное будет API или нет определяет OEM создатель системы.
з.ы. Данным вопросом пока не занимался т.к. не было времени и всю реализацию сделал через TAPI (хотя мне не очень нравится как это всё работает!). Как появится время буду рать в сторону RIL.
Добавлено спустя 1 минуту 33 секунды:
Fantomas писал(а):Сейчас не помню ссылку, но прочитать о RIL можно в MSDN On-Line, там все толково описано.
на счёт "толково" вы пошутили?
Сейчас проверил на PDA, где сертификаты включены. Ничего не требует. Открывает порт, возвращает дескриптор. Пишет в порт, что скажут. Да и нигде в справочнике ничего о сертификатах не сказано.
Если начнете работать через RIL, смотрите внимательно, под какой версией ОС программа будет работать. От версии к версии может меняться интерфейс некоторых функций. В FP сейчас модуль ril.pp для WM 6.0.
А насчет "толково" я не шутил. Действительно следует прочитать перед использованием RIL:)
Если начнете работать через RIL, смотрите внимательно, под какой версией ОС программа будет работать. От версии к версии может меняться интерфейс некоторых функций. В FP сейчас модуль ril.pp для WM 6.0.
А насчет "толково" я не шутил. Действительно следует прочитать перед использованием RIL:)
А вот насчет сертификатов я пошутил. В MSDN действительно сказано, что OEM (писатель RIL) должен проверять сертификат и не давать кому попало пользоваться COM-портом. Однако, видимо, не все производители прошивок для PDA это реализуют. Во всяком случае, как мне кажется, интерфейс RIL предоставляет достаточно функций для решения многих задач, связанных с радиомодулем.
