2009-05-23 4 views
1

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

+0

Что сделал бы ваш предполагаемый монитор порта? – 2009-05-23 15:49:34

+1

По существу он собирается обернуть данные в файл и сделать некоторые манипуляции с ним, но я действительно не вижу, как это влияет на вопрос. Насколько мне известно, достаточно просто написать простой отладочный вывод. Я не хотел вникать в детали того, что я пытаюсь сделать, потому что это приводит к тому, что люди просто предлагают Redmon нечто подобное. То, что я действительно хочу, - это базовый Hello World для мониторов портов. –

+1

Вам удалось найти информацию о процессе выполнения всего этого (без использования Redmon или других существующих библиотек и т. Д.)? –

ответ

1

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

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

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

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

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

4

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

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

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

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

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

3

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

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

Смежные вопросы