Подтвердить что ты не робот

Могут ли Windows-драйверы записываться на Python?

Можно ли записать драйверы Windows на Python?

4b9b3361

Ответ 1

Да. Вы не можете создавать "классические" драйверы режима ядра. Однако, начиная с XP, Windows предлагает "Рамка драйверов пользовательского режима" . Они не могут делать все, очевидно - любой драйвер, используемый при загрузке ОС, должен быть в ядре. Но с UMDF вам нужно только реализовать COM-компоненты.

Помимо драйверов загрузки, вы также не можете записывать драйверы UMDF, которые:

  • Обработка прерываний
  • Непосредственный доступ к оборудованию, например, прямой доступ к памяти (DMA)
  • имеют строгие циклы синхронизации.
  • Использовать невыгружаемый пул или другие ресурсы, зарезервированные для режима ядра.

Ответ 2

Окончательный ответ не исключает встраивания интерпретатора в ваш другой драйвер C/assembly. Если у кого-то нет рамки, тогда ответ будет отрицательным. Когда у вас есть интерпретатор и привязки на месте, остальная часть логики может быть выполнена в Python.

Однако писать драйверы - одна из тех вещей, для которых C лучше всего подходит. Я предполагаю, что полученный в результате код Python будет выглядеть очень похож на код C и превзойти цель служебных данных интерпретатора.

Ответ 3

Хороший способ получить представление о том, почему это практически невозможно, - это прочитать совет Microsoft по использованию С++ в драйверах. Как производная от C, использование С++ представляется простым. На практике это не так.

Например, вы должны решить для каждой функции (и действительно каждой инструкции сборки), будь то в доступной для страниц или нестранимой памяти. Для этого требуются расширения для C, тщательное использование новых возможностей С++ или в этом случае специальное расширение для языка Python и виртуальной машины. Кроме того, ваша совместимая с драйвером VM также должна иметь дело с разными IRQL - там есть иерархия уровней, которые ограничивают то, что вы можете и чего не можете сделать.

Ответ 4

Python запускается на виртуальной машине, поэтому нет.

НО:

Вы можете написать компилятор, который переводит код Python на машинный язык. Как только вы это сделаете, вы можете это сделать.

Ответ 5

Я не знаю ограничений на драйверы для Windows (схемы распределения памяти, динамическая загрузка библиотек и все), но вы можете внедрить интерпретатор python в свой драйвер, после чего вы можете делать все, что хотите, Не то, чтобы я думаю, что это хорошая идея:)

Ответ 6

Никогда не говори никогда, но эх.. нет

Возможно, вы сможете взломать что-то вместе, чтобы запустить части драйверов в режиме python. Но материал в режиме ядра можно выполнять только в C или сборке.

Ответ 7

Нет, они не могут. Драйверы Windows должны быть написаны на языке, который может

  • Интерфейс с API на основе C
  • Скомпилировать до машинного кода

Тогда опять же ничего не мешает вам писать компилятор, который переводит python на машинный код;)