Могут ли драйверы Windows быть написаны на Python?
7 ответов
да. Вы не можете создать "классические" драйверы режима ядра. Однако, начиная с XP, Windows предлагает Пользовательский Режим Driver Framework. Очевидно, они не могут делать все - любой драйвер, используемый при загрузке ОС, очевидно, должен быть в режиме ядра. Но с UMDF вам нужно только реализовать com-компоненты.
помимо драйверов времени загрузки, вы также не можете писать драйверы UMDF, которые:
- обрабатывать прерывания
- сразу оборудование доступа, как прямой доступ к памяти (DMA)
- имеют строгие временные циклы
- используйте невыгружаемый пул или другие ресурсы, зарезервированные для режима ядра
окончательный ответ не без встраивания интерпретатора в ваш в противном случае драйвер c/assembly. Если у кого-то есть рамки, то ответ нет. Как только у вас есть интерпретатор и привязки на месте, остальная часть логики может быть выполнена в Python.
однако написание драйверов является одной из вещей, для которых C лучше всего подходит. Я предполагаю, что полученный код Python будет выглядеть очень похоже на код C и победит цель интерпретатора накладные расходы.
хороший способ получить представление о том, почему это практически невозможно, - это прочитать совет Microsoft об использовании C++ в драйверах. Как производная от C, использование C++ кажется простым. На практике это не так.
например, вы должны решить для каждой функции (и действительно для каждой инструкции по сборке), находится ли она в подкачиваемой или не подкачиваемой памяти. Это требует расширения до C, тщательного использования новых функций C++ или в этом случае специального расширения для язык Python и виртуальная машина. Кроме того, ваша совместимая с драйверами виртуальная машина также должна иметь дело с различными IRQLs-существует иерархия "уровней", которые ограничивают то, что вы можете и не можете сделать.
Python работает на виртуальной машине, поэтому нет.
но:
вы можете написать компилятор, который переводит код Python на машинный язык. Как только вы это сделаете, вы сможете это сделать.
Я не знаю ограничений на драйверы в windows (схемы выделения памяти, динамическая загрузка библиотек и все), но вы можете встроить интерпретатор python в свой драйвер, и в этот момент Вы можете делать все, что захотите. Не думаю, что это хорошая идея :)
никогда не говори никогда, Но да.. нет!--1-->
вы можете взломать что-то вместе, чтобы запустить пользовательские части драйверов в python. Но материал в режиме ядра может быть выполнен только в C или сборке.
нет они не могут. Драйверы Windows должны быть написаны на языке, который может
- интерфейс с API на основе C
- компиляции в машинный код
опять же, ничто не мешает вам написать компилятор, который переводит python в машинный код;)