Introduzione con UMDF

Questa sezione descrive User-Mode Driver Framework (UMDF) e illustra in dettaglio le differenze tra UMDF versione 1 e 2. Fornisce anche informazioni architetturali di alto livello su UMDF. Usare questa sezione per determinare se un driver UMDF è la scelta giusta per le proprie esigenze e decidere quale versione UMDF usare.

Windows Driver Frameworks (WDF) contiene UMDF, un framework per la creazione di driver in modalità utente. Come Kernel-Mode Driver Framework (KMDF), UMDF fornisce un livello di astrazione da WDM, la gestione di gran parte delle funzionalità di Plug and Play (PnP) e la gestione delle energia e consentendo al driver di acconsentire esplicitamente alla funzionalità e alla gestione degli eventi specifici.

In Windows 8.1 in poi sono disponibili due versioni principali di UMDF, versioni 1 e 2. UMDF versione 1.11 (un punto undici) è la versione più recente di UMDF versione 1 ed è la versione finale prima dell'avvento di UMDF 2. Per una tabella che mostra le informazioni sulla versione completa e la pertinenza del sistema operativo, vedere Cronologia delle versioni di UMDF.

La scrittura di un driver tramite UMDF versione 1 richiede l'uso del modello di programmazione COM per scrivere codice C++. Anche se la versione 2 di UMDF è basata sullo stesso modello di programmazione del driver concettuale di KMDF, UMDF 1 implementa il modello con componenti diversi, interfacce del driver di dispositivo (DDI) e strutture di dati. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10 e Windows 11.

A partire dalla versione 2 di UMDF, invece, è possibile scrivere un driver UMDF nel linguaggio di programmazione C che chiama molti dei metodi disponibili per i driver KMDF. Tutte le interfacce condivise tra UMDF versione 2 e KMDF hanno gli stessi nomi, parametri e definizioni di struttura. Se il driver usa solo funzionalità condivise o usa macro condizionali relative alle chiamate supportate solo in un framework, è possibile scrivere un singolo driver che è possibile compilare con UMDF o KMDF. Per altre informazioni, vedere Come generare un driver UMDF da un driver KMDF.

Sebbene sia presente una notevole comunità tra UMDF 2 e KMDF, esiste ancora una piccola quantità di funzionalità disponibile solo in un framework o nell'altro. Per informazioni specifiche, vedere Confronto delle funzionalità di UMDF 2 a KMDF. Per un elenco di tutti i callback e i metodi di UMDF 2 e kmDF e a quali framework si applicano, vedere Riepilogo dei callback e dei metodi WDF. In alcuni casi, un membro o un parametro di struttura di un metodo si applica solo a un framework o all'altro. La documentazione descrive queste differenze nelle pagine di riferimento corrispondenti.