Вы можете обнаружить, что PortMon Марк Руссинович является полезным в вашей работе, хотя это не предусмотрено с исходным кодом. Он будет регистрировать все системные вызовы, связанные с портом, и обладает широкими возможностями фильтрации, чтобы поддерживать этот журнал в управляемом размере.
Редактировать: PortMon работает, вводя драйвер устройства режима ядра в систему, когда он запускается. Этот драйвер подключает порты, которые он хочет контролировать, вставив драйвер фильтра в стек. Этот драйвер фильтра сообщает обо всех IRP, которые проходят через него в приложение. Это не простое животное, которое можно реализовать на любом растяжке, и это действительно невозможно сделать в пользовательском режиме.
В Windows DDK есть пример кода для драйвера фильтра портов, но это большая работа, чтобы перейти от примера к чему-то полезному.
Решение для чистого пользовательского режима, которое может работать, состоит в использовании двух дополнительных последовательных портов для подслушивания провода. Пара USB для последовательных адаптеров и немного проводки будут делать то, что вам нужно. Тогда это всего лишь «малый вопрос программирования» для мониторинга и корреляции линий отправки и получения. Одночиповое решение может быть основано на FT2232H device from FTDI, имеющем доступный evaluation module. Добавьте несколько переводчиков уровня RS232 и некоторые D-разъемы, и у вас есть последовательный eavesdropper на USB, который выглядит как два COM-порта для Windows.
Другой подход, основанный на коробке, заключается в том, что многие логические анализаторы и осциллографы смешанного сигнала могут выполнять декодирование по серийному протоколу, часто как необязательный компонент. Одним из источников недорогих программных решений USB + является Saelig. Я сам купил чипы и модули, но не имею никакого прямого опыта с любыми логическими анализаторами на основе USB, которые они продают, несмотря на то, что думаю, что у меня должен быть один в сумке вместе с нетбуком ...
Спасибо, RB, я использую XPort в настоящее время, но хочу встроить разделение портов в приложении. –
Я обновил свой ответ с помощью пары других идей, которые произошли со мной сегодня днем ... – RBerteig
Попробуйте VSPE. Просто начал использовать его, кажется, отлично работает для 32-битных машин. Также имеет версии для 64 бит. использует либо приложение для настройки виртуальных портов, либо вы можете использовать API. Создает виртуальные последовательные устройства режима ядра ... http://www.eterlogic.com/Products.VSPE.html – ryyker