Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

UnenableRouter (iphlpapi)
 
.
Summary
The UnenableRouter function decrements the reference count that tracks the number of requests to enable IPv4 forwarding. When this reference count reaches zero, UnenableRouter turns off IPv4 forwarding on the local computer.

C# Signature:

[DllImport("iphlpapi.dll", SetLastError=true)]
static extern int UnenableRouter(ref System.Threading.NativeOverlapped pOverlapped, IntPtr lpdwEnableCount);

VB.NET Signature:

    <DllImport("iphlpapi.dll", CharSet:=CharSet.Ansi)>
    Public Shared Function UnenableRouter(pOverlapped As IntPtr, ByRef lpdwEnableCount As Long) As Integer
    End Function

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

VB.NET Example

    Private Const NO_ERROR As Integer = 0
    <StructLayout(LayoutKind.Explicit, Size:=20)>
    Public Structure OVERLAPPED
    <FieldOffset(0)>
    Public Internal As UInt32
    <FieldOffset(4)>
    Public InternalHigh As UInt32
    <FieldOffset(8)>
    Public Offset As UInt32
    <FieldOffset(12)>
    Public OffsetHigh As UInt32
    <FieldOffset(8)>
    Public Pointer As IntPtr
    <FieldOffset(16)>
    Public hEvent As IntPtr
    End Structure

    <DllImport("iphlpapi.dll", CharSet:=CharSet.Ansi)>
    Public Shared Function UnenableRouter(pOverlapped As IntPtr, ByRef lpdwEnableCount As Long) As Integer
    End Function

    <DllImport("kernel32.dll")>
    Public Shared Function CloseHandle(ByVal hwn As IntPtr) As Long
    End Function

    Private pOverlapped As OVERLAPPED <- Important! Created from EnableRouter() call.

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim count As Long
    Dim pOverlappedPtr As IntPtr
    Dim RetVal As Integer
    Dim size As Integer
    Try
        size = Marshal.SizeOf(pOverlapped)
        If pOverlapped.hEvent = IntPtr.Zero Then Exit Sub ' We don't have the handle.
        pOverlappedPtr = Marshal.AllocHGlobal(size)
        Marshal.StructureToPtr(pOverlapped, pOverlappedPtr, True)

        RetVal = UnenableRouter(pOverlappedPtr, count)
        If RetVal = NO_ERROR Then
        Console.WriteLine("Success!")
        Else
        Dim errorMessage As String = New Win32Exception(RetVal).Message
        Console.WriteLine(errorMessage)
        End If
        If pOverlappedPtr <> IntPtr.Zero Then CloseHandle(pOverlapped.hEvent)
    Catch ex As Exception
        Console.WriteLine(ex.ToString)
    Finally
        Marshal.FreeHGlobal(pOverlappedPtr)
    End Try
        End Sub

Documentation

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions