- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
);
说明:将一个线程的运作挂起指定
您可能关注的文档
- PQRASME要求填写的焊接工艺评定报告.doc
- Practical Automatic Determination of Causal Relationships in Software Execution Traces.pdf
- Prediction of Physical, Color, and Sensory Characteristics of Broiler Breasts by VisibleNea.pdf
- Precision Spectroscopy of Pionic Atoms From Pion Mass Evaluation to Tests of Chiral Perturb.pdf
- Predictive Evaluation of Econometric Forecasting Models in Commodity Futures Markets.pdf
- Predicting the Performance of Randomized Parallel Search An Application to Robot Motion Pla.pdf
- PRELIMINARY VERSION A Design Diversity Metric and Analysis of Redundant Systems.pdf
- Present and NearFuture Reflected Light Searches for CloseIn Planets.pdf
- prepared for a special issue of abour Economics,.pdf
- Present and Future Electroweak Precision Measurements and the Indirect Determination of the.pdf
文档评论(0)