PlatformVB

RasGetProjectionInfo

The RasGetProjectionInfo can be used to get various projection info structures for a given connection, such as  IP addresses etc.  The function looks like this:

Declare Function RasGetProjectionInfo _
         Lib "rasapi32.dll" Alias "RasGetProjectionInfoA" _
            (ByVal hRasConn As Long, _
             ByVal rasProjectionType As Long, _
             lpProjection As Any, _
             lpcb As Long) As Long

Because the lpProjection parameter can be one of six very different types of structures, it's propably easier in VB to make six different wrapper functions, one for each protocol or projection type.

The following samples all require the handle to a connection.  You can get the connection's handle using RasDial or RasEnumConnections.

You will also need the Declares Section from the end of this page.

Each function returns a long value that is zero on success.  If the function fails (non-zero return value) then you can use the VBRasErrorHandler function to get a descriptive string.

RASAMB projection info

The RASAMB projection info describes the result of a RAS AMB (Authentication Message Block)  projection. This protocol is used with NT 3.1 and OS/2 1.3 downlevel RAS servers.

'VB "friendly" RASAMB structure.

Type VBRASAMB
      dwError As Long
      sNetBiosError As String
      bLana As Byte
End Type

'___________________________________________________________
Function VBRasGetRASAMB(hRasConn As Long, _
                        udtVBRASAMB As VBRASAMB) As Long
   
   Dim b() As Byte, rtn As Long, lpcb As Long
   
   lpcb = 28&
   ReDim b(lpcb - 1)
   CopyMemory b(0), lpcb, 4
   
   rtn = RasGetProjectionInfo(hRasConn, &H10000&, b(0), lpcb)
   
   VBRasGetRASAMB = rtn
   If rtn <> 0 Then Exit Function
   
   With udtVBRASAMB
      CopyMemory .dwError, b(4), 4
      CopyByteToTrimmedString .sNetBiosError, b(8), 17
      CopyMemory .bLana, b(25), 1
   End With
   
End Function

  

RASPPPNBF projection info

The RASPPPNBF projection info describes the result of a PPP NBF (NetBEUI) projection.

'VB "friendly" RASPPPNBF structure.

Type RASPPPNBF
    dwError As Long
    dwNetBiosError As Long
    szNetBiosError As String
    szWorkstationName As String
    bLana As Byte
End Type

'___________________________________________________________
Function VBRasGetRASPPPNBF(hRasConn As Long, _
                        udtVBRASPPPNBF As VBRASPPPNBF) As Long
   
   Dim b() As Byte, rtn As Long, lpcb As Long
   
   lpcb = 48&
   ReDim b(lpcb - 1)
   CopyMemory b(0), lpcb, 4
   
   rtn = RasGetProjectionInfo(hRasConn, &H803F&, b(0), lpcb)
   
   VBRasGetRASPPPNBF = rtn
   If rtn <> 0 Then Exit Function
   
   With udtVBRASPPPNBF
      CopyMemory .dwError, b(4), 4
      CopyMemory .dwNetBiosError, b(8), 4
      CopyByteToTrimmedString .szNetBiosError, b(12), 17
      CopyByteToTrimmedString .szWorkstationName, b(29), 17
      CopyMemory .bLana, b(46), 1
   End With
   
End Function

 

RASPPPIPX projection info

The RASPPPIPX projection info describes the results of a PPP IPX (Internetwork Packet Exchange) projection.

'VB "friendly" RASPPPIPX structure.

Type VBRASPPPIPX
    dwError As Long
    szIpxAddress As String
End Type

'___________________________________________________________
Function VBRasGetRASPPPIPX(hRasConn As Long, _
                        udtVBRASPPPIPX As VBRASPPPIPX) As Long
   
   Dim b() As Byte, rtn As Long, lpcb As Long
   
   lpcb = 24&
   ReDim b(lpcb - 1)
   CopyMemory b(0), lpcb, 4
   
   rtn = RasGetProjectionInfo(hRasConn, &H802B&, b(0), lpcb)
   
   VBRasGetRASPPPIPX = rtn
   If rtn <> 0 Then Exit Function
   
   With udtVBRASPPPIPX
      CopyMemory .dwError, b(4), 4
      CopyByteToTrimmedString .szIpxAddress, b(8), 16
   End With
   
End Function

 

RASPPPIP projection info

The RASPPPIP projection info describes the results of a PPP IP (Internet) projection.

'VB "friendly" RASPPPIP structure.

Type VBRASPPPIP
    dwError As Long
    szIpAddress As String
    szServerIpAddress As String
End Type

'___________________________________________________________
Function VBRasGetRASPPPIP(hRasConn As Long, _
                        udtVBRASPPPIP As VBRASPPPIP) As Long
   
   Dim b() As Byte, rtn As Long, lpcb As Long
   
   lpcb = 40&
   ReDim b(lpcb - 1)
   CopyMemory b(0), lpcb, 4
   
   rtn = RasGetProjectionInfo(hRasConn, &H8021&, b(0), lpcb)
   
   VBRasGetRASPPPIP = rtn
   If rtn <> 0 Then Exit Function
   
   With udtVBRASPPPIP
      CopyMemory .dwError, b(4), 4
      CopyByteToTrimmedString .szIpAddress, b(8), 16
      CopyByteToTrimmedString .szServerIpAddress, b(24), 16
   End With
   
End Function

  

RASSLIP projection info

The RASAMB projection info describes the results of a SLIP (Serial Line IP) projection

'VB "friendly" RASSLIP structure.

Type VBRASSLIP
    dwError As Long
    szIpAddress As String
End Type

'___________________________________________________________
Function VBRasGetRASSLIP(hRasConn As Long, _
                        udtVBRASSLIP As VBRASSLIP) As Long
   
   Dim b() As Byte, rtn As Long, lpcb As Long
   
   lpcb = 24&
   ReDim b(lpcb - 1)
   CopyMemory b(0), lpcb, 4
   
   rtn = RasGetProjectionInfo(hRasConn, &H20000&, b(0), lpcb)
   
   VBRasGetRASSLIP = rtn
   If rtn <> 0 Then Exit Function
   
   With udtVBRASSLIP
      CopyMemory .dwError, b(4), 4
      CopyByteToTrimmedString .szIpAddress, b(8), 16
   End With
   
End Function

  

  

  

Declares:

Declare Function RasGetProjectionInfo _
         Lib "rasapi32.dll" Alias "RasGetProjectionInfoA" _
            (ByVal hRasConn As Long, _
             ByVal rasProjectionType As Long, _
             lpProjection As Any, _
             lpcb As Long) As Long

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
        (Destination As Any, Source As Any, ByVal Length As Long)
' helper function

Sub CopyByteToTrimmedString(strToCopyTo As String, _
                              bPos As Byte, lngMaxLen As Long)
   Dim strTemp As String, lngLen As Long
   strTemp = String(lngMaxLen + 1, 0)
   CopyMemory ByVal strTemp, bPos, lngMaxLen
   lngLen = InStr(strTemp, Chr$(0)) - 1
   strToCopyTo = Left$(strTemp, lngLen)
End Sub

  

  

  

See Also: Contents, IntroductionRasDial, RasEnumConnections, VBRasErrorHandler.