Как перекомпилировать драйвер под другую версию windows

Есть написанный wdf драйвер, замечательно работающий под Windows 7 x32. Переткнули железку в более новый компьютер с семёркой x64. Я перекомпелировал драйвер

Содержание

  1. Переделка драйвера под windows 7 x64
  2. Как перекомпилировать драйвер под другую версию Windows?
  3. Установка драйверов под Windows 7 в режиме совместимости. Часть 1.
  4. PressDev
  5. Все об IT
  6. Установка 32-разрядного драйвера в 64-разрядной версии Windows
  7. Экспорт драйверов программой Dism++ и их внедрение в новой Windows
  8. Об экспорте драйверов
  9. Экспорт драйверов средством Dism
  10. Экспорт драйверов программой Dism++
  11. Импорт экспортированных драйверов

Переделка драйвера под windows 7 x64

Есть написанный wdf драйвер, замечательно работающий под Windows 7 x32.
Переткнули железку в более новый компьютер с семёркой x64.
Я перекомпелировал драйвер для этой среды, но при установке ОС х64 сказала, что не нашла подходящих драйверов.
понял, что надо ещё и inf файл переписать.
Вот такой старый:

реакция системы осталась прежней.
подскажите пожалуйста, что сделал не так, или что не дописал.
Спасибо.

1a14ca0e2a6b509cdf24b1a898339299?s=32&r=g&d=http%3a%2f%2frsdn.org%3a80%2fImages%2fDefaultGravatar От: redp redplait.blogspot.com
Дата: 04.03.13 14:34
Оценка: +1
e2badf41a05f54357b1c77034c8be6e6?s=32&r=g&d=http%3a%2f%2frsdn.org%3a80%2fImages%2fDefaultGravatar От: smithana
Дата: 04.03.13 14:56
Оценка:

Здравствуйте, redp, Вы писали:

R>цифровая подпись нужна

при загрузке в режиме с отключённой проверкой подписей она не нужна.
нашлась ошибка в тексте:
[AD200Dev.NTamd86]
и справил на
[AD200Dev.NTamd64]
но ничего не поменялось.

d41d8cd98f00b204e9800998ecf8427e?s=32&r=g&d=http%3a%2f%2frsdn.org%3a80%2fImages%2fDefaultGravatar От: Аноним
Дата: 04.03.13 15:27
Оценка:
3510301bfff765fe0fa659c57b1f3e4f?s=32&r=g&d=http%3a%2f%2frsdn.org%3a80%2fImages%2fDefaultGravatar От: Psybot
Дата: 05.03.13 03:42
Оценка:
3510301bfff765fe0fa659c57b1f3e4f?s=32&r=g&d=http%3a%2f%2frsdn.org%3a80%2fImages%2fDefaultGravatar От: Psybot
Дата: 05.03.13 04:02
Оценка:

Здравствуйте, Psybot, Вы писали:

P>Здравствуйте, smithana, Вы писали:

S>>нашлась ошибка в тексте:
S>>[AD200Dev.NTamd86]
S>>и справил на
S>>[AD200Dev.NTamd64]
S>>но ничего не поменялось.
P>в [Manufacturer] тоже надо
пардон, не заметил готовый inf )

e2badf41a05f54357b1c77034c8be6e6?s=32&r=g&d=http%3a%2f%2frsdn.org%3a80%2fImages%2fDefaultGravatar От: smithana
Дата: 05.03.13 07:14
Оценка:

Спасибо тебе, добрый человек.
система точно также как и в х86 сказала, что не нашла цифровой подписи, и предложила выбор, либо всё равно ставить, либо нет.
Драйвер поставился, но тут же вылетела ошибка, что в данной ОС цифр. подп. обязательна, и удалила драйвер.
А загрузившись в режиме без проверки цифр. подписи, драйвер замечательно встал и заработал.

Подскажите тогда ещё по легализации.
Дорого ли стоит подпись и к кому обращаться, т.к. на наших сайтах обсуждают только как обойти подпись, а на заграничных ничего не нашёл.
только упоминание, что пару лет назад подпись стоитла от 150 до 400 баксов на год.
Подпись даётся только на один драйвер или на компанию и я ей могу сколько угодна драйверов подписывать?

Источник

Как перекомпилировать драйвер под другую версию Windows?

Вот такие есть файлы исходников:
common.rc
lowcdc.c
lowcdc.h
lowcdc.rc
makefile
sources
sources.inc
Можно ли из них скомпилировать драйвер и что для этого надо поставить? WDK какой версии ставить, если Windows 10, а драйверы нужно скомпилировать под Windows 10 x64. Драйвер нужен для программатора. Заранее спасибо.

Добавлено через 1 час 31 минуту
Первый этап установка WDK 10 и SDK 10. Затем в Visual studio создать проект драйвера, а что затем, куда впихнуть эти файлы в проект?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

tickКак перестроить объект под другую версию MSBuild?
Уважаемые Гуру! Скачал с GitHub новую версию проекта. При попытке открыть его в VS 2012 получаю.

Установила windows 8 enterprise evaluation, как установить другую версию?
Я поняла, что это ознакомительная версия. Но теперь я хочу другую, уже скачала, смонтировала образ.

Проблема с переносом под другую версию Office
Привет всем. У меня проблема с переносимостью с одной версии офиса на другую. Это связано с тем.

Судя по набору файлов, собирать этот драйвер нужно в WDK версиях до 8
(потому что файлы sources и makefile в новых версиях WDK не используются).

1. Скачиваешь и устанавливаешь WDK 7.1:

3. Запускаешь ярлык, появится консоль. В консоли командой cd заходишь в папку,
где лежат исходники твоего драйвера. Пример:

4. Выполняешь команду build (без аргументов).
Если сборка успешна, в папке с драйвером появится подпапка с именем типа objfre_win7_amd64amd64,
в ней будет лежать собранный драйвер (.sys). Останется только подписать его цифровой подписью
через WHDC-портал и он сможет работать на 64-битной Windows 10 и Windows Server 2016.

Без цифровой подписи драйвер работать не будет (ну или придется каждый раз при
старте системы нажимать F8 и отключать проверку цифровых подписей).

Источник

Установка драйверов под Windows 7 в режиме совместимости. Часть 1.

При переходе на новейшую версию Windows перед пользователями часто возникает проблема в нахождении и установке драйверов для своего прежнего оборудования. Это не вина компании Microsoft, а скорее всего несвоевременная поддержка компанией производителя оборудования. Со временем для большинства оборудования производители все же выпускают новейшие версии драйверов. И пользователю достаточно лишь скачать новую версию драйверов с сайта производителя.

Но для некоторого оборудования новые драйвера так и остаются в мечтах. Что же делать, если на компьютере установлена Windows 7, например, а последние официальные версии драйверов выпущены для более ранних версий Windows – Windows XP или Windows Vista.

На помощь приходит встроенный в Windows механизм совместимости программ. То есть в Windows XP можно запустить программу в режиме совместимости Windows 2000, Windows 98. А в Windows 7 уже можно выбрать режим совместимости для Windows 95, Windows 98, Windows XP, Vista и любой другой более ранней версии Windows.

Рассмотрим ручную установку режима совместимости запуска драйверов или программ.

Итак, если у нас имеется драйвер, который прекрасно работал под Windows XP, Vista, но на установленной Windows Seven драйвер отказывается запускаться. Для запуска такого драйвера в режиме совместимости (скажем под Windows XP) следует на исполняемом файле драйвера (с расширением *.exe или *.msi) нажать правой кнопкой мыши и выбрать пункт “Свойства

punkt svoistva

В появившемся окне “Свойства” переходим во вкладку “Совместимость”.
Во вкладке “Совместимость” имеется три раздела для установки параметров: “Режим совместимости”, “Параметры” и “Уровень прав”.

vkladka sovmestimost

В первом разделе “Режим совместимости” устанавливаем галочку “Запустить программу в режиме совместимости” и в выпадающем списке выбираем ту операционную систему, в которой данный драйвер работал без ошибок, например, Windows XP (пакет обновления 3).

razdel rejim sovmestimosti

Раздел “Параметры” служит для установки дополнительных условий режима совместимости. Как правило, эти параметры устанавливаются для очень устаревших драйверов или программ (работавших на Windows 2000 и ниже) и их включение сейчас используются очень редко.

Многие программы и драйвера для корректной работы требуют права Администратора для запуска. Поэтому в разделе “Уровень прав” для большей и правильной совместимости запуска драйвера следует установить галочку “Выполнять эту программу от имени администратора”. Следует отметить, что данный параметр может установить только пользователь с правами Администратора.

Если необходимо установить различные режимы совместимости для других пользователей компьютера, то нажмите на кнопку “Изменить параметры для всех пользователей ” внизу окна.

ustanovka parametrov rejima sovmestimosti

После правильной установки всех параметров режима совместимости нажмите кнопку ОК и начните установку драйвера (программы).

Примечание: если установочный файл драйвера имеет расширение *.msi, то для установки Режима совместимости в раскрывающемся списке будет доступна лишь предыдущая версия Windows.

Источник

PressDev

Все об IT

vkontakte email f f facebook twitter rss

widget yandex add

rss2

Свежие записи
Свежие комментарии

orphus

Установка 32-разрядного драйвера в 64-разрядной версии Windows

DriversИтак, в этой статье мы рассмотрим как можно с 32-разрядной версии Windows установить драйвер на 64-разрядную версию Windows, многие могут сказать зачем, если можно просто скачать драйвер сразу для

64-рязрядной версии Windows, а я отвечу, что возможно он вообще будет отсутствовать или у Вас не будет доступа к сети Интернет, а в наличии будет только лишь 32-разрядный драйвер.

У большинства драйверов нету двоичных файлов, таких как: .dll, .sys, .exe, а только присутствуют драйвера с файлами .inf. В данных файлах содержаться информация о конкретном устройстве (возьмем к примеру устройство монитор SONY). Так что в 64-разрядной версии Windows 7, например, Вам не удастся установить файлы .inf, которые предназначены для 32-разрядной версии Windows. Ну а мы теперь попробуем заставить Windows принять такой файлы. Для этого откроем .inf файл в каком-нибудь текстовом редакторе, например Блокноте(Notepad) и найдем в нем раздел [Manufacturer]:

Теперь нам в данном разделе необходимо поставить во второй строке запятую и прописать NTamd64:

Далее находим раздел, который соответствует информации о производителе (в данном случае это [SONY]):

[SONY]
%SDM-%P234%=SDM-P234.Install, MonitorSNY03D0
%SDM-%P234D%=SDM-P234D.Install, MonitorSNY03D0

Далее копируем полностью этот раздел и сразу же после этого раздела вставляем копию с одним лишь отличием, в конце названия данного раздела необходимо поставить точку и написать NTamd64, в итоге получиться следующее:

[SONY.NTamd64]
%SDM-%P234%=SDM-P234.Install, MonitorSNY03D0
%SDM-%P234D%=SDM-P234D.Install, MonitorSNY03D0

Все, теперь сохраняем наш файл и пробуем попытку установки данного драйвера, удачи.

Источник

Привет, друзья. Это очередная публикация о возможностях программы Dism++. Это программа, являющая собой графический интерфейс к штатному консольному средству Windows Dism. И не только, у неё много функциональных возможностей, и одна из них, с которой мы будем ниже знакомиться – это экспорт установленных в системе Windows драйверов. Как с помощью Dism++ экспортировать драйвера, и как их потом в среде новой Windows импортировать?

Экспорт драйверов программой Dism++ и их внедрение в новой Windows

По традиции, друзья, напомню, что на сайте представлен цикл публикаций о возможностях программы Dism++. Вы можете почитать её комплексный обзор, а также посмотреть публикации, раскрывающие потенциал программы в конкретных ситуациях, по тегу Dism. Тег отфильтрует статьи сайта по работе с программой Dism++ и штатным консольным средством Dism.

Об экспорте драйверов

Ну а теперь по теме статьи – экспорт драйверов. Этой операции по возможности стоить предпочесть обычную установку драйверов, скачанных с официального сайта производителя материнской платы, ноутбука, видеокарты или прочего устройства, на который Windows не может сама найти драйвер. Как это делается на примере материнской платы Asus, читаем здесь. В качестве более удобной альтернативы можно использовать менеджеры установки драйверов типа Snappy Driver Installer. Это бесплатная годная программа, работающая как по типу онлайн-клиента, так и в связке с локальной базой драйверов. Экспорт-импорт драйверов я бы рекомендовал расценивать как запасной вариант – если инсталлятор драйвера нужного устройства поди знай где искать, либо его версия, предлагаемая на сайте производителя устройства или менеджером установки драйверов, работает со сбоями. Экспортированные драйвера также могут пригодиться в случае проблем после обновления Windows или системного сбоя. Или, например, в случае удаления с официального сайта устройства драйверов для старых версий Windows.

Экспорт-импорт драйверов, в принципе, можно рассматривать как альтернативу установке драйверов с официальных источников устройств или с помощью программ типа Snappy Driver Installer. Более того, это удобный способ решения вопроса в случае плановой переустановки Windows: в старой системе одним махом делам экспорт драйверов, в новой системе импортируем те драйверы, что сами не установились. Однако нужно учитывать, что импорт драйверов не всегда может быть осуществлён, это касается, в частности, случаев смены версии или разрядности Windows. Ну и ещё же новая инсталляция драйвера – это замечательный повод обновить его версию, тогда как при импорте мы внедрим в систему старую экспортированную версию.

Экспорт драйверов средством Dism

В системах Windows 8.1 и 10 для экспорта драйверов, установленных в текущей операционной системе, мы можем использовать штатное консольное средство Dism. Нам нужно на несистемном разделе диска создать папку для их хранения. Создать и назвать именем на латинице и без пробелов.

1564037004 skrin 1

Затем нужно запустить от имени администратора командную строку и ввести:

1564037087 skrin 2

Где вместо f:exportdrivers вам, друзья, нужно подставить свой путь и название папки. По итогу выполнения этой команды в указанной папке появятся подпапки с экспортированными драйверами устройств.

1564036990 skrin 3

Но штатное средство Dism ограничено возможностью экспорта только сторонних драйверов. И только всех их вкупе.

1564037000 skrin 4

Тогда как Dism++ может экспортировать и сторонние, и системные драйверы, и все подряд, и только указанные нами. Но главное – программа может это делать и в Windows 10, и в Windows 8.1, и в Windows 7.

Экспорт драйверов программой Dism++

1564037019 skrin 5

Указываем папку хранения экспорта.

1564037002 skrin 6

И через какое-то время можем смотреть результат: экспортированные драйверы в папке экспорта будут распределены по подпапкам устройств.

1564037049 skrin 7

Кстати, преимущество Dism++ перед консольным Dism заключается ещё в такой вот удобной каталогизации экспортированного содержимого по типам устройств компьютера. Для импорта драйверов это не имеет никакого значения, но может пригодиться при принятии решения, какие папки оставлять, а какие – удалять, если со временем станет вопрос о расчистке места на диске.

Если нужных драйверов нет в перечне, либо же если нам нужно экспортировать все подряд драйверы системы, в окне Dism++ ставим галочку опции «Предустановленные». Далее действуем аналогично описанной выше процедуре: галочками отмечаем все или отдельные драйверы, жмём кнопку «Экспорт» и указываем папку.

1564037043 skrin 8

Так вот всё просто, друзья.

Импорт экспортированных драйверов

Если после переустановки, обновления, восстановления после системного сбоя Windows окажется без драйверов каких-то комплектующих или периферии, идём в системный диспетчер устройств. Вызываем на проблемном устройстве контекстное меню, жмём «Обновить драйверы».

1564037069 skrin 9

Кликаем «Выполнить поиск драйверов на этом компьютере».

1564037064 skrin 10

Далее с помощью кнопки обзора указываем путь к нашей папке с экспортированными программой Dism++ драйверами. Смотрим, чтобы стояла галочка включения вложенных подпапок. Жмём «Далее».

1564037054 skrin 11

Дожидаемся завершения импорта.

1564037035 skrin 12

Друзья, информация для желающих узнать больше по теме работы с драйверами Windows: их экспорт-импорт можно осуществлять по типу бэкапа-восстановления не только средствами Dism, но с помощью других средств, например:

Источник

Цитата
Сообщение от Nikfel
Посмотреть сообщение

Можно ли из них скомпилировать драйвер и что для этого надо поставить?

Судя по набору файлов, собирать этот драйвер нужно в WDK версиях до 8
(потому что файлы sources и makefile в новых версиях WDK не используются).

Порядок действий:

1. Скачиваешь и устанавливаешь WDK 7.1:

Windows Driver Kit Version 7.1.0
https://www.microsoft.com/en-u… x?id=11800

2. Идешь в меню «Пуск» и ищешь папку ‘Windows Driver Kit’, в ней — Build Environments и
там тебе нужен ярлык ‘Windows 7 x64 Free Build Environment’. Если его нет, — а это
баг установки WDK 7.1 на Windows 10, — ищи здесь: C:ProgramDataMicrosoftWindows
Start MenuProgramsWindows Driver KitsWDK 7600.16385.1Build Environments.

3. Запускаешь ярлык, появится консоль. В консоли командой cd заходишь в папку,
где лежат исходники твоего драйвера. Пример:

Код

cd /d "C:WorkMy DriverTest1"

4. Выполняешь команду build (без аргументов).
Если сборка успешна, в папке с драйвером появится подпапка с именем типа objfre_win7_amd64amd64,
в ней будет лежать собранный драйвер (.sys). Останется только подписать его цифровой подписью
через WHDC-портал и он сможет работать на 64-битной Windows 10 и Windows Server 2016.

Без цифровой подписи драйвер работать не будет (ну или придется каждый раз при
старте системы нажимать F8 и отключать проверку цифровых подписей).

>
перенос драйвера с ХР на 7
, написать драйвер для вин 7

  • Подписаться на тему
  • Сообщить другу
  • Скачать/распечатать тему

  


Сообщ.
#1

,
21.01.12, 12:04

    Full Member

    ***

    Рейтинг (т): 3

    Приветствую ВСЕХ!!!
    Подскажите уважаемые Знатоки, чем воспользоваться для решения вот такой задачи!
    Написан драйвер под ХР еще годов так n назад… и встал вопрос переноса его на win7…
    Кто-то ХР дрова переносил, сталкивался с проблемами и какими подручными средствами лучше всего воспользоваться?!
    Спасибо!!!


    zhuravlev80



    Сообщ.
    #2

    ,
    26.01.12, 11:28

      Full Member

      ***

      Рейтинг (т): 3

      :huh: driverstudio под Win7 еще нет в природе?


      zhuravlev80



      Сообщ.
      #3

      ,
      23.02.12, 16:20

        Full Member

        ***

        Рейтинг (т): 3

        Как удалось выяснить driverstudio больше нет и проект закрыт… но есть другой способ … воспользоваться Jungo WinDrive … что я и сдела и в результате получил исподники в которых полный абзац! ((( пришлось потихоньку осваивать WDF Kernel Mode Driver Foundation.
        В хелпе с DDK толком мало что написано … понятного все как всегда от форточников сжато и ссылками на др. источник…


        zhuravlev80



        Сообщ.
        #4

        ,
        28.02.12, 14:53

          Full Member

          ***

          Рейтинг (т): 3

          Люди, посоветуйте книгу!!!
          Вот нашел: Программирование аппаратных средств в Windows
          Автор: Всеволод Несвижский
          Языки: Русский
          Издательство: БХВ-Петербург
          Серия: Профессиональное программирование
          ISBN 978-5-9775-0263-4; 2008 г.

          Guru

          Qraizer



          Сообщ.
          #5

          ,
          28.02.12, 17:08

            zhuravlev80, ты собрался на Ассемблере драйвер писать? Как бы не то чтобы странное желание, просто и под XP это было уже необязательно. Даже под Win98 я лично писал на C и горя не знал.


            zhuravlev80



            Сообщ.
            #6

            ,
            01.03.12, 09:43

              Full Member

              ***

              Рейтинг (т): 3

              Qraizer не конечно, не на Ассемблере, а на С!)))
              какой я дурень… не в том разделе создал тему!
              Админы, перенесите тему в раздел С/С++ системное программирование!
              Спасибо!!!!

              Сообщение отредактировано: zhuravlev80 — 01.03.12, 09:44


              GAGARIN



              Сообщ.
              #7

              ,
              03.03.12, 01:07

                Senior Member

                ****

                Рейтинг (т): 11

                а что за драйвер-то? может он и так «заведется» на семерке)) хотя, под х64 портировать наверное таки придется


                zhuravlev80



                Сообщ.
                #8

                ,
                06.03.12, 16:39

                  Full Member

                  ***

                  Рейтинг (т): 3

                  GAGARIN на семерке не заводится х32 … а под х64 тем более…


                  Dem_max



                  Сообщ.
                  #9

                  ,
                  06.03.12, 23:58

                    Да еще драйвер нужно будет подписать у мелкософта, а это немалых денег нужно им отдать


                    Ahilles



                    Сообщ.
                    #10

                    ,
                    07.03.12, 05:17

                      Full Member

                      ***

                      Рейтинг (т): 10

                      Цитата zhuravlev80 @ 21.01.12, 12:04

                      Подскажите уважаемые Знатоки, чем воспользоваться для решения вот такой задачи!
                      Написан драйвер под ХР еще годов так n назад… и встал вопрос переноса его на win7…
                      Кто-то ХР дрова переносил, сталкивался с проблемами и какими подручными средствами лучше всего воспользоваться?!

                      1. переписать код с учётом специфики win7. Если код написан правильно, то скорее всего это не нужно
                      2. перекомпилить


                      zhuravlev80



                      Сообщ.
                      #11

                      ,
                      07.03.12, 07:57

                        Full Member

                        ***

                        Рейтинг (т): 3

                        Ребята спасибо за помощь! Но драйвер написан не под DDK а в Numega и просто так перекомпилировать не получится !!!
                        С Билом и его форточкой разберемся!)))
                        Вот как выглядит код драйвера который сгенерировала очень давно Numega с внесенными корректировками… (в прикрепренном файле)

                        Что можно сделать, Ваши предложения!
                        Спасибо!!!

                        Сообщение отредактировано: zhuravlev80 — 08.03.12, 14:07


                        zhuravlev80



                        Сообщ.
                        #12

                        ,
                        20.03.12, 14:17

                          Full Member

                          ***

                          Рейтинг (т): 3

                          Уважаемые знатоки, как правильно представить функцию в ДДК NTSTATUS MDMAI_IO_READ_Handler(PIRP I) которая была сгенерирована в NuMega??

                          ExpandedWrap disabled

                            KIoRange            m_IoPortRange0;

                            struct XDSP_READ_WRITE_IO_ARGS

                            {

                                ULONG PortOffset;

                                ULONG Data;

                            };//тут понятно!

                            NTSTATUS MDMAI_IO_READ_Handler(PIRP I)

                            {

                                NTSTATUS status = STATUS_SUCCESS;

                                XDSP_READ_WRITE_IO_ARGS* pArgs = (XDSP_READ_WRITE_IO_ARGS*)I.IoctlBuffer();

                                KMemory Mem(I.Mdl());  // не понятно, и, ниже!

                                ULONG* pBuffer = (ULONG*)Mem.MapToSystemSpace();

                                pArgs->Data = m_IoPortRange0.ind(pArgs->PortOffset);

                                *pBuffer = pArgs->Data;

                                I.Information() = 0;

                                return status;

                            }

                          Потому, что почти на каждой строчке ошибка и некоторые строки не понятно зачем нужны!! Растолкуйте и помогите!!!
                          Спасибо!!!

                          Сообщение отредактировано: zhuravlev80 — 20.03.12, 14:46


                          zhuravlev80



                          Сообщ.
                          #13

                          ,
                          20.03.12, 17:43

                            Full Member

                            ***

                            Рейтинг (т): 3

                            Прошу взглянуть компетентным взглядом!!! Потому, что меня смущает написанное, пока не тестил… счас еще кусок переписываю.
                            Подскажите в том направлении, я хоть, двигаюсь?! Спасибо!
                            Вот седня переделал и внес изменения:

                            ExpandedWrap disabled

                              NTSTATUS MDMAI_IO_READ_Handler(PIRP Irp, PIO_STACK_LOCATION pIoStackIrp, UINT *pdwDataWritten)

                              {

                                  NTSTATUS status = STATUS_UNSUCCESSFUL;    

                                  PCHAR pInputBuffer;

                                  PCHAR pOutputBuffer;

                                  PCHAR pReturnData;

                                  UINT dwDataRead = 0, dwDataWritten = 0;

                                  UINT dwDataSize = sizeof(ULONG);    

                                  USHORT Port;

                                       DbgPrint(«ReadDirectOutIO Called rn»);

                                  pInputBuffer = (PCHAR)Irp->AssociatedIrp.SystemBuffer;

                                  pOutputBuffer = NULL;

                                  if(Irp->MdlAddress)

                                  {

                                       pOutputBuffer = (PCHAR)MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority);

                                  }

                                    if(pInputBuffer && pOutputBuffer)

                                    {

                                       if(pIoStackIrp->Parameters.DeviceIoControl.OutputBufferLength >= dwDataSize)

                                       {

                                          Port = pInputBuffer[0];

                                           pReturnData = (PCHAR)READ_PORT_UCHAR((PUCHAR)Port); // ну очень смущает!!!!!!!!!

                                                /*

                                                 * We use «RtlCopyMemory» in the kernel instead of memcpy.

                                                 * RtlCopyMemory *IS* memcpy, however it’s best to use the

                                                 * wrapper in case this changes in the future.

                                                 */

                                                RtlCopyMemory(pOutputBuffer, pReturnData, dwDataSize);

                                                *pdwDataWritten = dwDataSize;

                                                status = STATUS_SUCCESS;

                                       }

                                       else

                                       {

                                               *pdwDataWritten = dwDataSize;

                                                status = STATUS_BUFFER_TOO_SMALL;

                                       }  

                                    }    

                                  return status;

                              }

                            проверил!

                            ExpandedWrap disabled

                               Port = pInputBuffer[0];

                                           pReturnData = (PCHAR)READ_PORT_UCHAR((PUCHAR)Port); // ну очень смущает!!!!!!!!!

                            не работает!(((

                            Сообщение отредактировано: zhuravlev80 — 21.03.12, 21:03


                            zhuravlev80



                            Сообщ.
                            #14

                            ,
                            03.04.12, 20:15

                              Full Member

                              ***

                              Рейтинг (т): 3

                              ВСЕМ СПАСИБО!!!
                              Написал свой первый драйвер! Шишки набил… но теперь разобрался… и все замечательно работает… для любых способов обращения к PCI!
                              воспользовался WDM замечательно работает как под 7 так и под ХР!
                              причешу код и выложу… или если забуду, пишите в личку, помогу! )))))))

                              только вот с ДМА не разобрался как его перенаправить с режима порта в память! может кто-то что-то делал или читал?! подскажите! думаю что это будит следующая тема!

                              Сообщение отредактировано: zhuravlev80 — 03.04.12, 20:19

                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                              0 пользователей:

                              • Предыдущая тема
                              • C/C++: Системное программирование и WinAPI
                              • Следующая тема

                              [ Script execution time: 0,0418 ]   [ 16 queries used ]   [ Generated: 6.02.23, 13:34 GMT ]  

                              Один из вариантов создания собственного кастомного дистрибутива Windows – интеграция в него драйверов под конкретный компьютер. Это незначительная оптимизация процесса установки в случае с последними версиями Windows и компьютерами на базе распространённой аппаратной начинки. Но если приходится часто переустанавливать систему на ПК или ноутбуке с редкими комплектующими, чтобы потом вручную не допиливать процесс установки драйверов.

                              Можно единожды создать установочный ISO нужной версии и разрядности Windows с внедрёнными конкретными драйверами. Это могут быть драйверы сетевых, видео-, аудиоустройств, портов USB 3.0, принтеров и т.п. Как интегрировать в дистрибутив Windows драйверы нужного железа и периферии?

                              ***

                              Интеграция драйверов не требует сложностей в виде установки Windows в режиме аудита с последующим захватом её в файл WIM или ESD, как это происходит при создании кастомной сборки системы с внедрёнными настройками и сторонним софтом. Драйверы внедрить можно путём переупаковки системного образа консольным средством Dism. Но проще для этих целей использовать бесплатную программу Dism++, большая часть её возможностей – это реализация функционала консольного средства Dism в графическом интерфейсе.

                              Скачать Dism++:

                              https://www.chuyu.me/en/index.html

                              Эта программа же и поможет решить вопрос с самими драйверами, она умеет экспортировать их из среды установленной Windows.

                              1. Экспорт драйверов из среды установленной Windows

                              Программе Dism++ для внедрения драйверов в дистрибутив Windows принципиально не требуется, чтобы это были именно экспортированные ею же драйверы. Можем найти в Интернете драйверы нужного железа и периферии в формате отдельных файлов «.inf» или в виде папок-пакетов. Можем даже распаковать архиватором (например, 7zip) установочные файлы драйверов «.exe», но только в этом случае надо определённо знать, какие конкретно файлы нужно интегрировать. Файлы-установщики драйверов часто идут для серии устройств производителя, и под конкретную модель драйвер выбирается на этапе установки в среду Windows. Программа Dism++ не обустроена программным интеллектом подгона драйверов под конкретную модель из серии устройств, она интегрирует в дистрибутив операционной системы без разбору всё, что мы ей подсунем. Но в итоге после установки Windows из такого дистрибутива получим проблемы в её работе.

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

                              Для экспорта драйверов на верхней ленте в окне Dism++ кликаем образ текущей установленной Windows, впрочем, если на компьютере нет второй системы, она там будет одна. Идём в программный раздел «Драйверы», раскрываем категории устройств, галочками отмечаем драйверы для экспорта. Жмём внизу «Экспорт».

                              Dism++

                              Указываем папку для экспортируемого содержимого.

                              Драйверы - экспорт

                              Вот и всё.

                              2. Извлечение содержимого установочного ISO

                              Теперь необходимо подготовить дистрибутив – установочный ISO нужной версии и разрядности. И смонтировать, т.е. подключить для отображения образ. В системах Windows 8.1 и 10 это делается просто – дважды кликаем по файлу ISO.

                              Файл ISO

                              Далее копируем всё, что находится на смонтированном диске ISO, и вставляем его в папке с любым названием, в нашем случае эта папка так и называется — «Содержимое ISO».

                              Содержимое ISO

                              В среде Windows 7 содержимое ISO можно извлечь архиватором 7zip. Открываем образ с помощью соответствующего пункта контекстного меню архиватора.

                              7zip

                              Кликаем в окне архиватора кнопку «Extract».

                              Extract

                              И указываем путь извлечения содержимого ISO.

                              ISO

                              3. Извлечение образа WIM/ESD

                              Создаём ещё одну папку, в неё мы извлечём содержимое файла install.wim или install.esd – непосредственно файла-образа дистрибутива Windows. В нашем случае это папка с дефолтным названием «Новая папка».

                              Извлечение образа

                              Теперь в окне Dism++ идём в меню «Файл», выбираем «Монтировать образ».

                              Монтировать образ

                              В окошке параметров монтирования указываем, соответственно:

                              • Редакцию Windows;
                              • Путь к образу WIM/ESD – путь к файлу install.wim или install.esd, который находится в папке с извлечённым установочным ISO, в подпапке «sources»;
                              • Путь к созданной на предыдущем этапе папке.

                              Параметры монтирования

                              Как только смонтированный образ дистрибутива будет готов, жмём «Открыть сессию».

                              Открыть сессию

                              4. Интеграция драйверов

                              Идём в раздел Dism++ «Драйверы», жмём внизу «Добавить».

                              Драйверы

                              Открываем папку с экспортированными драйверами и указываем для выбора одну из папок-категорий экспортированных драйверов.

                              Проводник

                              Ждём, пока драйверы интегрируются.

                              Драйверы интегрируются

                              И по точно такому же принципу добавляем папки-категории других драйверов.

                              Добавляем папки-категории

                              5. Сохранение образа WIM/ESD

                              Теперь можем сохранять отредактированный дистрибутив Windows.

                              В меню «Файл» жмём «Сохранить образ как».

                              Сохранить образ как

                              Жмём «Обзор».

                              Обзор

                              Где-нибудь в отдельной папке сохраняем файл под именем «install».

                              Install

                              По умолчанию для этого файла стоит тип «Максимальное сжатие образа», это формат WIM. Он весит обычно на 30% больше, чем файл формата ESD, но для сохранения последнего потребуется намного больше времени, поскольку в этом процессе будет участвовать ещё и операция сжатия образа. Если есть риск того, что из-за веса файла install дистрибутив может не поместиться на установочный носитель, например, на флешку 4 Гб, то лучше при сохранении образа выбрать тип «Ультра сжатие образа».

                              Ультра сжатие образа

                              Жмём «Ок» и дожидаемся сохранения файла.

                              Дожидаемся сохранения файла

                              После этого нужно размонтировать изначальный образ: в окне Dism++ жмём «Файл» и, соответственно – «Размонтировать образ».

                              Размонтировать образ

                              6. Подмена образа WIM/ESD

                              Теперь идём в папку, куда мы на втором этапе извлекали содержимое установочного ISO. В подпапке «sources» удаляем исходный файл install.wim или install.esd. И вместо него вставляем скопированный новый install.wim или install.esd – тот, что с интегрированными драйверами, который мы сохранили на предыдущем этапе.

                              Файлы с интегрированными драйверами

                              7. Создание нового установочного ISO

                              Если есть необходимость в упаковке отредактированного дистрибутива в файл установочного ISO, в программе Dism++ в разделе «Дополнительно» жмём «Создание ISO».

                              Создание ISO

                              Указываем, соответственно:

                              • Папку с изначальным содержимым ISO и подменённым впоследствии файлом install.wim или install.esd;
                              • Путь сохранения нового ISO;
                              • Метку ISO.

                              Создание ISO - параметры

                              Дожидаемся завершения создания ISO.

                              И всё – установочный образ с интегрированными драйверами готов.

                              Загрузка…

                              Привет, друзья. Это очередная публикация о возможностях программы Dism++. Это программа, являющая собой графический интерфейс к штатному консольному средству Windows Dism. И не только, у неё много функциональных возможностей, и одна из них, с которой мы будем ниже знакомиться – это экспорт установленных в системе Windows драйверов. Как с помощью Dism++ экспортировать драйвера, и как их потом в среде новой Windows импортировать?

                              Экспорт драйверов программой Dism++ и их внедрение в новой Windows

                              По традиции, друзья, напомню, что на сайте представлен цикл публикаций о возможностях программы Dism++. Вы можете почитать её комплексный обзор, а также посмотреть публикации, раскрывающие потенциал программы в конкретных ситуациях, по тегу Dism. Тег отфильтрует статьи сайта по работе с программой Dism++ и штатным консольным средством Dism.

                              Об экспорте драйверов

                              Ну а теперь по теме статьи – экспорт драйверов. Этой операции по возможности стоить предпочесть обычную установку драйверов, скачанных с официального сайта производителя материнской платы, ноутбука, видеокарты или прочего устройства, на который Windows не может сама найти драйвер. Как это делается на примере материнской платы Asus, читаем здесь. В качестве более удобной альтернативы можно использовать менеджеры установки драйверов типа Snappy Driver Installer. Это бесплатная годная программа, работающая как по типу онлайн-клиента, так и в связке с локальной базой драйверов. Экспорт-импорт драйверов я бы рекомендовал расценивать как запасной вариант – если инсталлятор драйвера нужного устройства поди знай где искать, либо его версия, предлагаемая на сайте производителя устройства или менеджером установки драйверов, работает со сбоями. Экспортированные драйвера также могут пригодиться в случае проблем после обновления Windows или системного сбоя. Или, например, в случае удаления с официального сайта устройства драйверов для старых версий Windows.

                              Экспорт-импорт драйверов, в принципе, можно рассматривать как альтернативу установке драйверов с официальных источников устройств или с помощью программ типа Snappy Driver Installer. Более того, это удобный способ решения вопроса в случае плановой переустановки Windows: в старой системе одним махом делам экспорт драйверов, в новой системе импортируем те драйверы, что сами не установились. Однако нужно учитывать, что импорт драйверов не всегда может быть осуществлён, это касается, в частности, случаев смены версии или разрядности Windows. Ну и ещё же новая инсталляция драйвера – это замечательный повод обновить его версию, тогда как при импорте мы внедрим в систему старую экспортированную версию.

                              Экспорт драйверов средством Dism

                              В системах Windows 8.1 и 10 для экспорта драйверов, установленных в текущей операционной системе, мы можем использовать штатное консольное средство Dism. Нам нужно на несистемном разделе диска создать папку для их хранения. Создать и назвать именем на латинице и без пробелов.

                              Затем нужно запустить от имени администратора командную строку и ввести:

                              dism /online /export-driver /destination:f:exportdrivers

                              Где вместо f:exportdrivers вам, друзья, нужно подставить свой путь и название папки. По итогу выполнения этой команды в указанной папке появятся подпапки с экспортированными драйверами устройств.

                              Но штатное средство Dism ограничено возможностью экспорта только сторонних драйверов. И только всех их вкупе.

                              Тогда как Dism++ может экспортировать и сторонние, и системные драйверы, и все подряд, и только указанные нами. Но главное – программа может это делать и в Windows 10, и в Windows 8.1, и в Windows 7.

                              Экспорт драйверов программой Dism++

                              В окне Dism++ идём в раздел «Драйверы». Здесь каталогизировано по типам устройств увидим перечень неких драйверов — это перечень таковых, не имеющих критического значения для работоспособности Windows. Поскольку в этом разделе программа предлагает, в частности, возможность удаления драйверов, критически важные для работы системы сокрыты по типу защиты от дурака. Если нужные нам драйвера есть в этом перечне, отмечаем их галочками и жмём кнопку «Экспорт».

                              Указываем папку хранения экспорта.

                              И через какое-то время можем смотреть результат: экспортированные драйверы в папке экспорта будут распределены по подпапкам устройств.

                              Кстати, преимущество Dism++ перед консольным Dism заключается ещё в такой вот удобной каталогизации экспортированного содержимого по типам устройств компьютера. Для импорта драйверов это не имеет никакого значения, но может пригодиться при принятии решения, какие папки оставлять, а какие – удалять, если со временем станет вопрос о расчистке места на диске.

                              Если нужных драйверов нет в перечне, либо же если нам нужно экспортировать все подряд драйверы системы, в окне Dism++ ставим галочку опции «Предустановленные». Далее действуем аналогично описанной выше процедуре: галочками отмечаем все или отдельные драйверы, жмём кнопку «Экспорт» и указываем папку.

                              Так вот всё просто, друзья.

                              Импорт экспортированных драйверов

                              Если после переустановки, обновления, восстановления после системного сбоя Windows окажется без драйверов каких-то комплектующих или периферии, идём в системный диспетчер устройств. Вызываем на проблемном устройстве контекстное меню, жмём «Обновить драйверы».

                              Кликаем «Выполнить поиск драйверов на этом компьютере».

                              Далее с помощью кнопки обзора указываем путь к нашей папке с экспортированными программой Dism++ драйверами. Смотрим, чтобы стояла галочка включения вложенных подпапок. Жмём «Далее».

                              Дожидаемся завершения импорта.

                              ***

                              Друзья, информация для желающих узнать больше по теме работы с драйверами Windows: их экспорт-импорт можно осуществлять по типу бэкапа-восстановления не только средствами Dism, но с помощью других средств, например:

                              • С помощью PowerShell или программы DriverMagician;
                              • С помощью менеджеров установки драйверов – программ Slim Drivers и Advanced Driver Updater.

                              При переходе на новейшую версию Windows перед пользователями часто возникает проблема в нахождении и установке драйверов для своего прежнего оборудования. Это не вина компании Microsoft, а скорее всего несвоевременная поддержка компанией производителя оборудования. Со временем для большинства оборудования производители все же выпускают новейшие версии драйверов. И пользователю достаточно лишь скачать новую версию драйверов с сайта производителя.

                              Но для некоторого оборудования новые драйвера так и остаются в мечтах. Что же делать, если на компьютере установлена Windows 7, например, а последние официальные версии драйверов выпущены для более ранних версий Windows – Windows XP или Windows Vista.

                              На помощь приходит встроенный в Windows механизм совместимости программ. То есть в Windows XP можно запустить программу в режиме совместимости Windows 2000, Windows 98. А в Windows 7 уже можно выбрать режим совместимости для Windows 95, Windows 98, Windows XP, Vista и любой другой более ранней версии Windows.

                              Рассмотрим ручную установку режима совместимости запуска драйверов или программ.

                              Итак, если у нас имеется драйвер, который прекрасно работал под Windows XP, Vista, но на установленной Windows Seven драйвер отказывается запускаться. Для запуска такого драйвера в режиме совместимости (скажем под Windows XP) следует на исполняемом файле драйвера (с расширением *.exe или *.msi) нажать правой кнопкой мыши и выбрать пункт “Свойства

                              свойства файла

                              В появившемся окне “Свойства” переходим во вкладку “Совместимость”.
                              Во вкладке “Совместимость” имеется три раздела для установки параметров: “Режим совместимости”, “Параметры” и “Уровень прав”.

                              вкладка Совместимость

                              В первом разделе “Режим совместимости” устанавливаем галочку “Запустить программу в режиме совместимости” и в выпадающем списке выбираем ту операционную систему, в которой данный драйвер работал без ошибок, например, Windows XP (пакет обновления 3).

                              Раздел Режим совместимости

                              Раздел “Параметры” служит для установки дополнительных условий режима совместимости. Как правило, эти параметры устанавливаются для очень устаревших драйверов или программ (работавших на Windows 2000 и ниже) и их включение сейчас используются очень редко.

                              Ниже указывается их назначение:
                              Использовать 256 цветов — очень старые программы используют ограниченную гамму цветов. Этот параметр устанавливает максимальное количество цветов для запускаемой программы.
                              Отключить визуальное оформление – при запуске некоторых программ её внешний вид искажается (кривые края окон и шрифта). Этот параметр помогает несколько исправить ситуацию запуском программы в уменьшенном окне.
                              Отключить композицию рабочего стола – служит также для улучшения внешнего вида запущенных программ, путем отключения прозрачности окон.
                              Отключить масштабирование изображения при высоком разрешении экрана – если в программах используется крупный шрифт и он искажает внешний вид программы, то включите эту опцию.

                              Многие программы и драйвера для корректной работы требуют права Администратора для запуска. Поэтому в разделе “Уровень прав” для большей и правильной совместимости запуска драйвера следует установить галочку “Выполнять эту программу от имени администратора”. Следует отметить, что данный параметр может установить только пользователь с правами Администратора.

                              Если необходимо установить различные режимы совместимости для других пользователей компьютера, то нажмите на кнопку “Изменить параметры для всех пользователей ” внизу окна.

                              Установка всех параметров совместимости

                              После правильной установки всех параметров режима совместимости нажмите кнопку ОК и начните установку драйвера (программы).

                              Примечание: если установочный файл драйвера имеет расширение *.msi, то для установки Режима совместимости в раскрывающемся списке будет доступна лишь предыдущая версия Windows.

                              Установка драйверов под Windows 7 в режиме совместимости. Часть 2. — установка или запуск приложения с помощью Мастера устранения проблем с совместимостью программ.

                              Понравилась статья? Поделить с друзьями:
                            • Как переключиться на вторую видеокарту на ноутбуке windows 10
                            • Как переключить наушники на переднюю панель windows 10
                            • Как переключиться со встроенной видеокарты на дискретную на компьютере windows 10
                            • Как переключиться на второй экран windows 10 не сворачивая приложение
                            • Как переключиться с пользователя на администратора в windows 10