Здравствуйте. У меня есть задача получить список созданных VPN соединений (т.е. все которые есть в Сетевых Подключениях) Покопался в сети, понял что нужно использовать RAS. По идее все что мне нужно должен выдавать код:
| Код | var EntryCount, BufSize: longint; //LBRASName: TListBox; Result: LongInt; Entryes: lpRasEntryName; i: integer; begin // Осуществляем поиск настроенных соединений и заполняем ими список. Result := ERROR_SUCCESS; Entryes := nil; EntryCount := 0; bufsize := 0; try LBRASName.Items.BeginUpdate; LBRASName.Items.Clear;
//Проводим поиск сохранённых соединений // Определяем размер буфера GetMem(Entryes, SizeOf(TRASEntryName)); FillChar(Entryes^, SizeOf(TRASEntryName), 0); Entryes^.dwSize := SizeOf(TRASEntryName); Result := RasEnumEntries(nil, nil, Entryes, BufSize, EntryCount); if Result = ERROR_BUFFER_TOO_SMALL then begin FillChar(Entryes^, SizeOf(TRASEntryName), 0); FreeMem(Entryes, SizeOf(TRASEntryName));
//Выделяем необходимую память GetMem(Entryes, SizeOf(TRASEntryName)*EntryCount); if Entryes <> nil then begin //первая структура RASEntryName должна содержать размер всей структуры FillChar(Entryes^, SizeOf(TRASEntryName)*EntryCount, 0); Entryes^.dwSize := SizeOf(TRASEntryName);
//Получаем список соединений Result := RasEnumEntries(nil, nil, Entryes, bufSize, EntryCount); if Result = ERROR_SUCCESS then begin // Данные успешно полученны for i := 0 to EntryCount-1 do begin LBRASName.Items.Add(Entryes^.szEntryName); Inc(Entryes); end; end; Dec(Entryes, EntryCount);
FillChar(Entryes^, SizeOf(TRASEntryName)*EntryCount, 0); FreeMem(Entryes, SizeOf(TRASEntryName)*EntryCount); end else ShowMessage('Не получилось выделить память'); end; finally LBRASName.Items.EndUpdate; end;
|
Так вот тут после первой строки
| Код | Result := RasEnumEntries(nil, nil, Entryes, BufSize, EntryCount);
|
получаю ошибку с номером 0, вместо 603 BUFFER TO SMALL. Кто с таким сталкивался подскажите где копать. |