Создание ACL-соединения WM 5.0 PPC
От: Helen_Tim Украина  
Дата: 26.05.08 14:47
Оценка:
Здравствуйте
Пытаюсь создать блютузное ACL-соединение под Windows Mobile 5.0 PPC (Microsoft Bluetooth Stack). Функция BthCreateACLConnection возвращает ERROR_NO_SYSTEM_RESOURCES (код ошибки 1450). Искала в интернете, с чем это может быть связано, но никакой информации не нашла. Вот кусок кода:

        HANDLE hFileProection = CreateFile( _T("BHI0:"), 0, 0, 0, 0, 0, 0 );
    if( hFileProection != INVALID_HANDLE_VALUE )
    {
              USHORT ushHandle = 0;
          DWORD dwError = BthCreateACLConnection( &bt_address, &ushHandle );   //dwError == 1450
          if ( dwError == ERROR_SUCCESS )
          {
                   if( BthAuthenticate( &bt_address ) != ERROR_SUCCESS )
                   {
                         bt_address = NULL;
                   }
                   BthCloseConnection( usHandle );
              }

              if( bt_address && DeviceIoControl( hFileProection, BTHHID_IOCTL_HIDConnect, &bt_address, sizeof(BT_ADDR), 0, 0, 0, 0 ) )
          {
                   //...
              }
        }


Буду благодарна за любую информацию, которая поможет решить проблему. Заранее спасибо!
Re: Создание ACL-соединения WM 5.0 PPC
От: maxmkh  
Дата: 25.08.08 19:29
Оценка:
Здравствуйте, Helen_Tim, Вы писали:

H_T>Здравствуйте

H_T>Пытаюсь создать блютузное ACL-соединение под Windows Mobile 5.0 PPC (Microsoft Bluetooth Stack). Функция BthCreateACLConnection возвращает ERROR_NO_SYSTEM_RESOURCES (код ошибки 1450). Искала в интернете, с чем это может быть связано, но никакой информации не нашла. Вот кусок кода:

Menya toge interesuet eta tema, v osobennosti esli dostup k ACL v Windows Mobile(WM), zashel na msdn http://msdn.microsoft.com/en-us/library/aa916728.aspx tam napissano chto eta funciya poddergivaetsya v Windows Embedded CE, kak ya ponimaiu v WM eta function ne poddergivaetsya. Esli vi nashli reshenie pogalusta soobchite, ochen hotel bi znat.
Re: Создание ACL-соединения WM 5.0 PPC
От: Ation Украина ation.pp.ua
Дата: 01.09.08 05:58
Оценка:
Здравствуйте, Helen_Tim, Вы писали:

H_T>Здравствуйте

H_T>Пытаюсь создать блютузное ACL-соединение под Windows Mobile 5.0 PPC (Microsoft Bluetooth Stack). Функция BthCreateACLConnection возвращает ERROR_NO_SYSTEM_RESOURCES (код ошибки 1450). Искала в интернете, с чем это может быть связано, но никакой информации не нашла. Вот кусок кода:

H_T>
H_T>        HANDLE hFileProection = CreateFile( _T("BHI0:"), 0, 0, 0, 0, 0, 0 );
H_T>    if( hFileProection != INVALID_HANDLE_VALUE )
H_T>    {
H_T>              USHORT ushHandle = 0;
H_T>          DWORD dwError = BthCreateACLConnection( &bt_address, &ushHandle );   //dwError == 1450
H_T>          if ( dwError == ERROR_SUCCESS )
H_T>          {
H_T>                   if( BthAuthenticate( &bt_address ) != ERROR_SUCCESS )
H_T>                   {
H_T>                         bt_address = NULL;
H_T>                   }
H_T>                   BthCloseConnection( usHandle );
H_T>              }

H_T>              if( bt_address && DeviceIoControl( hFileProection, BTHHID_IOCTL_HIDConnect, &bt_address, sizeof(BT_ADDR), 0, 0, 0, 0 ) )
H_T>          {
H_T>                   //...
H_T>              }
H_T>        }
H_T>


H_T>Буду благодарна за любую информацию, которая поможет решить проблему. Заранее спасибо!


А чем инициализируется bt_address?
блог
Re: Создание ACL-соединения WM 5.0 PPC
От: GGoga  
Дата: 02.09.08 14:38
Оценка:
Здравствуйте, Helen_Tim, Вы писали:

H_T>
H_T>    HANDLE hFileProection = CreateFile( _T("BHI0:"), 0, 0, 0, 0, 0, 0 );
H_T>    if( hFileProection != INVALID_HANDLE_VALUE )
H_T>    {
H_T>          USHORT ushHandle = 0;
H_T>          DWORD dwError = BthCreateACLConnection( &bt_address, &ushHandle );   //dwError == 1450
H_T>          //...
H_T>    }
H_T>


Заранее извиняюсь, если отвечаю с огромным опозданием, только сейчас увидел вопрос.
Данная проблема мне знакома не по наслышке Я думаю, что Helen_Tim поймет, если меня узнает. Дело в том, что она возникает во время первого соединения с клавиатурой. Объяснить это можно тем, что при таком случае клавиатуру (а именно о ней идет речь) необходимо зарегестрировать (подробностей протекания системных процессов при этом объяснить не могу), на что уходит определенное время. Код выполняется достаточно быстро, а по этому, при попадании на данный "участок кода" не может по соответствующим обстоятельствам выполниться успешно. При последующих соединениях с клавиатурой (если не сделан хард-ресет) это все проходит быстро ибо данные о дэвайсе (клавиатуре) уже закешированы. У меня эти проблемы тоже возникали Решалось обычно это в дэбаге установлением точки прерывания (во время отладки, по сему способ кривой конечно). На релизной версии можно пустить поток, осуществляющий регистрацию клавиатуры, и ждать его завершения через функции синхронизации, а более тупой вариант — дожидаться регистрации с помощью обычного Sleep-а.

Здесь же отвечу на вопрос maxmkh:
M>Menya toge interesuet eta tema, v osobennosti esli dostup k ACL v Windows Mobile(WM), zashel na msdn http://msdn.microsoft.com/en-us/library/aa916728.aspx tam napissano chto eta funciya poddergivaetsya v Windows Embedded CE, kak ya ponimaiu v WM eta function ne poddergivaetsya. Esli vi nashli reshenie pogalusta soobchite, ochen hotel bi znat.

Функция поддерживается и отлично работает. Употребляю слово "отлично" потому, что данные "косяки" присущи не самой функции, а непосредственно реализации ОС и АО.

А также вопрос Ation:
A>А чем инициализируется bt_address?
Переменная инициализируется значением адреса bluetooth-клавиатуры с помощью следующих действий:
1. Поиск bluetooth-устройств (BthNsLookupServiceBegin + BthNsLookupServiceNext + BthNsLookupServiceEnd);
2. "Регистрация" адреса в системе (код приводит не буду).

Скажу только то, что в данном коде все "косяки" то и возникали из-за первичной регистрации клавиатуры.

Но это уже лирика. Уже прошло много времени, думаю уже все реализовано было самой Helen_Tim
Re: Создание ACL-соединения WM 5.0 PPC
От: Helen_Tim Украина  
Дата: 04.09.08 10:42
Оценка:
Всем спасибо за помощь, особенно GGoga , но проблема уже действительно неактуальна.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.