Преобразование драйвера Windows в 64-битный - могу ли я использовать 32-битную DLL? - PullRequest
1 голос
/ 02 апреля 2010

Мой драйвер для Windows имеет файл .sys и .dll (который, я предполагаю, является программным интерфейсом для драйвера?). В любом случае, мне нужно скомпилировать драйвер для работы в Windows 7 64-bit. Я скачал DDK и могу скомпилировать все, но мое приложение все равно не будет работать с новым драйвером.

Если приложение является 32-разрядным приложением, необходимо ли скомпилировать DLL драйвера как 32-разрядную DLL, а файл .sys - 64-разрядный файл? Или файлы SYS и DLL должны быть 64-разрядными?

Ответы [ 2 ]

5 голосов
/ 07 декабря 2011

В 64-битной системе:

  • драйвер всегда должен быть 64-битным
  • приложение может быть 32-битным или 64-битным
  • DLL-библиотека, используемая приложением (то есть DLL-библиотека, с которой связывается приложение), должна быть 32-разрядной для 32-разрядного приложения и 64-разрядной для 64-разрядного приложения

Если библиотека DLL спроектирована для взаимодействия с драйвером устройства, ее следует тщательно написать, чтобы использовать те же определения типов данных, что и для драйвера. Лучше всего, если и драйвер, и DLL избегают использования типов данных, которые по-разному определены для 32-разрядных и 64-разрядных (например, size_t) в структурах, которые используются для связи друг с другом.

Однако это не означает, что DLL должна быть построена как 64-битная DLL (т.е. с использованием набора инструкций x86-64). Он должен использовать любой набор инструкций, который будет использовать приложение, связанное с ним.

0 голосов
/ 02 апреля 2010

DLL тоже должна быть 64-битной.

Постараюсь найти ссылку.

Получил один

Поскольку 64-разрядная программа не может вызывать 32-разрядную динамическую библиотеку (DLL)

Вот почему ни один 32-битный драйвер не работает на 64-битных и почему они всегда загружаются отдельно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...