Specifica di una modalità di sincronizzazione del callback
Avviso
UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Nessuna nuova funzionalità viene aggiunta 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'Windows 11, versione 22H2 - Aggiornamento degli esempi di driver di maggio 2022.
Per altre informazioni, vedere Introduzione con UMDF.
Il driver può specificare come vengono chiamate le funzioni di callback 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 il relativo metodo IDriverEntry::OnDeviceAdd viene chiamato 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 quanto il driver può gestire.
Valore | Significato |
---|---|
Nessuno (0) |
Indica che non vengono sincronizzate funzioni di callback nel driver. |
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 power management. Le funzioni di callback della coda includono quanto segue:
Funzioni di callback di invio automatico, ad esempio IQueueCallbackRead::OnRead e IQueueCallbackWrite::OnWrite. Per altre informazioni, vedere Funzioni di callback dell'evento di coda I/O.
Funzioni di callback dello stato della coda, ad esempio IQueueCallbackStateChange::OnStateChange.
Richiedere funzioni di callback di annullamento, ad esempio IRequestCallbackCancel::OnCancel.
Funzioni di pulizia dei file e chiusura del callback, 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.