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

StackOverflow https://stackoverflow.com/questions/256734

Вопрос

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top