問題は、WaitForMultipleObjects(Ex)が配列内のすべてのシグナルオブジェクトの最小のインデックスを返すことです。私は、正確に(CreateEventを使って作成された)イベントオブジェクトがシグナル状態(またはシグナル状態ではない)であることを知りたいと思います。 私はそれは不可能だと思うが、何も欠けていないことを確かめることを頼むことにした。)イベントオブジェクトの状態を実際に変更せずに確認する方法は?
5
A
答えて
6
状態をテストしたいオブジェクトごとに、タイムアウト0のWaitForSingleObject
を呼ぶ。 WAIT_OBJECT_0
を返した場合、オブジェクトに信号が送信されます。そうでなければ、そうではありません。
自動リセットイベントがないかぎり、オブジェクトが信号を送るのを待っても状態は変わりません。
WaitForSingleObject
で検出する状態は、WaitForMultipleObjects
が返されたときにオブジェクトにあった状態と必ずしも同じではありません。その間に、より多くのオブジェクトが通知され、他のオブジェクトが通知されなくなった可能性があります。
+1うん、OPが気になるオブジェクトごとにループして、それぞれを個別にチェックしなければならないようだ。 (また、FYIとして、OPは具体的にここでイベントを尋ねていますが、WaitForSingleObject *はミューテックスとセマフォのシグナル状態を変更するので、それらのオブジェクトが含まれている場合は注意が必要です) – BrendanMcK