簡體   English   中英

從c#創建Win32事件

[英]Creating Win32 events from c#

我想從C#創建一個內核(也稱為命名事件)。

我是否必須互操作服務並包裝本機CreateEvent函數,或者是否已經有一個.NET類來完成這項工作?

我需要運行的函數應該是這樣的:hEvent = CreateEvent(NULL,false,false,“MyCSHARPEvent”);

這應該通知所有關於事件的探測myMHARPEvent的過程。

如果需要包裝函數,我如何將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;
}

此外,這是一個將所有內容放在一起的代碼示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM