как узнать количество COM-портов и их ресурсы?

Я пишу последовательный драйвер для UART в Windows только для целей обучения. Точнее в WDM. Я напишу и драйвер шины, и драйвер функции.

В настоящее время я пишу водителя автобуса. Итак, мой вопрос: откуда я могу узнать в своем драйвере, сколько последовательных портов у меня есть в моей системе, чтобы я мог выставить это количество PDO из моего драйвера шины?? И ресурсы, выделенные каждому порту. Должен ли я проверять какой-то реестр, или окна предоставят какую-то структуру.

Пожалуйста помогите!! заранее спасибо


person Amit Bhaira    schedule 01.01.2014    source источник
comment
Это вопрос курицы и яйца. Вы яйцо, вам решать распознавать аппаратное обеспечение. Вы не получите помощи от самих UART, они никогда не были устройствами plug & play. Вы должны договориться с шинным интерфейсом, чтобы узнать адреса ввода-вывода и номера запросов на прерывание. Вымышленный шинный интерфейс, просто придумай его.   -  person Hans Passant    schedule 01.01.2014
comment
хорошо, я могу найти ресурсы в моей системе и жестко закодировать их в моем драйвере (может быть, я еще не очень хорошо знаком с драйверами Windows), но что, если я хочу сделать свой драйвер переносимым?? Предоставляет ли Windows HAL какие-либо API, которые могут предоставить мне то, что я ищу?   -  person Amit Bhaira    schedule 01.01.2014
comment
и как это делает стандартный последовательный драйвер, который поставляется с Windows?? У меня есть xp, установленный на моем VMWare, и когда я когда-либо создавал последовательный порт на VMWare с использованием каналов, xp внутри него обнаруживает его и перечисляет его com1, если я создаю еще один, он называет его com2 и так далее .. как этот драйвер достигает Это?   -  person Amit Bhaira    schedule 01.01.2014


Ответы (1)


Предполагая, что ваши UART являются частью ПК, уже есть драйвер шины, который их перечислит. ACPI.SYS получает информацию от BIOS платформы, которая включает количество и назначение ресурсов для встроенных компонентов, таких как UART.

Если вы пишете свой драйвер для многопортовой платы с последовательным интерфейсом, вам нужно будет посмотреть документацию на плату, чтобы определить, как вы находите количество UART. Это может быть так же просто, как посмотреть идентификатор продукта PCI и иметь жестко запрограммированный счетчик для типа вашей платы.

Когда ACPI перечислит устройство, будет вызвана процедура AddDevice вашего драйвера для его загрузки, и вы получите назначенные ресурсы при обработке сообщения PNP START.

person Peter Wieland    schedule 17.03.2014