请问大家,如何检测当前的事件(EVENT)的状态是有信号还是无信号,好象没什么函数 请问大家,如何检测当前的事件(EVENT)的状态是有信号还是无信号,好象没什么函数 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 wait的话有可能会改变event的状态可以用如下代码typedef enum _EVENT_INFORMATION_CLASS { EventBasicInformation} EVENT_INFORMATION_CLASS;typedef enum _EVENT_TYPE { NotificationEvent, // A manual-reset event SynchronizationEvent // An auto-reset event} EVENT_TYPE;typedef struct _EVENT_BASIC_INFORMATION { EVENT_TYPE EventType; LONG SignalState;} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;LONG (WINAPI *ZwQueryEvent) (HANDLE evt, EVENT_INFORMATION_CLASS, PVOID dat, ULONG dat_len, PULONG retLength);ZwQueryEvent = GetProcAddress (GetModuleHandle ("ntdll"), "ZwQueryEvent");EVENT_BASIC_INFORMATION ebi;ZwQueryEvent (event, EventBasicInformation, &ebi, sizeof (ebi), NULL);上面代码中可能会有些手误的地方,有的话,自己改改吧 LONG (WINAPI *ZwQueryEvent) (HANDLE evt, EVENT_INFORMATION_CLASS, PVOID dat, ULONG dat_len, PULONG retLength);上面这一句是定义一个函数指针吗?下面这一名ZwQueryEvent = GetProcAddress (GetModuleHandle ("ntdll"), "ZwQueryEvent");出现:error C2440: '=' : cannot convert from 'int (__stdcall *)(void)' to 'long (__stdcall *)(void *,enum _EVENT_INFORMATION_CLASS,void *,unsigned long,unsigned long *)' This conversion requires a reinterpret_cast, a C-style cast or function-style cast如何改正呢? 调试通过,多谢楼上大师typedef LONG (WINAPI *ZwQueryEvent) (HANDLE evt, EVENT_INFORMATION_CLASS, PVOID dat, ULONG dat_len, PULONG retLength);ZwQueryEvent aaa;aaa= (ZwQueryEvent)GetProcAddress (GetModuleHandle ("ntdll.dll"), "ZwQueryEvent");EVENT_BASIC_INFORMATION ebi;aaa(event, EventBasicInformation, &ebi, sizeof (ebi), NULL); LPWSTR 类型的问题 mouse_event()使用,纯新手问题 drwtsn32使用求助!!大侠们看看,谢谢!! 紧急求助关于list控件取值转换 如何在不创建窗体前提下产生消息循环 关于文件中检索的问题!(着急啊!) 对话框与视图 散分,刚接触图形算法的小白求助 向高手请教了。SOCKET问题。 如何使图标具有透明背景 请问用C语言写的源程序在VC++6.0里怎么样运行! CDib的问题
EventBasicInformation
} EVENT_INFORMATION_CLASS;typedef enum _EVENT_TYPE {
NotificationEvent, // A manual-reset event
SynchronizationEvent // An auto-reset event
} EVENT_TYPE;typedef struct _EVENT_BASIC_INFORMATION {
EVENT_TYPE EventType;
LONG SignalState;
} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;LONG (WINAPI *ZwQueryEvent) (HANDLE evt, EVENT_INFORMATION_CLASS, PVOID dat, ULONG dat_len, PULONG retLength);ZwQueryEvent = GetProcAddress (GetModuleHandle ("ntdll"), "ZwQueryEvent");EVENT_BASIC_INFORMATION ebi;
ZwQueryEvent (event, EventBasicInformation, &ebi, sizeof (ebi), NULL);上面代码中可能会有些手误的地方,有的话,自己改改吧
上面这一句是定义一个函数指针吗?
下面这一名
ZwQueryEvent = GetProcAddress (GetModuleHandle ("ntdll"), "ZwQueryEvent");
出现:
error C2440: '=' : cannot convert from 'int (__stdcall *)(void)' to 'long (__stdcall *)(void *,enum _EVENT_INFORMATION_CLASS,void *,unsigned long,unsigned long *)'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
如何改正呢?
aaa(event, EventBasicInformation, &ebi, sizeof (ebi), NULL);