8

我们的应用程序收到来自 DCOM ( 0x80010100) 的 System Call Failed RPC 错误,我们怀疑目标线程的消息队列已满(尽管我不相信这是真的)。我知道队列仅限于10,000消息,我想看看在常见情况下我们是否接近这个数字。有没有办法监控线程的消息队列的大小?

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

4

1 回答 1

5

我不知道有任何监控队列大小的方法(没有使用内核调试器和在 TIB+[0x40] 的内部 Win32Thread 数据结构中卑躬屈膝,我几乎不推荐)。

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

于 2009-02-12T08:07:06.717 回答