谁能帮我看看,为什么搜索不到蓝牙设备
我的操作系统为 XP sp2,thinkpad自带蓝牙功能,使用自带的蓝牙功能能够搜索到附近的蓝牙设备(如手机蓝牙),但自己编程却无法搜索到。各位高手帮我看看有什么问题,程序是在网上找的:
void CBlueToothTestView::OnBnClickedButtonSearchout()
{
m_listout.ResetContent();
CString cs;
// setup windows sockets
WORD wVersionRequested ;
WSADATA wsaData ;
wVersionRequested = MAKEWORD(2,0);
if( WSAStartup( wVersionRequested ,&wsaData )!=0) {
AfxMessageBox(_T("WSAStartup err\n") );
return;
}
// prepare the inquiry data structure
DWORD qslen = sizeof( WSAQUERYSET );
WSAQUERYSET *qs =(WSAQUERYSET* ) malloc( qslen );
ZeroMemory( qs , qslen );
qs->dwSize = sizeof(WSAQUERYSET );
qs->dwNameSpace = NS_BTH ;
DWORD flags = LUP_CONTAINERS ;
flags |= LUP_FLUSHCACHE | LUP_RETURN_NAME | LUP_RETURN_ADDR ;
HANDLE h ;
// start the device inquiry
if( SOCKET_ERROR == WSALookupServiceBegin ( qs , flags ,&h )) {
cs.Format(_T("WSALookupServiceBegin err, code is %d"), WSAGetLastError());
AfxMessageBox(cs);
return;
}
bool done = false ;
while (! done) {
if(NO_ERROR == WSALookupServiceNext (h , flags ,&qslen , qs)) {
char buf[40] = {0};
SOCKADDR_BTH *sa =
(SOCKADDR_BTH* )qs->lpcsaBuffer->RemoteAddr.lpSockaddr ;
BTH_ADDR result = sa->btAddr ;
DWORD bufsize = sizeof(buf );
WSAAddressToString (qs->lpcsaBuffer->RemoteAddr.lpSockaddr ,
sizeof(SOCKADDR_BTH), NULL , (LPTSTR)buf ,&bufsize );
cs.Format(_T("found: %s - %s\n") ,buf , qs->lpszServiceInstanceName );
m_listout.AddString(cs);
} else {
int error = WSAGetLastError ();
if( error == WSAEFAULT ) {
free( qs );
qs =(WSAQUERYSET* ) malloc( qslen );
} else if( error == WSA_E_NO_MORE ) {
AfxMessageBox(_T("inquiry complete\n" ));
done = true ;
} else {
cs.Format(_T( "uh oh. error code %d\n" ), error );
AfxMessageBox(cs);
done = true ;
}
}
}
WSALookupServiceEnd( h );
free( qs );
WSACleanup ();
}
不仅这个程序找不到,我在网上下了些搜索蓝牙的应用程序像bluetoothview.exe和千月也搜索不到,但电脑自带的蓝牙能搜到啊,真的很奇怪。。。不知道哪里的问题