使用waitable定时器.pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用waitable定时器.pdf

如何使用带有一个异步过程调用的 Waitable 计时器 页码,1/3 自己查找 请选择您需要帮助的产品 询问社区 Windows Internet Office Surface Media Player Skype 实时帮助 Explorer Windows 更多产品 Phone 如何使用异步过程调用可等待计时器 文章编号: 184796 - 查看本文应用于的产品 查看机器翻译免责声明 点击这里查看逐句中英文对照机器翻译 概要 可等待计时器是在某一特定时间或定期终止的内核对象。异步过程调用 (APC) 可与可等待计时器允许每当计时器处于终止 状态时要执行的回调函数相关联。本文中的示例代码演示如何执行此操作。 更多信息 在使用可等待计时器时,您需要定义为 0x0400 的常量_WIN32_WINNT 。此常数定义应包含 windows.h 以确保正确可等 待计时器函数原型声明之前。 通过调用 CreateWaitableTimer() 来创建可等待计时器。此函数返回的内核对象的句柄。如果计时器已存在,您可以通过 用 OpenWaitableTimer() 获得相对于进程的句柄。该句柄,是否获得通过 CreateWaitableTimer() 或 OpenWaitableTimer() 时, 必须释放计时器已不再需要。此方法通过调用 CloseHandle()。 计时器设置为 SetWaitableTimer() 的调用。计时器可以设置为特定时间 (例如,1999 年 12 月 16 日晚上 9:45 ) 或相对 时间 (例如,从现在开始的 5 分钟)。SetWaitableTimer() 要求的截止时间为 LARGE_INTEGER。此值应 FILETIME 结 所描述的格式。如果值为正数,则表示的具体时间。如果它是负数,则表示以 100 纳秒为单位的相对时间。稍后显示的示 例代码使用相对时间。计时器将变为终止状态为 SetWaitableTimer() 调用后的 5 秒钟。 您还可以设置要定期 re-signal 本身的计时器。执行此操作通过定期的值 (以毫秒为单位) 作为第三个参数为 SetWaitableTimer() 。如果定期计时器是必需的应通过将假作为第二个参数传递到 CreateWaitableTimer() 创建自动重置计 时器作为计时器。此示例设置一个定时器,周期为 2 秒。 当计时器设置,您可以关联的异步过程调用 (APC) 函数带有可等待计时器。APC 函数调用完成例程。完成例程的地址是 SetWaitableTimer() 的第四个参数。第五个参数是可用于将参数传递给完成例程的 void 指针。 如同所有 Apc 的线程必须执行完成例程可报警状态。完成例程将始终通过调用 SetWaitableTimer() 的同一线程执行。因 此,此线程必须最终导致本身处于可报警状态。这是通过实现通过调用以下可报警功能之一: SleepEx() WaitForSingleObjectEx() WaitForMultipleObjectsEx() MsgWaitForMultipleObjectsEx() SignalObjectAndWait() 每个线程都有 APC 队列。如果没有一项在 APC 队列中的线程时调用上述函数之一时,该线程不置于休眠模式。相反,从 APC 队列中删除该项 目,并调用完成例程。 如果未输入任何 APC 队列中,线程被挂起,直到满足等待。等待可以满足一项通过将添加到 APC 队列超时通过变为终止 状态的句柄,或者在 MsgWaitForMultipleObjectsEx(),通过将消息添加到一个线程的消息队列。如果在等待满足 APC 队 中的某项,唤醒该线程并调用完成例程。在这种情况下

文档评论(0)

整理王 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档