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

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

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


person Motti    schedule 02.11.2008    source источник


Ответы (1)


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

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

person Tadmas    schedule 12.02.2009