Alternate e697dbe9c5997e35395fe158628dd8c5209481da
for Visual Studio 2022 and Windows 11.
読み取り中…
検索中…
一致する文字列を見つけられません
WatchDogTimer.cpp
[詳解]
1// ----------------------------------------------------------------------------
6
7#include "pch.h"
8#include "WatchDogTimer.h"
9
10using namespace alt;
11
13{
14 _timeup = NULL;
15 _uPeriod = uPeriod;
16}
17
19{
20 _timeup = timeup;
21 _uPeriod = uPeriod;
22}
23
25{
26 ::timeEndPeriod (_uPeriod);
27}
28
29BOOL WatchDogTimer::InitTimer (LPCTSTR lpctszName)
30{
31 BOOL ret = TRUE;
32
33 ::timeBeginPeriod (_uPeriod);
34
35 _hObject = ::CreateWaitableTimer (NULL, 0, lpctszName);
36 if (_hObject == INVALID_HANDLE_VALUE)
37 {
38 ret = FALSE;
39 }
40
41 return ret;
42}
43
44BOOL WatchDogTimer::StartTimer (DWORD dwTime) const
45{
46 BOOL ret = FALSE;
47 LARGE_INTEGER interval = { 0, 0 };
48 // マイナス設定は現在時刻から、プラス設定はエポックタイムから
49 interval.QuadPart = -((LONGLONG)dwTime * 10000);
50
51 ret = ::SetWaitableTimer (
52 _hObject, &interval, (LONG)dwTime,
53 _timeup == NULL ? NULL : _timeup->TimeupCall,
54 _timeup, FALSE);
55 if (ret == FALSE)
56 {
57 return ret;
58 }
59
60 return TRUE;
61}
62
64{
65 return ::WaitForSingleObjectEx (_hObject, INFINITE, TRUE);
66}
67
69{
70 return ::CancelWaitableTimer (_hObject);
71}
タイマーに関するWindowsAPIを集約したクラス
プリコンパイル済みヘッダー ファイルです。
HANDLE _hObject
ハンドルを使用するWindowsAPIで保持するHANDLE値
BOOL APIENTRY InitTimer(LPCTSTR lpctszName=NULL)
初期化
DWORD APIENTRY WaitTimer() const
タイムアップ待機
BOOL APIENTRY StopTimer() const
タイマー停止
skeleton::ITimeup * _timeup
コールバック関数を定義したクラス
Definition: WatchDogTimer.h:60
APIENTRY WatchDogTimer(UINT uPeriod=1)
コンストラクタ
BOOL APIENTRY StartTimer(DWORD dwTime) const
タイマー開始
APIENTRY ~WatchDogTimer()
デストラクタ
WatchDogTimerクラスのコールバック関数を設定します。
static VOID APIENTRY TimeupCall(LPVOID me, DWORD dwHiTime, DWORD dwLoTime)
タイムアップ関数の呼び出し用インターフェース
Definition: DBLibrary.h:12