Cadru de driver pentru modul utilizator (UMDF) | |
---|---|
Tip de | Platformă de dezvoltare a driverelor de dispozitiv |
Dezvoltator | Microsoft |
Scris in | C , C++ |
Sistem de operare | Microsoft Windows |
Prima editie | 12 octombrie 2004 |
ultima versiune | 2.27 (24 martie 2019 ) |
Licență | Licență MIT |
Site-ul web | docs.microsoft.com/en-us/windows-hardware/drivers/wdf/overview-of-the-umdf |
Cadrul de driver în modul utilizator ( UMDF ) este un cadru de dezvoltare a driverelor în modul utilizator introdus cu Windows Vista și disponibil și pentru Windows XP . Acest lucru facilitează crearea de drivere pentru anumite clase de dispozitive. [unu]
Driverele de dispozitiv standard pot fi dificil de scris, deoarece trebuie să gestioneze o gamă foarte largă de stări ale sistemului și ale dispozitivului, în special într-un mediu de programare cu mai multe fire. Driverele de dispozitiv scrise prost pot provoca o corupție gravă a sistemului (de exemplu , BSoD și coruperea datelor), deoarece toate driverele standard au privilegii mari atunci când accesează direct nucleul. Platforma de drivere în modul utilizator izolează nucleul de problemele accesului direct la driver, oferind în schimb o nouă clasă de drivere cu o interfață dedicată de programare a aplicațiilor pentru întreruperi la nivel de utilizator și gestionarea memoriei. În cazul unei erori, noua structură permite repornirea imediată a driverului fără a afecta sistemul. Acest lucru este util în special pentru dispozitivele care sunt conectate intermitent la sistem sau care pot fi schimbate la cald printr-o tehnologie de magistrală, cum ar fi USB sau FireWire .
Potrivit Microsoft, driverele UMDF sunt mai ușor de scris și de depanat decât driverele în mod kernel. [2] Cu toate acestea, UMDF nu va fi utilizat pentru dispozitive de înaltă performanță sau cu stare.
Prima versiune a UMDF a fost livrată ca parte a Windows Media Player versiunea 10 pe 12 octombrie 2004. Cu numele de cod „Crescent”, a fost conceput pentru a suporta driverul Media Transfer Protocol și nu au fost furnizate interfețe publice sau documentație pentru acesta. Ulterior, Microsoft a decis să transforme UMDF într-o platformă de dezvoltare a driverelor de dispozitiv. [3]
Driverul UMDF este un DLL bazat pe Component Object Model (COM) al Microsoft. Cu toate acestea, UMDF nu folosește COM pentru încărcarea, descărcarea sau controlul concurenței ; folosește COM doar ca model de design , cum ar fi utilizarea interfeței COM IUnknown . La pornire, UMDF apelează „DllGetClassObject” pentru a obține un pointer către interfața „IClassFactory” din driver și apoi utilizează metoda „CreateInstance” a interfeței IClassFactory pentru a instanția obiectul de apel invers al driverului.
Un obiect driver este o instanță a interfeței IWDFDriver furnizată de cadru. Driverul expune un set de apeluri inverse prin interfața COM IDriverEntry, care este punctul de intrare principal pentru configurarea driverului.