在Windows中使用事件进行调试
时间:2020-03-06 14:40:23 来源:igfitidea点击:
如果我在Windows中使用CreateEvent
创建事件,如何在Visual Studio中使用调试器检查该事件是否已发出信号? CreateEvent
返回一个句柄,它使我无法访问太多信息。在调用" WaitForSingleObject()"之前,我想检查一下是否在进入函数之前发出了该事件的信号。
解决方案
如果事件已发出信号,并且我们使用WaitForSingleObject(),则事件将立即返回。另外,我们可以使用等待时间0来调用WaitForSingleObject()来确定是否用信号通知。但是,这不是必须的-在CreateEvent()调用中设置初始状态(到目前为止,问题尚不清楚)。
我们可以使用Process Explorer工具(http://technet.microsoft.com/zh-cn/sysinternals/bb896653.aspx)手动检查调试器外部的事件。如果事件被命名,将有帮助,因此我们可以更轻松地找到它。
使用handle命令。这是一个样本
以下命令显示有关句柄0x8的详细信息。
0:000> !handle 8 f
手柄8
类型事件
属性0
GrantedAccess 0x100003:
同步
QueryState,ModifyState
HandleCount 2
指针计数3
姓名
对象特定信息
事件类型自动重置
活动正在等待