Главная страница
    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.046 c
1-1082353543
Pirate
2004-04-19 09:45
2004.04.11
Алгоритм перестановки


14-1082378534
Yanis
2004-04-19 16:42
2004.04.11
HTML


14-1079782302
SPeller
2004-03-20 14:31
2004.04.11
С++


1-1080140476
Grihan
2004-03-24 18:01
2004.04.11
Компонент не появился на палитре.


6-1079099372
ASMiD
2004-03-12 16:49
2004.04.11
Как связать два компа через I-net





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский