Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 什么是事件句柄?_Winapi_Handle - Fatal编程技术网

Winapi 什么是事件句柄?

Winapi 什么是事件句柄?,winapi,handle,Winapi,Handle,我遇到了句柄泄漏问题,没有足够的配额来处理此命令。在一些继承的WinC窗体代码中,所以我使用Sysinternals的工具来跟踪它。原来是事件句柄泄漏了,所以我用谷歌搜索了几次才找到一个没有返回的。你是说:事件句柄?。根据,事件句柄是使用Monitor生成的,在事件句柄处理和同步原语方面可能有一些奇怪的规则 我不完全确定我的句柄泄漏的来源是否完全是由于长期存在的对象调用了大量的同步内容,因为这段代码也处理了HID接口和大量win32封送和互操作,并且没有执行我所知道的任何同步。不管是哪种方式,我

我遇到了句柄泄漏问题,没有足够的配额来处理此命令。在一些继承的WinC窗体代码中,所以我使用Sysinternals的工具来跟踪它。原来是事件句柄泄漏了,所以我用谷歌搜索了几次才找到一个没有返回的。你是说:事件句柄?。根据,事件句柄是使用Monitor生成的,在事件句柄处理和同步原语方面可能有一些奇怪的规则

我不完全确定我的句柄泄漏的来源是否完全是由于长期存在的对象调用了大量的同步内容,因为这段代码也处理了HID接口和大量win32封送和互操作,并且没有执行我所知道的任何同步。不管是哪种方式,我都会在windbg中运行它,并开始跟踪句柄的来源,同时也会花费大量时间学习这段代码,但我很难找到关于什么是事件句柄的信息


事件内核对象的仅链接到通用同步概述。。。那么什么是事件句柄,它们与互斥体/信号量/任何东西有何不同呢?

如果您谈论的是内核,那么事件句柄将是一个句柄Int,系统将它保存在这个对象上,以便其他对象可以引用它。保持“控制”


希望这有帮助

NT内核使用事件对象允许信号传输到等待信号的实体。互斥量和信号量也是可等待的内核对象内核调度程序对象,但语义不同。我唯一一次遇到它们是在等待IO在驱动程序中完成时

所以我对你的问题的理论可能是一个错误的驱动程序,或者你是依靠专业的硬件

编辑:更多信息来自-第3章系统力学

一些内核分派器对象,例如互斥体、信号量具有所有权的概念。因此,当发出释放信号时,一个等待释放的线程将获取这些资源。其他人将不得不继续等待。事件不属于所有,因此可由任何线程重置

还有三种类型的事件:

通知:所有等待的线程都被释放 同步:一个等待线程被释放,但事件被重置 Keyed:在释放信号器的同一进程中,有一个等待线程发出信号。
我学到的另一件有趣的事情是,它们实际上不是内核对象,而是根据需要通过键控事件、互斥或信号量来实现的。

这确实有点帮助,虽然我还不清楚事件对象同步与信号量的区别,即:为什么有一个单独的内核对象?啊,所以它们几乎是一样的,只是不同的实现/语义用于硬件驱动程序,而不是通过软件。谢谢是的,这个继承的代码组件本质上就是设备驱动程序,它直接p/调用hid.dll并返回设备输入/输出的包装器,所以我相当确定问题在这里,而不是任何硬件特性。@Preet:Cool。。。我希望我能再次投票支持你的答案,这真的很高兴知道。如果你想知道的话,问题最终只是你的日常生活没有得到正确的处理,但是我从中学到了很多我建议你读这本书。自从我做驱动程序开发以来,我已经开始使用它很多年了,很好地理解了系统的机制。