2013-05-15 18 views
5

Quando si crea un progetto Driver Windows in Visual Studio 2012, si hanno molte opzioni tra cui scegliere.Qual è la differenza tra un driver WDM, un driver KMDF e un driver UMDF?

C'è uno page on MSDN che ti aiuta a scegliere il modello di driver corretto per il tuo dispositivo. Tuttavia, non spiega chiaramente le esatte differenze tra i tipi di driver WDM, KMDF e UMDF e quando scegliere quale modello.

Sto cercando una spiegazione sulle differenze tra i modelli di driver WDM, KMDF e UMDF, quindi è facile per iniziare gli sviluppatori di driver di Windows a scegliere il modello corretto.

risposta

10

In poche parole:

  • WDM acronimo di Windows Driver Model. Ogni driver Kernel è essenzialmente un driver WDM.
  • KMDF sta per Kernel Mode Driver Framework. Questo è un framework che incapsula e nasconde molti degli aspetti di programmazione del sistema operativo a cui lo sviluppatore di driver deve fare riferimento anche se non ha nulla a che fare con la logica di business del suo driver. Alcune funzionalità non esistono nel framework KMDF e richiedono chiamate native al kernel senza utilizzare il framework (ma nella maggior parte dei casi non è il caso).
  • UMDF è l'acronimo di Driver in modalità utente. È un framework complementare per KMDF e insieme comprendono WDF (Windows Driver Frameworks). UMDF consente di creare un driver in modalità utente, con tutti i vantaggi della programmazione in modalità utente rispetto alla modalità Kernel. Naturalmente, i driver UMDF hanno limitazioni rispetto ai driver KMDF/WDM e nella maggior parte dei casi richiede una controparte del kernel con almeno alcune funzionalità.

La pagina a cui hai fatto riferimento è piuttosto completa. Dovresti soffermarti su questo per una comprensione più profonda.

+1

Grazie per la spiegazione, ma una cosa non mi è ancora del tutto chiara. Si dice che ogni driver del kernel è un driver WDM, ma tutti i driver del kernel del driver WDM sono? Perché WDM e KMDF sono due modelli diversi in VS2012? – lesderid

+3

@lesderid pensa in termini di Win32 e MFC (spero che tu abbia familiarità con entrambi). Mentre ogni programma MFC è un programma Win32, non ogni programma Win32 è un programma MFC. Il KMDF è simile a MFC: un framework che può essere utilizzato per nascondere parte della complessità di WDM.Quindi, i modelli differiscono perché ciò che generano è diverso: uno genera un tipo di progetto e l'altro genera un altro tipo. Per rispondere alla tua altra domanda, tutti i driver * kernel * moderni sono driver WDM; sebbene esistano altri modelli di driver del kernel "legacy", non sono ufficialmente supportati e non dovrebbero più essere utilizzati. –

5

mi piace articel da MSDN: Differences Between WDM and KMDF

  • WDM è il modello di driver dal driver di periferica PNP (> = Win2k). In questo modello devi gestire funzioni non rilevanti per la tua funzionalità. Walter Oney (Programmazione del modello di driver di Microsoft Windows) ha esternalizzato tali funzioni a librerie di driver di periferica esterne per il riutilizzo.

  • WDF/kmdf tenta di semplificare lo sviluppo dei driver di periferica. Le funzioni possono essere sovrascritte o viene utilizzato il gestore predefinito. L'amministrazione della memoria e delle code è stata notevolmente semplificata e protetta.

  • UMDF ha tentato di utilizzare chiamate di funzioni simili in modalità utente come chiamate di funzione in modalità kernel.

Speriamo che non sia troppo tardi. La data della domanda è stata vista per la prima volta quando ho finito di scrivere!

+1

KMDF + UMDF = WDF – SomeWittyUsername

Problemi correlati