Access Non-.NET APIs with PInvoke : VB.NET: Handle Exceptions Properly: Listing 1

When you call Windows API functions, they don't throw managed exceptions. Instead, you need to check their return values for any indication of an error, and take the appropriate actions, which might include throwing your own managed exception.

Dim phonebook As String _
   = Nothing
Dim count As Int32 = 5
Dim entries(0 To count - 1) _
   As RASENTRYNAME
Dim size = Marshal.SizeOf( _
   GetType(RASENTRYNAME))

entries(0).Size = size

Dim buffersize = size * count

Dim rtn = RasEnumEntries(IntPtr.Zero, _
    phonebook, _
    entries, _
    buffersize, _
    count)

If rtn = _
   RasErrorCodes. _
   BUFFER_TOO_SMALL Then
   'need to resize and 
   'call the function again
   ReDim entries(0 To count - 1)
   entries(0).Size = size
   buffersize = size * count

   rtn = RasEnumEntries(IntPtr.Zero, _
      phonebook, _
      entries, _
      buffersize, _
      count)
End If

Select Case rtn
   Case _
      RasErrorCodes. _
      NOT_ENOUGH_MEMORY, _
      RasErrorCodes. _
      INVALID_SIZE
       Throw New Exception( _
         "RAS exception:" _
         & rtn.ToString)

   Case RasErrorCodes.SUCCESS
      If count <> _
         entries.Length Then
      ReDim Preserve _ 
         entries(0 To count - 1)
      End If
      Return entries

   Case Else
      Return Nothing

End Select
comments powered by Disqus

Featured

  • Claude AI Gets Yet Another Boost in VS Code 1.128

    The July 8, 2026, Visual Studio Code update expands agent workflows, chat attachments, browser-tab controls, OS-level shortcuts and enterprise telemetry management.

  • TypeScript 7 Arrives to Rock VS Code with Go-Powered Speed

    Microsoft says TypeScript 7, announced July 8, brings native Go performance to VS Code, Visual Studio and other editors.

  • Full-Stack with a Side of Copilot: Building and Deploying an App the AI-Accelerated Way

    In this Q&A, developer and VSLive! speaker Esteban Garcia explains how GitHub Copilot can accelerate the full software development lifecycle -- from architecture and code to tests, CI/CD, and Azure deployment -- and how to use it as a repeatable engineering workflow rather than just a faster autocomplete tool.

  • VS Code 1.127 Further Integrates Advanced Browser-AI Tech

    Microsoft's July 1 Visual Studio Code update continues a recent push to make the editor's integrated browser a more capable development surface -- and a more useful tool for AI agents.

Subscribe on YouTube