Здравствуйте
Пытаюсь создать блютузное 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 ) )
{
//...
}
}
Буду благодарна за любую информацию, которая поможет решить проблему. Заранее спасибо!
Здравствуйте, 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.
Здравствуйте, 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?
Здравствуйте, 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
Всем спасибо за помощь, особенно GGoga

, но проблема уже действительно неактуальна.