我可以监控线程消息队列的大小吗?

时间:2008-11-02 10:15:18

标签: multithreading winapi message-queue

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

我找到的最有希望的选项是GetQueueStatus,但这不包括队列中只有其类型的消息数。

1 个答案:

答案 0 :(得分:5)

我不知道有什么方法可以监视队列的大小(在TIB + [0x40]的内部Win32Thread数据结构中没有使用内核调试器和groveing,我几乎不推荐)。

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