Данный текст, рекомендуется читать в случае если у вас возникли проблемы при работе с bluetooth в среде Borland C++. Принцип работы с bluetooth и в Delphi ,и в Builder'е одинаков. Но ,для того чтобы  заработало это в Builder'е, пришлось пойти на некоторые уловки.

Итак, первое что вам понадобится – архив, содержащий заголовочные файлы и lib’ы. Заголовочные файлы для удобства складываются в папку include, lib'ы ,соответственно , тоже.

    //пока не забыл, киньте на форму три компонента 2-TreeView(здесь будут отображаться ваши устройства : радио и девайсы), и один ListBox

послужит отражение
проводимых действий.
BLUETOOTH_FIND_RADIO_PARAMS btfrp; HBLUETOOTH_RADIO_FIND
hFind;  BLUETOOTH_RADIO_INFO
RadioInfo =
{0}; btfrp.dwSize=

sizeof(btfrp);
hFind=
  BluetoothFindFirstRadio(&btfrp,&hRadio);
if(NULL!= hFind) { BLUETOOTH_RADIO_INFO

radioInfo; radioInfo.dwSize = 

sizeof(radioInfo);
TTreeNode*
tree;Form1->ListBox1->Items->Add("Radioisfound,began
questioning");if(ERROR_SUCCESS= 
=
BluetoothGetRadioInfo(hRadio, &radioInfo))
{AnsiString
name[256];name[256]=radioInfo.szName;Form1->TreeView1->Items->BeginUpdate();
Form1->ListBox1->Items->Add("Radiorequesting.......");Application->ProcessMessages();
AnsiStringabc;abc=   
  String(radioInfo.szName); Form1->TreeView1->Items->Add(tree,abc); Form1->TreeView1->Items->EndUpdate(); Form1->ListBox1->Items->Add("Radio requesting is
finished.");
return
hRadio;//возвращаем
хенделбрилкаоннам еще пригодиться. } else { Form1->ListBox1->Items->Add("Radio request
isfaliled,readhealabout
this
topic!");
Form1->ListBox1->Items->Add(GetLastError());
}
} else {

TTreeNode*tres;Form1->ListBox1->Items->Add("Not nor one local device of the issue Bluetooth is installed!");
CloseHandle(hRadio);
}
}
Вот и все теперь можно получить список удаленных устройств (брелоков).
Для поиска удаленных устройств у меня получилась вот такая простая функция.
void findremote(HANDLE hRadio,bool aunt,bool remeber,bool uncknow,bool connect)
{
               BLUETOOTH_DEVICE_INFO_STRUCT deviceInfo;

     deviceInfo.dwSize = sizeof(deviceInfo);

     BLUETOOTH_DEVICE_SEARCH_PARAMS deviceSearchParams;

  memset(&deviceSearchParams, 0, sizeof(deviceSearchParams));

     deviceSearchParams.dwSize = sizeof(deviceSearchParams);

     deviceSearchParams.fReturnAuthenticated = aunt;
     deviceSearchParams.fReturnRemembered = remeber;
     deviceSearchParams.fReturnUnknown = uncknow;
     deviceSearchParams.fReturnConnected = connect;

     deviceSearchParams.hRadio = hRadio;

     HANDLE hDeviceFind = BluetoothFindFirstDevice(&deviceSearchParams, &deviceInfo);

     if (NULL !=
    
   
    hDeviceFind)

                         { do
                         {TTreeNode*node;Form1->TreeView2->Items->Add(node,String(deviceInfo.szName));
                         BluetoothGetDeviceInfo(hRadio, &deviceInfo);
                         GUID guidServices[10];
                         DWORD numServices = sizeof(guidServices);
                         DWORD result =    BluetoothEnumerateInstalledServices(hRadio,
                        &deviceInfo,
    &numServices, guidServices);

    }
    while(BluetoothFindNextDevice(hDeviceFind,



deviceInfo));
BluetoothFindDeviceClose(hDeviceFind);

}else{Form1->ListBox1->Items->Add("No any remote device in working area");
SOCKET s;
SOCKADDR_BTH sbth;
memset(&sbth, 0, sizeof(sbth));
sbth.addressFamily = AF_BTH;
sbth.btAddr = 0;
sbth.port =
   BT_PORT_ANY; if  (bind(s,
(const
sockaddr*)&sbth,sizeof(SOCKADDR_BTH))== SOCKET_ERROR) { Form1->ListBox1->Items->Add("All right
we
bind
now!!!");
}else{Form1->ListBox1->Items->Add("Bind is failded. ");

}
}     
}

Расскажу главное. Первые три переменные, которые объявлены в функции, могут использоваться в установке следующих параметров поиска:

deviceSearchParams.fReturnAuthenticated = aunt;
deviceSearchParams.fReturnRemembered = remeber;
deviceSearchParams.fReturnUnknown = uncknow;
deviceSearchParams.fReturnConnected = connect;
aunt ,соответственно если true, то поиск возвращает только аудентифицированные устройства ,remeber –запомненные, uncknow– неопознанные, connect–подключенные.

Для чего нужно создавать сокет и ставить его на прослушку, я расскажу в 3-4 частах патча.

Спасибо:Михаилу Петриченко за его помощь.

С уважением,

Шишкин Владимир.