[英]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.