Aggiunta di un dispositivo
Avviso
UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. 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. I driver di Windows universali devono usare UMDF 2.
Gli esempi di UMDF 1 archiviati sono disponibili nell'aggiornamento degli esempi di driver di Windows 11 versione 22H2 - Maggio 2022.
Per altre info, vedi Introduzione con UMDF.
Il framework aggiunge un oggetto dispositivo per ogni dispositivo caricato nel processo host del driver. Per aggiungere il dispositivo, il framework chiama il metodo IDriverEntry::OnDeviceAdd del driver e passa le interfacce IWDFDriver e IWDFDeviceInitialize nella chiamata. L'interfaccia IWDFDeviceInitialize fornita è valida solo prima che il driver chiami IWDFDriver::CreateDevice. Il driver può chiamare i metodi seguenti di IWDFDeviceInitialize per eseguire le operazioni seguenti:
Il driver chiama il metodo IWDFDeviceInitialize::RetrieveDevicePropertyStore per recuperare l'interfaccia IWDFNamedPropertyStore per l'archivio delle proprietà del dispositivo. Il driver può usare IWDFNamedPropertyStore per recuperare e impostare le proprietà per il dispositivo.
Il driver chiama il metodo IWDFDeviceInitialize::SetLockingConstraint per specificare la modalità di chiamata delle funzioni di callback dal framework.
Il driver chiama il metodo IWDFDeviceInitialize::SetFilter per abilitare il dispositivo come dispositivo di filtro.
Dopo che il driver usa IWDFDeviceInitialize per inizializzare il dispositivo, il driver passa un puntatore a IWDFDeviceInitialize in una chiamata al metodo IWDFDriver::CreateDevice per creare un oggetto dispositivo UMDF per il dispositivo. Dopo aver creato l'oggetto dispositivo framework, il driver effettua chiamate al metodo IWDFDevice::CreateIoQueue per creare code di I/O di lettura e scrittura. In queste chiamate IWDFDevice::CreateIoQueue il driver deve identificare il modo in cui riceve le richieste dalla coda di I/O. Per altre informazioni, vedere Configurazione della modalità di invio per una coda di I/O.