Funzione WdfSpinLockCreate (wdfsync.h)
[Si applica a KMDF e UMDF]
Il metodo WdfSpinLockCreate crea un oggetto spin-lock del framework.
Sintassi
NTSTATUS WdfSpinLockCreate(
[in, optional] PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
[out] WDFSPINLOCK *SpinLock
);
Parametri
[in, optional] SpinLockAttributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES allocata dal chiamante che specifica gli attributi per l'oggetto spin-lock. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.
[out] SpinLock
Puntatore a una posizione che riceve un handle per un nuovo oggetto spin-lock del framework.
Valore restituito
WdfSpinLockCreate restituisce STATUS_SUCCESS se l'operazione ha esito positivo.
Per un elenco di altri valori restituiti che il metodo WdfSpinLockCreate potrebbe restituire, vedere Errori di creazione di oggetti framework.
Questo metodo potrebbe anche restituire altri valori NTSTATUS.
Commenti
Il metodo WdfSpinLockCreate crea un oggetto spin-lock del framework. Dopo aver creato un oggetto spin-lock, un driver può chiamare WdfSpinLockAcquire per acquisire il blocco e WdfSpinLockRelease per rilasciare il blocco.
Per impostazione predefinita, l'elemento padre del nuovo oggetto spin-lock è l'oggetto driver del framework creato dal metodo WdfDriverCreate . È possibile utilizzare il membro ParentObject della struttura WDF_OBJECT_ATTRIBUTES per specificare un elemento padre diverso. Il framework elimina l'oggetto spin-lock quando elimina l'oggetto padre. Se il driver non modifica l'elemento padre predefinito, il driver deve eliminare l'oggetto spin-lock al termine dell'utilizzo dell'oggetto ; in caso contrario, l'oggetto rimarrà finché il gestore di I/O non scarica il driver.
Per altre informazioni sui blocchi di selezione, vedere Tecniche di sincronizzazione per i driver di Framework-Based.
Esempio
Nell'esempio di codice seguente viene inizializzata una WDF_OBJECT_ATTRIBUTES, viene specificato che l'oggetto padre del blocco di selezione sarà un oggetto dispositivo e chiama WdfSpinLockCreate.
WDF_OBJECT_ATTRIBUTES attributes;
WDFSPINLOCK lockHandle;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = Device;
status = WdfSpinLockCreate(
&attributes,
&lockHandle
);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfsync.h (include Wdf.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ParentObjectCheckLock(kmdf), WdfSpinlock(kmdf) |