Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/48: Рейтинг темы: голосов - 48, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 9

X86 или x64 под Windows 10/x64

27.04.2016, 09:39. Показов 9436. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Только начинаю разбираться с написанием драйверов и как обычно уже миллион вопросов. Установлена Windows 10 x64/VS2015/WDK10.

Такие вопросы по совместимости:

- возможно ли установить x86 драйвер на Windows 64-bit систему или драйвер под Windows64 должен быть ообязательно скомпилирован как x64 проект?

- можно ли настроить дополнительные права для драйверов в процессе компиляции, как например для приложений - работа от имени администратора или от имени пользователя?

- есть ли разграничение среды, для совместимости 32-битных драйверов на 64-битных системах как для приложений, когда приходится использовать функции типа Wow64DisableWow64FsRedirection?

Дело в том, что есть проект, скомпилированный как x64, устанавливаю его с правами администратора с помощью "devcon.exe install" на Windows 10/64. Драйвер устанавливается, работает, но только в среде Администратора. От обычного пользователя если к нему обратиться - не работает. Или это он работает в 64-битной среде, а когда к нему обращаются 32-битные приложения - он с ними не работает? Нужно ли мне в данном случае перекомпилировать этот драйвер как x86 и устанавливать в каком-то специальном режиме для совместимости?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2016, 09:39
Ответы с готовыми решениями:

Драйвер WinXP x86 поправить под Win7 x64
Народ нужна помощь! Есть хасп эмуль заточенный под х86. Не получается его приручить под х64... Поднимал эту тему на руборде...

Переделка драйвера под Windows 10 x64
Уважаемые! Есть драйвер успешно работающий на Windows 7 Pro 32-bit. Может кто помочь как переделать его под Windows 10 Pro 64-bit? ...

Портирование x86 драйвера USB на x64
Добрый день! Вопрос в следующем: имеется проект драйвера USB-устройства для 32-битной Windows, необходимо пересобрать его под Windows...

9
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
27.04.2016, 11:25
Цитата Сообщение от Dobermann76 Посмотреть сообщение
- возможно ли установить x86 драйвер на Windows 64-bit систему или драйвер под Windows64 должен быть ообязательно скомпилирован как x64 проект?
Нет. Драйверы всегда должны быть той же разрядности, что и система.

Цитата Сообщение от Dobermann76 Посмотреть сообщение
- можно ли настроить дополнительные права для драйверов в процессе компиляции, как например для приложений - работа от имени администратора или от имени пользователя?
Драйверы работают по-другому, не так, как приложения.
Например, у них нет "своего" адресного пространства, они практически всегда
работают или в контексте системы, или в контексте процесса, который вызвал
конкретный обработчик. Поэтому понятие "запуск драйвера от имени администратора"
бессмысленно.

Цитата Сообщение от Dobermann76 Посмотреть сообщение
- есть ли разграничение среды, для совместимости 32-битных драйверов на 64-битных системах как для приложений, когда приходится использовать функции типа Wow64DisableWow64FsRedirection?
32-битные драйверы вообще не работают на x64. Совсем.
Так что в этом плане меньше путаницы.

Цитата Сообщение от Dobermann76 Посмотреть сообщение
Драйвер устанавливается, работает, но только в среде Администратора. От обычного пользователя если к нему обратиться - не работает.
Драйвер может поставить на свои девайсы или другие объекты особые разрешения,
которые позволят открывать их только определенным пользователям или группам.
Возможно, это как раз такой случай.

Цитата Сообщение от Dobermann76 Посмотреть сообщение
Или это он работает в 64-битной среде, а когда к нему обращаются 32-битные приложения - он с ними не работает?
Все может быть. Драйвер, к примеру, может проверять, что к нему обратилось
32-битное приложение, а не 64-битное, и выдать ошибку.

Цитата Сообщение от Dobermann76 Посмотреть сообщение
Нужно ли мне в данном случае перекомпилировать этот драйвер как x86 и устанавливать в каком-то специальном режиме для совместимости?
Ни то, ни другое, к драйверам не применимо.
Как я уже писал выше, они всегда "правильной" разрядности, это во-первых, а во-вторых,
никакие режимы совместимости на драйверы не распостраняются, это работает только
для обычных приложений в user mode.
1
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 9
27.04.2016, 12:11  [ТС]
Драйвер может поставить на свои девайсы или другие объекты особые разрешения,
которые позволят открывать их только определенным пользователям или группам.
Возможно, это как раз такой случай.
Можно ли прописать подобные разрешения в .inf файле или эти разрешения должны быть указаны в коде драйвера? У меня такое подозрение, что я его неправильно устанавливаю - с неправильными ограничениями или не в ту среду. Он как буд-то устанавливается не для обычного использования. Когда подписывается драйвер с помощью Inf2Cat.exe, возможно ли там задать эти разрешения?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
27.04.2016, 12:15
Цитата Сообщение от Dobermann76 Посмотреть сообщение
Можно ли прописать подобные разрешения в .inf файле или эти разрешения должны быть указаны в коде драйвера?
В коде.

Цитата Сообщение от Dobermann76 Посмотреть сообщение
У меня такое подозрение, что я его неправильно устанавливаю - с неправильными ограничениями или не в ту среду. Он как буд-то устанавливается не для обычного использования. Когда подписывается драйвер с помощью Inf2Cat.exe, возможно ли там задать эти разрешения?
Нет. Inf2Cat.exe к разрешениям вообще не имеет никакого отношения,
эта утилита не подписывает драйвер, она просто генерирует каталог безопасности
(.cat) - обычный файл, в котором хранятся хэши файлов из пакета драйвера.
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 9
27.04.2016, 12:41  [ТС]
Но ведь в Inf2Cat.exe нужно перечислить ОСи с которыми совместим драйвер? Это ни на что не влияет, только на описание драйвера? Если я задам в Inf2Cat.exe только XP_X86, смогу ли я такой драйвер установить под Windows 10 x64?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
27.04.2016, 13:57
Цитата Сообщение от Dobermann76 Посмотреть сообщение
Но ведь в Inf2Cat.exe нужно перечислить ОСи с которыми совместим драйвер? Это ни на что не влияет, только на описание драйвера?
Это влияет на проверки, которые выполняет Inf2Cat.exe.

Цитата Сообщение от Dobermann76 Посмотреть сообщение
Если я задам в Inf2Cat.exe только XP_X86, смогу ли я такой драйвер установить под Windows 10 x64?
Сможешь или нет - это зависит от самого драйвера, от его разрядности и
того, как он написан и скомпилирован. Inf2Cat тут никаким боком вообще,
он лишь проверяет синтаксис INF-файла и генерирует по нему CAT-файл.
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 9
27.04.2016, 18:37  [ТС]
А где можно подробнее почитать про эти особые разрешения и как они задаются? Не хочется сдаваться - драйвер реально работает, но только в среде Администратора. Как-то нужно заставить его работать для пользователя.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
27.04.2016, 18:51
Сначала нужно разобраться, что именно "не работает".
Не открывается какое-то устройство или коммуникационный порт или
не расшаривается общая память или при отправке пакета ввода-вывода
возвращается ошибка и т.д. И уже от полученных данных отталкиваться.
Если исходников драйвера нет - тогда все очень плохо и шансов на
успех очень мало.
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 9
27.04.2016, 20:50  [ТС]
Пытаюсь хоть немного разобраться с драйверами. У меня есть исходники. Это исходники из примера Майкрософт для виртуального RAMDisk. У меня получилось его скомпилировать и запустить под Windows 10 x64. Он устанавливается в систему и виден в Device Manager как нормально работающий. После установки появляется виртуальный диск R:. Если открывать его в Total Commander, то диск виден, но размер его 0 и пишет невозможно открыть диск. Если Total Commander открыть от имени администратора, то диск виден и полностью рабочий - на него можно писать файлы и удалять. Как его можно заставить работать для пользователя?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
27.04.2016, 21:02
Фреймворк KMDF для всех именованных device-объектов устанавливает
специальный дескриптор безопасности, который разрешает открывать их
только членам группы "Администраторы" и системе.

Об этом написано, например, здесь:
Controlling Device Access in KMDF Drivers
https://msdn.microsoft.com/win... df-drivers
Providing Security Descriptors for Device Objects and Interfaces

Every named device object must have a security descriptor. The operating system uses the
device object's security descriptor to determine the types of users that are allowed to
access a device and its device interfaces. Security descriptors can be assigned to
device objects by:

* The operating system, which provides a default security descriptor for device objects
(see Controlling Device Access).

* The framework, which provides a default security descriptor (by using the
SDDL_DEVOBJ_SYS_ALL_ADM_ALL value) if your driver calls WdfDeviceInitAssignName to
assign a name to a device object (see SDDL for Device Objects).

* Your driver, which can override the framework's default security descriptor by calling
WdfDeviceInitAssignSDDLString.
Чтобы исправить это, нужно в RamDiskEvtDeviceAdd после WdfDeviceInitAssignName
вызвать WdfDeviceInitAssignSDDLString, задав подходящую SDDL-строку, например такую:
Code
1
2
3
4
//
// Полный доступ (GA = GENERIC_ALL) для всех (WD = World)
//
D:P(A;;GA;;;WD)
Ссылки по теме:

Controlling Device Access
https://msdn.microsoft.com/ru-... s.85).aspx

WdfDeviceInitAssignSDDLString method
https://msdn.microsoft.com/lib... e/ff546035

SDDL for Device Objects
https://msdn.microsoft.com/lib... e/ff563667

Проблема обсуждалась здесь:

Need Windows 7 RamDisk Driver Assistance
http://osronline.com/showThread.CFM?link=219449
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.04.2016, 21:02
Помогаю со студенческими работами здесь

Нужен пример простейшего драйвера на C/C++. Visual Studio 2008/новее. Win 8 x64, можно и XP x86 (а лучше оба)
Совсем хорошо будет, если этот драйвер будет еще и делать что-то хоть как-то заметное юзером :) И совсем замечательно, если будет еще и...

Переписать драйвер usb midi контроллера под x64
Пробовал переписать сам в результате выдает сообщение которое вложено в картинку снизу ; Installation inf for the CASIO USB MIDI device...

Возможно ли собрать усб-драйвер под Win7 x64 в DriverStudio 3.2?
Compuware DriverStudio 3.2 позволяет создавать usb-драйвера под 64-битные ОС. Будут такие драйверы работать в Windows 7 x64?

Security Driver Windows XP x64
существуют какие то способы защиты с помощью драйвера от записи данных в процесс? пробую перехватить ObRegisterCallbacks, NtOpenProcess...

Загрузка драйвера в windows 7 x64
WDK 7600.16385.1 test.c #include <ntddk.h> NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru