Написал драйвер — под 32 битной виндой работает (и ХР и Виста). На 64-ёх битной соответственно нет. Хотелось бы портировать свой драйвер под ней — соответственно порывшись в интернете и почитав справок смог додуматься до следующего:
1) надо поменять настройки проекта типа Preprocessor definitions. В интернете подходящих проектов и настроек с дефайнами не накопал. Может у кого либо есть тестовый примерчик, который бы билдился в драйвер для 64 битной ОС? Или хотя бы линк на тъюториал — в майкрософтовском всё скудно и не ясно.
2) откуда и какие либы линковать тоже не очень понятно — пошарив по своему ДДК не нашёл папки для ХР с подпапками типа IA64 — в 32 битном проекте линкуется всё нормально.
1. если вы собираете драйвер из WDK, то никаких сложностей вообще нет — выбираете нужный build enviroment и все.
2. в WDK вы не найдете никаких упоминаний о XP x64. Для сборки под x64 надо использовать сборку для Windows 2003 сервер ( префикс сборки wnet ). Таким образом, драйвера для w2k3 x64 и XP x64 полностью идентичны.
3. При выборе типа сборке не путайте x64 и IA64. Поcледняя платформа — это Intel Itanium, нормальным людям пока ненужная .
AK>Написал драйвер — под 32 битной виндой работает (и ХР и Виста). На 64-ёх битной соответственно нет.
Что значит "нет"? что происходит-то?
AK>1) надо поменять настройки проекта типа Preprocessor definitions.
Не вижу таких настроек в файле SOURCES. Берется файл SOURCES, копи-пастнутый из примерчика. Перебивается в нем имя проекта и имена файлов. Строится той и другой средой. Все работает.
Строить драйвера в Студии — неподдерживаемая конфигурация, гимора с ней по самый бакенбарды, преимуществ нет.
AK>2) откуда и какие либы линковать тоже не очень понятно — пошарив по своему ДДК не нашёл папки для ХР с подпапками типа IA64 — в 32 битном проекте линкуется всё нормально.
Не бывает XP x64 среды построения. Дело в том, что XP x64 есть на самом деле то же самое, что 2003 x64, просто настольная версия. Если в 32 битах 2003 — следующая минорная версия за XP, то в 64 битах это то же самое.
Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>Что значит "нет"? что происходит-то?
Сервис драйвера регистрируется — но не запускается. При этом CreateFile не работает с ошибкой 2 — "The system cannot find the file specified." Т.е. драйвер попросту не стартуется. При попытке стартануть драйвер ещё вылазит ошибка 1275 — "This driver has been blocked from loading."
MSS>Не вижу таких настроек в файле SOURCES. Берется файл SOURCES, копи-пастнутый из примерчика. Перебивается в нем имя проекта и имена файлов. Строится той и другой средой. Все работает.
В студии их можно посмотреть вот по такому пути:
Properties -> Configuration properties -> C/C++ -> Preprocessor -> Preprocessor Difinitions
MSS>Строить драйвера в Студии — неподдерживаемая конфигурация, гимора с ней по самый бакенбарды, преимуществ нет.
Привык я к Студии как к среде редактирования, привычка пуще не воли
MSS>Не бывает XP x64 среды построения. Дело в том, что XP x64 есть на самом деле то же самое, что 2003 x64, просто настольная версия. Если в 32 битах 2003 — следующая минорная версия за XP, то в 64 битах это то же самое.
MSS>Потому строим под 2003 x64, и везде все работает.
Здравствуйте, TarasCo, Вы писали:
TC>1. если вы собираете драйвер из WDK, то никаких сложностей вообще нет — выбираете нужный build enviroment и все.
Это консольный вариант билда? Без Вижуал студии?
TC>2. в WDK вы не найдете никаких упоминаний о XP x64. Для сборки под x64 надо использовать сборку для Windows 2003 сервер ( префикс сборки wnet ). Таким образом, драйвера для w2k3 x64 и XP x64 полностью идентичны.
Т.е. либы для линковки 64 битного драйвера брать из папок "...\lib\wnet\i386"? Т
TC>3. При выборе типа сборке не путайте x64 и IA64. Поcледняя платформа — это Intel Itanium, нормальным людям пока ненужная .
В этом вопросе я пока профан — только набираюсь знаний. Теперь буду знать.
Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>Строить драйвера в Студии — неподдерживаемая конфигурация, гимора с ней по самый бакенбарды, преимуществ нет.
Строить можно утилитой build, но использовать при этом все удобства студии при работе с проектом —
нужно просто создать проект типа "makefile" и в настроках проекта использовать что-то типа DDKBUILD для сборки http://www.hollistech.com/Resources/ddkbuild/ddkbuild.htm
(а можно и свой cmd сделать)
при сборке драйвера можно будет перейти по сообщению об ошибке на нужное место в исходниках, при редактировании исходников будет работать intellisense (и visual assist, если есть )
Re[3]: Настройки проекта драйвера под 64битную ОС
От:
Аноним
Дата:
15.05.08 07:55
Оценка:
Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>Слово "пока" я бы убрал. Failed platform.
AK>Сервис драйвера регистрируется — но не запускается. При этом CreateFile не работает с ошибкой 2 — "The system cannot find the file specified." Т.е. драйвер попросту не стартуется. При попытке стартануть драйвер ещё вылазит ошибка 1275 — "This driver has been blocked from loading."
Это под вистой или под XP ? Для висты x64 драйвер обязательно должен иметь цифровую подпись ( или должен быть выбран специальный режим загрузки — без проверки подписи, или подключен отладчик режима ядра ).
Здравствуйте, TarasCo, Вы писали:
TC>Это под вистой или под XP ? Для висты x64 драйвер обязательно должен иметь цифровую подпись ( или должен быть выбран специальный режим загрузки — без проверки подписи, или подключен отладчик режима ядра ).
Под Вистой 64 битной. Под XP не пробывал — нету чистой опреационки...
Воспользовался Вашим советом — сбилдил драйвер в консоли. Драйвер собрался (Windows Server 2003 x64 Checked Build Environment).
При попытке запустить драйвер — ошибка номер 577. Это в обычном режиме ОС без подписи. Код ошибки не расшифровывается стандартной тулзой.
Здравствуйте, Andrey.Katkov, Вы писали:
AK>Уже билжу в консоли. А редактировал мелочи в студии
vcproj для студии можно создать рядом — т.е. сохраняетеся возможность собирать драйвер из консоли
например, во время разработки и отладки можно использовать студию, во время сборки билда — непосредственно build.exe
Здравствуйте, Ivan, Вы писали:
I>vcproj для студии можно создать рядом — т.е. сохраняетеся возможность собирать драйвер из консоли I>например, во время разработки и отладки можно использовать студию, во время сборки билда — непосредственно build.exe
Я так и поступил. Но сейчас затестив получившийся результат приняли решение отказаться от поддержки 64 битной системы. Для моего продуктика — это пока не важно. Обычная цифровая подпись не подходит — нужна какая-то спец подпись под драйвера, полученная по спец правилам.
Здравствуйте, Andrey.Katkov, Вы писали:
AK>Я так и поступил. Но сейчас затестив получившийся результат приняли решение отказаться от поддержки 64 битной системы. Для моего продуктика — это пока не важно. Обычная цифровая подпись не подходит — нужна какая-то спец подпись под драйвера, полученная по спец правилам.
если есть обычный code signing сертификат, то подписать драйвер просто — нужно скачать с сайта microsoft кросс-сертификат
и подписать с помощью signtool.exe, входящей в состав WDK
во время разработки драйвера подойдет и тестовый сертификат, который можно сделать самому с помощью утилиты makecert (в этом случае нужно включить с помощью bcdedit режим testsigning командой "bcdedit -set testsigning on")