Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как использовать RasGetProjectionInfo?

9.7K
16 августа 2005 года
Shopot
8 / / 16.08.2005
Как использовать RasGetProjectionInfo? Напишите примерчик, пожалуйста, а то дает ошибку "Неправильный размер структуры".

И подскажите когда соединение установится, что делать, модем сам должен замолчать или мне надо чего сделать. Помогите пожалуйста.
1
17 августа 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Shopot
Как использовать RasGetProjectionInfo? Напишите примерчик, пожалуйста, а то дает ошибку "Неправильный размер структуры".

И подскажите когда соединение установится, что делать, модем сам должен замолчать или мне надо чего сделать. Помогите пожалуйста.


Код:
DWORD dwCb = sizeof(RASCONN);
    DWORD dwErr = ERROR_SUCCESS;
    DWORD dwRetries = 5;
    DWORD dwConnections = 0;
    RASCONN* lpRasConn = NULL;

    //
    // Loop through in case the information from
//RAS changes between calls.
    //
    while (dwRetries--)
    {
        //
        // If the memory is allocated, free it.
        //
        if (NULL != lpRasConn)
        {
            HeapFree(GetProcessHeap(), 0, lpRasConn);
            lpRasConn = NULL;
        }
        //
        // Allocate the size needed
//for the RAS structure.
        //
        lpRasConn = HeapAlloc(GetProcessHeap(), 0, dwCb);
        if (NULL == lpRasConn)
        {
            dwErr = ERROR_NOT_ENOUGH_MEMORY;
            break;
        }
        //
        // Set the structure size for version
 //checking purposes.
        //
        lpRasConn->dwSize = sizeof(RASCONN);
        //
        // Call the RAS API then exit the loop if we are successful or an unknown
        // error occurs.
        //
        dwErr = RasEnumConnections(
                    lpRasConn,
                    &dwCb,
                    &dwConnections);
        if (ERROR_BUFFER_TOO_SMALL != dwErr)
        {
            break;
        }
    }
    //
    // In the success case, print the names of
//the connections.
    //
    if (ERROR_SUCCESS == dwErr)
    {
        DWORD i;

        printf("The following RAS connections are
 currently active\n\n");
        for (i = 0; i < dwConnections; i++)
        {
            printf("%s\n", lpRasConn->szEntryName);
        }
    }
    else
    {
        printf("RasEnumConnections failed: Error  %d\n", dwErr);
 }
    //
    // Free the memory if necessary.
    //
    if (NULL != lpRasConn)    {
HeapFree(GetProcessHeap(), 0, lpRasConn);        lpRasConn = NULL;    }

Делаешь обработку сообщений модема в функции:
Код:
VOID WINAPI RasCallback(HRASCONN hrasconn, UINT unMsg,
  RASCONNSTATE rascs, DWORD dwError, DWORD dwExtendedError)
{
  String S = "";
  if (dwError) {
    // Error occurred, show the error string.
    char buff[256];
    fRasGetErrorString(dwError, buff, sizeof(buff));
    fmMainFtp->LogEvents(buff);
    String MsgError = "При подключении произошла следующая ошибка:\n"+String(buff);
    if(Application->MessageBoxA(MsgError.c_str(),"Ошибка",MB_ICONQUESTION+MB_OKCANCEL)==IDOK){
      fRasHangUp(hrasconn);
     fmMainFtp->ttTimer->Enabled = true;
     return;
    }
    else fmMainFtp->Close();
    return;
  }
  switch (rascs) {
    // Build a status string based on the
    // status message.
    case RASCS_PortOpened :
      S = "Открытие порта..."; break;
    case RASCS_DeviceConnected :
      S = "Соединение..."; break;
    case RASCS_Authenticate :
      S = "Вход в сеть..."; break;
    case RASCS_Authenticated :
      S = "Проверка пользователя и пароля"; break;
    case RASCS_Connected : {
      S = "Вход в сеть";
     // fmMainFtp->bbSend->Enabled = true;
        fmMainFtp->ttTimerClick->Enabled = true;
      break;
    }
    case RASCS_Disconnected :
      S = "Disconnected"; break;
  }
  // Show the status message in the memo.
  if (S != "")
    fmMainFtp->LogEvents(S);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог