вручную Установить драйвер Windows XP

Как установить драйвер «hello world» вручную? Я написал сценарий реестра, где "start"=dword:3 означает, что служба требует ручного запуска.

Но как мне начать и остановить его? Я пробовал sc start <path to .sys file>, но пишет specified service does not exist as an installed service.

Также, если возможно, подскажите, как осуществляется сопоставление ключей реестра и .sys-файла драйвера. Насколько я понимаю, в значении реестра мы упоминаем имя [HKEY_LO.../drivername], это имя драйвера ищется в каталоге Windows/system32/drivers/. Если он там находится, то этот драйвер обрабатывается по другим параметрам. Пожалуйста, поправьте меня, если я ошибаюсь.


person user2705939    schedule 19.09.2013    source источник
comment
пожалуйста, не указывайте на внешние инструменты, такие как загрузчик драйвера OSR. Это не мой предпочтительный способ. Поскольку это программное обеспечение, оно должно делать что-то, чему я хочу научиться. Хотя это повторяется, это весело для меня.   -  person user2705939    schedule 19.09.2013
comment
Можете ли вы уточнить, что делает ваш драйвер hello world? В зависимости от типа устройства, которое вы пытаетесь установить, инструкции могут отличаться. Обычно драйверы Windows устанавливаются через INF-файл. Кроме того, при написании драйверов Windows вы должны начать с некоторого образца в наборе драйверов Windows, который наиболее точно представляет устройство, для которого вы разрабатываете. В наши дни почти никто из тех, кого я знаю, не будет писать драйвер с нуля. Это дает вам основу для начала разработки, включая установку INF.   -  person Preston    schedule 20.09.2013
comment
Ну, он просто печатает Hello, World! используя DbgPrint(..). Я очень новичок в WDD и окнах в этом отношении. Спасибо за совет по поводу начальной точки, но я делаю это через WDM (см. тег!). Также я согласен с тем, что мало кто пишет драйвера с нуля, но для понимания вещей TtB необходимо. Скажите, нужно ли мне добавить код к вопросу.   -  person user2705939    schedule 20.09.2013
comment
Независимо от того, используете ли вы WDF или WDM, процесс, на мой взгляд, будет одинаковым. Если вы просто ищете информацию о драйверах WDM, лучше всего начать с чтения Питера Вискаролы «Разработка драйверов устройств Windows NT» (amazon.com/Windows-NT-Device-Driver-Development/dp/1578700582). Если вы пытаетесь выполнить определенную задачу с помощью своего драйвера, я бы предложил обновить свой вопрос для этого. В противном случае я разместил то, что я могу быть ответом, который вы ищете.   -  person Preston    schedule 21.09.2013


Ответы (2)


Вы можете попробовать использовать net start вместо sc start. Если вы продолжаете получать это сообщение, возможно, вы неправильно скомпилировали драйвер, и по этой причине он не загружается.

Полный пример простого драйвера Hello World на основе DriverEntry приведен здесь: http://www.catch22.net/tuts/introduction-device-drivers

Я бы также рекомендовал прочитать книгу «Разработка драйверов устройств для Windows NT» Питера Вискаролы.

person Preston    schedule 20.09.2013
comment
net start заработало. Спасибо. Но одно говорит, что если у вас все еще есть проблема, возможно, вы неправильно ее скомпилировали. Но я сказал, что у меня есть файл .sys. Причина, по которой я спрашиваю об этом, состоит в том, чтобы узнать, может ли это произойти? Я всегда считал, что если есть какая-то ошибка компилятора, он НИКОГДА не сгенерирует файл .obj ... но не уверен насчет Windows ... ребята с окнами ..... разные # ..! - person user2705939; 23.09.2013
comment
Также я думал, что net будет использоваться для сетевых служб, чем net отличается от sc? - person user2705939; 23.09.2013
comment
Насколько я знаю, они будут делать то же самое, но net более ограничены, а sc дает вам больше возможностей для запуска службы. Я всегда использовал net start (как и образцы). Я никогда не использовал это в коммерческом драйвере, я всегда начинал с образца с INF-файлом и использовал его для установки через диспетчер устройств. Удачи вам в развитии! - person Preston; 23.09.2013

То, что сказал Престон, работает, это также работает с sc. Я указывал путь к файлу .sys, но нам нужно просто указать имя службы.

eg. sc start minimal

person user2705939    schedule 23.09.2013