2008-11-02 43 views
8

我们的应用程序正在从DCOM(0x80010100)中获取系统调用失败的RPC错误,我们怀疑目标线程的消息队列已满(尽管我不相信这是真的)。我知道队列是limited to 10,000 messages,我想看看在常见情况下我们是否接近这个数字。有没有办法监视线程的消息队列的大小?我可以监视线程的消息队列的大小吗?

我发现的最有希望的选项是GetQueueStatus但这不包括队列中只有它们的类型的消息的数量。

回答

5

我不知道有任何监视队列大小的方法(在TIB + [0x40]处使用内核调试器和内部Win32Thread数据结构中的groveling,这是我不太推荐的)。

出于调试的目的,要在出现错误时检查队列是否已满,请尝试执行PostThreadMessage。如果已满,调用将失败,GetLastError()== 0x718。 (没有足够的配额可用于处理此命令。)

相关问题