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:

Le funzioni di callback di completamento della richiesta (IRequestCallbackRequestCompletion::OnCompletion) non sono funzioni di callback della coda. Pertanto, non sono sincronizzati.