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);
Declare Function CloseHandle Lib "kernel32.dll" (hObject As IntPtr) As Boolean
None.
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.
Please add some!
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);
}
}
}
TODO