Статьи по Assembler


         

Каждые 200 мс опрашивает состояние


"AllDevicesConnected",

"Authenticate",

"AuthNotify",

"AuthRetry",

"AuthCallback",

"AuthChangePassword",

"AuthProject",

"AuthLinkSpeed",

"AuthAck",

"ReAuthenticate",

"Authenticated",

"PrepareForCallback",

"WaitForModemReset",

"WaitForCallback",

"Projected",

"StartAuthentication",

"CallbackComplete",

"LogonNetwork",

"SubEntryConnected",

"SubEntryDisconnected",

"Interactive",

"RetryAuthentication",

"CallbackSetByCaller",

"PasswordExpired",

"Connected",

"Disconnected",

"Unknown state"};

if(online){

//Показ состояния соединения в строке статуса

UINT ras_message_num=rasconnstate;

if(ras_message_num>=RASCS_Connected){ras_message_num-=RASCS_Connected-28;}

else{if(ras_message_num>=RASCS_Interactive){ras_message_num-=RASCS_Interactive-24;}}

if(ras_message_num>30){ras_message_num=30;}

SendMessage(stat_window,WM_SETTEXT,0,(LPARAM)ras_state_text[ras_message_num]);

//Если соединение установлено - запуск нити контроля

if(rasconnstate==RASCS_Connected){

CreateThread(NULL,0,ras_monitor_func,0,0,&ras_monitor_id);

//Если соединение не установлено - передача сообщения WM_USER для

//повтора дозвона

}else{

if(rasconnstate==RASCS_Disconnected){

PostMessage(main_window,WM_USER,0,0);

}

}

}

}

//НИТЬ МОНИТОРА РАЗРЫВА

// Каждые 200 мс опрашивает состояние установленного соединения.

//При обнаружении факта разъединения посылает сообщение WM_USER

//и завершается

//============================================================= Нить монитора разрыва

DWORD WINAPI ras_monitor_func(LPVOID param){

RASCONNSTATUS ras_connect_status;

while(online){

ras_connect_status.dwSize=sizeof(RASCONNSTATUS);

if(RasGetConnectStatus(ras_conn,&ras_connect_status)){break;}

if(ras_connect_status.rasconnstate==RASCS_Disconnected){break;}

Sleep(200);

}

PostMessage(main_window,WM_USER,0,1);

return 0;

}

//ПОЛОЖИТЬ ТРУБКУ

//Если происходит дозвон, или соединение установлено,

//дает команду на разрыв и ожидает, когда RAS ее выполнит

/////////////////////////////////////////////////////////////// Положить трубку

VOID ras_hangup(){

RASCONNSTATUS ras_connect_status;

online=FALSE;

if(ras_conn){

RasHangUp(ras_conn);

while(TRUE){

ras_connect_status.dwSize=sizeof(RASCONNSTATUS);

if(RasGetConnectStatus(ras_conn,&ras_connect_status)==ERROR_INVALID_HANDLE){break;}

Sleep(0);

}

ras_conn=0;

Sleep(1000);

}

}


Содержание  Назад  Вперед