CloseHandle (coredll)
Last changed: 213.160.175.42

.
Summary
This function closes an open object handle

C# Signature:

using HANDLE = System.IntPtr;
...
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool CloseHandle(HANDLE hObject);

VB .NET Signature:

Declare Function CloseHandle Lib "kernel32.dll" (hObject As IntPtr) As Boolean

User-Defined Types:

None.

Notes:

Tested this p/invoke declaration with kernel32.dll DLLImport and a MissingMethodException was thrown - "Can't find PInvoke DLL 'kernel32.dll'." I'm assuming this declaration is always in coredll, but I left the above signature alone just in case this is different on other devices. This was tested on a Verizon VOGU100 PocketPC.

Tips & Tricks:

Please add some!

Sample Code:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using HANDLE = System.IntPtr;

namespace Test
{
    class Program
    {
        [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Auto)]
        public static extern HANDLE CreateEvent(HANDLE lpEventAttributes, [In, MarshalAs(UnmanagedType.Bool)] bool bManualReset, [In, MarshalAs(UnmanagedType.Bool)] bool bIntialState, [In, MarshalAs(UnmanagedType.BStr)] string lpName);

        [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Auto)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool CloseHandle(HANDLE hObject);

        static void Main(string[] args)
        {
            HANDLE p = CreateEvent(HANDLE.Zero, false, true, string.Empty);

            CloseHandle(p);
        }
    }
}

Alternative Managed API:

TODO

Documentation
CloseHandle on MSDN