Question

Notre application est en train de recevoir une erreur RPC d'échec de l'appel système de DCOM ( 0x80010100 ), nous soupçonnons que la file de messages du thread cible est saturée (bien que je ne sois pas convaincu que ce soit le cas). Je sais que la file d'attente est limitée à 10 000 messages et je veux voir si nous sommes proches de ce nombre dans les cas courants. Existe-t-il un moyen de surveiller la taille de la file de messages d’un thread?

L'option la plus prometteuse que j'ai trouvée était GetQueueStatus , mais cela n'inclut pas le nombre de messages dans la file d'attente mais uniquement leurs types.

Était-ce utile?

La solution

Je ne connais aucun moyen de surveiller la taille de la file d'attente (à moins d'utiliser un débogueur de noyau et de ramper dans la structure de données interne Win32Thread à TIB + [0x40], ce que je recommande à peine).

À des fins de débogage, essayez de faire un PostThreadMessage pour vérifier si la file est pleine quand vous obtenez l'erreur. S'il est complet, l'appel doit échouer avec GetLastError () == 0x718. (Le quota disponible est insuffisant pour traiter cette commande.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top