Могу ли я контролировать размер очереди сообщений потока? - PullRequest
8 голосов
/ 02 ноября 2008

Наше приложение получает ошибку RPC System Call Failed от DCOM (0x80010100), мы подозреваем, что очередь сообщений целевого потока заполнена (хотя я не уверен, что это так). Я знаю, что очередь ограничена 10,000 сообщениями , и я хочу узнать, близки ли мы к этому числу в общих случаях. Есть ли способ контролировать размер очереди сообщений потока?

Самый многообещающий вариант, который я нашел, был GetQueueStatus, но это не включает количество сообщений в очереди, только их типы.

1 Ответ

5 голосов
/ 12 февраля 2009

Я не знаю ни одного способа контроля размера очереди (если не использовать отладчик ядра и унижение внутренней структуры данных Win32Thread на TIB + [0x40], которую я вряд ли рекомендую).

В целях отладки, чтобы проверить, заполнена ли очередь при появлении ошибки, попробуйте выполнить PostThreadMessage. Если он полон, вызов должен завершиться неудачно с GetLastError () == 0x718. (Недостаточно квоты для обработки этой команды.)

...