Win32API質問箱 Build128 (17レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) レス栞 あぼーん
10: 06/29(日)12:31 ID:zQA4sk9y(1/3) AAS
質問なのですが
Q1. timeSetEvent()で(TIME_ONESHOT | TIME_KILL_SYNCHRONOUS)を指定してタイマーイベントを1回発生させた後、
timeKillEvent()することは必須ではない、でOK?
Q2. Q1の状況でtimeKillEvent()を呼んだ場合、0x61というMicrosoftの説明に無い謎の値が返されるんだけどこれは一体……
※ タイマーIDが16とか32とか何であっても実験する限りは常にその値やった。
※ MMSYSERR_INVALPARAM の値(0x0b)とは違う。環境はWindows 10、Visual Studio 2022、SDKのバージョンは10.0。
※ (TIME_PERIODIC | TIME_KILL_SYNCHRONOUS))を指定して繰り返しのタイマーイベントを発生開始後、
timeKillEvent()を2回呼んだときの2回目も同じく0x61が返される。
Q3. Q1の状況で、タイマーイベントIDが仮に16だったとして、タイマーイベント発生「後」にタイマーイベントID 16に対してtimeKillEvent()したとしまつ。
このとき16と言う値が、関係無いタイマーイベントのIDとして再利用されている危険性は無い?
(つまり確率的にtimeKillEvent()がTIMERR_NOERRORを返して成功し、しかし後から生成された無関係なタイマーイベントをkillしてしまうようなことは起きない?)
11: 06/29(日)12:36 ID:zQA4sk9y(2/3) AAS
Q1はtimerKillEvent()を呼ばなくともリソースリークなど起きないよねという確認でつ、
13(1): 06/29(日)14:54 ID:zQA4sk9y(3/3) AAS
>>12
レス?クス、しかしQ1の状況
>timeSetEvent()で(TIME_ONESHOT | TIME_KILL_SYNCHRONOUS)を指定してタイマーイベントを1回発生させた後
でtimeKillEvent()を呼んだら0x61が返されて成功しているようには見えない(Q2)というそこはかとなく疑問が……
TIME_ONESHOTはタイマーイベントIDの寿命がいつまでなのか(イベント発生で破棄なのか、timeKillEvent()を明示的に呼ぶまで生きた状態なのか)がはっきりしなさすぐる印象……
質問してから思いついたのですだが、
やっぱtimeSetEvent()は常にTIME_PERIODIC で使うことにして、ONE SHOTのイベントが欲しかったらイベントハンドラ内でtimeKillEvent()を呼んで1回で止める、
みたいな方がIDの寿命のあいまいさが無くて安牌かもしれん……
実験する限りそうするとイベントハンドラ内のtimeSetEvent()はちゃんと成功(return値がTIMERR_NOERROR (0))して、
なおかつイベントハンドラの呼び出しは1回で止まる(正しくONE SHOT動作となる)ので問題なさげ。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.174s*