EnumRAS




Const ERROR_SUCCESS = 0&
Const ERROR_BUFFER_TOO_SMALL = 603&
Const RAS_MaxEntryName = 256

Private Type RASENTRYNAME
dwSize As Long
szEntryName(RAS_MaxEntryName) As Byte
End Type
Private Declare Function RasEnumEntries Lib "RasApi32.DLL" Alias _
"RasEnumEntriesA" (ByVal reserved As String, ByVal lpszPhonebook As String, _
lpRasEntryName As Any, lpcb As Long, lpcEntries As Long) As Long

' Enumerate available RAS phone-book entries

' returns their name in a collection.

'

' the optional argument is the phonebook name

' Windows 9x: this argument is always ignored

' Windows NT, if omitted it uses the default phonebook

' Windows 2000, if omitted entries are enumerated from all

' the remote access phone-book files in the AllUsers profile

' and the user's profile.


Function EnumRASEntries(Optional ByVal PhoneBook As String) As Collection
Dim lpRasEntryName() As RASENTRYNAME
Dim retCode As Long
Dim cbBuf As Long
Dim cEntries As Long
Dim i As Integer

' prepare the result

Set EnumRASEntries = New Collection

' NULL is different from an empty string

If Len(PhoneBook) = 0 Then PhoneBook = vbNullString

' only one entry, just to check how many entries are there

ReDim lpRasEntryName(0) As RASENTRYNAME
lpRasEntryName(0).dwSize = LenB(lpRasEntryName(0))
cbBuf = lpRasEntryName(0).dwSize
retCode = RasEnumEntries(vbNullString, PhoneBook, lpRasEntryName(0), cbBuf, _
cEntries)

' read all entries, if more than just one

If retCode = ERROR_BUFFER_TOO_SMALL Then
ReDim lpRasEntryName(cEntries - 1) As RASENTRYNAME
lpRasEntryName(0).dwSize = LenB(lpRasEntryName(0))
cbBuf = cEntries * lpRasEntryName(0).dwSize
retCode = RasEnumEntries(vbNullString, PhoneBook, lpRasEntryName(0), _
cbBuf, cEntries)
End If

' an error occurred

If retCode <> ERROR_SUCCESS Then Err.Raise vbObjectError + 512, , _
"RasEnumEntries returnet " & retCode

' fill the result collection with entry names

For i = 0 To cEntries - 1
EnumRASEntries.Add StrConv(lpRasEntryName(i).szEntryName(), vbUnicode)
Next i

End Function












( enumras.html )- by Paolo Puglisi - Modifica del 17/12/2023