SetWaitableTimer定时器的使用.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文档。上传文档
查看更多
SetWaitableTimer定时器的使用

SetWaitableTimer 定时器的使用 使用SetWaitableTimer 定时器前先了解一下几个函数: HANDLE CreateWaitableTimer( LPSECURITY_ATTRIBUTES lpTimerAttributes, //安全描述符,可以为NULL BOOL bManualReset, //是否为手动定时器,如果是手动的,需要调用SetWaitableTimer 才能将定时器变成信号的,如果是自动的,则调用WaitForsingleObject 即可实现定时器信 号的重置 LPCTSTR lpTimerName //定时器名称,这对于进程间的定时器来说是有用的。 ); BOOL bManualReset:用于指明人工重置的定时器或自动重置的定时器。当发出人工重置的 定时器信号通知时,等待该定时器的所有线程均变为可调度线程。当发出自动重置的定时器 信号通知时,只有一个等待的线程变为可调度线程。 BOOL SetWaitableTimer( HANDLE hTimer, // 定时器对象句柄 const LARGE_INTEGER *pDueTime, // 设定定时器从何时开始有信号 LONG lPeriod, // 定时器周期 PTIMERAPCROUTINE pfnCompletionRoutine, // 回调函数 LPVOID lpArgToCompletionRoutine, // 传入回调函数参数 BOOL fResume ); HANDLE hTimer:定时器对象句柄 const LARGE_INTEGER *pDueTime :设定定时器从何时开始有信号,可以设置为一个特 定的时刻,用正值需要用到 FILETIME 结构,可以通过函数BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME *lpst, LPFILETIME lpft);将系统时间转换成 FILETIME 变量,如果FILETIME 是绝对时间,需通过LocalFileTimeToFileTime(CONST FILETIME *lpFileTime,LPFILETIME lpLocalFileTime)将本地时间转换成全球标准时间,然 后将FILETIME 的时间转换成LARGE_INTEGER (注意:虽然FILETIEM 结构和 LARGE_INTEGER 结构的二进制格式完全相同,但不能直接把FILETIME 结构传给 LARGE_INTEGER 结构,因为这个两个结构的对齐方式是不同的。所有FILETIME 结构的 地址必须对齐到32 位边界,而所有LARGE_INTEGER 结构的地址必须对齐到64 位边界); 或者用负值表示一个相对的时间,代表以100 纳秒为单位的相对时间,(如从现在起的5 秒钟,则设置为) LONG lPeriod:设置定时器周期性的自我激发,该参数的单位为毫秒。如果为0,则表示定 时器只发出一次信号,大于0 时,定时器没隔一段时间自动重新激活一个计时器,直至取 消计时器使用CancelWaitableTimer 函数或重置使用SetWaitableTimer 函数 BOOL fResume:如果为TRUE,而且系统支持电源管理,那么在计时器触发的时候,系统 会退出省电模式。如设为TRUE,但系统不支持省电模式,GetLastError 就会返回 ERROR_NOT_SUPPORTED 适用平台。一般设为FALSE DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds ); WaitForSingleObject 函数用来检测hHandle 事件的信号状态,当函数的执行时间超过 dwMilliseconds 就返回,但如果参数dwMilliseconds 为INFINITE 时函数将直到相应时间事 件变成有信号状态才返回,否则就一直等待下去,直到 WaitForSingleObject 有返回值才执 行后面的代码。此外,当dwMilliseconds 设置为特殊值0 时,测试hHandle 核心对象是否 被激发,函数立即返回。 DWORD SleepEx( DWORD dwMilliseconds, BOOL bAlertable ); 说明:将一个线程的运作挂起指定

文档评论(0)

wannian118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档