|
|||||||||||
|
RAS [an error occurred while processing this directive] Topics 1. How do I establish a RAS Dial-up connection? 1. How do I establish a RAS Dial-up connection? The code below shows how to use RasDial() to establish a RAS connection; however, it's worth noting that it uses a pre-existing RAS entry to do so. While it's possible to enter the various parameters via code, using an existing dial up entry is considerably easier. #define ENTRY TEXT("testconn") /* name of dial up conn entry */ #define USERNAME TEXT("testpda") /* User id */ #define PASSWORD TEXT("testpda1") /* pass */ //hNotify is the window to receive RAS status notification msgs BOOL DialUp(HWND hNotify) { /* Initialize */ // Fill out rasDialParams from phone book entry BOOL fPassword = FALSE; //TRUE if password has been retrived from phone book entry BOOL fHavePhoneNumber = TRUE; // phone book entry has a phone number lstrcpy(g_DialInfo.rasDialParams.szEntryName, ENTRY); g_DialInfo.rasDialParams.dwSize = sizeof(RASDIALPARAMS); RasGetEntryDialParams(NULL, &(g_DialInfo.rasDialParams), &fPassword); /* call API */ DWORD dwRet = RasDial(NULL, NULL, &(g_DialInfo.rasDialParams), 0xFFFFFFFF, hNotify, & (g_DialInfo.hRasConn)); /* check the result */ if (dwRet == 0) { return TRUE; } else { return FALSE; } } 2. How do I hang up a RAS connection? I think this code speaks for itself... can be used in conjunction with the code from the previous question.... BOOL HangUp() { if(g_DialInfo.hRasConn!=NULL) { return RasHangUp(g_DialInfo.hRasConn); } return TRUE; //already hung up } 3. How do I handle RAS notifications? Somewhere inside your WndProc(), add a message handler similar to the one shown here... case WM_RASDIALEVENT: WCHAR szMessage[256]; LoadString(hInst, GetRasConnState( (RASCONNSTATE) wParam ), szMessage, 64 ); if ((DWORD)lParam) { wsprintf(szMessage, L"Unable to complete connection. Error %d", GetLastError()); MessageBox((HWND)hDlg, szMessage, L"Error", MB_ICONSTOP | MB_OK); //ExitThread(0); return 0; } switch( (RASCONNSTATE) wParam ) { case RASCS_OpenPort: break; case RASCS_PortOpened: break; case RASCS_ConnectDevice: break; case RASCS_DeviceConnected: break; case RASCS_AllDevicesConnected: break; case RASCS_Authenticate: break; case RASCS_AuthNotify: break; case RASCS_AuthRetry: break; case RASCS_AuthCallback: break; case RASCS_AuthChangePassword: break; case RASCS_AuthProject: break; case RASCS_AuthLinkSpeed: break; case RASCS_AuthAck: break; case RASCS_ReAuthenticate: break; case RASCS_Authenticated: break; case RASCS_PrepareForCallback: break; case RASCS_WaitForModemReset: break; case RASCS_WaitForCallback: break; case RASCS_Interactive: break; case RASCS_RetryAuthentication: break; case RASCS_CallbackSetByCaller: break; case RASCS_PasswordExpired: break; case RASCS_Disconnected: //hang up break; case RASCS_Connected: //you're in! break; default: break; } break; [an error occurred while processing this directive] Terence Goggin's DoctorCE.com site - Custom Windows CE development/consulting services. Return to Chris De Herrera's Windows CE Website Questions? Comments? Suggestions? Email Terence "Dr. CE" Goggin. |