Kan Windows-drivere blive skrevet i Python?

Indlæg af Hanne Mølgaard Plasc

Problem



Kan Windows-drivere blive skrevet i Python?

Bedste reference


Ja. Du kan ikke oprette de 'klassiske' kernel-mode drivere. Men fra og med XP tilbyder Windows en Bruger-Mode Driver Framework. De kan ikke gøre alt, selvfølgelig, enhver driver, der bruges til at starte operativsystemet, skal naturligvis være kernel-mode. Men med UMDF behøver du kun at implementere COM-komponenter. [1]


Udover boot-time-drivere kan du heller ikke skrive UMDF-drivere, der:



  • Håndter afbrydelser

  • Direkte adgang til hardware, såsom direkte hukommelsesadgang (DMA)

  • har strenge timing loops

  • Brug nonpaged pool eller andre ressourcer, der er forbeholdt kernel mode


Andre referencer 1


Det endelige svar er ikke uden at indlejre en tolk i din ellers C/montage driver. Medmindre nogen har en ramme tilgængelig, så er svaret nej. Når du har tolken og bindinger på plads, kan resten af ​​logikken ske i Python.


Skriverdrivere er imidlertid en af ​​de ting, som C passer bedst til. Jeg forestiller mig, at den resulterende Python-kode vil se meget ud som C-kode og besejre formålet med tolken overhead.

Andre referencer 2


En god måde at få indsigt på, hvorfor dette er praktisk taget umuligt er at læse Microsofts råd om brugen af ​​C ++ i chauffører. Som et derivat af C synes brugen af ​​C ++ at være ligetil. I praksis er det ikke sådan.]]


For eksempel skal du bestemme for hver funktion (og virkelig alle monteringsinstruktioner), om det er sidevis eller ikke-sidebar hukommelse. Dette kræver udvidelser til C, omhyggelig brug af nye C ++-funktioner eller i dette tilfælde en særlig udvidelse til Python-sprog og VM. Desuden skal din chaufførkompatible VM også beskæftige sig med de forskellige IRQL'er - der er et hierarki af 'niveauer', der begrænser hvad du kan og ikke kan gøre.

Andre referencer 3


Python kører i en virtuel maskine, så nej.


MEN:


Du kan skrive en kompilator, der oversætter Python-kode til maskinsprog. Når du har gjort det, kan du gøre det.

Andre referencer 4


Jeg kender ikke begrænsningerne på drivere på Windows (hukommelsesfordelingsordninger, dynamisk belastning af biblioteker og alle), men du kan muligvis indlejre en python tolk i din chauffør, på hvilket tidspunkt kan du gøre hvad du vil. Ikke det Jeg synes det er en god ide :)

Andre referencer 5


Sig aldrig, men eh .. nej


Du kan muligvis hacke noget sammen for at køre bruger-mode dele af drivere i python. Men kerne-mode ting kan kun gøres i C eller montage.

Andre referencer 6


Nej de kan ikke. Windows-drivere skal skrives på et sprog, der kan



  1. Interface med C-baserede API

  2. Kompilér ned til maskinkode



Så igen er der intet, der hindrer dig i at skrive en kompilator, der oversætter python til maskinkode;)