2013-05-15 19 views
5

Podczas tworzenia projektu sterownika Windows w Visual Studio 2012, masz wiele różnych opcji do wyboru.Jaka jest różnica między sterownikiem WDM, sterownikiem KMDF i sterownikiem UMDF?

Istnieje page on MSDN, który pomaga w wyborze właściwego modelu urządzenia. Nie wyjaśnia jednak dokładnie różnic między typami sterowników WDM, KMDF i UMDF oraz kiedy wybrać odpowiedni model.

Szukam wyjaśnienia różnic między modelami sterowników WDM, KMDF i UMDF, więc łatwo jest rozpocząć od deweloperów sterowników systemu Windows, aby wybrać odpowiedni model.

Odpowiedz

10

W skrócie:

  • WDM stoi dla Windows Driver Model. Każdy sterownik Kernela jest w zasadzie sterownikiem WDM.
  • oznacza tryb sterowników trybu jądra. Jest to framework, który obejmuje i ukrywa wiele aspektów programowania systemu operacyjnego, do których musi się kierować programista, nawet jeśli nie ma nic wspólnego z logiką biznesową swojego sterownika. Niektóre funkcje nie istnieją w strukturze KMDF i będą wymagać natywnych wywołań jądra bez korzystania z frameworka (ale w większości przypadków tak nie jest).
  • oznacza tryb sterownika trybu użytkownika. Jest to uzupełniające ramy dla KMDF i razem obejmują one WDF (Windows Driver Frameworks). UMDF pozwala na stworzenie sterownika w trybie użytkownika, mając wszystkie zalety trybu programowania w trybie użytkownika w stosunku do trybu jądra. Oczywiście, sterownik UMDF ma ograniczenia w porównaniu do sterowników KMDF/WDM iw większości sytuacji będzie wymagał odpowiednika Kernela z przynajmniej pewną funkcjonalnością.

Strona, do której się odwołujesz, jest dość obszerna. Powinieneś w to zamieszkać, aby uzyskać głębsze zrozumienie.

+1

Dziękuję za wyjaśnienie, ale jedno nie jest dla mnie jasne. Mówisz, że każdy sterownik jądra jest sterownikiem WDM, ale czy wszystkie sterowniki jądra WDM? Dlaczego WDM i KMDF są dwoma różnymi szablonami w VS2012? – lesderid

+3

@lesderid myślę o tym pod względem Win32 i MFC (mam nadzieję, że znasz oba). Podczas gdy każdy program MFC jest programem Win32, nie każdy program Win32 jest programem MFC. KMDF jest podobny do MFC: framework, który może być używany do ukrywania złożoności WDM.Tak więc szablony różnią się, ponieważ to, co generują, jest inne: jeden generuje jeden rodzaj projektu, a drugi generuje inny rodzaj. Aby odpowiedzieć na inne pytanie, wszystkie nowoczesne sterowniki * jądra * są sterownikami WDM; chociaż istnieją inne "starsze" modele sterowników jądra, nie są one oficjalnie obsługiwane i nie powinny być już używane. –

5

Lubię articel z MSDN: Differences Between WDM and KMDF

  • WDM jest model kierowca od pnp sterowników (> = Win2k). W tym modelu musisz obsługiwać funkcje niezwiązane z twoją funkcjonalnością. Walter Oney (Programowanie modelu sterownika systemu Microsoft Windows) zlecał takie funkcje do bibliotek sterowników urządzeń zewnętrznych w celu ich ponownego użycia.

  • WDF/kmdf próbuje uprościć rozwój sterowników urządzeń. Funkcje mogą być nadpisane lub używany jest domyślny handler. Administracja pamięcią i kolejkami została znacznie uproszczona i zabezpieczona.

  • UMDF próbował użyć podobnych wywołań funkcji w trybie użytkownika jako wywołania funkcji w trybie jądra.

Mam nadzieję, że nie jest za późno. Data pytania po raz pierwszy zobaczyłem, kiedy skończyłem pisać!

+1

KMDF + UMDF = WDF – SomeWittyUsername