C#调用SetEvent-EventModify
来源:互联网 发布:游戏数据分析师招聘 编辑:程序博客网 时间:2024/06/13 10:09
C# 如果想使用SetEvent,但是cordll并没有导出这个函数。下面是在mobile中使用的情况。
windows mobile 系统coredll.dll并没有真正暴露SetEvent等函数,而是以EventModify替代了三个API。
其原型应该是EventModify(HANDLE ,DWROD)
第二个参数的定义如下:
#define EVENT_PULSE 1
#define EVENT_RESET 2
#define EVENT_SET 3
样例:
C# Signature:using HANDLE = System.IntPtr;...[DllImport("coredll.dll", SetLastError = true)][return: MarshalAs(UnmanagedType.Bool)]public static extern bool EventModify(HANDLE hEvent, [In, MarshalAs(UnmanagedType.U4)] int dEvent);VB Signature:Declare Function EventModify Lib "coredll.dll" (ByVal hEvent As IntPtr, ByVal func As Integer) As BooleanDeclare Function EventModify Lib "coredll.dll" (TODO) As TODOUser-Defined Types:private enum EventFlags{ EVENT_PULSE = 1, EVENT_RESET = 2, EVENT_SET = 3}Alternative Managed API:Do you know one? Please contribute it!Notes:None.Tips & Tricks:Please add some!Sample Code:using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;using HANDLE = System.IntPtr;namespace Test{ class Program { [DllImport("coredll.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("coredll.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool CloseHandle(HANDLE hObject); [DllImport("coredll.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool EventModify(HANDLE hEvent, [In, MarshalAs(UnmanagedType.U4)] int dEvent); public enum EventFlags { PULSE = 1, RESET = 2, SET = 3 } private static bool SetEvent(HANDLE hEvent) { return EventModify(hEvent, (int)EventFlags.SET); } private static bool ResetEvent(HANDLE hEvent) { return EventModify(hEvent, (int)EventFlags.RESET); } static void Main(string[] args) { IntPtr p = CreateEvent(HANDLE.Zero, false, true, string.Empty); SetEvent(p); ResetEvent(p); CloseHandle(p); } }}
- C#调用SetEvent-EventModify
- EventModify
- setevent
- setevent
- SetEvent
- setevent
- setEvent()
- SetEvent/ResetEvent
- VC++ SetEvent
- SetEvent/ResetEvent
- SetEvent/ResetEvent
- getevent & setevent
- WaitForSingleObject SetEvent
- SetEvent,ResetEvent
- SetEvent/ResetEvent
- CreateEvent和SetEvent函数
- CreateEvent和SetEvent函数
- CreateEvent和SetEvent函数
- 收集的一些网站
- 不同版本间的数据库导入导出
- mongodb入门简介
- 让Web项目中Velocity的#parse支持相对路径
- win7的IIS安装(有地址)
- C#调用SetEvent-EventModify
- MySQL配置详解
- Velocity遍历List和Map
- 操作分布式文件之一:如何搭建配置FttpAdapter环境
- 卷积码树状图的画法
- 块中含有自定义实体时调用explode()失败的原因及解决办法
- Android根据Action匹配隐式Intent的实例
- JQuery可编辑的表格,并更新到数据库笔记
- write my own os