I\'d like create a kernel(aka named events) from C#.
Do I have to interop services and wrap the native CreateEvent function or is there already a .NET class that does t
Take a look at the EventWaitHandle class. It's supported from .Net 2.0 onwards and allows creation of named events. It also supports setting event security, depending on which constructor you use.
If you still want to use interop, you can define the function like this:
[DllImport("kernel32.dll")]
static extern IntPtr CreateEvent(IntPtr lpEventAttributes, bool bManualReset, bool bInitialState, string lpName);
and the struct like this(you may have to mess with the Pack attribute to make it fit):
[StructLayout(LayoutKind.Sequential)]
struct SECURITY_ATTRIBUTES{
public int length;
public IntPtr securityDesc;
public bool inherit;
}
Also, here's a code example of putting it all together.