Написание Windows Port Monitor Основы - PullRequest
1 голос
/ 23 мая 2009

Я пытаюсь найти базовый пример, учебное пособие или сообщение в блоге о том, как написать монитор порта принтера. Я скачал Windows DDK и покопался в localmon, но оказалось, что этот пример гораздо сложнее, чем просто основы, и, насколько я понимаю, он немного отличается от монитора портов OEM из-за того, как он обрабатывает ключ реестра и Перечисление портов. Кто-нибудь знает о блоге, учебнике или даже книге, в которой читатель знакомится с основным кодом, чтобы его запустить? Я нашел несколько ссылок, рассказывающих о концептуальных вещах, но ничего такого, что можно было бы сделать вручную.

Ответы [ 3 ]

4 голосов
/ 25 мая 2009

Я написал свои из спецификаций , на самом деле не так много API для реализации.

Единственная вещь, которая регулярно вводит людей в заблуждение, - это EnumPorts, спулер выделяет достаточно памяти для ВСЕХ портов, а не только для вас. Поэтому вам нужно убедиться, что вы заполняете все строки в конце буфера спулеров, не ставьте их сразу после ваших структур.

В спецификациях этого не говорится, но вы можете безопасно поместить функции пользовательского интерфейса и сервера в одну и ту же DLL.

Можно также создать монитор с одним портом, который поддерживает NT и более поздние мониторы портов типа Windows 2000.

Код в RedMon намного проще для чтения, чем пример localmon, его стоит посмотреть перед началом. Это довольно хорошо, потому что вы можете скомпилировать его в VS, вам не нужно использовать DDK для его сборки.

4 голосов
/ 25 мая 2009

Я могу порекомендовать http://www.codeproject.com/KB/printing/wpa.aspx,, который описывает, как написать драйвер принтера, а также содержит полезные советы о том, что необходимо для создания монитора порта.

Но я считаю, что хорошего учебника в этой области нет в Интернете (я был бы рад найти кого-нибудь, кто мог бы показать мне, что я не прав). Поэтому, когда мне пришлось справиться с этой задачей, я был вынужден сделать это трудным путем: я внимательно прочитал объяснения MSDN, начиная с этого момента: http://msdn.microsoft.com/en-us/library/ff561109.aspx. Параллельно с чтением MSDN я также проверил код в DDK ты упомянул и постарайся это понять. Я уверен, что это решение может также работать для вас.

2 голосов
/ 23 мая 2009

Я был на той же самой территории для серийного принтера. О лучшем примере, который я нашел, была эта статья в Dr Dobbs Journal . Хорошая часть заключается в том, что рассматриваются как драйвер последовательного порта, так и программа управления пользовательским пространством, и проект также можно использовать в качестве примера настройки Visual Studio для компиляции драйвера. Это также что-то немного трудно найти информацию о. В статье обсуждается старый драйвер в стиле NT, который хорошо работал на XP.

На CodeProject есть немало хороших статей о написании драйверов и программ для взаимодействия с ними. Они включают в себя исходный код и большинство имеют дело с новыми драйверами в стиле WDM и WDF.

OSROnline - еще один хороший источник, особенно для обсуждения конкретных вопросов и распространенных ошибок. У них также есть отличные утилиты, которые вам понадобятся.

Некоторым наиболее четко написанным и понятным кодом драйвера, с которым я сталкивался, был пример кода Марка Руссиновича. Несмотря на то, что Microsoft отказалась от всех источников, когда они приобрели Sysinternals, некоторые из лучших примеров все еще можно найти здесь и там.

Драйверы довольно интересные. Что бы вы ни делали, делайте это на виртуальной машине. На самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...