从c#创建Win32事件

我想从C#创建一个内核(又名命名事件)。

我是否必须互操作服务并包装本地CreateEvent函数,还是已经有一个可以完成这项工作的.NET类?

我需要运行的函数应该是这样的:hEvent = CreateEvent(NULL,false,false,“MyCSHARPEvent”);

这应该通知所有探测关于事件的MyCSHARPEvent的过程。

如果需要封装函数,我将如何将SECURITY_ATTRIBUTES结构体从C#转换为win32?


看看EventWaitHandle类。 它从.Net 2.0开始支持,并允许创建命名事件。 它还支持设置事件安全性,具体取决于您使用的构造函数。


如果你仍然想使用互操作,你可以像这样定义函数:

[DllImport("kernel32.dll")]
static extern IntPtr CreateEvent(IntPtr lpEventAttributes, bool bManualReset, bool bInitialState, string lpName);

和这样的结构(你可能必须弄乱Pack属性才能使它合适):

[StructLayout(LayoutKind.Sequential)]
struct SECURITY_ATTRIBUTES{
  public int length;
  public IntPtr securityDesc;
  public bool inherit;
}

另外,下面是将所有内容放在一起的代码示例。

链接地址: http://www.djcxy.com/p/51209.html

上一篇: Creating Win32 events from c#

下一篇: HACK methods in System.Internal (.net 4.0 on x64)