Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Avvertimento
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 informazioni, vedere Introduzione a UMDF.
Il driver può specificare il modo in cui le funzioni di callback vengono chiamate dal framework. Il driver specifica una modalità di sincronizzazione (o blocco) per un dispositivo prima di chiamare il metodo IWDFDriver::CreateDevice per creare un oggetto dispositivo per il dispositivo. Per specificare la modalità di sincronizzazione, il driver deve chiamare il metodo IWDFDeviceInitialize::SetLockingConstraint . Il driver riceve un puntatore all'interfaccia IWDFDeviceInitialize quando viene chiamato il metodo IDriverEntry::OnDeviceAdd per aggiungere il dispositivo al sistema.
Il driver può specificare uno dei valori seguenti dal tipo di enumerazione WDF_CALLBACK_CONSTRAINT nel parametro LockType di IWDFDeviceInitialize::SetLockingConstraint per identificare la modalità di blocco. Il tipo di vincolo (o blocco) specificato dipende dalla quantità di parallelismo che il dispositivo hardware può sfruttare e da quanto il driver può gestire.
| Valore | Significato |
|---|---|
Nessuno (0) |
Indica che nessuna funzione di callback nel driver viene sincronizzata. |
WdfDeviceLevel (1) |
Indica che tutte le funzioni di callback della coda nel driver vengono sincronizzate. |
Nota Se il driver non chiama IWDFDeviceInitialize::SetLockingConstraint per specificare un valore, il framework imposta il valore predefinito di questa proprietà su WdfDeviceLevel.
I vincoli si applicano solo alle funzioni di callback della coda e non alle funzioni di callback plug and play (PnP) e risparmio energia. Le funzioni di callback della coda includono quanto segue:
Funzioni di callback dispatch automatiche, ad esempio IQueueCallbackRead::OnRead e IQueueCallbackWrite::OnWrite. Per altre informazioni, vedere Funzioni di Callback degli Eventi di Accodamento I/O.
Funzioni di callback per la modifica dello stato della coda, ad esempio IQueueCallbackStateChange::OnStateChange.
Richiedere funzioni di callback di annullamento, ad esempio IRequestCallbackCancel::OnCancel.
Funzioni di pulizia e chiusura dei file, ad esempio IFileCallbackCleanup::OnCleanupFile e IFileCallbackClose::OnCloseFile.
Le funzioni di callback di completamento della richiesta (IRequestCallbackRequestCompletion::OnCompletion) non sono funzioni di callback della coda. Pertanto, non sono sincronizzati.