Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Разрыв соединения с инетом   Найти похожие ветки 

 
@ac   (2004-02-01 07:51) [0]

Разрыв соединения с инетом

Делаю так:

type
TRasConn = record
  Size: DWORD;
  Handle: THandle;
  Name: array [0..20] of AnsiChar;
end;

TRasEnumConnections = function (var RasConn: TRasConn; var Size: DWORD; var Connections: DWORD): DWORD stdcall;

TRasHangUp = function (Handle: THandle): DWORD stdcall;

function DisconnectDialUp: Boolean;
var
Lib: HINST;
RasEnumConnections: TRasEnumConnections;
RasHangUp: TRasHangUp;
RasConn: TRasConn;
Size, Connections: DWORD;
begin
Result:=True;
Lib:=LoadLibrary("rasapi32.dll");
try
  RasEnumConnections := GetProcAddress(Lib, "RasEnumConnectionsA");
  RasHangUp := GetProcAddress(Lib, "RasHangUpA");
  FillChar(RasConn, SizeOf(RasConn), 0);
  RasConn.Size := SizeOf(RasConn);
  RasEnumConnections(RasConn, Size, Connections);
  RasHangUp(RasConn.Handle);
  Sleep(3000);  
finally
  FreeLibrary(Lib);
end;
end;


Не разрывает.
RasEnumConnections выдает попеременно то 0 (т.е. функция сработала), то 8 (неизвестно что).
Но даже если выдает 0, то все равно RasConn, Size, Connections остаются пустыми.

В чем проблема?
(саму функцию DisconnectDialUp я естественно в программе вызвать не забываю :))


 
Verg ©   (2004-02-01 11:25) [1]


> RasEnumConnections(RasConn, Size, Connections);


Параметр Size на входе должен содержать размер буфера.
Если этого размера ф-ции будет недостаточно, то в эту переменную ф-ция запишет необходимй размер, а сама вернет ошибку ERROR_BUFFER_TOO_SMALL или ERROR_NOT_ENOUGH_MEMORY.
Т.о., перед ее вызовом необходимо сделать:
Size := sizeof(RasConn);

И обязательно анализировать результат выполнения ф-ции.


 
@ac   (2004-02-02 07:53) [2]

Я пробовал изменять размер буфера. Проверял - 32 байта выделяет. Потом даже пробовал добавлять лишнюю сотню байт.
Очевидно проблема в другом.


 
@ac   (2004-02-02 08:02) [3]

Выяснилось, что пример работает только в Win9x
Что с XP делать?


 
Digitman ©   (2004-02-02 09:25) [4]


> @ac   (02.02.04 08:02) [3]


> Что с XP делать?


ему про фому, он все про ерему)

тебе же сказали :

> обязательно анализировать результат выполнения ф-ции


!!


 
@ac   (2004-02-05 08:06) [5]

"анализировать результат выполнения ф-ции"
это так что ли:

var
res:integer;

res:=RasEnumConnections(RasConn, Size, Connections);
case res of
    0:begin
       ShowMessage("Все Ok!");
      end;
    1:begin
       ...
      end;  
    ...
    else ShowMessage("не все Ok!")
end;

Так все равно RasConn, Size, Connections не меняются. А в чем смысл анализа?
А вообще, я сделал все предельно просто, старым добрым ламерским способом - перебором:

  for i:=1 to 20000 do RasHangUp(i);

Неэлегантно.


 
Verg ©   (2004-02-05 08:34) [6]

Ты это читал?


> Verg ©   (01.02.04 11:25) [1]


 
Dimka Maslov ©   (2004-02-06 09:03) [7]

ShowMessage(SysErrorMessage(GetLastError)) Напишет тебе причину ошибки


 
lipskiy ©   (2004-02-08 02:13) [8]

Вот это работает:

procedure TForm1.Button1Click(Sender: TObject);
var
Lib: HINST;
RasHangUp: TRasHangUp;
i:integer;
begin
try
Lib:=LoadLibrary("rasapi32.dll");
try
RasHangUp := GetProcAddress(Lib, "RasHangUpA");
for i:= 1 to 20000 do RasHangUp(i);
finally
FreeLibrary(Lib);
end;
except
end;
end;



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
3-1079530237
Layner
2004-03-17 16:30
2004.04.11
Как запретить удалить запись с опред ID (Значением поля)?


1-1082357539
wezz
2004-04-19 10:52
2004.04.11
Не устанавливается StatusBar1.Panels[0].Text


3-1079080838
T{}r(l-l
2004-03-12 11:40
2004.04.11
Проблема с output-параметрами в ADO


9-1070216613
mrAld
2003-11-30 21:23
2004.04.11
Мультитекстурирование


14-1079745638
Думкин
2004-03-20 04:20
2004.04.11
С днем рождения! 20 мамрта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский