Драйвер Windows с файлом INF или без него

Я видел два способа установки драйверов Windows.
a. Использование как файла SYS, так и файла INF. (например, драйвер NDIS)
b. Используйте только файл SYS, драйвер будет загружен службой. (например, драйверы в C: Windows System32 drivers)

Итак, мой вопрос:
1. Для каких драйверов или ситуаций требуется INF-файл?
2. В чем основная причина этой разницы?


В Windows существуют разные типы драйверов. У каждого типа драйвера есть своя история того, как драйвер устанавливается. Вот несколько распространенных типов драйверов.

Драйвер устройства PNP . Драйвер устройства PNP управляет устройством в дереве устройств. Драйверы PNP загружаются PNP, когда устройство перечисляется его родительской шиной. Чтобы PNP узнал, какой тип устройства поддерживает ваш драйвер (и множество других вещей), вам понадобится INF-файл в стиле PNP, который описывает ваш драйвер.

SCM- управляемый драйвер (иногда называемый «устаревшим драйвером»). SCM загружает эти драйверы на основе тех же правил, что и для запуска служб NT. SCM не требует INF. Вы можете зарегистрировать новый драйвер в SCM, просто запустив sc.exe create my_cool_driver type = kernel binPath = c: my driver.sys start = auto или вызвав CreateService API. Но если у вас уже есть INF по другим причинам, вы можете использовать любой стиль INF, чтобы сделать то же самое с помощью директивы AddService .

Драйвер облегченного фильтра NDIS (LWF) . LWF не загружаются NDIS; NDIS не волнует, как они загружены. Большинство LWF загружаются с помощью SCM, так как этим легко управлять. Тем не менее, INF-файл в стиле NetCfg по-прежнему требуется, поскольку NDIS необходимо знать, к каким типам сетевых адаптеров присоединить фильтр (например, Ethernet или WLAN).

Экспорт драйвер . Драйвер экспорта загружается диспетчером памяти, когда Mm пытается загрузить какой-либо другой драйвер, который импортирует из него функции. Драйвер экспорта — это всего лишь эквивалент библиотеки DLL в ядре — он просто предоставляет API для других драйверов. Драйверы экспорта не нуждаются в INF; их просто нужно поместить в правильный каталог на диске. Если у вас уже есть INF по другим причинам, вы можете использовать для этого директиву CopyFiles .

драйвер WinUSB . WinUSB — это встроенный драйвер, который делегирует большую часть обязанностей по управлению USB-устройством API пользовательского режима, поэтому любое приложение может легко выполнять простые операции с устройством. Это означает, что драйвером для устройства может быть практически любое приложение. Если USB-устройство помещает определенные данные в свой аппаратный дескриптор, Windows будет знать, что нужно автоматически настроить WinUSB, поэтому INF не требуется. Но если оборудование не сообщает, что ему нужен WinUSB, тогда вам понадобится INF-файл в стиле WinUSB, чтобы сообщить Windows, что нужно настроить WinUSB для вас. Кроме того, вам не нужен INF для вызова API WinUSB из вашего приложения..

Если вы просто экспериментируете и хотите вызвать несколько API ядра для развлечения, вы можете выбрать любой тип драйвера. Большинство людей считают, что драйвер, управляемый SCM, является самым простым, поскольку вам не нужен INF, и вы получаете полный контроль над запуском и остановкой драйвера. Но в любой другой ситуации выбор типа драйвера в значительной степени продиктован проблемой, которую вы пытаетесь решить. Например, если вы пишете драйвер для графического процессора PCI, вы должны использовать драйвер PNP и, следовательно, иметь INF-файл в стиле PCI.



Как узнать, какие файлы драйверов принадлежат определенному аппаратному устройству, например принтеру?

На определенном компьютере я установил лазерное МФУ Dell 2355dn, теперь как я могу узнать, какие файлы находятся на жесткий диск используются в качестве драйверов для доступа к принтеру.

Я предполагаю, что они должны находиться в каталоге c: windows system32 drivers, верно?

Я знаю DriverView от NirSoft, в котором перечислены все драйверы в системе, но я не нашли никаких драйверов Dell?

Есть идеи, как их перечислить?


вы можете увидеть весь файл, связанный с конкретным драйвером в Сведения о файле драйвера

  • Откройте окно диспетчера устройств (перейдите в меню RUN и введите «devmgmt.msc»)

  • rigght Щелкните на конкретном устройстве, которое вы хотите, и выберите Свойства
  • в окне «Свойства». Нажмите кнопку «Сведения о драйвере»

    • в окне сведений о драйвере. Вы можете увидеть, какие файлы связаны с этим Драйвер устройства

Хорошо Удачи!


1

В моем случае драйверы для одной из моих сетей принтеры были расположены в system32 spool.

Чтобы выяснить это, я открыл свойства принтера в DeviceManager/PrintQueues/[14]

Улучшите этот ответ
ответил 21 окт. 2015 в 23:57
добавить комментарий |

В моем случае драйверы для одного из моих сетевых принтеров находились в system32 spool.

Чтобы узнать это, я открыл параметры принтера в DeviceManager/PrintQueues/[14]


-1

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

Улучшите этот ответ
ответил 29 мая ’12 в 10:36
добавить комментарий |

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

Оцените статью
logicle.ru
Добавить комментарий