Ошибка разработки драйвера принтера с использованием Windows DDK

Я разработчик программного обеспечения и производитель принтеров. Недавно спросил у водителя. Итак, я начинаю копаться в поисках руководств, образцов, статей.

Первым делом я загрузил Windows Driver Kit 7600.16385.1. Я устанавливаю его, собираю с некоторыми образцами драйверов (например, только общие / текстовые). Я изменил раздел производителя в файле inf и работал нормально. Но я попросил сделать более конкретный драйвер, получая данные из любого приложения, которое может печатать, и отправлять их на наш принтер.

На этом этапе я немного покопаюсь, установив Visual Studio 2013 и winddk 8.1. Я пробую образец драйвера принтера v4 из коробки. Мне удалось его построить (Inf to cat ведет себя странно, поэтому я отключил его свойства проекта). Затем я пытаюсь установить принтер с новым драйвером. Драйверы вообще не устанавливались. Я просмотрел синтаксис inf, нашел несколько ошибок и исправил проблему. После этого я продолжаю получать ошибку 0x00000002. Мне удалось решить проблему, после чего я получаю ошибку 0x0000003.

Итак, я записал проект inf intaller c #, удалось установить драйвер. Драйвер отображался в разделе драйверов принтера, но я пытаюсь установить новый принтер, установка продолжает сбиваться с ошибкой 0x0000003. Я ищу ошибку, я обнаружил, что это ошибка path_not_found. Я проверяю свой файл inf, проверяю синтаксис. Я приложил некоторые усилия, но продолжаю получать ошибку 0x0000003.

Что я делаю для решения проблемы?

  1. На форумах люди говорят, что это проблема привилегий, вызывающая эту ошибку в учетных данных Windows. Я настраиваю новую учетную запись администратора и устанавливаю драйвер. Но при попытке настройки ошибка принтера такая же.

  2. Я исследую журналы Windows в папке Windows: setupapi.dev.log и setupact.log. В этом разделе я нахожу ошибки 0x0000002, но не обнаружил ошибок 0x000003. Мне это не поможет.

  3. Некоторые люди на форумах говорят, что проблемы могут быть вызваны предустановленными драйверами и принтером. Я удаляю драйверы и принтеры в хранилище драйверов system32. Также удалите раздел «Принтеры и принтеры» под панелью управления. Результат такой же.

  4. Я нашел канал 9, это какая-то сеть разработки майкрософт. Я нашел несколько видеоуроков и слайдов о разработке. Я смотрел HW-328T, HW-238T, HW-979P, HW-981P, HW-903T, HW-322T. Эти видео дали мне некоторое представление, но не более того.

  5. Поэтому я продолжаю копать проблему, используя инструмент eventwiever в Windows. Обнаружена ошибка HRESULT 0x80070003. Это говорится в журнале ошибок диспетчера очереди печати. Я перезапускаю диспетчер очереди печати, ошибка продолжается, я перезапускаю службу и перезагружаю компьютер, ошибка продолжается.

  6. Я пробую старые записи редактора реестра драйверов. Результат такой же. Мне удалось получить права администратора папки Windows, это не имело значения.

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

  8. Многочисленные попытки установки на 64-битные и 32-битные окна.

  9. Также пробую использовать типы GPD, PPD.

Мои образцы кода.

  1. INF файл

    [Version]
    Signature="$Windows NT$"
    Class=Printer
    ClassGuid={4D36E979-E325-11CE-BFC1-08002BE10318}
    Provider=%ManufacturerName%
    CatalogFile=Ali.cat
    ClassVer=4.0
    DriverVer=08/01/2012,1.0.0.0
    
    [DestinationDirs]
    DefaultDestDir = 66000
    
    
    
    [Manufacturer]
    %ManufacturerName%=Ali,NTia64,NTamd64
    
    [Ali]
    "Ali V1" = Ali.GPD
    
    [Ali.NTia64]
    "Ali V1" = Ali.GPD
    
    [Ali.NTamd64]
    "Ali V1" = Ali.GPD
    
    [SourceDisksNames.amd64]
    1= %DiskName%,,,
    
    [SourceDisksFiles.amd64]
    Ali.gpd = 1
    
    [SourceDisksNames.ia64]
    1= %DiskName%,,,
    
    [SourceDisksFiles.ia64]
    Ali.gpd = 1
    
    [Strings]
    ManufacturerName="Ali"
    DiskName="Ali Installation Disk"
    
  2. Мой код функции C # для установки файлов inf

    if (SetupCopyOEMInf(inf_path, "", 2, 0x0000400, null, 0, 0, null))
    

Заранее спасибо.

Примечание. при необходимости я также могу опубликовать файл GPD.


person Mistrafantastic    schedule 13.03.2015    source источник
comment
Не видя остальной части вашего кода C #, мы не сможем предложить много помощи. Что, например, inf_path? Учитывая ошибку, с которой вы сталкиваетесь, эта переменная будет вероятным подозреваемым.   -  person Carey Gregory    schedule 31.03.2015


Ответы (2)


Похоже, что у вас нет раздела копирования в INF-файле, который должен выглядеть примерно так:

[Ali.GPD]
[email protected]

Это необходимо для файла Inf, чтобы знать, какие файлы копировать. Вот соответствующий документ MSDN. по этой теме.

Надеюсь это поможет.

person peter01242    schedule 08.05.2015

Прежде всего, вы должны рассмотреть архитектуру вашего процессора. Абсолютно ваш драйвер не будет работать на архитектуре x86 или ARM, поскольку соответствующие разделы не включены в ваш пример файла .inf.

Кроме того, в вашем INF-файле нет раздела «Установка» (директивы «Копировать файл»), поскольку его необходимо включить (особенно, если вы намереваетесь использовать API-интерфейсы настройки на основе INF). Чтобы создать минимальный рабочий файл .inf, см. здесь.

Наконец, как установить драйвер принтера? Вы используете пакет драйверов? Если да, то как вы его подписываете, когда упоминали, что процесс inf2cat в вашей работе обошел стороной? (может быть, вы разрабатываете в режиме «Отключение подписи драйверов»!). в противном случае, без каких-либо файлов .gpd или .ppt, как вы собираетесь устанавливать принтер? Чего вы ждете от своего принтера?

Добавив фрагмент кода, люди могут больше помочь.

person amirfg    schedule 11.12.2018