2008-09-24 12 views
1

Si je crée un événement en utilisant CreateEvent dans Windows, comment puis-je vérifier si cet événement est signalé ou s'il n'utilise pas le débogueur dans Visual Studio? CreateEvent renvoie un handle, ce qui ne me donne pas accès à beaucoup d'informations. Avant d'appeler le WaitForSingleObject(), je veux vérifier si l'événement est signalé avant d'entrer dans la fonction.Débogage avec des événements dans Windows

Répondre

1

Si l'événement est signalé et que vous utilisez WaitForSingleObject(), il retournera immédiatement. En outre, vous pouvez appeler WaitForSingleObject() avec un temps d'attente de 0 pour déterminer si elle est signalée ou non. Cependant, cela ne devrait pas être nécessaire - définissez l'état initial dans l'appel CreateEvent() (ce qui s'est écoulé jusqu'ici n'est pas clair dans votre question).

4

Utilisez la commande handle. Voici un exemple

La commande suivante affiche des informations détaillées sur le handle 0x8.

0:000> !handle 8 f 

poignée 8 Type d'événement Attributs 0 GrantedAccess 0x100003: Synch QueryState, ModifyState HandleCount 2 PointerCount 3 Nom objet Informations spécifiques Type d'événement Auto Reset événement est Waiting

+0

Remarque que cette commande est pour les outils de débogage pour Windows (WinDbg/ntsd/cdb/kd), pas Visual Studio. DTW est à http://www.microsoft.com/whdc/devtools/debugging/default.mspx – bk1e

+0

@ bk1e: C'est vrai. Cependant, il est également possible [d'utiliser le moteur de débogage Windows de Visual Studio] (http://stackoverflow.com/q/3438489/1889329), ainsi la commande d'extension '! Handle' est également disponible dans Visual Studio. – IInspectable