0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 9

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

27.04.2016, 09:39. Показов 9545. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru