Драйверы Windows могут быть записаны в Python?

В UITextView нет shouldReturn, но вы можете реализовать UITextViewDelegate и следить за вставками:

- (BOOL) textView: (UITextView*) textView
    shouldChangeTextInRange: (NSRange) range
    replacementText: (NSString*) text
{
    if ([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }
    return YES;
}

Редактировать: И да, извините, это обман ].

11
задан Adrian Toman 19 July 2012 в 00:22
поделиться

7 ответов

Yes. You cannot create the "classic" kernel-mode drivers. However, starting with XP, Windows offers a User-Mode Driver Framework. They can't do everything, obviously - any driver used in booting the OS obviously has to be kernel-mode. But with UMDF, you only need to implement COM components.

Besides boot-time drivers, you also can't write UMDF drivers that:

  • Handle interrupts
  • Directly access hardware, such as direct memory access (DMA)
  • have strict timing loops
  • Use nonpaged pool or other resources that are reserved for kernel mode
17
ответ дан 3 December 2019 в 04:14
поделиться

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

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

3
ответ дан 3 December 2019 в 04:14
поделиться

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

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

3
ответ дан 3 December 2019 в 04:14
поделиться

Python работает на виртуальной машине, поэтому нет

НО:

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

1
ответ дан 3 December 2019 в 04:14
поделиться

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

  1. взаимодействовать с API на основе C
  2. Компилировать до машинного кода

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

0
ответ дан 3 December 2019 в 04:14
поделиться

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

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

0
ответ дан 3 December 2019 в 04:14
поделиться

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

1
ответ дан 3 December 2019 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: